| /* |
| * strerror.c |
| */ |
| |
| #include <string.h> |
| |
| char *strerror(int errnum) |
| { |
| static char message[32] = "error "; /* enough for error 2^63-1 */ |
| char numbuf[32]; |
| char *p; |
| unsigned int e = (unsigned int)errnum; |
| |
| extern const int sys_nerr; |
| extern const char *const sys_errlist[]; |
| |
| if (e < (unsigned int)sys_nerr && sys_errlist[e]) |
| return (char *)sys_errlist[e]; |
| |
| p = numbuf + sizeof numbuf; |
| *--p = '\0'; |
| |
| do { |
| *--p = (e % 10) + '0'; |
| e /= 10; |
| } while (e); |
| |
| memcpy(message + 6, p, (numbuf + sizeof numbuf) - p); |
| |
| return message; |
| } |