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