blob: f2be3e40d9c066ef8410392b2f1a08da8a8f9a88 [file] [log] [blame]
#include "locale_impl.h"
#include <regex.h>
#include <stdio.h>
#include <string.h>
/* Error message strings for error codes listed in `regex.h'. This list
needs to be in sync with the codes listed there, naturally. */
/* Converted to single string by Rich Felker to remove the need for
* data relocations at runtime, 27 Feb 2006. */
static const char messages[] = {"No error\0"
"No match\0"
"Invalid regexp\0"
"Unknown collating element\0"
"Unknown character class name\0"
"Trailing backslash\0"
"Invalid back reference\0"
"Missing ']'\0"
"Missing ')'\0"
"Missing '}'\0"
"Invalid contents of {}\0"
"Invalid character range\0"
"Out of memory\0"
"Repetition not preceded by valid expression\0"
"\0Unknown error"};
size_t regerror(int e, const regex_t* restrict preg, char* restrict buf, size_t size) {
const char* s;
for (s = messages; e && *s; e--, s += strlen(s) + 1)
;
if (!*s)
s++;
s = LCTRANS_CUR(s);
return 1 + snprintf(buf, size, "%s", s);
}