Index: fusl/src/regex/regerror.c |
diff --git a/fusl/src/regex/regerror.c b/fusl/src/regex/regerror.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5b347cc73c7351b72ec40efa4901818751da7019 |
--- /dev/null |
+++ b/fusl/src/regex/regerror.c |
@@ -0,0 +1,37 @@ |
+#include <string.h> |
+#include <regex.h> |
+#include <stdio.h> |
+#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); |
+} |