#include #include #include // #include "locale_impl.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); }