#include "db_config.h"
#include "db_int.h"
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");
ERRSTR(EDOM, "Numerical argument out of domain");
ERRSTR(ERANGE, "Result too large");
ERRSTR(EAGAIN, "Resource temporarily unavailable");
ERRSTR(EWOULDBLOCK, "Resource temporarily unavailable");
ERRSTR(EINPROGRESS, "Operation now in progress");
ERRSTR(EALREADY, "Operation already in progress");
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");
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");
ERRSTR(EHOSTDOWN, "Host is down");
ERRSTR(EHOSTUNREACH, "No route to host");
ERRSTR(ENOTEMPTY, "Directory not empty");
ERRSTR(EPROCLIM, "Too many processes");
ERRSTR(EUSERS, "Too many users");
ERRSTR(EDQUOT, "Disc quota exceeded");
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
#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));
}