|
|
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.