484 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			484 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * 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);
 | |
| 	}
 | |
| }
 |