/*
 * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
 * Copyright (c) 2009-2013 Cyril Hrubis <chrubis@suse.cz>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it would be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * Further, this software is distributed without any warranty that it is
 * free of the rightful claim of any third person regarding infringement
 * or the like.  Any license provided herein, whether implied or
 * otherwise, applies only to this software file.  Patent licenses, if
 * any, provided herein do not apply to combinations of this program with
 * other software, or any other product whatsoever.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
 * Mountain View, CA  94043, or:
 */

const char *tst_strerrno(int err)
{
	static const struct pair errno_pairs[] = {
		STRPAIR(0, "SUCCESS")
		/* asm-generic/errno-base.h */
		PAIR(EPERM)
		PAIR(ENOENT)
		PAIR(ESRCH)
		PAIR(EINTR)
		PAIR(EIO)
		PAIR(ENXIO)
		PAIR(E2BIG)
		PAIR(ENOEXEC)
		PAIR(EBADF)
		PAIR(ECHILD)
		STRPAIR(EAGAIN, "EAGAIN/EWOULDBLOCK")
		PAIR(ENOMEM)
		PAIR(EACCES)
		PAIR(EFAULT)
		PAIR(ENOTBLK)
		PAIR(EBUSY)
		PAIR(EEXIST)
		PAIR(EXDEV)
		PAIR(ENODEV)
		PAIR(ENOTDIR)
		PAIR(EISDIR)
		PAIR(EINVAL)
		PAIR(ENFILE)
		PAIR(EMFILE)
		PAIR(ENOTTY)
		PAIR(ETXTBSY)
		PAIR(EFBIG)
		PAIR(ENOSPC)
		PAIR(ESPIPE)
		PAIR(EROFS)
		PAIR(EMLINK)
		PAIR(EPIPE)
		PAIR(EDOM)
		PAIR(ERANGE)
		/* asm-generic/errno.h */
		PAIR(EDEADLK)
		PAIR(ENAMETOOLONG)
		PAIR(ENOLCK)
		PAIR(ENOSYS)
		PAIR(ENOTEMPTY)
		PAIR(ELOOP)
		/* EWOULDBLOCK == EAGAIN skipped */
		PAIR(ENOMSG)
		PAIR(EIDRM)
		PAIR(ECHRNG)
		PAIR(EL2NSYNC)
		PAIR(EL3HLT)
		PAIR(EL3RST)
		PAIR(ELNRNG)
		PAIR(EUNATCH)
		PAIR(ENOCSI)
		PAIR(EL2HLT)
		PAIR(EBADE)
		PAIR(EBADR)
		PAIR(EXFULL)
		PAIR(ENOANO)
		PAIR(EBADRQC)
		PAIR(EBADSLT)
		/* EDEADLOCK == EDEADLK skipped */
		PAIR(EBFONT)
		PAIR(ENOSTR)
		PAIR(ENODATA)
		PAIR(ETIME)
		PAIR(ENOSR)
		PAIR(ENONET)
		PAIR(ENOPKG)
		PAIR(EREMOTE)
		PAIR(ENOLINK)
		PAIR(EADV)
		PAIR(ESRMNT)
		PAIR(ECOMM)
		PAIR(EPROTO)
		PAIR(EMULTIHOP)
		PAIR(EDOTDOT)
		PAIR(EBADMSG)
		PAIR(EOVERFLOW)
		PAIR(ENOTUNIQ)
		PAIR(EBADFD)
		PAIR(EREMCHG)
		PAIR(ELIBACC)
		PAIR(ELIBBAD)
		PAIR(ELIBSCN)
		PAIR(ELIBMAX)
		PAIR(ELIBEXEC)
		PAIR(EILSEQ)
		PAIR(ERESTART)
		PAIR(ESTRPIPE)
		PAIR(EUSERS)
		PAIR(ENOTSOCK)
		PAIR(EDESTADDRREQ)
		PAIR(EMSGSIZE)
		PAIR(EPROTOTYPE)
		PAIR(ENOPROTOOPT)
		PAIR(EPROTONOSUPPORT)
		PAIR(ESOCKTNOSUPPORT)
		PAIR(EOPNOTSUPP)
		PAIR(EPFNOSUPPORT)
		PAIR(EAFNOSUPPORT)
		PAIR(EADDRINUSE)
		PAIR(EADDRNOTAVAIL)
		PAIR(ENETDOWN)
		PAIR(ENETUNREACH)
		PAIR(ENETRESET)
		PAIR(ECONNABORTED)
		PAIR(ECONNRESET)
		PAIR(ENOBUFS)
		PAIR(EISCONN)
		PAIR(ENOTCONN)
		PAIR(ESHUTDOWN)
		PAIR(ETOOMANYREFS)
		PAIR(ETIMEDOUT)
		PAIR(ECONNREFUSED)
		PAIR(EHOSTDOWN)
		PAIR(EHOSTUNREACH)
		PAIR(EALREADY)
		PAIR(EINPROGRESS)
		PAIR(ESTALE)
		PAIR(EUCLEAN)
		PAIR(ENOTNAM)
		PAIR(ENAVAIL)
		PAIR(EISNAM)
		PAIR(EREMOTEIO)
		PAIR(EDQUOT)
		PAIR(ENOMEDIUM)
		PAIR(EMEDIUMTYPE)
		PAIR(ECANCELED)
#ifdef ENOKEY
		PAIR(ENOKEY)
#endif
#ifdef EKEYEXPIRED
		PAIR(EKEYEXPIRED)
#endif
#ifdef EKEYREVOKED
		PAIR(EKEYREVOKED)
#endif
#ifdef EKEYREJECTED
		PAIR(EKEYREJECTED)
#endif
#ifdef EOWNERDEAD
		PAIR(EOWNERDEAD)
#endif
#ifdef ENOTRECOVERABLE
		PAIR(ENOTRECOVERABLE)
#endif
#ifdef ERFKILL
		PAIR(ERFKILL)
#endif
#ifdef EHWPOISON
		PAIR(EHWPOISON)
#endif
	};

	PAIR_LOOKUP(errno_pairs, err);
}