/* * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org> * Copyright (c) 2016-2017 The strace developers. * 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); } }