-
Notifications
You must be signed in to change notification settings - Fork 3
/
strerror.c
65 lines (49 loc) · 1.14 KB
/
strerror.c
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* strerror.c
*
* cml hacked on this function 940627
* so that the error message would be copied into a static buffer,
* and then return a ptr to that buffer.
*
* Previously, a ptr into the sys_errlist array was returned,
* but this caused core dumps. I don't understand the problem
* but it's better now.
*/
#include "strerror.h"
char *strerror(err)
int err;
{
extern int sys_nerr;
extern const char *const sys_errlist[];
static char errmsg[256];
if (err >= 0 && err < sys_nerr)
strcpy(errmsg, sys_errlist[err]);
else
(void) sprintf(errmsg, "Error %d", err);
return errmsg;
}
#if 0
char *
strerror(err)
int err;
{
extern int sys_nerr;
extern const char *const sys_errlist[];
static char errmsg[32];
if (err >= 0 && err < sys_nerr)
return sys_errlist[sys_nerr];
(void) sprintf(errmsg, "Error %d", err);
return errmsg;
}
#endif
#ifdef DRIVER
#include <errno.h>
extern int sys_nerr;
int main(argc, argv)
char **argv;
{
int i;
for (i = 0; i < sys_nerr; ++i)
printf("Errno = %d, msg = %s\n", i, strerror(i));
return 0;
}
#endif