482 lines
7.4 KiB
C
482 lines
7.4 KiB
C
/*
|
|
* Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
|
|
* 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. The name of the author may not be used to endorse or promote products
|
|
* derived from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
|
*/
|
|
|
|
#include "tests.h"
|
|
#include <errno.h>
|
|
|
|
#define CASE(x) case x: return #x
|
|
|
|
const char *
|
|
errno2name(void)
|
|
{
|
|
switch (errno) {
|
|
/* names taken from linux/errnoent.h */
|
|
#ifdef E2BIG
|
|
CASE(E2BIG);
|
|
#endif
|
|
#ifdef EACCES
|
|
CASE(EACCES);
|
|
#endif
|
|
#ifdef EADDRINUSE
|
|
CASE(EADDRINUSE);
|
|
#endif
|
|
#ifdef EADDRNOTAVAIL
|
|
CASE(EADDRNOTAVAIL);
|
|
#endif
|
|
#ifdef EADV
|
|
CASE(EADV);
|
|
#endif
|
|
#ifdef EAFNOSUPPORT
|
|
CASE(EAFNOSUPPORT);
|
|
#endif
|
|
#ifdef EAGAIN
|
|
CASE(EAGAIN);
|
|
#endif
|
|
#ifdef EALREADY
|
|
CASE(EALREADY);
|
|
#endif
|
|
#ifdef EBADCOOKIE
|
|
CASE(EBADCOOKIE);
|
|
#endif
|
|
#ifdef EBADE
|
|
CASE(EBADE);
|
|
#endif
|
|
#ifdef EBADF
|
|
CASE(EBADF);
|
|
#endif
|
|
#ifdef EBADFD
|
|
CASE(EBADFD);
|
|
#endif
|
|
#ifdef EBADHANDLE
|
|
CASE(EBADHANDLE);
|
|
#endif
|
|
#ifdef EBADMSG
|
|
CASE(EBADMSG);
|
|
#endif
|
|
#ifdef EBADR
|
|
CASE(EBADR);
|
|
#endif
|
|
#ifdef EBADRQC
|
|
CASE(EBADRQC);
|
|
#endif
|
|
#ifdef EBADSLT
|
|
CASE(EBADSLT);
|
|
#endif
|
|
#ifdef EBADTYPE
|
|
CASE(EBADTYPE);
|
|
#endif
|
|
#ifdef EBFONT
|
|
CASE(EBFONT);
|
|
#endif
|
|
#ifdef EBUSY
|
|
CASE(EBUSY);
|
|
#endif
|
|
#ifdef ECANCELED
|
|
CASE(ECANCELED);
|
|
#endif
|
|
#ifdef ECHILD
|
|
CASE(ECHILD);
|
|
#endif
|
|
#ifdef ECHRNG
|
|
CASE(ECHRNG);
|
|
#endif
|
|
#ifdef ECOMM
|
|
CASE(ECOMM);
|
|
#endif
|
|
#ifdef ECONNABORTED
|
|
CASE(ECONNABORTED);
|
|
#endif
|
|
#ifdef ECONNREFUSED
|
|
CASE(ECONNREFUSED);
|
|
#endif
|
|
#ifdef ECONNRESET
|
|
CASE(ECONNRESET);
|
|
#endif
|
|
#ifdef EDEADLK
|
|
CASE(EDEADLK);
|
|
#endif
|
|
#ifdef EDESTADDRREQ
|
|
CASE(EDESTADDRREQ);
|
|
#endif
|
|
#ifdef EDOM
|
|
CASE(EDOM);
|
|
#endif
|
|
#ifdef EDOTDOT
|
|
CASE(EDOTDOT);
|
|
#endif
|
|
#ifdef EDQUOT
|
|
CASE(EDQUOT);
|
|
#endif
|
|
#ifdef EEXIST
|
|
CASE(EEXIST);
|
|
#endif
|
|
#ifdef EFAULT
|
|
CASE(EFAULT);
|
|
#endif
|
|
#ifdef EFBIG
|
|
CASE(EFBIG);
|
|
#endif
|
|
#ifdef EHOSTDOWN
|
|
CASE(EHOSTDOWN);
|
|
#endif
|
|
#ifdef EHOSTUNREACH
|
|
CASE(EHOSTUNREACH);
|
|
#endif
|
|
#ifdef EHWPOISON
|
|
CASE(EHWPOISON);
|
|
#endif
|
|
#ifdef EIDRM
|
|
CASE(EIDRM);
|
|
#endif
|
|
#ifdef EILSEQ
|
|
CASE(EILSEQ);
|
|
#endif
|
|
#ifdef EINPROGRESS
|
|
CASE(EINPROGRESS);
|
|
#endif
|
|
#ifdef EINTR
|
|
CASE(EINTR);
|
|
#endif
|
|
#ifdef EINVAL
|
|
CASE(EINVAL);
|
|
#endif
|
|
#ifdef EIO
|
|
CASE(EIO);
|
|
#endif
|
|
#ifdef EIOCBQUEUED
|
|
CASE(EIOCBQUEUED);
|
|
#endif
|
|
#ifdef EISCONN
|
|
CASE(EISCONN);
|
|
#endif
|
|
#ifdef EISDIR
|
|
CASE(EISDIR);
|
|
#endif
|
|
#ifdef EISNAM
|
|
CASE(EISNAM);
|
|
#endif
|
|
#ifdef EJUKEBOX
|
|
CASE(EJUKEBOX);
|
|
#endif
|
|
#ifdef EKEYEXPIRED
|
|
CASE(EKEYEXPIRED);
|
|
#endif
|
|
#ifdef EKEYREJECTED
|
|
CASE(EKEYREJECTED);
|
|
#endif
|
|
#ifdef EKEYREVOKED
|
|
CASE(EKEYREVOKED);
|
|
#endif
|
|
#ifdef EL2HLT
|
|
CASE(EL2HLT);
|
|
#endif
|
|
#ifdef EL2NSYNC
|
|
CASE(EL2NSYNC);
|
|
#endif
|
|
#ifdef EL3HLT
|
|
CASE(EL3HLT);
|
|
#endif
|
|
#ifdef EL3RST
|
|
CASE(EL3RST);
|
|
#endif
|
|
#ifdef ELIBACC
|
|
CASE(ELIBACC);
|
|
#endif
|
|
#ifdef ELIBBAD
|
|
CASE(ELIBBAD);
|
|
#endif
|
|
#ifdef ELIBEXEC
|
|
CASE(ELIBEXEC);
|
|
#endif
|
|
#ifdef ELIBMAX
|
|
CASE(ELIBMAX);
|
|
#endif
|
|
#ifdef ELIBSCN
|
|
CASE(ELIBSCN);
|
|
#endif
|
|
#ifdef ELNRNG
|
|
CASE(ELNRNG);
|
|
#endif
|
|
#ifdef ELOOP
|
|
CASE(ELOOP);
|
|
#endif
|
|
#ifdef EMEDIUMTYPE
|
|
CASE(EMEDIUMTYPE);
|
|
#endif
|
|
#ifdef EMFILE
|
|
CASE(EMFILE);
|
|
#endif
|
|
#ifdef EMLINK
|
|
CASE(EMLINK);
|
|
#endif
|
|
#ifdef EMSGSIZE
|
|
CASE(EMSGSIZE);
|
|
#endif
|
|
#ifdef EMULTIHOP
|
|
CASE(EMULTIHOP);
|
|
#endif
|
|
#ifdef ENAMETOOLONG
|
|
CASE(ENAMETOOLONG);
|
|
#endif
|
|
#ifdef ENAVAIL
|
|
CASE(ENAVAIL);
|
|
#endif
|
|
#ifdef ENETDOWN
|
|
CASE(ENETDOWN);
|
|
#endif
|
|
#ifdef ENETRESET
|
|
CASE(ENETRESET);
|
|
#endif
|
|
#ifdef ENETUNREACH
|
|
CASE(ENETUNREACH);
|
|
#endif
|
|
#ifdef ENFILE
|
|
CASE(ENFILE);
|
|
#endif
|
|
#ifdef ENOANO
|
|
CASE(ENOANO);
|
|
#endif
|
|
#ifdef ENOBUFS
|
|
CASE(ENOBUFS);
|
|
#endif
|
|
#ifdef ENOCSI
|
|
CASE(ENOCSI);
|
|
#endif
|
|
#ifdef ENODATA
|
|
CASE(ENODATA);
|
|
#endif
|
|
#ifdef ENODEV
|
|
CASE(ENODEV);
|
|
#endif
|
|
#ifdef ENOENT
|
|
CASE(ENOENT);
|
|
#endif
|
|
#ifdef ENOEXEC
|
|
CASE(ENOEXEC);
|
|
#endif
|
|
#ifdef ENOIOCTLCMD
|
|
CASE(ENOIOCTLCMD);
|
|
#endif
|
|
#ifdef ENOKEY
|
|
CASE(ENOKEY);
|
|
#endif
|
|
#ifdef ENOLCK
|
|
CASE(ENOLCK);
|
|
#endif
|
|
#ifdef ENOLINK
|
|
CASE(ENOLINK);
|
|
#endif
|
|
#ifdef ENOMEDIUM
|
|
CASE(ENOMEDIUM);
|
|
#endif
|
|
#ifdef ENOMEM
|
|
CASE(ENOMEM);
|
|
#endif
|
|
#ifdef ENOMSG
|
|
CASE(ENOMSG);
|
|
#endif
|
|
#ifdef ENONET
|
|
CASE(ENONET);
|
|
#endif
|
|
#ifdef ENOPKG
|
|
CASE(ENOPKG);
|
|
#endif
|
|
#ifdef ENOPROTOOPT
|
|
CASE(ENOPROTOOPT);
|
|
#endif
|
|
#ifdef ENOSPC
|
|
CASE(ENOSPC);
|
|
#endif
|
|
#ifdef ENOSR
|
|
CASE(ENOSR);
|
|
#endif
|
|
#ifdef ENOSTR
|
|
CASE(ENOSTR);
|
|
#endif
|
|
#ifdef ENOSYS
|
|
CASE(ENOSYS);
|
|
#endif
|
|
#ifdef ENOTBLK
|
|
CASE(ENOTBLK);
|
|
#endif
|
|
#ifdef ENOTCONN
|
|
CASE(ENOTCONN);
|
|
#endif
|
|
#ifdef ENOTDIR
|
|
CASE(ENOTDIR);
|
|
#endif
|
|
#ifdef ENOTEMPTY
|
|
CASE(ENOTEMPTY);
|
|
#endif
|
|
#ifdef ENOTNAM
|
|
CASE(ENOTNAM);
|
|
#endif
|
|
#ifdef ENOTRECOVERABLE
|
|
CASE(ENOTRECOVERABLE);
|
|
#endif
|
|
#ifdef ENOTSOCK
|
|
CASE(ENOTSOCK);
|
|
#endif
|
|
#ifdef ENOTSUPP
|
|
CASE(ENOTSUPP);
|
|
#endif
|
|
#ifdef ENOTSYNC
|
|
CASE(ENOTSYNC);
|
|
#endif
|
|
#ifdef ENOTTY
|
|
CASE(ENOTTY);
|
|
#endif
|
|
#ifdef ENOTUNIQ
|
|
CASE(ENOTUNIQ);
|
|
#endif
|
|
#ifdef ENXIO
|
|
CASE(ENXIO);
|
|
#endif
|
|
#ifdef EOPENSTALE
|
|
CASE(EOPENSTALE);
|
|
#endif
|
|
#ifdef EOPNOTSUPP
|
|
CASE(EOPNOTSUPP);
|
|
#endif
|
|
#ifdef EOVERFLOW
|
|
CASE(EOVERFLOW);
|
|
#endif
|
|
#ifdef EOWNERDEAD
|
|
CASE(EOWNERDEAD);
|
|
#endif
|
|
#ifdef EPERM
|
|
CASE(EPERM);
|
|
#endif
|
|
#ifdef EPFNOSUPPORT
|
|
CASE(EPFNOSUPPORT);
|
|
#endif
|
|
#ifdef EPIPE
|
|
CASE(EPIPE);
|
|
#endif
|
|
#ifdef EPROBE_DEFER
|
|
CASE(EPROBE_DEFER);
|
|
#endif
|
|
#ifdef EPROTO
|
|
CASE(EPROTO);
|
|
#endif
|
|
#ifdef EPROTONOSUPPORT
|
|
CASE(EPROTONOSUPPORT);
|
|
#endif
|
|
#ifdef EPROTOTYPE
|
|
CASE(EPROTOTYPE);
|
|
#endif
|
|
#ifdef ERANGE
|
|
CASE(ERANGE);
|
|
#endif
|
|
#ifdef EREMCHG
|
|
CASE(EREMCHG);
|
|
#endif
|
|
#ifdef EREMOTE
|
|
CASE(EREMOTE);
|
|
#endif
|
|
#ifdef EREMOTEIO
|
|
CASE(EREMOTEIO);
|
|
#endif
|
|
#ifdef ERESTART
|
|
CASE(ERESTART);
|
|
#endif
|
|
#ifdef ERESTARTNOHAND
|
|
CASE(ERESTARTNOHAND);
|
|
#endif
|
|
#ifdef ERESTARTNOINTR
|
|
CASE(ERESTARTNOINTR);
|
|
#endif
|
|
#ifdef ERESTARTSYS
|
|
CASE(ERESTARTSYS);
|
|
#endif
|
|
#ifdef ERESTART_RESTARTBLOCK
|
|
CASE(ERESTART_RESTARTBLOCK);
|
|
#endif
|
|
#ifdef ERFKILL
|
|
CASE(ERFKILL);
|
|
#endif
|
|
#ifdef EROFS
|
|
CASE(EROFS);
|
|
#endif
|
|
#ifdef ESERVERFAULT
|
|
CASE(ESERVERFAULT);
|
|
#endif
|
|
#ifdef ESHUTDOWN
|
|
CASE(ESHUTDOWN);
|
|
#endif
|
|
#ifdef ESOCKTNOSUPPORT
|
|
CASE(ESOCKTNOSUPPORT);
|
|
#endif
|
|
#ifdef ESPIPE
|
|
CASE(ESPIPE);
|
|
#endif
|
|
#ifdef ESRCH
|
|
CASE(ESRCH);
|
|
#endif
|
|
#ifdef ESRMNT
|
|
CASE(ESRMNT);
|
|
#endif
|
|
#ifdef ESTALE
|
|
CASE(ESTALE);
|
|
#endif
|
|
#ifdef ESTRPIPE
|
|
CASE(ESTRPIPE);
|
|
#endif
|
|
#ifdef ETIME
|
|
CASE(ETIME);
|
|
#endif
|
|
#ifdef ETIMEDOUT
|
|
CASE(ETIMEDOUT);
|
|
#endif
|
|
#ifdef ETOOMANYREFS
|
|
CASE(ETOOMANYREFS);
|
|
#endif
|
|
#ifdef ETOOSMALL
|
|
CASE(ETOOSMALL);
|
|
#endif
|
|
#ifdef ETXTBSY
|
|
CASE(ETXTBSY);
|
|
#endif
|
|
#ifdef EUCLEAN
|
|
CASE(EUCLEAN);
|
|
#endif
|
|
#ifdef EUNATCH
|
|
CASE(EUNATCH);
|
|
#endif
|
|
#ifdef EUSERS
|
|
CASE(EUSERS);
|
|
#endif
|
|
#ifdef EXDEV
|
|
CASE(EXDEV);
|
|
#endif
|
|
#ifdef EXFULL
|
|
CASE(EXFULL);
|
|
#endif
|
|
default: perror_msg_and_fail("unknown errno %d", errno);
|
|
}
|
|
}
|