|
|
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 (mount)", /* 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: "Driver not loaded", /* ENOLOAD */ ! 50: "Bad format", /* EBADFMT */ ! 51: "Device needs attention", /* EDATTN */ ! 52: "Device busy" /* EDBUSY */ ! 53: }; ! 54: #endif ! 55: ! 56: #ifdef GEMDOS ! 57: extern char *sys_errlist[]; ! 58: extern int sys_nerr; ! 59: #endif ! 60: ! 61: char *strerror(errnum) int errnum; ! 62: { ! 63: ! 64: #ifdef COHERENT ! 65: if (errnum < 0 || errnum > sizeof(_errors)/sizeof(char *)) ! 66: errnum = 0; ! 67: return _errors[errnum]; ! 68: #endif ! 69: ! 70: #ifdef GEMDOS ! 71: if (errnum < 0 || errnum > sys_nerr) ! 72: errnum = 0; ! 73: return sys_errlist[errnum]; ! 74: #endif ! 75: ! 76: #ifdef MSDOS ! 77: return ( (errnum == EDOM) ? "Domain error" ! 78: : (errnum == ERANGE) ? "Result too large" ! 79: : "Illegal error number" ! 80: ); ! 81: #endif ! 82: ! 83: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.