32 lines
539 B
C
32 lines
539 B
C
/*
|
|
* 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;
|
|
}
|