1 /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
5 char __syserr00
[] = "No Error";
6 char __syserr01
[] = "Operation not permitted (EPERM)";
7 char __syserr02
[] = "No such file or directory (ENOENT)";
8 char __syserr03
[] = "No such process (ESRCH)";
9 char __syserr04
[] = "Interrupted system call (EINTR)";
10 char __syserr05
[] = "Input or output error (EIO)";
11 char __syserr06
[] = "No such device or address (ENXIO)";
12 char __syserr07
[] = "Argument list too long (E2BIG)";
13 char __syserr08
[] = "Unable to execute file (ENOEXEC)";
14 char __syserr09
[] = "Bad file descriptor (EBADF)";
15 char __syserr10
[] = "No child processes (ECHILD)";
16 char __syserr11
[] = "Resource temporarily unavailable (EAGAIN)";
17 char __syserr12
[] = "Not enough memory (ENOMEM)";
18 char __syserr13
[] = "Permission denied (EACCES)";
19 char __syserr14
[] = "Bad address (EFAULT)";
20 char __syserr15
[] = "Unknown Error: 15";
21 char __syserr16
[] = "Resource busy (EBUSY)";
22 char __syserr17
[] = "File exists (EEXIST)";
23 char __syserr18
[] = "Improper link (EXDEV)";
24 char __syserr19
[] = "No such device (ENODEV)";
25 char __syserr20
[] = "Not a directory (ENOTDIR)";
26 char __syserr21
[] = "Is a directory (EISDIR)";
27 char __syserr22
[] = "Invalid argument (EINVAL)";
28 char __syserr23
[] = "Too many open files in system (ENFILE)";
29 char __syserr24
[] = "Too many open files (EMFILE)";
30 char __syserr25
[] = "Inappropriate I/O control operation (ENOTTY)";
31 char __syserr26
[] = "Unknown error: 26";
32 char __syserr27
[] = "File too large (EFBIG)";
33 char __syserr28
[] = "No space left on drive (ENOSPC)";
34 char __syserr29
[] = "Invalid seek (ESPIPE)";
35 char __syserr30
[] = "Read-only file system (EROFS)";
36 char __syserr31
[] = "Too many links (EMLINK)";
37 char __syserr32
[] = "Broken pipe (EPIPE)";
38 char __syserr33
[] = "Input to function out of range (EDOM)";
39 char __syserr34
[] = "Output of function out of range (ERANGE)";
40 char __syserr35
[] = "Unknown error: 35";
41 char __syserr36
[] = "Resource deadlock avoided (EDEADLK)";
42 char __syserr37
[] = "Unknown error: 37";
43 char __syserr38
[] = "File name too long (ENAMETOOLONG)";
44 char __syserr39
[] = "No locks available (ENOLCK)";
45 char __syserr40
[] = "Function not implemented (ENOSYS)";
46 char __syserr41
[] = "Directory not empty (ENOTEMPTY)";
47 char __syserr42
[] = "Illegal byte sequence (EILSEQ)";
52 char *_sys_errlist
[] = {
53 __syserr00
, __syserr01
, __syserr02
, __syserr03
, __syserr04
,
54 __syserr05
, __syserr06
, __syserr07
, __syserr08
, __syserr09
,
55 __syserr10
, __syserr11
, __syserr12
, __syserr13
, __syserr14
,
56 __syserr15
, __syserr16
, __syserr17
, __syserr18
, __syserr19
,
57 __syserr20
, __syserr21
, __syserr22
, __syserr23
, __syserr24
,
58 __syserr25
, __syserr26
, __syserr27
, __syserr28
, __syserr29
,
59 __syserr30
, __syserr31
, __syserr32
, __syserr33
, __syserr34
,
60 __syserr35
, __syserr36
, __syserr37
, __syserr38
, __syserr39
,
61 __syserr40
, __syserr41
, __syserr42
66 int _sys_nerr
= sizeof(_sys_errlist
) / sizeof(_sys_errlist
[0]);
68 char *strerror(int errnum
)
70 static char ebuf
[40]; /* 64-bit number + slop */
74 if (errnum
>= 0 && errnum
< _sys_nerr
)
75 return((char *)_sys_errlist
[errnum
]);
77 strcpy(ebuf
, "Unknown error: ");
87 if (d
|| lz
|| (v
== 1))
100 char *_strerror(const char *s
)
103 return strerror(errno
);
105 return strerror(atoi(s
));