|
|
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:
32: extern int ipcdebug;
33:
34: /*
35: * A known place to keep a copy of the system-supplied
36: * error message.
37: */
38: int syserrno;
39: char syserrstr[128];
40:
41:
42: /*
43: * Copy the actual OS-supplied errno and string in a known
44: * place.
45: */
46: ipcgetsyserr()
47: {
48: syserrno = errno;
49: if (ipcdebug)
50: fprintf(stderr, "ipcgetsyserr: errno=%d\n", syserrno);
51: if (errno < sys_nerr)
52: strcpy(syserrstr, sys_errlist[errno]);
53: else
54: sprintf(syserrstr, "Unknown error number %d", errno);
55: }
56:
57: /*
58: * map the system error in syserrno into one of the
59: * errors in sysexits.h
60: */
61: int
62: ipcmaperror()
63: {
64: switch (syserrno) {
65: case EAGAIN:
66: case ENFILE:
67: case EMFILE:
68: case ENOSPC:
69: case ENETDOWN:
70: case ENETUNREACH:
71: case ENETRESET:
72: case ECONNABORTED:
73: case ECONNRESET:
74: case ENOBUFS:
75: case ETIMEDOUT:
76: case ECONNREFUSED:
77: return EX_TEMPFAIL;
78: case EHOSTDOWN:
79: case EHOSTUNREACH:
80: return EX_NOHOST;
81:
82: default: return EX_OSERR;
83: }
84: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.