|
|
1.1 root 1: /*
2: * strerror.c
3: * ANSI 4.11.6.2.
4: * String error function.
5: * Assumes COHERENT <errno.h>.
6: * Assumes exactly one of COHERENT, GEMDOS or MSDOS defined.
7: */
8:
9: #include <errno.h>
10:
11: #ifdef COHERENT
12: static char *_errors[] = {
13: "Illegal error number", /* 0 */
14: "Not super user", /* EPERM */
15: "No such file or directory", /* ENOENT */
16: "Process not found", /* ESRCH */
17: "Interrupted system call", /* EINTR */
18: "I/O error", /* EIO */
19: "No such device or address", /* ENXIO */
20: "Argument list too long", /* E2BIG */
21: "Sys exec format error", /* ENOEXEC */
22: "Bad file number", /* EBADF */
23: "No children (wait)", /* ECHILD */
24: "No more processes are available", /* EAGAIN */
25: "Cannot map process into memory", /* ENOMEM */
26: "Permission denied", /* EACCES */
27: "Bad system call argument address", /* EFAULT */
28: "Block device required (mount)", /* ENOTBLK */
29: "Device busy", /* EBUSY */
30: "File already exists", /* EEXIST */
31: "Cross device link", /* EXDEV */
32: "No such device", /* ENODEV */
33: "Not a directory", /* ENOTDIR */
34: "Is a directory", /* EISDIR */
35: "Invalid argument", /* EINVAL */
36: "File table overflow", /* ENFILE */
37: "Too many open files for this process", /* EMFILE */
38: "Not a terminal", /* ENOTTY */
39: "Text file busy", /* ETXTBSY */
40: "File too big to map", /* EFBIG */
41: "No space left on device", /* ENOSPC */
42: "Illegal seek on a pipe", /* ESPIPE */
43: "Read only filesystem", /* EROFS */
44: "Too many links", /* EMLINK */
45: "Broken pipe", /* EPIPE */
46: "Domain error", /* EDOM */
47: "Result too large", /* ERANGE */
48: "Out of kernel space", /* EKSPACE */
49: #if _I386
50: "Identifier removed", /* EIDRM */
51: #else
52: "Driver not loaded", /* ENOLOAD */
53: #endif
54: "Bad format", /* EBADFMT */
55: "Device needs attention", /* EDATTN */
56: "Device busy", /* EDBUSY */
57: "Deadlock", /* EDEADLK */
58: "No lock available" /* ENOLCK */
59: };
60: #endif
61:
62: #ifdef GEMDOS
63: extern char *sys_errlist[];
64: extern int sys_nerr;
65: #endif
66:
67: char *strerror(errnum) int errnum;
68: {
69:
70: #ifdef COHERENT
71: if (errnum < 0 || errnum > sizeof(_errors)/sizeof(char *))
72: errnum = 0;
73: return _errors[errnum];
74: #endif
75:
76: #ifdef GEMDOS
77: if (errnum < 0 || errnum > sys_nerr)
78: errnum = 0;
79: return sys_errlist[errnum];
80: #endif
81:
82: #ifdef MSDOS
83: return ( (errnum == EDOM) ? "Domain error"
84: : (errnum == ERANGE) ? "Result too large"
85: : "Illegal error number"
86: );
87: #endif
88:
89: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.