| Index: fusl/src/errno/strerror.c
|
| diff --git a/fusl/src/errno/strerror.c b/fusl/src/errno/strerror.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..24c94d3742d4ed013dea3ef5625bfc03fd189a05
|
| --- /dev/null
|
| +++ b/fusl/src/errno/strerror.c
|
| @@ -0,0 +1,37 @@
|
| +#include <errno.h>
|
| +#include <string.h>
|
| +#include "locale_impl.h"
|
| +#include "libc.h"
|
| +
|
| +#define E(a,b) ((unsigned char)a),
|
| +static const unsigned char errid[] = {
|
| +#include "__strerror.h"
|
| +};
|
| +
|
| +#undef E
|
| +#define E(a,b) b "\0"
|
| +static const char errmsg[] =
|
| +#include "__strerror.h"
|
| +;
|
| +
|
| +char *__strerror_l(int e, locale_t loc)
|
| +{
|
| + const char *s;
|
| + int i;
|
| + /* mips has one error code outside of the 8-bit range due to a
|
| + * historical typo, so we just remap it. */
|
| + if (EDQUOT==1133) {
|
| + if (e==109) e=-1;
|
| + else if (e==EDQUOT) e=109;
|
| + }
|
| + for (i=0; errid[i] && errid[i] != e; i++);
|
| + for (s=errmsg; i; s++, i--) for (; *s; s++);
|
| + return (char *)LCTRANS(s, LC_MESSAGES, loc);
|
| +}
|
| +
|
| +char *strerror(int e)
|
| +{
|
| + return __strerror_l(e, CURRENT_LOCALE);
|
| +}
|
| +
|
| +weak_alias(__strerror_l, strerror_l);
|
|
|