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