xref: /onnv-gate/usr/src/lib/libbc/libc/sys/common/maperror.c (revision 0:68f95e015346)
1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate  * CDDL HEADER START
3*0Sstevel@tonic-gate  *
4*0Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*0Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*0Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*0Sstevel@tonic-gate  * with the License.
8*0Sstevel@tonic-gate  *
9*0Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*0Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*0Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*0Sstevel@tonic-gate  * and limitations under the License.
13*0Sstevel@tonic-gate  *
14*0Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*0Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*0Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*0Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*0Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*0Sstevel@tonic-gate  *
20*0Sstevel@tonic-gate  * CDDL HEADER END
21*0Sstevel@tonic-gate  */
22*0Sstevel@tonic-gate /*
23*0Sstevel@tonic-gate  * Copyright 1995 Sun Microsystems, Inc.  All rights reserved.
24*0Sstevel@tonic-gate  * Use is subject to license terms.
25*0Sstevel@tonic-gate  */
26*0Sstevel@tonic-gate 
27*0Sstevel@tonic-gate /*
28*0Sstevel@tonic-gate  * Include the SVR4/5.0 errno.h
29*0Sstevel@tonic-gate  */
30*0Sstevel@tonic-gate 
31*0Sstevel@tonic-gate #include "s5errno.h"
32*0Sstevel@tonic-gate 
33*0Sstevel@tonic-gate /*	from UCB 4.1 82/12/28	*/
34*0Sstevel@tonic-gate 
35*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
36*0Sstevel@tonic-gate 
37*0Sstevel@tonic-gate /*
38*0Sstevel@tonic-gate  * XError codes from 4.1
39*0Sstevel@tonic-gate  */
40*0Sstevel@tonic-gate 
41*0Sstevel@tonic-gate #define XEPERM		1		/* Not owner */
42*0Sstevel@tonic-gate #define XENOENT		2		/* No such file or directory */
43*0Sstevel@tonic-gate #define XESRCH		3		/* No such process */
44*0Sstevel@tonic-gate #define XEINTR		4		/* Interrupted system call */
45*0Sstevel@tonic-gate #define XEIO		5		/* I/O error */
46*0Sstevel@tonic-gate #define XENXIO		6		/* No such device or address */
47*0Sstevel@tonic-gate #define XE2BIG		7		/* Arg list too long */
48*0Sstevel@tonic-gate #define XENOEXEC	8		/* Exec format error */
49*0Sstevel@tonic-gate #define XEBADF		9		/* Bad file number */
50*0Sstevel@tonic-gate #define XECHILD		10		/* No children */
51*0Sstevel@tonic-gate #define XEAGAIN		11		/* No more processes */
52*0Sstevel@tonic-gate #define XENOMEM		12		/* Not enough core */
53*0Sstevel@tonic-gate #define XEACCES		13		/* Permission denied */
54*0Sstevel@tonic-gate #define XEFAULT		14		/* Bad address */
55*0Sstevel@tonic-gate #define XENOTBLK	15		/* Block device required */
56*0Sstevel@tonic-gate #define XEBUSY		16		/* Mount device busy */
57*0Sstevel@tonic-gate #define XEEXIST		17		/* File exists */
58*0Sstevel@tonic-gate #define XEXDEV		18		/* Cross-device link */
59*0Sstevel@tonic-gate #define XENODEV		19		/* No such device */
60*0Sstevel@tonic-gate #define XENOTDIR	20		/* Not a directory*/
61*0Sstevel@tonic-gate #define XEISDIR		21		/* Is a directory */
62*0Sstevel@tonic-gate #define XEINVAL		22		/* Invalid argument */
63*0Sstevel@tonic-gate #define XENFILE		23		/* File table overflow */
64*0Sstevel@tonic-gate #define XEMFILE		24		/* Too many open files */
65*0Sstevel@tonic-gate #define XENOTTY		25		/* Not a typewriter */
66*0Sstevel@tonic-gate #define XETXTBSY	26		/* Text file busy */
67*0Sstevel@tonic-gate #define XEFBIG		27		/* File too large */
68*0Sstevel@tonic-gate #define XENOSPC		28		/* No space left on device */
69*0Sstevel@tonic-gate #define XESPIPE		29		/* Illegal seek */
70*0Sstevel@tonic-gate #define XEROFS		30		/* Read-only file system */
71*0Sstevel@tonic-gate #define XEMLINK		31		/* Too many links */
72*0Sstevel@tonic-gate #define XEPIPE		32		/* Broken pipe */
73*0Sstevel@tonic-gate 
74*0Sstevel@tonic-gate /* math software */
75*0Sstevel@tonic-gate #define XEDOM		33		/* Argument too large */
76*0Sstevel@tonic-gate #define XERANGE		34		/* Result too large */
77*0Sstevel@tonic-gate 
78*0Sstevel@tonic-gate /* non-blocking and interrupt i/o */
79*0Sstevel@tonic-gate #define XEWOULDBLOCK	35		/* Operation would block */
80*0Sstevel@tonic-gate #define XEINPROGRESS	36		/* Operation now in progress */
81*0Sstevel@tonic-gate #define XEALREADY	37		/* Operation already in progress */
82*0Sstevel@tonic-gate /* ipc/network software */
83*0Sstevel@tonic-gate 
84*0Sstevel@tonic-gate 	/* argument errors */
85*0Sstevel@tonic-gate #define XENOTSOCK	38		/* Socket operation on non-socket */
86*0Sstevel@tonic-gate #define XEDESTADDRREQ	39		/* Destination address required */
87*0Sstevel@tonic-gate #define XEMSGSIZE	40		/* Message too long */
88*0Sstevel@tonic-gate #define XEPROTOTYPE	41		/* Protocol wrong type for socket */
89*0Sstevel@tonic-gate #define XENOPROTOOPT	42		/* Protocol not available */
90*0Sstevel@tonic-gate #define XEPROTONOSUPPORT	43		/* Protocol not supported */
91*0Sstevel@tonic-gate #define XESOCKTNOSUPPORT	44		/* Socket type not supported */
92*0Sstevel@tonic-gate #define XEOPNOTSUPP	45		/* Operation not supported on socket */
93*0Sstevel@tonic-gate #define XEPFNOSUPPORT	46		/* Protocol family not supported */
94*0Sstevel@tonic-gate #define XEAFNOSUPPORT	47		/* Address family not supported by protocol family */
95*0Sstevel@tonic-gate #define XEADDRINUSE	48		/* Address already in use */
96*0Sstevel@tonic-gate #define XEADDRNOTAVAIL	49		/* Can't assign requested address */
97*0Sstevel@tonic-gate 
98*0Sstevel@tonic-gate 	/* operational errors */
99*0Sstevel@tonic-gate #define XENETDOWN	50		/* Network is down */
100*0Sstevel@tonic-gate #define XENETUNREACH	51		/* Network is unreachable */
101*0Sstevel@tonic-gate #define XENETRESET	52		/* Network dropped connection on reset */
102*0Sstevel@tonic-gate #define XECONNABORTED	53		/* Software caused connection abort */
103*0Sstevel@tonic-gate #define XECONNRESET	54		/* Connection reset by peer */
104*0Sstevel@tonic-gate #define XENOBUFS	55		/* No buffer space available */
105*0Sstevel@tonic-gate #define XEISCONN	56		/* Socket is already connected */
106*0Sstevel@tonic-gate #define XENOTCONN	57		/* Socket is not connected */
107*0Sstevel@tonic-gate #define XESHUTDOWN	58		/* Can't send after socket shutdown */
108*0Sstevel@tonic-gate #define XETOOMANYREFS	59		/* Too many references: can't splice */
109*0Sstevel@tonic-gate #define XETIMEDOUT	60		/* Connection timed out */
110*0Sstevel@tonic-gate #define XECONNREFUSED	61		/* Connection refused */
111*0Sstevel@tonic-gate 
112*0Sstevel@tonic-gate 	/* */
113*0Sstevel@tonic-gate #define XELOOP		62		/* Too many levels of symbolic links */
114*0Sstevel@tonic-gate #define XENAMETOOLONG	63		/* File name too long */
115*0Sstevel@tonic-gate 
116*0Sstevel@tonic-gate /* should be rearranged */
117*0Sstevel@tonic-gate #define XEHOSTDOWN	64		/* Host is down */
118*0Sstevel@tonic-gate #define XEHOSTUNREACH	65		/* No route to host */
119*0Sstevel@tonic-gate #define XENOTEMPTY	66		/* Directory not empty */
120*0Sstevel@tonic-gate 
121*0Sstevel@tonic-gate /* quotas & mush */
122*0Sstevel@tonic-gate #define XEPROCLIM	67		/* Too many processes */
123*0Sstevel@tonic-gate #define XEUSERS		68		/* Too many users */
124*0Sstevel@tonic-gate #define XEDQUOT		69		/* Disc quota exceeded */
125*0Sstevel@tonic-gate 
126*0Sstevel@tonic-gate /* Network File System */
127*0Sstevel@tonic-gate #define XESTALE		70		/* Stale NFS file handle */
128*0Sstevel@tonic-gate #define XEREMOTE	71		/* Too many levels of remote in path */
129*0Sstevel@tonic-gate 
130*0Sstevel@tonic-gate /* streams */
131*0Sstevel@tonic-gate #define XENOSTR		72		/* Device is not a stream */
132*0Sstevel@tonic-gate #define XETIME		73		/* Timer expired */
133*0Sstevel@tonic-gate #define XENOSR		74		/* Out of streams resources */
134*0Sstevel@tonic-gate #define XENOMSG		75		/* No message of desired type */
135*0Sstevel@tonic-gate #define XEBADMSG	76		/* Trying to read unreadable message */
136*0Sstevel@tonic-gate 
137*0Sstevel@tonic-gate /* SystemV IPC */
138*0Sstevel@tonic-gate #define XEIDRM		77		/* Identifier removed */
139*0Sstevel@tonic-gate 
140*0Sstevel@tonic-gate /* SystemV Record Locking */
141*0Sstevel@tonic-gate #define XEDEADLK	78		/* Deadlock condition. */
142*0Sstevel@tonic-gate #define XENOLCK		79		/* No record locks available. */
143*0Sstevel@tonic-gate 
144*0Sstevel@tonic-gate /* POSIX */
145*0Sstevel@tonic-gate #define XENOSYS		90		/* function not implemented */
146*0Sstevel@tonic-gate 
147*0Sstevel@tonic-gate 
maperror()148*0Sstevel@tonic-gate void	maperror()
149*0Sstevel@tonic-gate {
150*0Sstevel@tonic-gate 	extern int errno;
151*0Sstevel@tonic-gate 
152*0Sstevel@tonic-gate 	if (errno == 0)
153*0Sstevel@tonic-gate 	return;
154*0Sstevel@tonic-gate 
155*0Sstevel@tonic-gate 	switch (errno) {
156*0Sstevel@tonic-gate 	case ENOMSG:
157*0Sstevel@tonic-gate 		errno = XENOMSG;	/* No message of desired type */
158*0Sstevel@tonic-gate 		break;
159*0Sstevel@tonic-gate 	case EIDRM:
160*0Sstevel@tonic-gate 		errno = XEIDRM;		/* Identifier removed */
161*0Sstevel@tonic-gate 		break;
162*0Sstevel@tonic-gate 	case EDEADLK:
163*0Sstevel@tonic-gate 		errno = XEDEADLK;	/* Deadlock condition. */
164*0Sstevel@tonic-gate 		break;
165*0Sstevel@tonic-gate 	case ENOLCK:
166*0Sstevel@tonic-gate 		errno = XENOLCK;	/* No record locks available. */
167*0Sstevel@tonic-gate 		break;
168*0Sstevel@tonic-gate 	case ENOSTR:
169*0Sstevel@tonic-gate 		errno = XENOSTR;	/* Device not a stream */
170*0Sstevel@tonic-gate 		break;
171*0Sstevel@tonic-gate 	case ETIME:
172*0Sstevel@tonic-gate 		errno = XETIME;		/* timer expired */
173*0Sstevel@tonic-gate 		break;
174*0Sstevel@tonic-gate 	case ENOSR:
175*0Sstevel@tonic-gate 		errno = XENOSR;		/* out of streams resources */
176*0Sstevel@tonic-gate 		break;
177*0Sstevel@tonic-gate 	case EBADMSG:
178*0Sstevel@tonic-gate 		errno = XEBADMSG;	/* trying to read unreadable message */
179*0Sstevel@tonic-gate 		break;
180*0Sstevel@tonic-gate 	case ENOSYS:
181*0Sstevel@tonic-gate 		errno = XENOSYS;	/* Unsupported file system operation */
182*0Sstevel@tonic-gate 		break;
183*0Sstevel@tonic-gate 	case ELOOP:
184*0Sstevel@tonic-gate 		errno = XELOOP;		/* Symbolic link loop */
185*0Sstevel@tonic-gate 		break;
186*0Sstevel@tonic-gate 	case ERESTART:
187*0Sstevel@tonic-gate 		errno = XEINTR;		/* Convert ERESTART to EINTR for
188*0Sstevel@tonic-gate 					   interrupted system calls */
189*0Sstevel@tonic-gate 		break;
190*0Sstevel@tonic-gate 	case ENAMETOOLONG:
191*0Sstevel@tonic-gate 		errno = XENAMETOOLONG; /* File name too long */
192*0Sstevel@tonic-gate 		break;
193*0Sstevel@tonic-gate 	case ENOTEMPTY:
194*0Sstevel@tonic-gate 		errno = XENOTEMPTY;	/* directory not empty */
195*0Sstevel@tonic-gate 		break;
196*0Sstevel@tonic-gate 	case EUSERS:
197*0Sstevel@tonic-gate 		errno = XEUSERS;	/* Too many users (for UFS) */
198*0Sstevel@tonic-gate 		break;
199*0Sstevel@tonic-gate 	case ENOTSOCK:
200*0Sstevel@tonic-gate 		errno = XENOTSOCK;	/* Socket operation on non-socket */
201*0Sstevel@tonic-gate 		break;
202*0Sstevel@tonic-gate 	case EDESTADDRREQ:
203*0Sstevel@tonic-gate 		errno = XEDESTADDRREQ;	/* Destination address required */
204*0Sstevel@tonic-gate 		break;
205*0Sstevel@tonic-gate 	case EMSGSIZE:
206*0Sstevel@tonic-gate 		errno = XEMSGSIZE;	/* Message too long */
207*0Sstevel@tonic-gate 		break;
208*0Sstevel@tonic-gate 	case EPROTOTYPE:
209*0Sstevel@tonic-gate 		errno = XEPROTOTYPE;	/* Protocol wrong type for socket */
210*0Sstevel@tonic-gate 		break;
211*0Sstevel@tonic-gate 	case ENOPROTOOPT:
212*0Sstevel@tonic-gate 		errno = XENOPROTOOPT;	/* Protocol not available */
213*0Sstevel@tonic-gate 		break;
214*0Sstevel@tonic-gate 	case EPROTONOSUPPORT:
215*0Sstevel@tonic-gate 		errno = XEPROTONOSUPPORT;	/* Protocol not supported */
216*0Sstevel@tonic-gate 		break;
217*0Sstevel@tonic-gate 	case ESOCKTNOSUPPORT:
218*0Sstevel@tonic-gate 		errno = XESOCKTNOSUPPORT;	/* Socket type not supported */
219*0Sstevel@tonic-gate 		break;
220*0Sstevel@tonic-gate 	case EOPNOTSUPP:
221*0Sstevel@tonic-gate 		errno = XEOPNOTSUPP;	/* Operation not supported on socket */
222*0Sstevel@tonic-gate 		break;
223*0Sstevel@tonic-gate 	case EPFNOSUPPORT:
224*0Sstevel@tonic-gate 		errno = XEPFNOSUPPORT;	/* Protocol family not supported */
225*0Sstevel@tonic-gate 		break;
226*0Sstevel@tonic-gate 	case EAFNOSUPPORT:
227*0Sstevel@tonic-gate 		errno = XEAFNOSUPPORT;	/* Address family not supported by */
228*0Sstevel@tonic-gate 		break;
229*0Sstevel@tonic-gate 	case EADDRINUSE:
230*0Sstevel@tonic-gate 		errno = XEADDRINUSE;	/* Address already in use */
231*0Sstevel@tonic-gate 		break;
232*0Sstevel@tonic-gate 	case EADDRNOTAVAIL:
233*0Sstevel@tonic-gate 		errno = XEADDRNOTAVAIL; /* Can't assign requested address */
234*0Sstevel@tonic-gate 		break;
235*0Sstevel@tonic-gate 	case ENETDOWN:
236*0Sstevel@tonic-gate 		errno = XENETDOWN;	/* Network is down */
237*0Sstevel@tonic-gate 		break;
238*0Sstevel@tonic-gate 	case ENETUNREACH:
239*0Sstevel@tonic-gate 		errno = XENETUNREACH;	/* Network is unreachable */
240*0Sstevel@tonic-gate 		break;
241*0Sstevel@tonic-gate 	case ENETRESET:
242*0Sstevel@tonic-gate 		errno = XENETRESET;	/* Dropped connection due to reset */
243*0Sstevel@tonic-gate 		break;
244*0Sstevel@tonic-gate 	case ECONNABORTED:
245*0Sstevel@tonic-gate 		errno = XECONNABORTED;	/* Software caused connection abort */
246*0Sstevel@tonic-gate 		break;
247*0Sstevel@tonic-gate 	case ECONNRESET:
248*0Sstevel@tonic-gate 		errno = XECONNRESET;	/* Connection reset by peer */
249*0Sstevel@tonic-gate 		break;
250*0Sstevel@tonic-gate 	case ENOBUFS:
251*0Sstevel@tonic-gate 		errno = XENOBUFS;	/* No buffer space available */
252*0Sstevel@tonic-gate 		break;
253*0Sstevel@tonic-gate 	case EISCONN:
254*0Sstevel@tonic-gate 		errno = XEISCONN;	/* Socket is already connected */
255*0Sstevel@tonic-gate 		break;
256*0Sstevel@tonic-gate 	case ENOTCONN:
257*0Sstevel@tonic-gate 		errno = XENOTCONN;	/* Socket is not connected */
258*0Sstevel@tonic-gate 		break;
259*0Sstevel@tonic-gate 	case ESHUTDOWN:
260*0Sstevel@tonic-gate 		errno = XESHUTDOWN;	/* Can't send after socket shutdown */
261*0Sstevel@tonic-gate 		break;
262*0Sstevel@tonic-gate 	case ETOOMANYREFS:
263*0Sstevel@tonic-gate 		errno = XETOOMANYREFS;	/* Too many references: can't splice */
264*0Sstevel@tonic-gate 		break;
265*0Sstevel@tonic-gate 	case ETIMEDOUT:
266*0Sstevel@tonic-gate 		errno = XETIMEDOUT;	/* Connection timed out */
267*0Sstevel@tonic-gate 		break;
268*0Sstevel@tonic-gate 	case ECONNREFUSED:
269*0Sstevel@tonic-gate 		errno = XECONNREFUSED;	/* Connection refused */
270*0Sstevel@tonic-gate 		break;
271*0Sstevel@tonic-gate 	case EHOSTDOWN:
272*0Sstevel@tonic-gate 		errno = XEHOSTDOWN;	/* Host is down */
273*0Sstevel@tonic-gate 		break;
274*0Sstevel@tonic-gate 	case EHOSTUNREACH:
275*0Sstevel@tonic-gate 		errno = XEHOSTUNREACH;	/* No route to host */
276*0Sstevel@tonic-gate 		break;
277*0Sstevel@tonic-gate 	case EALREADY:
278*0Sstevel@tonic-gate 		errno = XEALREADY;
279*0Sstevel@tonic-gate 		break;
280*0Sstevel@tonic-gate 	case EINPROGRESS:
281*0Sstevel@tonic-gate 		errno = XEINPROGRESS;
282*0Sstevel@tonic-gate 		break;
283*0Sstevel@tonic-gate 	case ESTALE:
284*0Sstevel@tonic-gate 		errno = XESTALE;	/* Stale NFS file handle */
285*0Sstevel@tonic-gate 		break;
286*0Sstevel@tonic-gate 	case EDQUOT:
287*0Sstevel@tonic-gate 		errno = XEDQUOT;	/* Disc quota exceeded */
288*0Sstevel@tonic-gate 		break;
289*0Sstevel@tonic-gate 	default:
290*0Sstevel@tonic-gate 		break;
291*0Sstevel@tonic-gate 	}
292*0Sstevel@tonic-gate 
293*0Sstevel@tonic-gate 	return;
294*0Sstevel@tonic-gate 
295*0Sstevel@tonic-gate }
296