|
|
1.1 ! root 1: /* ! 2: Error codes on SGI MIPS system: ! 3: ! 4: EX_USAGE 64 command line usage error ! 5: EX_DATAERR 65 data format error ! 6: EX_NOINPUT 66 cannot open input ! 7: EX_NOUSER 67 addressee unknown ! 8: EX_NOHOST 68 host name unknown: ! 9: unknown service ! 10: gethostbyname if host not found.) ! 11: connection timed out ! 12: EX_UNAVAILABLE 69 service unavailable ! 13: EX_SOFTWARE 70 internal software error ! 14: EX_OSERR 71 system error (e.g., can't fork) ! 15: EX_OSFILE 72 critical OS file missing ! 16: EX_CANTCREAT 73 can't create (user) output file ! 17: EX_IOERR 74 input/output error ! 18: EX_TEMPFAIL 75 temp failure; user is invited to retry ! 19: Connection refused (code returned by ! 20: EX_PROTOCOL 76 remote error in protocol ! 21: EX_NOPERM 77 permission denied ! 22: */ ! 23: ! 24: #include <errno.h> ! 25: #include <stdio.h> ! 26: #include <sysexits.h> ! 27: #include <string.h> ! 28: ! 29: extern char *sys_errlist[ ]; ! 30: extern int sys_nerr; ! 31: extern int errno; ! 32: ! 33: extern int ipcdebug; ! 34: ! 35: /* ! 36: * A known place to keep a copy of the system-supplied ! 37: * error message. ! 38: */ ! 39: int syserrno; ! 40: char syserrstr[128]; ! 41: ! 42: ! 43: /* ! 44: * Copy the actual OS-supplied errno and string in a known ! 45: * place. ! 46: */ ! 47: ipcgetsyserr() ! 48: { ! 49: syserrno = errno; ! 50: if (ipcdebug) ! 51: fprintf(stderr, "ipcgetsyserr: errno=%d\n", syserrno); ! 52: if (errno < sys_nerr) ! 53: strcpy(syserrstr, sys_errlist[errno]); ! 54: else ! 55: sprintf(syserrstr, "Unknown error number %d", errno); ! 56: } ! 57: ! 58: /* ! 59: * map the system error in syserrno into one of the ! 60: * errors in sysexits.h ! 61: */ ! 62: int ! 63: ipcmaperror() ! 64: { ! 65: switch (syserrno) { ! 66: case EAGAIN: ! 67: case ENFILE: ! 68: case EMFILE: ! 69: case ENOSPC: ! 70: case ENETDOWN: ! 71: case ENETUNREACH: ! 72: case ENETRESET: ! 73: case ECONNABORTED: ! 74: case ECONNRESET: ! 75: case ENOBUFS: ! 76: case ETIMEDOUT: ! 77: case ECONNREFUSED: ! 78: return EX_TEMPFAIL; ! 79: case EHOSTDOWN: ! 80: case EHOSTUNREACH: ! 81: return EX_NOHOST; ! 82: ! 83: default: return EX_OSERR; ! 84: } ! 85: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.