rpm/db/clib/strerror.c

226 lines
8.5 KiB
C

/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 1997,2007 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,v 12.13 2007/05/17 16:57:46 bostic Exp $
*/
/*
* 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));
}