Import BSDDB 4.7.25 (as of svn r89086)
This commit is contained in:
225
clib/strerror.c
Normal file
225
clib/strerror.c
Normal file
@@ -0,0 +1,225 @@
|
||||
/*-
|
||||
* See the file LICENSE for redistribution information.
|
||||
*
|
||||
* Copyright (c) 1997,2008 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: strerror.c 63573 2008-05-23 21:43:21Z trent.nelson $
|
||||
*/
|
||||
|
||||
/*
|
||||
* 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));
|
||||
}
|
||||
Reference in New Issue
Block a user