1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
/*
* 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;
}
|