diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 16:00:08 -0700 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 16:00:08 -0700 |
commit | 7edf6e8ac0df452d4af7a15da08609821b0b3c0f (patch) | |
tree | 1cf0f01d9b6574972173e3cd40b62e4ebeaaaaae /clib/strerror.c | |
download | db4-7edf6e8ac0df452d4af7a15da08609821b0b3c0f.tar.gz db4-7edf6e8ac0df452d4af7a15da08609821b0b3c0f.tar.bz2 db4-7edf6e8ac0df452d4af7a15da08609821b0b3c0f.zip |
Imported Upstream version 4.8.30.NCupstream/4.8.30.NC
Diffstat (limited to 'clib/strerror.c')
-rw-r--r-- | clib/strerror.c | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/clib/strerror.c b/clib/strerror.c new file mode 100644 index 00000000..1d20a5fe --- /dev/null +++ b/clib/strerror.c @@ -0,0 +1,225 @@ +/*- + * See the file LICENSE for redistribution information. + * + * Copyright (c) 1997-2009 Oracle. All rights reserved. + */ +/* + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +/* + * Copyright (c) 1982, 1985, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * __FBSDID("FreeBSD: /repoman/r/ncvs/src/lib/libc/gen/errlst.c,v 1.8 2005/04/02 12:33:28 das Exp $"); + */ + +#include "db_config.h" + +#include "db_int.h" + +/* + * __db_strerror -- + * Return the string associated with an errno. + * + * PUBLIC: #ifndef HAVE_STRERROR + * PUBLIC: char *strerror __P((int)); + * PUBLIC: #endif + */ +char * +strerror(num) + int num; +{ +#define ERRSTR(v, s) do { \ + if (num == (v)) \ + return (s); \ +} while (0) + ERRSTR(0, "Undefined error: 0"); + ERRSTR(EPERM, "Operation not permitted"); + ERRSTR(ENOENT, "No such file or directory"); + ERRSTR(ESRCH, "No such process"); + ERRSTR(EINTR, "Interrupted system call"); + ERRSTR(EIO, "Input/output error"); + ERRSTR(ENXIO, "Device not configured"); + ERRSTR(E2BIG, "Argument list too long"); + ERRSTR(ENOEXEC, "Exec format error"); + ERRSTR(EBADF, "Bad file descriptor"); + ERRSTR(ECHILD, "No child processes"); + ERRSTR(EDEADLK, "Resource deadlock avoided"); + ERRSTR(ENOMEM, "Cannot allocate memory"); + ERRSTR(EACCES, "Permission denied"); + ERRSTR(EFAULT, "Bad address"); + ERRSTR(ENOTBLK, "Block device required"); + ERRSTR(EBUSY, "Device busy"); + ERRSTR(EEXIST, "File exists"); + ERRSTR(EXDEV, "Cross-device link"); + ERRSTR(ENODEV, "Operation not supported by device"); + ERRSTR(ENOTDIR, "Not a directory"); + ERRSTR(EISDIR, "Is a directory"); + ERRSTR(EINVAL, "Invalid argument"); + ERRSTR(ENFILE, "Too many open files in system"); + ERRSTR(EMFILE, "Too many open files"); + ERRSTR(ENOTTY, "Inappropriate ioctl for device"); + ERRSTR(ETXTBSY, "Text file busy"); + ERRSTR(EFBIG, "File too large"); + ERRSTR(ENOSPC, "No space left on device"); + ERRSTR(ESPIPE, "Illegal seek"); + ERRSTR(EROFS, "Read-only file system"); + ERRSTR(EMLINK, "Too many links"); + ERRSTR(EPIPE, "Broken pipe"); + +/* math software */ + ERRSTR(EDOM, "Numerical argument out of domain"); + ERRSTR(ERANGE, "Result too large"); + +/* non-blocking and interrupt i/o */ + ERRSTR(EAGAIN, "Resource temporarily unavailable"); + ERRSTR(EWOULDBLOCK, "Resource temporarily unavailable"); + ERRSTR(EINPROGRESS, "Operation now in progress"); + ERRSTR(EALREADY, "Operation already in progress"); + +/* ipc/network software -- argument errors */ + ERRSTR(ENOTSOCK, "Socket operation on non-socket"); + ERRSTR(EDESTADDRREQ, "Destination address required"); + ERRSTR(EMSGSIZE, "Message too long"); + ERRSTR(EPROTOTYPE, "Protocol wrong type for socket"); + ERRSTR(ENOPROTOOPT, "Protocol not available"); + ERRSTR(EPROTONOSUPPORT, "Protocol not supported"); + ERRSTR(ESOCKTNOSUPPORT, "Socket type not supported"); + ERRSTR(EOPNOTSUPP, "Operation not supported"); + ERRSTR(EPFNOSUPPORT, "Protocol family not supported"); + ERRSTR(EAFNOSUPPORT, "Address family not supported by protocol family"); + ERRSTR(EADDRINUSE, "Address already in use"); + ERRSTR(EADDRNOTAVAIL, "Can't assign requested address"); + +/* ipc/network software -- operational errors */ + ERRSTR(ENETDOWN, "Network is down"); + ERRSTR(ENETUNREACH, "Network is unreachable"); + ERRSTR(ENETRESET, "Network dropped connection on reset"); + ERRSTR(ECONNABORTED, "Software caused connection abort"); + ERRSTR(ECONNRESET, "Connection reset by peer"); + ERRSTR(ENOBUFS, "No buffer space available"); + ERRSTR(EISCONN, "Socket is already connected"); + ERRSTR(ENOTCONN, "Socket is not connected"); + ERRSTR(ESHUTDOWN, "Can't send after socket shutdown"); + ERRSTR(ETOOMANYREFS, "Too many references: can't splice"); + ERRSTR(ETIMEDOUT, "Operation timed out"); + ERRSTR(ECONNREFUSED, "Connection refused"); + + ERRSTR(ELOOP, "Too many levels of symbolic links"); + ERRSTR(ENAMETOOLONG, "File name too long"); + +/* should be rearranged */ + ERRSTR(EHOSTDOWN, "Host is down"); + ERRSTR(EHOSTUNREACH, "No route to host"); + ERRSTR(ENOTEMPTY, "Directory not empty"); + +/* quotas & mush */ + ERRSTR(EPROCLIM, "Too many processes"); + ERRSTR(EUSERS, "Too many users"); + ERRSTR(EDQUOT, "Disc quota exceeded"); + +/* Network File System */ + ERRSTR(ESTALE, "Stale NFS file handle"); + ERRSTR(EREMOTE, "Too many levels of remote in path"); + ERRSTR(EBADRPC, "RPC struct is bad"); + ERRSTR(ERPCMISMATCH, "RPC version wrong"); + ERRSTR(EPROGUNAVAIL, "RPC prog. not avail"); + ERRSTR(EPROGMISMATCH, "Program version wrong"); + ERRSTR(EPROCUNAVAIL, "Bad procedure for program"); + + ERRSTR(ENOLCK, "No locks available"); + ERRSTR(ENOSYS, "Function not implemented"); + ERRSTR(EFTYPE, "Inappropriate file type or format"); +#ifdef EAUTH + ERRSTR(EAUTH, "Authentication error"); +#endif +#ifdef ENEEDAUTH + ERRSTR(ENEEDAUTH, "Need authenticator"); +#endif + ERRSTR(EIDRM, "Identifier removed"); + ERRSTR(ENOMSG, "No message of desired type"); +#ifdef EOVERFLOW + ERRSTR(EOVERFLOW, "Value too large to be stored in data type"); +#endif + ERRSTR(ECANCELED, "Operation canceled"); + ERRSTR(EILSEQ, "Illegal byte sequence"); +#ifdef ENOATTR + ERRSTR(ENOATTR, "Attribute not found"); +#endif + +/* General */ +#ifdef EDOOFUS + ERRSTR(EDOOFUS, "Programming error"); +#endif + +#ifdef EBADMSG + ERRSTR(EBADMSG, "Bad message"); +#endif +#ifdef EMULTIHOP + ERRSTR(EMULTIHOP, "Multihop attempted"); +#endif +#ifdef ENOLINK + ERRSTR(ENOLINK, "Link has been severed"); +#endif +#ifdef EPROTO + ERRSTR(EPROTO, "Protocol error"); +#endif + + return (__db_unknown_error(num)); +} |