|  | /* | 
|  | * 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); | 
|  | } | 
|  | } |