diff options
Diffstat (limited to 'libglusterfs/src/compat-errno.c')
| -rw-r--r-- | libglusterfs/src/compat-errno.c | 938 | 
1 files changed, 938 insertions, 0 deletions
diff --git a/libglusterfs/src/compat-errno.c b/libglusterfs/src/compat-errno.c new file mode 100644 index 00000000000..a4a6c710675 --- /dev/null +++ b/libglusterfs/src/compat-errno.c @@ -0,0 +1,938 @@ +/* +   Copyright (c) 2008 Z RESEARCH, Inc. <http://www.zresearch.com> +   This file is part of GlusterFS. + +   GlusterFS is free software; you can redistribute it and/or modify +   it under the terms of the GNU General Public License as published +   by the Free Software Foundation; either version 3 of the License, +   or (at your option) any later version. + +   GlusterFS is distributed in the hope that it will be useful, but +   WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +   General Public License for more details. + +   You should have received a copy of the GNU General Public License +   along with this program.  If not, see +   <http://www.gnu.org/licenses/>. +*/ + +#ifndef _CONFIG_H +#define _CONFIG_H +#include "config.h" +#endif + +#include <stdint.h> + +#include "compat-errno.h" + + +static int32_t gf_error_to_errno_array[1024];  +static int32_t gf_errno_to_error_array[1024]; + +static int32_t gf_compat_errno_init_done; + +#ifdef GF_SOLARIS_HOST_OS +static void  +init_compat_errno_arrays () +{ +/*  	ENOMSG	35	/ * No message of desired type		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOMSG] = ENOMSG; +  gf_errno_to_error_array[ENOMSG] = GF_ERROR_CODE_NOMSG; + +/*  	EIDRM	36	/ * Identifier removed			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_IDRM] = EIDRM; +  gf_errno_to_error_array[EIDRM] = GF_ERROR_CODE_IDRM; + +/*  	ECHRNG	37	/ * Channel number out of range		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_CHRNG] = ECHRNG; +  gf_errno_to_error_array[ECHRNG] = GF_ERROR_CODE_CHRNG; + +/*  	EL2NSYNC 38	/ * Level 2 not synchronized		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_L2NSYNC] = EL2NSYNC; +  gf_errno_to_error_array[EL2NSYNC] = GF_ERROR_CODE_L2NSYNC; + +/*  	EL3HLT	39	/ * Level 3 halted			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_L3HLT] = EL3HLT; +  gf_errno_to_error_array[EL3HLT] = GF_ERROR_CODE_L3HLT; + +/*  	EL3RST	40	/ * Level 3 reset			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_L3RST] = EL3RST; +  gf_errno_to_error_array[EL3RST] = GF_ERROR_CODE_L3RST; + +/*  	ELNRNG	41	/ * Link number out of range		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_LNRNG] = ELNRNG; +  gf_errno_to_error_array[ELNRNG] = GF_ERROR_CODE_LNRNG; + +/*  	EUNATCH 42	/ * Protocol driver not attached		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_UNATCH] = EUNATCH; +  gf_errno_to_error_array[EUNATCH] = GF_ERROR_CODE_UNATCH; + +/*  	ENOCSI	43	/ * No CSI structure available		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOCSI] = ENOCSI; +  gf_errno_to_error_array[ENOCSI] = GF_ERROR_CODE_NOCSI; + +/*  	EL2HLT	44	/ * Level 2 halted			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_L2HLT] = EL2HLT; +  gf_errno_to_error_array[EL2HLT] = GF_ERROR_CODE_L2HLT; + +/*  	EDEADLK	45	/ * Deadlock condition.			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_DEADLK] = EDEADLK; +  gf_errno_to_error_array[EDEADLK] = GF_ERROR_CODE_DEADLK; + +/*  	ENOLCK	46	/ * No record locks available.		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOLCK] = ENOLCK; +  gf_errno_to_error_array[ENOLCK] = GF_ERROR_CODE_NOLCK; + +/*  	ECANCELED 47	/ * Operation canceled			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_CANCELED] = ECANCELED; +  gf_errno_to_error_array[ECANCELED] = GF_ERROR_CODE_CANCELED; + +/*  	ENOTSUP	48	/ * Operation not supported		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTSUPP] = ENOTSUP; +  gf_errno_to_error_array[ENOTSUP] = GF_ERROR_CODE_NOTSUPP; + +/* Filesystem Quotas */ +/*  	EDQUOT	49	/ * Disc quota exceeded			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_DQUOT] = EDQUOT; +  gf_errno_to_error_array[EDQUOT] = GF_ERROR_CODE_DQUOT; + +/* Convergent Error Returns */ +/*  	EBADE	50	/ * invalid exchange			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_BADE] = EBADE; +  gf_errno_to_error_array[EBADE] = GF_ERROR_CODE_BADE; +/*  	EBADR	51	/ * invalid request descriptor		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_BADR] = EBADR; +  gf_errno_to_error_array[EBADR] = GF_ERROR_CODE_BADR; +/*  	EXFULL	52	/ * exchange full			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_XFULL] = EXFULL; +  gf_errno_to_error_array[EXFULL] = GF_ERROR_CODE_XFULL; +/*  	ENOANO	53	/ * no anode				*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOANO] = ENOANO; +  gf_errno_to_error_array[ENOANO] = GF_ERROR_CODE_NOANO; +/*  	EBADRQC	54	/ * invalid request code			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_BADRQC] = EBADRQC; +  gf_errno_to_error_array[EBADRQC] = GF_ERROR_CODE_BADRQC; +/*  	EBADSLT	55	/ * invalid slot				*/ +  gf_error_to_errno_array[GF_ERROR_CODE_BADSLT] = EBADSLT; +  gf_errno_to_error_array[EBADSLT] = GF_ERROR_CODE_BADSLT; +/*  	EDEADLOCK 56	/ * file locking deadlock error		*/ +/* This is same as EDEADLK on linux */ +  gf_error_to_errno_array[GF_ERROR_CODE_DEADLK] = EDEADLOCK; +  gf_errno_to_error_array[EDEADLOCK] = GF_ERROR_CODE_DEADLK; + +/*  	EBFONT	57	/ * bad font file fmt			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_BFONT] = EBFONT; +  gf_errno_to_error_array[EBFONT] = GF_ERROR_CODE_BFONT; + +/* Interprocess Robust Locks */ +/*  	EOWNERDEAD	58	/ * process died with the lock */ +  gf_error_to_errno_array[GF_ERROR_CODE_OWNERDEAD] = EOWNERDEAD; +  gf_errno_to_error_array[EOWNERDEAD] = GF_ERROR_CODE_OWNERDEAD; +/*  	ENOTRECOVERABLE	59	/ * lock is not recoverable */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTRECOVERABLE] = ENOTRECOVERABLE; +  gf_errno_to_error_array[ENOTRECOVERABLE] = GF_ERROR_CODE_NOTRECOVERABLE; + +/* stream problems */ +/*  	ENOSTR	60	/ * Device not a stream			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOSTR] = ENOSTR; +  gf_errno_to_error_array[ENOSTR] = GF_ERROR_CODE_NOSTR; +/*  	ENODATA	61	/ * no data (for no delay io)		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NODATA] = ENODATA; +  gf_errno_to_error_array[ENODATA] = GF_ERROR_CODE_NODATA; +/*  	ETIME	62	/ * timer expired			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_TIME] = ETIME; +  gf_errno_to_error_array[ETIME] = GF_ERROR_CODE_TIME; +/*  	ENOSR	63	/ * out of streams resources		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOSR] = ENOSR; +  gf_errno_to_error_array[ENOSR] = GF_ERROR_CODE_NOSR; + +/*  	ENONET	64	/ * Machine is not on the network	*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NONET] = ENONET; +  gf_errno_to_error_array[ENONET] = GF_ERROR_CODE_NONET; +/*  	ENOPKG	65	/ * Package not installed		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOPKG] = ENOPKG; +  gf_errno_to_error_array[ENOPKG] = GF_ERROR_CODE_NOPKG; +/*  	EREMOTE	66	/ * The object is remote			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_REMOTE] = EREMOTE; +  gf_errno_to_error_array[EREMOTE] = GF_ERROR_CODE_REMOTE; +/*  	ENOLINK	67	/ * the link has been severed		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOLINK] = ENOLINK; +  gf_errno_to_error_array[ENOLINK] = GF_ERROR_CODE_NOLINK; +/*  	EADV	68	/ * advertise error			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_ADV] = EADV; +  gf_errno_to_error_array[EADV] = GF_ERROR_CODE_ADV; +/*  	ESRMNT	69	/ * srmount error			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_SRMNT] = ESRMNT; +  gf_errno_to_error_array[ESRMNT] = GF_ERROR_CODE_SRMNT; + +/*  	ECOMM	70	/ * Communication error on send		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_COMM] = ECOMM; +  gf_errno_to_error_array[ECOMM] = GF_ERROR_CODE_COMM; +/*  	EPROTO	71	/ * Protocol error			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_PROTO] = EPROTO; +  gf_errno_to_error_array[EPROTO] = GF_ERROR_CODE_PROTO; + +/* Interprocess Robust Locks */ +/*  	ELOCKUNMAPPED	72	/ * locked lock was unmapped */ +  gf_error_to_errno_array[GF_ERROR_CODE_LOCKUNMAPPED] = ELOCKUNMAPPED; +  gf_errno_to_error_array[ELOCKUNMAPPED] = GF_ERROR_CODE_LOCKUNMAPPED; + +/*  	ENOTACTIVE 73	/ * Facility is not active		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTACTIVE] = ENOTACTIVE; +  gf_errno_to_error_array[ENOTACTIVE] = GF_ERROR_CODE_NOTACTIVE; +/*  	EMULTIHOP 74	/ * multihop attempted			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_MULTIHOP] = EMULTIHOP; +  gf_errno_to_error_array[EMULTIHOP] = GF_ERROR_CODE_MULTIHOP; +/*  	EBADMSG 77	/ * trying to read unreadable message	*/ +  gf_error_to_errno_array[GF_ERROR_CODE_BADMSG] = EBADMSG; +  gf_errno_to_error_array[EBADMSG] = GF_ERROR_CODE_BADMSG; +/*  	ENAMETOOLONG 78	/ * path name is too long		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NAMETOOLONG] = ENAMETOOLONG; +  gf_errno_to_error_array[ENAMETOOLONG] = GF_ERROR_CODE_NAMETOOLONG; +/*  	EOVERFLOW 79	/ * value too large to be stored in data type */ +  gf_error_to_errno_array[GF_ERROR_CODE_OVERFLOW] = EOVERFLOW; +  gf_errno_to_error_array[EOVERFLOW] = GF_ERROR_CODE_OVERFLOW; +/*  	ENOTUNIQ 80	/ * given log. name not unique		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTUNIQ] = ENOTUNIQ; +  gf_errno_to_error_array[ENOTUNIQ] = GF_ERROR_CODE_NOTUNIQ; +/*  	EBADFD	81	/ * f.d. invalid for this operation	*/ +  gf_error_to_errno_array[GF_ERROR_CODE_BADFD] = EBADFD; +  gf_errno_to_error_array[EBADFD] = GF_ERROR_CODE_BADFD; +/*  	EREMCHG	82	/ * Remote address changed		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_REMCHG] = EREMCHG; +  gf_errno_to_error_array[EREMCHG] = GF_ERROR_CODE_REMCHG; + +/* shared library problems */ +/*  	ELIBACC	83	/ * Can't access a needed shared lib.	*/ +  gf_error_to_errno_array[GF_ERROR_CODE_LIBACC] = ELIBACC; +  gf_errno_to_error_array[ELIBACC] = GF_ERROR_CODE_LIBACC; +/*  	ELIBBAD	84	/ * Accessing a corrupted shared lib.	*/ +  gf_error_to_errno_array[GF_ERROR_CODE_LIBBAD] = ELIBBAD; +  gf_errno_to_error_array[ELIBBAD] = GF_ERROR_CODE_LIBBAD; +/*  	ELIBSCN	85	/ * .lib section in a.out corrupted.	*/ +  gf_error_to_errno_array[GF_ERROR_CODE_LIBSCN] = ELIBSCN; +  gf_errno_to_error_array[ELIBSCN] = GF_ERROR_CODE_LIBSCN; +/*  	ELIBMAX	86	/ * Attempting to link in too many libs.	*/ +  gf_error_to_errno_array[GF_ERROR_CODE_LIBMAX] = ELIBMAX; +  gf_errno_to_error_array[ELIBMAX] = GF_ERROR_CODE_LIBMAX; +/*  	ELIBEXEC 87	/ * Attempting to exec a shared library.	*/ +  gf_error_to_errno_array[GF_ERROR_CODE_LIBEXEC] = ELIBEXEC; +  gf_errno_to_error_array[ELIBEXEC] = GF_ERROR_CODE_LIBEXEC; +/*  	EILSEQ	88	/ * Illegal byte sequence.		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_ILSEQ] = EILSEQ; +  gf_errno_to_error_array[EILSEQ] = GF_ERROR_CODE_ILSEQ; +/*  	ENOSYS	89	/ * Unsupported file system operation	*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOSYS] = ENOSYS; +  gf_errno_to_error_array[ENOSYS] = GF_ERROR_CODE_NOSYS; +/*  	ELOOP	90	/ * Symbolic link loop			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_LOOP] = ELOOP; +  gf_errno_to_error_array[ELOOP] = GF_ERROR_CODE_LOOP; +/*  	ERESTART 91	/ * Restartable system call		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_RESTART] = ERESTART; +  gf_errno_to_error_array[ERESTART] = GF_ERROR_CODE_RESTART; +/*  	ESTRPIPE 92	/ * if pipe/FIFO, don't sleep in stream head */ +  gf_error_to_errno_array[GF_ERROR_CODE_STRPIPE] = ESTRPIPE; +  gf_errno_to_error_array[ESTRPIPE] = GF_ERROR_CODE_STRPIPE; +/*  	ENOTEMPTY 93	/ * directory not empty			*/ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTEMPTY] = ENOTEMPTY; +  gf_errno_to_error_array[ENOTEMPTY] = GF_ERROR_CODE_NOTEMPTY; +/*  	EUSERS	94	/ * Too many users (for UFS)		*/ +  gf_error_to_errno_array[GF_ERROR_CODE_USERS] = EUSERS; +  gf_errno_to_error_array[EUSERS] = GF_ERROR_CODE_USERS; + +/* BSD Networking Software */ +	/* argument errors */ +/*  	ENOTSOCK	95	/ * Socket operation on non-socket */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTSOCK] = ENOTSOCK; +  gf_errno_to_error_array[ENOTSOCK] = GF_ERROR_CODE_NOTSOCK; +/*  	EDESTADDRREQ	96	/ * Destination address required */ +  gf_error_to_errno_array[GF_ERROR_CODE_DESTADDRREQ] = EDESTADDRREQ; +  gf_errno_to_error_array[EDESTADDRREQ] = GF_ERROR_CODE_DESTADDRREQ; +/*  	EMSGSIZE	97	/ * Message too long */ +  gf_error_to_errno_array[GF_ERROR_CODE_MSGSIZE] = EMSGSIZE; +  gf_errno_to_error_array[EMSGSIZE] = GF_ERROR_CODE_MSGSIZE; +/*  	EPROTOTYPE	98	/ * Protocol wrong type for socket */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROTOTYPE] = EPROTOTYPE; +  gf_errno_to_error_array[EPROTOTYPE] = GF_ERROR_CODE_PROTOTYPE; +/*  	ENOPROTOOPT	99	/ * Protocol not available */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOPROTOOPT] = ENOPROTOOPT; +  gf_errno_to_error_array[ENOPROTOOPT] = GF_ERROR_CODE_NOPROTOOPT; +/*  	EPROTONOSUPPORT	120	/ * Protocol not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROTONOSUPPORT] = EPROTONOSUPPORT; +  gf_errno_to_error_array[EPROTONOSUPPORT] = GF_ERROR_CODE_PROTONOSUPPORT; +/*  	ESOCKTNOSUPPORT	121	/ * Socket type not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_SOCKTNOSUPPORT] = ESOCKTNOSUPPORT; +  gf_errno_to_error_array[ESOCKTNOSUPPORT] = GF_ERROR_CODE_SOCKTNOSUPPORT; + +/*  	EOPNOTSUPP	122	/ * Operation not supported on socket */ +  gf_error_to_errno_array[GF_ERROR_CODE_OPNOTSUPP] = EOPNOTSUPP; +  gf_errno_to_error_array[EOPNOTSUPP] = GF_ERROR_CODE_OPNOTSUPP; +/*  	EPFNOSUPPORT	123	/ * Protocol family not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_PFNOSUPPORT] = EPFNOSUPPORT; +  gf_errno_to_error_array[EPFNOSUPPORT] = GF_ERROR_CODE_PFNOSUPPORT; +/*  	EAFNOSUPPORT	124	/ * Address family not supported by */ +				/* protocol family */ +  gf_error_to_errno_array[GF_ERROR_CODE_AFNOSUPPORT] = EAFNOSUPPORT; +  gf_errno_to_error_array[EAFNOSUPPORT] = GF_ERROR_CODE_AFNOSUPPORT; +/*  	EADDRINUSE	125	/ * Address already in use */ +  gf_error_to_errno_array[GF_ERROR_CODE_ADDRINUSE] = EADDRINUSE; +  gf_errno_to_error_array[EADDRINUSE] = GF_ERROR_CODE_ADDRINUSE; +/*  	EADDRNOTAVAIL	126	/ * Can't assign requested address */ +                                /* operational errors */ +  gf_error_to_errno_array[GF_ERROR_CODE_ADDRNOTAVAIL] = EADDRNOTAVAIL; +  gf_errno_to_error_array[EADDRNOTAVAIL] = GF_ERROR_CODE_ADDRNOTAVAIL; +/*  	ENETDOWN	127	/ * Network is down */ +  gf_error_to_errno_array[GF_ERROR_CODE_NETDOWN] = ENETDOWN; +  gf_errno_to_error_array[ENETDOWN] = GF_ERROR_CODE_NETDOWN; +/*  	ENETUNREACH	128	/ * Network is unreachable */ +  gf_error_to_errno_array[GF_ERROR_CODE_NETUNREACH] = ENETUNREACH; +  gf_errno_to_error_array[ENETUNREACH] = GF_ERROR_CODE_NETUNREACH; +/*  	ENETRESET	129	/ * Network dropped connection because */ +				/* of reset */ +  gf_error_to_errno_array[GF_ERROR_CODE_NETRESET] = ENETRESET; +  gf_errno_to_error_array[ENETRESET] = GF_ERROR_CODE_NETRESET; +/*  	ECONNABORTED	130	/ * Software caused connection abort */ +  gf_error_to_errno_array[GF_ERROR_CODE_CONNABORTED] = ECONNABORTED; +  gf_errno_to_error_array[ECONNABORTED] = GF_ERROR_CODE_CONNABORTED; +/*  	ECONNRESET	131	/ * Connection reset by peer */ +  gf_error_to_errno_array[GF_ERROR_CODE_CONNRESET] = ECONNRESET; +  gf_errno_to_error_array[ECONNRESET] = GF_ERROR_CODE_CONNRESET; +/*  	ENOBUFS		132	/ * No buffer space available */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOBUFS] = ENOBUFS; +  gf_errno_to_error_array[ENOBUFS] = GF_ERROR_CODE_NOBUFS; +/*  	EISCONN		133	/ * Socket is already connected */ +  gf_error_to_errno_array[GF_ERROR_CODE_ISCONN] = EISCONN; +  gf_errno_to_error_array[EISCONN] = GF_ERROR_CODE_ISCONN; +/*  	ENOTCONN	134	/ * Socket is not connected */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTCONN] = ENOTCONN; +  gf_errno_to_error_array[ENOTCONN] = GF_ERROR_CODE_NOTCONN; +/* XENIX has 135 - 142 */ +/*  	ESHUTDOWN	143	/ * Can't send after socket shutdown */ +  gf_error_to_errno_array[GF_ERROR_CODE_SHUTDOWN] = ESHUTDOWN; +  gf_errno_to_error_array[ESHUTDOWN] = GF_ERROR_CODE_SHUTDOWN; +/*  	ETOOMANYREFS	144	/ * Too many references: can't splice */ +  gf_error_to_errno_array[GF_ERROR_CODE_TOOMANYREFS] = ETOOMANYREFS; +  gf_errno_to_error_array[ETOOMANYREFS] = GF_ERROR_CODE_TOOMANYREFS; +/*  	ETIMEDOUT	145	/ * Connection timed out */ +  gf_error_to_errno_array[GF_ERROR_CODE_TIMEDOUT] = ETIMEDOUT; +  gf_errno_to_error_array[ETIMEDOUT] = GF_ERROR_CODE_TIMEDOUT; + +/*  	ECONNREFUSED	146	/ * Connection refused */ +  gf_error_to_errno_array[GF_ERROR_CODE_CONNREFUSED] = ECONNREFUSED; +  gf_errno_to_error_array[ECONNREFUSED] = GF_ERROR_CODE_CONNREFUSED; +/*  	EHOSTDOWN	147	/ * Host is down */ +  gf_error_to_errno_array[GF_ERROR_CODE_HOSTDOWN] = EHOSTDOWN; +  gf_errno_to_error_array[EHOSTDOWN] = GF_ERROR_CODE_HOSTDOWN; +/*  	EHOSTUNREACH	148	/ * No route to host */ +  gf_error_to_errno_array[GF_ERROR_CODE_HOSTUNREACH] = EHOSTUNREACH; +  gf_errno_to_error_array[EHOSTUNREACH] = GF_ERROR_CODE_HOSTUNREACH; +/*  	EALREADY	149	/ * operation already in progress */ +  gf_error_to_errno_array[GF_ERROR_CODE_ALREADY] = EALREADY; +  gf_errno_to_error_array[EALREADY] = GF_ERROR_CODE_ALREADY; +/*  	EINPROGRESS	150	/ * operation now in progress */ +  gf_error_to_errno_array[GF_ERROR_CODE_INPROGRESS] = EINPROGRESS; +  gf_errno_to_error_array[EINPROGRESS] = GF_ERROR_CODE_INPROGRESS; + +/* SUN Network File System */ +/*  	ESTALE		151	/ * Stale NFS file handle */ +  gf_error_to_errno_array[GF_ERROR_CODE_STALE] = ESTALE; +  gf_errno_to_error_array[ESTALE] = GF_ERROR_CODE_STALE; + +  return ; +} +#endif /* GF_SOLARIS_HOST_OS */ + +#ifdef GF_DARWIN_HOST_OS +static void  +init_compat_errno_arrays () +{ +  /*    EDEADLK         11              / * Resource deadlock would occur */ +  gf_error_to_errno_array[GF_ERROR_CODE_DEADLK] = EDEADLK; +  gf_errno_to_error_array[EDEADLK] = GF_ERROR_CODE_DEADLK; + +  /*    EAGAIN          35              / * Try Again */ +  gf_error_to_errno_array[GF_ERROR_CODE_AGAIN] = EAGAIN; +  gf_errno_to_error_array[EAGAIN] = GF_ERROR_CODE_AGAIN; +   +  /*	EINPROGRESS	36	        / * Operation now in progress */ +  gf_error_to_errno_array[GF_ERROR_CODE_INPROGRESS] = EINPROGRESS; +  gf_errno_to_error_array[EINPROGRESS] = GF_ERROR_CODE_INPROGRESS; + +  /*	EALREADY	37		/ * Operation already in progress */ +  gf_error_to_errno_array[GF_ERROR_CODE_ALREADY] = EALREADY; +  gf_errno_to_error_array[EALREADY] = GF_ERROR_CODE_ALREADY; +   +  /*	ENOTSOCK	38		/ * Socket operation on non-socket */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTSOCK] = ENOTSOCK; +  gf_errno_to_error_array[ENOTSOCK] = GF_ERROR_CODE_NOTSOCK; +   +  /*	EDESTADDRREQ	39		/ * Destination address required */ +  gf_error_to_errno_array[GF_ERROR_CODE_DESTADDRREQ] = EDESTADDRREQ; +  gf_errno_to_error_array[EDESTADDRREQ] = GF_ERROR_CODE_DESTADDRREQ; +   +  /*	EMSGSIZE	40		/ * Message too long */ +  gf_error_to_errno_array[GF_ERROR_CODE_MSGSIZE] = EMSGSIZE; +  gf_errno_to_error_array[EMSGSIZE] = GF_ERROR_CODE_MSGSIZE; +   +  /*	EPROTOTYPE	41		/ * Protocol wrong type for socket */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROTOTYPE] = EPROTOTYPE; +  gf_errno_to_error_array[EPROTOTYPE] = GF_ERROR_CODE_PROTOTYPE; +   +  /*	ENOPROTOOPT	42		/ * Protocol not available */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOPROTOOPT] = ENOPROTOOPT; +  gf_errno_to_error_array[ENOPROTOOPT] = GF_ERROR_CODE_NOPROTOOPT; +   +  /*	EPROTONOSUPPORT	43		/ * Protocol not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROTONOSUPPORT] = EPROTONOSUPPORT; +  gf_errno_to_error_array[EPROTONOSUPPORT] = GF_ERROR_CODE_PROTONOSUPPORT; +   +  /*	ESOCKTNOSUPPORT	44		/ * Socket type not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_SOCKTNOSUPPORT] = ESOCKTNOSUPPORT; +  gf_errno_to_error_array[ESOCKTNOSUPPORT] = GF_ERROR_CODE_SOCKTNOSUPPORT; + +  /*	EOPNOTSUPP	45		/ * Operation not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_OPNOTSUPP] = EOPNOTSUPP; +  gf_errno_to_error_array[EOPNOTSUPP] = GF_ERROR_CODE_OPNOTSUPP; + +  /*	EPFNOSUPPORT	46		/ * Protocol family not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_PFNOSUPPORT] = EPFNOSUPPORT; +  gf_errno_to_error_array[EPFNOSUPPORT] = GF_ERROR_CODE_PFNOSUPPORT; + +  /*	EAFNOSUPPORT	47		/ * Address family not supported by protocol family */ +  gf_error_to_errno_array[GF_ERROR_CODE_AFNOSUPPORT] = EAFNOSUPPORT; +  gf_errno_to_error_array[EAFNOSUPPORT] = GF_ERROR_CODE_AFNOSUPPORT; + +  /*	EADDRINUSE	48		/ * Address already in use */ +  gf_error_to_errno_array[GF_ERROR_CODE_ADDRINUSE] = EADDRINUSE; +  gf_errno_to_error_array[EADDRINUSE] = GF_ERROR_CODE_ADDRINUSE; + +  /*	EADDRNOTAVAIL	49		/ * Can't assign requested address */ +  gf_error_to_errno_array[GF_ERROR_CODE_ADDRNOTAVAIL] = EADDRNOTAVAIL; +  gf_errno_to_error_array[EADDRNOTAVAIL] = GF_ERROR_CODE_ADDRNOTAVAIL; + +  /*	ENETDOWN	50		/ * Network is down */ +  gf_error_to_errno_array[GF_ERROR_CODE_NETDOWN] = ENETDOWN; +  gf_errno_to_error_array[ENETDOWN] = GF_ERROR_CODE_NETDOWN; + +  /*	ENETUNREACH	51		/ * Network is unreachable */ +  gf_error_to_errno_array[GF_ERROR_CODE_NETUNREACH] = ENETUNREACH; +  gf_errno_to_error_array[ENETUNREACH] = GF_ERROR_CODE_NETUNREACH; + +  /*	ENETRESET	52		/ * Network dropped connection on reset */ +  gf_error_to_errno_array[GF_ERROR_CODE_NETRESET] = ENETRESET; +  gf_errno_to_error_array[ENETRESET] = GF_ERROR_CODE_NETRESET; + +  /*	ECONNABORTED	53		/ * Software caused connection abort */ +  gf_error_to_errno_array[GF_ERROR_CODE_CONNABORTED] = ECONNABORTED; +  gf_errno_to_error_array[ECONNABORTED] = GF_ERROR_CODE_CONNABORTED; + +  /*	ECONNRESET	54		/ * Connection reset by peer */ +  gf_error_to_errno_array[GF_ERROR_CODE_CONNRESET] = ECONNRESET; +  gf_errno_to_error_array[ECONNRESET] = GF_ERROR_CODE_CONNRESET; +   +  /*	ENOBUFS		55		/ * No buffer space available */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOBUFS] = ENOBUFS; +  gf_errno_to_error_array[ENOBUFS] = GF_ERROR_CODE_NOBUFS; + +  /*	EISCONN		56		/ * Socket is already connected */ +  gf_error_to_errno_array[GF_ERROR_CODE_ISCONN] = EISCONN; +  gf_errno_to_error_array[EISCONN] = GF_ERROR_CODE_ISCONN; + +  /*	ENOTCONN	57		/ * Socket is not connected */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTCONN] = ENOTCONN; +  gf_errno_to_error_array[ENOTCONN] = GF_ERROR_CODE_NOTCONN; + +  /*	ESHUTDOWN	58		/ * Can't send after socket shutdown */ +  gf_error_to_errno_array[GF_ERROR_CODE_SHUTDOWN] = ESHUTDOWN; +  gf_errno_to_error_array[ESHUTDOWN] = GF_ERROR_CODE_SHUTDOWN; + +  /*	ETOOMANYREFS	59		/ * Too many references: can't splice */ +  gf_error_to_errno_array[GF_ERROR_CODE_TOOMANYREFS] = ETOOMANYREFS; +  gf_errno_to_error_array[ETOOMANYREFS] = GF_ERROR_CODE_TOOMANYREFS; + +  /*	ETIMEDOUT	60		/ * Operation timed out */ +  gf_error_to_errno_array[GF_ERROR_CODE_TIMEDOUT] = ETIMEDOUT; +  gf_errno_to_error_array[ETIMEDOUT] = GF_ERROR_CODE_TIMEDOUT; + +  /*	ECONNREFUSED	61		/ * Connection refused */ +  gf_error_to_errno_array[GF_ERROR_CODE_CONNREFUSED] = ECONNREFUSED; +  gf_errno_to_error_array[ECONNREFUSED] = GF_ERROR_CODE_CONNREFUSED; + +  /*	ELOOP		62		/ * Too many levels of symbolic links */ +  gf_error_to_errno_array[GF_ERROR_CODE_LOOP] = ELOOP; +  gf_errno_to_error_array[ELOOP] = GF_ERROR_CODE_LOOP; + +  /*	ENAMETOOLONG	63		/ * File name too long */ +  gf_error_to_errno_array[GF_ERROR_CODE_NAMETOOLONG] = ENAMETOOLONG; +  gf_errno_to_error_array[ENAMETOOLONG] = GF_ERROR_CODE_NAMETOOLONG; + +  /*	EHOSTDOWN	64		/ * Host is down */ +  gf_error_to_errno_array[GF_ERROR_CODE_HOSTDOWN] = EHOSTDOWN; +  gf_errno_to_error_array[EHOSTDOWN] = GF_ERROR_CODE_HOSTDOWN; + +  /*	EHOSTUNREACH	65		/ * No route to host */ +  gf_error_to_errno_array[GF_ERROR_CODE_HOSTUNREACH] = EHOSTUNREACH; +  gf_errno_to_error_array[EHOSTUNREACH] = GF_ERROR_CODE_HOSTUNREACH; + +  /*	ENOTEMPTY	66		/ * Directory not empty */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTEMPTY] = ENOTEMPTY; +  gf_errno_to_error_array[ENOTEMPTY] = GF_ERROR_CODE_NOTEMPTY; + +  /*	EPROCLIM	67		/ * Too many processes */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROCLIM] = EPROCLIM; +  gf_errno_to_error_array[EPROCLIM] = GF_ERROR_CODE_PROCLIM; + +  /*	EUSERS		68		/ * Too many users */ +  gf_error_to_errno_array[GF_ERROR_CODE_USERS] = EUSERS; +  gf_errno_to_error_array[EUSERS] = GF_ERROR_CODE_USERS; + +  /*	EDQUOT		69		/ * Disc quota exceeded */ +  gf_error_to_errno_array[GF_ERROR_CODE_DQUOT] = EDQUOT; +  gf_errno_to_error_array[EDQUOT] = GF_ERROR_CODE_DQUOT; + +  /*	ESTALE		70		/ * Stale NFS file handle */ +  gf_error_to_errno_array[GF_ERROR_CODE_STALE] = ESTALE; +  gf_errno_to_error_array[ESTALE] = GF_ERROR_CODE_STALE; + +  /*	EREMOTE		71		/ * Too many levels of remote in path */ +  gf_error_to_errno_array[GF_ERROR_CODE_REMOTE] = EREMOTE; +  gf_errno_to_error_array[EREMOTE] = GF_ERROR_CODE_REMOTE; + +  /*	EBADRPC		72		/ * RPC struct is bad */ +  gf_error_to_errno_array[GF_ERROR_CODE_BADRPC] = EBADRPC; +  gf_errno_to_error_array[EBADRPC] = GF_ERROR_CODE_BADRPC; + +  /*	ERPCMISMATCH	73		/ * RPC version wrong */ +  gf_error_to_errno_array[GF_ERROR_CODE_RPCMISMATCH] = ERPCMISMATCH; +  gf_errno_to_error_array[ERPCMISMATCH] = GF_ERROR_CODE_RPCMISMATCH; + +  /*	EPROGUNAVAIL	74		/ * RPC prog. not avail */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROGUNAVAIL] = EPROGUNAVAIL; +  gf_errno_to_error_array[EPROGUNAVAIL] = GF_ERROR_CODE_PROGUNAVAIL; + +  /*	EPROGMISMATCH	75		/ * Program version wrong */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROGMISMATCH] = EPROGMISMATCH; +  gf_errno_to_error_array[EPROGMISMATCH] = GF_ERROR_CODE_PROGMISMATCH; + +  /*	EPROCUNAVAIL	76		/ * Bad procedure for program */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROCUNAVAIL] = EPROCUNAVAIL; +  gf_errno_to_error_array[EPROCUNAVAIL] = GF_ERROR_CODE_PROCUNAVAIL; + +  /*	ENOLCK		77		/ * No locks available */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOLCK] = ENOLCK; +  gf_errno_to_error_array[ENOLCK] = GF_ERROR_CODE_NOLCK; + +  /*	ENOSYS		78		/ * Function not implemented */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOSYS] = ENOSYS; +  gf_errno_to_error_array[ENOSYS] = GF_ERROR_CODE_NOSYS; + +  /*	EFTYPE		79		/ * Inappropriate file type or format */ +  gf_error_to_errno_array[GF_ERROR_CODE_FTYPE] = EFTYPE; +  gf_errno_to_error_array[EFTYPE] = GF_ERROR_CODE_FTYPE; + +  /*	EAUTH		80		/ * Authentication error */ +  gf_error_to_errno_array[GF_ERROR_CODE_AUTH] = EAUTH; +  gf_errno_to_error_array[EAUTH] = GF_ERROR_CODE_AUTH; + +  /*	ENEEDAUTH	81		/ * Need authenticator */ +  gf_error_to_errno_array[GF_ERROR_CODE_NEEDAUTH] = ENEEDAUTH; +  gf_errno_to_error_array[ENEEDAUTH] = GF_ERROR_CODE_NEEDAUTH; +/* Intelligent device errors */ +/*  	EPWROFF		82	/ * Device power is off */ +  gf_error_to_errno_array[GF_ERROR_CODE_PWROFF] = EPWROFF; +  gf_errno_to_error_array[EPWROFF] = GF_ERROR_CODE_PWROFF; +/*  	EDEVERR		83	/ * Device error, e.g. paper out */ +  gf_error_to_errno_array[GF_ERROR_CODE_DEVERR] = EDEVERR; +  gf_errno_to_error_array[EDEVERR] = GF_ERROR_CODE_DEVERR; +  +  /*	EOVERFLOW	84		/ * Value too large to be stored in data type */ +  gf_error_to_errno_array[GF_ERROR_CODE_OVERFLOW] = EOVERFLOW; +  gf_errno_to_error_array[EOVERFLOW] = GF_ERROR_CODE_OVERFLOW; + +/* Program loading errors */ +/*   EBADEXEC	85	/ * Bad executable */ +  gf_error_to_errno_array[GF_ERROR_CODE_BADEXEC] = EBADEXEC; +  gf_errno_to_error_array[EBADEXEC] = GF_ERROR_CODE_BADEXEC; + +/*   EBADARCH	86	/ * Bad CPU type in executable */ +  gf_error_to_errno_array[GF_ERROR_CODE_BADARCH] = EBADARCH; +  gf_errno_to_error_array[EBADARCH] = GF_ERROR_CODE_BADARCH; + +/*   ESHLIBVERS	87	/ * Shared library version mismatch */ +  gf_error_to_errno_array[GF_ERROR_CODE_SHLIBVERS] = ESHLIBVERS; +  gf_errno_to_error_array[ESHLIBVERS] = GF_ERROR_CODE_SHLIBVERS; + +/*   EBADMACHO	88	/ * Malformed Macho file */ +  gf_error_to_errno_array[GF_ERROR_CODE_BADMACHO] = EBADMACHO; +  gf_errno_to_error_array[EBADMACHO] = GF_ERROR_CODE_BADMACHO; + +#if 0 +  /*    EDOOFUS		88		/ * Programming error */ +  gf_error_to_errno_array[GF_ERROR_CODE_DOOFUS] = EDOOFUS; +  gf_errno_to_error_array[EDOOFUS] = GF_ERROR_CODE_DOOFUS; +#endif + +  /*  	ECANCELED	89		/ * Operation canceled */ +  gf_error_to_errno_array[GF_ERROR_CODE_CANCELED] = ECANCELED; +  gf_errno_to_error_array[ECANCELED] = GF_ERROR_CODE_CANCELED; + +  /*   EIDRM		90		/ * Identifier removed */ +  gf_error_to_errno_array[GF_ERROR_CODE_IDRM] = EIDRM; +  gf_errno_to_error_array[EIDRM] = GF_ERROR_CODE_IDRM; +  /*   ENOMSG		91		/ * No message of desired type */    +  gf_error_to_errno_array[GF_ERROR_CODE_NOMSG] = ENOMSG; +  gf_errno_to_error_array[ENOMSG] = GF_ERROR_CODE_NOMSG; + +  /*   EILSEQ		92		/ * Illegal byte sequence */ +  gf_error_to_errno_array[GF_ERROR_CODE_ILSEQ] = EILSEQ; +  gf_errno_to_error_array[EILSEQ] = GF_ERROR_CODE_ILSEQ; + +  /*   ENOATTR		93		/ * Attribute not found */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOATTR] = ENOATTR; +  gf_errno_to_error_array[ENOATTR] = GF_ERROR_CODE_NOATTR; + +  /*   EBADMSG		94		/ * Bad message */ +  gf_error_to_errno_array[GF_ERROR_CODE_BADMSG] = EBADMSG; +  gf_errno_to_error_array[EBADMSG] = GF_ERROR_CODE_BADMSG; + +  /*   EMULTIHOP	95		/ * Reserved */ +  gf_error_to_errno_array[GF_ERROR_CODE_MULTIHOP] = EMULTIHOP; +  gf_errno_to_error_array[EMULTIHOP] = GF_ERROR_CODE_MULTIHOP; + +  /*  	ENODATA		96		/ * No message available on STREAM */ +  gf_error_to_errno_array[GF_ERROR_CODE_NEEDAUTH] = ENEEDAUTH; +  gf_errno_to_error_array[ENEEDAUTH] = GF_ERROR_CODE_NEEDAUTH; + +  /*   ENOLINK		97		/ * Reserved */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOLINK] = ENOLINK; +  gf_errno_to_error_array[ENOLINK] = GF_ERROR_CODE_NOLINK; + +  /*   ENOSR		98		/ * No STREAM resources */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOSR] = ENOSR; +  gf_errno_to_error_array[ENOSR] = GF_ERROR_CODE_NOSR; + +  /*   ENOSTR		99		/ * Not a STREAM */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOSTR] = ENOSTR; +  gf_errno_to_error_array[ENOSTR] = GF_ERROR_CODE_NOSTR; + +/*  	EPROTO		100		/ * Protocol error */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROTO] = EPROTO; +  gf_errno_to_error_array[EPROTO] = GF_ERROR_CODE_PROTO; +/*   ETIME		101		/ * STREAM ioctl timeout */ +  gf_error_to_errno_array[GF_ERROR_CODE_TIME] = ETIME; +  gf_errno_to_error_array[ETIME] = GF_ERROR_CODE_TIME; + +/* This value is only discrete when compiling __DARWIN_UNIX03, or KERNEL */ +/*  	EOPNOTSUPP	102		/ * Operation not supported on socket */ +  gf_error_to_errno_array[GF_ERROR_CODE_OPNOTSUPP] = EOPNOTSUPP; +  gf_errno_to_error_array[EOPNOTSUPP] = GF_ERROR_CODE_OPNOTSUPP; + +/*   ENOPOLICY	103		/ * No such policy registered */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOPOLICY] = ENOPOLICY; +  gf_errno_to_error_array[ENOPOLICY] = GF_ERROR_CODE_NOPOLICY; + +  return ; +} +#endif /* GF_DARWIN_HOST_OS */ + +#ifdef GF_BSD_HOST_OS +static void  +init_compat_errno_arrays () +{ +  /* Quite a bit of things changed in FreeBSD - current */ + +  /*    EAGAIN          35              / * Try Again */ +  gf_error_to_errno_array[GF_ERROR_CODE_AGAIN] = EAGAIN; +  gf_errno_to_error_array[EAGAIN] = GF_ERROR_CODE_AGAIN; + +  /*    EDEADLK         11              / * Resource deadlock would occur */ +  gf_error_to_errno_array[GF_ERROR_CODE_DEADLK] = EDEADLK; +  gf_errno_to_error_array[EDEADLK] = GF_ERROR_CODE_DEADLK; +   +  /*	EINPROGRESS	36	        / * Operation now in progress */ +  gf_error_to_errno_array[GF_ERROR_CODE_INPROGRESS] = EINPROGRESS; +  gf_errno_to_error_array[EINPROGRESS] = GF_ERROR_CODE_INPROGRESS; + +  /*	EALREADY	37		/ * Operation already in progress */ +  gf_error_to_errno_array[GF_ERROR_CODE_ALREADY] = EALREADY; +  gf_errno_to_error_array[EALREADY] = GF_ERROR_CODE_ALREADY; +   +  /*	ENOTSOCK	38		/ * Socket operation on non-socket */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTSOCK] = ENOTSOCK; +  gf_errno_to_error_array[ENOTSOCK] = GF_ERROR_CODE_NOTSOCK; +   +  /*	EDESTADDRREQ	39		/ * Destination address required */ +  gf_error_to_errno_array[GF_ERROR_CODE_DESTADDRREQ] = EDESTADDRREQ; +  gf_errno_to_error_array[EDESTADDRREQ] = GF_ERROR_CODE_DESTADDRREQ; +   +  /*	EMSGSIZE	40		/ * Message too long */ +  gf_error_to_errno_array[GF_ERROR_CODE_MSGSIZE] = EMSGSIZE; +  gf_errno_to_error_array[EMSGSIZE] = GF_ERROR_CODE_MSGSIZE; +   +  /*	EPROTOTYPE	41		/ * Protocol wrong type for socket */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROTOTYPE] = EPROTOTYPE; +  gf_errno_to_error_array[EPROTOTYPE] = GF_ERROR_CODE_PROTOTYPE; +   +  /*	ENOPROTOOPT	42		/ * Protocol not available */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOPROTOOPT] = ENOPROTOOPT; +  gf_errno_to_error_array[ENOPROTOOPT] = GF_ERROR_CODE_NOPROTOOPT; +   +  /*	EPROTONOSUPPORT	43		/ * Protocol not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROTONOSUPPORT] = EPROTONOSUPPORT; +  gf_errno_to_error_array[EPROTONOSUPPORT] = GF_ERROR_CODE_PROTONOSUPPORT; +   +  /*	ESOCKTNOSUPPORT	44		/ * Socket type not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_SOCKTNOSUPPORT] = ESOCKTNOSUPPORT; +  gf_errno_to_error_array[ESOCKTNOSUPPORT] = GF_ERROR_CODE_SOCKTNOSUPPORT; + +  /*	EOPNOTSUPP	45		/ * Operation not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_OPNOTSUPP] = EOPNOTSUPP; +  gf_errno_to_error_array[EOPNOTSUPP] = GF_ERROR_CODE_OPNOTSUPP; + +  /*	EPFNOSUPPORT	46		/ * Protocol family not supported */ +  gf_error_to_errno_array[GF_ERROR_CODE_PFNOSUPPORT] = EPFNOSUPPORT; +  gf_errno_to_error_array[EPFNOSUPPORT] = GF_ERROR_CODE_PFNOSUPPORT; + +  /*	EAFNOSUPPORT	47		/ * Address family not supported by protocol family */ +  gf_error_to_errno_array[GF_ERROR_CODE_AFNOSUPPORT] = EAFNOSUPPORT; +  gf_errno_to_error_array[EAFNOSUPPORT] = GF_ERROR_CODE_AFNOSUPPORT; + +  /*	EADDRINUSE	48		/ * Address already in use */ +  gf_error_to_errno_array[GF_ERROR_CODE_ADDRINUSE] = EADDRINUSE; +  gf_errno_to_error_array[EADDRINUSE] = GF_ERROR_CODE_ADDRINUSE; + +  /*	EADDRNOTAVAIL	49		/ * Can't assign requested address */ +  gf_error_to_errno_array[GF_ERROR_CODE_ADDRNOTAVAIL] = EADDRNOTAVAIL; +  gf_errno_to_error_array[EADDRNOTAVAIL] = GF_ERROR_CODE_ADDRNOTAVAIL; + +  /*	ENETDOWN	50		/ * Network is down */ +  gf_error_to_errno_array[GF_ERROR_CODE_NETDOWN] = ENETDOWN; +  gf_errno_to_error_array[ENETDOWN] = GF_ERROR_CODE_NETDOWN; + +  /*	ENETUNREACH	51		/ * Network is unreachable */ +  gf_error_to_errno_array[GF_ERROR_CODE_NETUNREACH] = ENETUNREACH; +  gf_errno_to_error_array[ENETUNREACH] = GF_ERROR_CODE_NETUNREACH; + +  /*	ENETRESET	52		/ * Network dropped connection on reset */ +  gf_error_to_errno_array[GF_ERROR_CODE_NETRESET] = ENETRESET; +  gf_errno_to_error_array[ENETRESET] = GF_ERROR_CODE_NETRESET; + +  /*	ECONNABORTED	53		/ * Software caused connection abort */ +  gf_error_to_errno_array[GF_ERROR_CODE_CONNABORTED] = ECONNABORTED; +  gf_errno_to_error_array[ECONNABORTED] = GF_ERROR_CODE_CONNABORTED; + +  /*	ECONNRESET	54		/ * Connection reset by peer */ +  gf_error_to_errno_array[GF_ERROR_CODE_CONNRESET] = ECONNRESET; +  gf_errno_to_error_array[ECONNRESET] = GF_ERROR_CODE_CONNRESET; +   +  /*	ENOBUFS		55		/ * No buffer space available */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOBUFS] = ENOBUFS; +  gf_errno_to_error_array[ENOBUFS] = GF_ERROR_CODE_NOBUFS; + +  /*	EISCONN		56		/ * Socket is already connected */ +  gf_error_to_errno_array[GF_ERROR_CODE_ISCONN] = EISCONN; +  gf_errno_to_error_array[EISCONN] = GF_ERROR_CODE_ISCONN; + +  /*	ENOTCONN	57		/ * Socket is not connected */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTCONN] = ENOTCONN; +  gf_errno_to_error_array[ENOTCONN] = GF_ERROR_CODE_NOTCONN; + +  /*	ESHUTDOWN	58		/ * Can't send after socket shutdown */ +  gf_error_to_errno_array[GF_ERROR_CODE_SHUTDOWN] = ESHUTDOWN; +  gf_errno_to_error_array[ESHUTDOWN] = GF_ERROR_CODE_SHUTDOWN; + +  /*	ETOOMANYREFS	59		/ * Too many references: can't splice */ +  gf_error_to_errno_array[GF_ERROR_CODE_TOOMANYREFS] = ETOOMANYREFS; +  gf_errno_to_error_array[ETOOMANYREFS] = GF_ERROR_CODE_TOOMANYREFS; + +  /*	ETIMEDOUT	60		/ * Operation timed out */ +  gf_error_to_errno_array[GF_ERROR_CODE_TIMEDOUT] = ETIMEDOUT; +  gf_errno_to_error_array[ETIMEDOUT] = GF_ERROR_CODE_TIMEDOUT; + +  /*	ECONNREFUSED	61		/ * Connection refused */ +  gf_error_to_errno_array[GF_ERROR_CODE_CONNREFUSED] = ECONNREFUSED; +  gf_errno_to_error_array[ECONNREFUSED] = GF_ERROR_CODE_CONNREFUSED; + +  /*	ELOOP		62		/ * Too many levels of symbolic links */ +  gf_error_to_errno_array[GF_ERROR_CODE_LOOP] = ELOOP; +  gf_errno_to_error_array[ELOOP] = GF_ERROR_CODE_LOOP; + +  /*	ENAMETOOLONG	63		/ * File name too long */ +  gf_error_to_errno_array[GF_ERROR_CODE_NAMETOOLONG] = ENAMETOOLONG; +  gf_errno_to_error_array[ENAMETOOLONG] = GF_ERROR_CODE_NAMETOOLONG; + +  /*	EHOSTDOWN	64		/ * Host is down */ +  gf_error_to_errno_array[GF_ERROR_CODE_HOSTDOWN] = EHOSTDOWN; +  gf_errno_to_error_array[EHOSTDOWN] = GF_ERROR_CODE_HOSTDOWN; + +  /*	EHOSTUNREACH	65		/ * No route to host */ +  gf_error_to_errno_array[GF_ERROR_CODE_HOSTUNREACH] = EHOSTUNREACH; +  gf_errno_to_error_array[EHOSTUNREACH] = GF_ERROR_CODE_HOSTUNREACH; + +  /*	ENOTEMPTY	66		/ * Directory not empty */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOTEMPTY] = ENOTEMPTY; +  gf_errno_to_error_array[ENOTEMPTY] = GF_ERROR_CODE_NOTEMPTY; + +  /*	EPROCLIM	67		/ * Too many processes */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROCLIM] = EPROCLIM; +  gf_errno_to_error_array[EPROCLIM] = GF_ERROR_CODE_PROCLIM; + +  /*	EUSERS		68		/ * Too many users */ +  gf_error_to_errno_array[GF_ERROR_CODE_USERS] = EUSERS; +  gf_errno_to_error_array[EUSERS] = GF_ERROR_CODE_USERS; + +  /*	EDQUOT		69		/ * Disc quota exceeded */ +  gf_error_to_errno_array[GF_ERROR_CODE_DQUOT] = EDQUOT; +  gf_errno_to_error_array[EDQUOT] = GF_ERROR_CODE_DQUOT; + +  /*	ESTALE		70		/ * Stale NFS file handle */ +  gf_error_to_errno_array[GF_ERROR_CODE_STALE] = ESTALE; +  gf_errno_to_error_array[ESTALE] = GF_ERROR_CODE_STALE; + +  /*	EREMOTE		71		/ * Too many levels of remote in path */ +  gf_error_to_errno_array[GF_ERROR_CODE_REMOTE] = EREMOTE; +  gf_errno_to_error_array[EREMOTE] = GF_ERROR_CODE_REMOTE; + +  /*	EBADRPC		72		/ * RPC struct is bad */ +  gf_error_to_errno_array[GF_ERROR_CODE_BADRPC] = EBADRPC; +  gf_errno_to_error_array[EBADRPC] = GF_ERROR_CODE_BADRPC; + +  /*	ERPCMISMATCH	73		/ * RPC version wrong */ +  gf_error_to_errno_array[GF_ERROR_CODE_RPCMISMATCH] = ERPCMISMATCH; +  gf_errno_to_error_array[ERPCMISMATCH] = GF_ERROR_CODE_RPCMISMATCH; + +  /*	EPROGUNAVAIL	74		/ * RPC prog. not avail */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROGUNAVAIL] = EPROGUNAVAIL; +  gf_errno_to_error_array[EPROGUNAVAIL] = GF_ERROR_CODE_PROGUNAVAIL; + +  /*	EPROGMISMATCH	75		/ * Program version wrong */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROGMISMATCH] = EPROGMISMATCH; +  gf_errno_to_error_array[EPROGMISMATCH] = GF_ERROR_CODE_PROGMISMATCH; + +  /*	EPROCUNAVAIL	76		/ * Bad procedure for program */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROCUNAVAIL] = EPROCUNAVAIL; +  gf_errno_to_error_array[EPROCUNAVAIL] = GF_ERROR_CODE_PROCUNAVAIL; + +  /*	ENOLCK		77		/ * No locks available */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOLCK] = ENOLCK; +  gf_errno_to_error_array[ENOLCK] = GF_ERROR_CODE_NOLCK; + +  /*	ENOSYS		78		/ * Function not implemented */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOSYS] = ENOSYS; +  gf_errno_to_error_array[ENOSYS] = GF_ERROR_CODE_NOSYS; + +  /*	EFTYPE		79		/ * Inappropriate file type or format */ +  gf_error_to_errno_array[GF_ERROR_CODE_FTYPE] = EFTYPE; +  gf_errno_to_error_array[EFTYPE] = GF_ERROR_CODE_FTYPE; + +  /*	EAUTH		80		/ * Authentication error */ +  gf_error_to_errno_array[GF_ERROR_CODE_AUTH] = EAUTH; +  gf_errno_to_error_array[EAUTH] = GF_ERROR_CODE_AUTH; + +  /*	ENEEDAUTH	81		/ * Need authenticator */ +  gf_error_to_errno_array[GF_ERROR_CODE_NEEDAUTH] = ENEEDAUTH; +  gf_errno_to_error_array[ENEEDAUTH] = GF_ERROR_CODE_NEEDAUTH; + +  /*	EIDRM		82		/ * Identifier removed */ +  gf_error_to_errno_array[GF_ERROR_CODE_IDRM] = EIDRM; +  gf_errno_to_error_array[EIDRM] = GF_ERROR_CODE_IDRM; + +  /*	ENOMSG		83		/ * No message of desired type */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOMSG] = ENOMSG; +  gf_errno_to_error_array[ENOMSG] = GF_ERROR_CODE_NOMSG; + +  /*	EOVERFLOW	84		/ * Value too large to be stored in data type */ +  gf_error_to_errno_array[GF_ERROR_CODE_OVERFLOW] = EOVERFLOW; +  gf_errno_to_error_array[EOVERFLOW] = GF_ERROR_CODE_OVERFLOW; + +  /*	ECANCELED	85		/ * Operation canceled */ +  gf_error_to_errno_array[GF_ERROR_CODE_CANCELED] = ECANCELED; +  gf_errno_to_error_array[ECANCELED] = GF_ERROR_CODE_CANCELED; + +  /*	EILSEQ		86		/ * Illegal byte sequence */ +  gf_error_to_errno_array[GF_ERROR_CODE_ILSEQ] = EILSEQ; +  gf_errno_to_error_array[EILSEQ] = GF_ERROR_CODE_ILSEQ; + +  /*	ENOATTR		87		/ * Attribute not found */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOATTR] = ENOATTR; +  gf_errno_to_error_array[ENOATTR] = GF_ERROR_CODE_NOATTR; +   +  /*    EDOOFUS		88		/ * Programming error */ +  gf_error_to_errno_array[GF_ERROR_CODE_DOOFUS] = EDOOFUS; +  gf_errno_to_error_array[EDOOFUS] = GF_ERROR_CODE_DOOFUS; + +  /*	EBADMSG		89		/ * Bad message */ +  gf_error_to_errno_array[GF_ERROR_CODE_BADMSG] = EBADMSG; +  gf_errno_to_error_array[EBADMSG] = GF_ERROR_CODE_BADMSG; + +  /*	EMULTIHOP	90		/ * Multihop attempted */ +  gf_error_to_errno_array[GF_ERROR_CODE_MULTIHOP] = EMULTIHOP; +  gf_errno_to_error_array[EMULTIHOP] = GF_ERROR_CODE_MULTIHOP; + +  /*	ENOLINK		91		/ * Link has been severed */ +  gf_error_to_errno_array[GF_ERROR_CODE_NOLINK] = ENOLINK; +  gf_errno_to_error_array[ENOLINK] = GF_ERROR_CODE_NOLINK; + +  /*	EPROTO		92		/ * Protocol error */ +  gf_error_to_errno_array[GF_ERROR_CODE_PROTO] = EPROTO; +  gf_errno_to_error_array[EPROTO] = GF_ERROR_CODE_PROTO; + + +  return ; +} +#endif /* GF_BSD_HOST_OS */ + +#ifdef GF_LINUX_HOST_OS +static void  +init_compat_errno_arrays () +{ +  /* Things are fine. Everything should work seemlessly on GNU/Linux machines */ +  return ; +} +#endif /* GF_LINUX_HOST_OS */ + + +static void +init_errno_arrays () +{ +  int i; +  for (i=0; i < GF_ERROR_CODE_UNKNOWN; i++) { +    gf_errno_to_error_array[i] = i; +    gf_error_to_errno_array[i] = i; +  } +  /* Now change the order if it needs to be. */ +  init_compat_errno_arrays(); + +  return; +} + +int32_t  +gf_errno_to_error (int32_t op_errno) +{ +  if (!gf_compat_errno_init_done) { +    init_errno_arrays (); +    gf_compat_errno_init_done = 1; +  } + +  if ((op_errno > GF_ERROR_CODE_SUCCESS) && (op_errno < GF_ERROR_CODE_UNKNOWN)) +    return gf_errno_to_error_array[op_errno]; + +  return op_errno; +} + + +int32_t  +gf_error_to_errno (int32_t error) +{ +  if (!gf_compat_errno_init_done) { +    init_errno_arrays (); +    gf_compat_errno_init_done = 1; +  } + +  if ((error > GF_ERROR_CODE_SUCCESS) && (error < GF_ERROR_CODE_UNKNOWN)) +    return gf_error_to_errno_array[error]; + +  return error; +} +  | 
