Blame gnulib/lib/strerror-override.c

Packit Service 51e54d
/* strerror-override.c --- POSIX compatible system error routine
Packit Service 51e54d
Packit Service 51e54d
   Copyright (C) 2010-2014 Free Software Foundation, Inc.
Packit Service 51e54d
Packit Service 51e54d
   This program is free software: you can redistribute it and/or modify
Packit Service 51e54d
   it under the terms of the GNU General Public License as published by
Packit Service 51e54d
   the Free Software Foundation; either version 3 of the License, or
Packit Service 51e54d
   (at your option) any later version.
Packit Service 51e54d
Packit Service 51e54d
   This program is distributed in the hope that it will be useful,
Packit Service 51e54d
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 51e54d
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 51e54d
   GNU General Public License for more details.
Packit Service 51e54d
Packit Service 51e54d
   You should have received a copy of the GNU General Public License
Packit Service 51e54d
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit Service 51e54d
Packit Service 51e54d
/* Written by Bruno Haible <bruno@clisp.org>, 2010.  */
Packit Service 51e54d
Packit Service 51e54d
#include <config.h>
Packit Service 51e54d
Packit Service 51e54d
#include "strerror-override.h"
Packit Service 51e54d
Packit Service 51e54d
#include <errno.h>
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_EWINSOCK /* native Windows platforms */
Packit Service 51e54d
# if HAVE_WINSOCK2_H
Packit Service 51e54d
#  include <winsock2.h>
Packit Service 51e54d
# endif
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
/* If ERRNUM maps to an errno value defined by gnulib, return a string
Packit Service 51e54d
   describing the error.  Otherwise return NULL.  */
Packit Service 51e54d
const char *
Packit Service 51e54d
strerror_override (int errnum)
Packit Service 51e54d
{
Packit Service 51e54d
  /* These error messages are taken from glibc/sysdeps/gnu/errlist.c.  */
Packit Service 51e54d
  switch (errnum)
Packit Service 51e54d
    {
Packit Service 51e54d
#if REPLACE_STRERROR_0
Packit Service 51e54d
    case 0:
Packit Service 51e54d
      return "Success";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
Packit Service 51e54d
    case EINPROGRESS:
Packit Service 51e54d
      return "Operation now in progress";
Packit Service 51e54d
    case EALREADY:
Packit Service 51e54d
      return "Operation already in progress";
Packit Service 51e54d
    case ENOTSOCK:
Packit Service 51e54d
      return "Socket operation on non-socket";
Packit Service 51e54d
    case EDESTADDRREQ:
Packit Service 51e54d
      return "Destination address required";
Packit Service 51e54d
    case EMSGSIZE:
Packit Service 51e54d
      return "Message too long";
Packit Service 51e54d
    case EPROTOTYPE:
Packit Service 51e54d
      return "Protocol wrong type for socket";
Packit Service 51e54d
    case ENOPROTOOPT:
Packit Service 51e54d
      return "Protocol not available";
Packit Service 51e54d
    case EPROTONOSUPPORT:
Packit Service 51e54d
      return "Protocol not supported";
Packit Service 51e54d
    case EOPNOTSUPP:
Packit Service 51e54d
      return "Operation not supported";
Packit Service 51e54d
    case EAFNOSUPPORT:
Packit Service 51e54d
      return "Address family not supported by protocol";
Packit Service 51e54d
    case EADDRINUSE:
Packit Service 51e54d
      return "Address already in use";
Packit Service 51e54d
    case EADDRNOTAVAIL:
Packit Service 51e54d
      return "Cannot assign requested address";
Packit Service 51e54d
    case ENETDOWN:
Packit Service 51e54d
      return "Network is down";
Packit Service 51e54d
    case ENETUNREACH:
Packit Service 51e54d
      return "Network is unreachable";
Packit Service 51e54d
    case ECONNRESET:
Packit Service 51e54d
      return "Connection reset by peer";
Packit Service 51e54d
    case ENOBUFS:
Packit Service 51e54d
      return "No buffer space available";
Packit Service 51e54d
    case EISCONN:
Packit Service 51e54d
      return "Transport endpoint is already connected";
Packit Service 51e54d
    case ENOTCONN:
Packit Service 51e54d
      return "Transport endpoint is not connected";
Packit Service 51e54d
    case ETIMEDOUT:
Packit Service 51e54d
      return "Connection timed out";
Packit Service 51e54d
    case ECONNREFUSED:
Packit Service 51e54d
      return "Connection refused";
Packit Service 51e54d
    case ELOOP:
Packit Service 51e54d
      return "Too many levels of symbolic links";
Packit Service 51e54d
    case EHOSTUNREACH:
Packit Service 51e54d
      return "No route to host";
Packit Service 51e54d
    case EWOULDBLOCK:
Packit Service 51e54d
      return "Operation would block";
Packit Service 51e54d
#endif
Packit Service 51e54d
#if GNULIB_defined_ESTREAMS /* native Windows platforms with older <errno.h> */
Packit Service 51e54d
    case ETXTBSY:
Packit Service 51e54d
      return "Text file busy";
Packit Service 51e54d
    case ENODATA:
Packit Service 51e54d
      return "No data available";
Packit Service 51e54d
    case ENOSR:
Packit Service 51e54d
      return "Out of streams resources";
Packit Service 51e54d
    case ENOSTR:
Packit Service 51e54d
      return "Device not a stream";
Packit Service 51e54d
    case ETIME:
Packit Service 51e54d
      return "Timer expired";
Packit Service 51e54d
    case EOTHER:
Packit Service 51e54d
      return "Other error";
Packit Service 51e54d
#endif
Packit Service 51e54d
#if GNULIB_defined_EWINSOCK /* native Windows platforms */
Packit Service 51e54d
    case ESOCKTNOSUPPORT:
Packit Service 51e54d
      return "Socket type not supported";
Packit Service 51e54d
    case EPFNOSUPPORT:
Packit Service 51e54d
      return "Protocol family not supported";
Packit Service 51e54d
    case ESHUTDOWN:
Packit Service 51e54d
      return "Cannot send after transport endpoint shutdown";
Packit Service 51e54d
    case ETOOMANYREFS:
Packit Service 51e54d
      return "Too many references: cannot splice";
Packit Service 51e54d
    case EHOSTDOWN:
Packit Service 51e54d
      return "Host is down";
Packit Service 51e54d
    case EPROCLIM:
Packit Service 51e54d
      return "Too many processes";
Packit Service 51e54d
    case EUSERS:
Packit Service 51e54d
      return "Too many users";
Packit Service 51e54d
    case EDQUOT:
Packit Service 51e54d
      return "Disk quota exceeded";
Packit Service 51e54d
    case ESTALE:
Packit Service 51e54d
      return "Stale NFS file handle";
Packit Service 51e54d
    case EREMOTE:
Packit Service 51e54d
      return "Object is remote";
Packit Service 51e54d
# if HAVE_WINSOCK2_H
Packit Service 51e54d
      /* WSA_INVALID_HANDLE maps to EBADF */
Packit Service 51e54d
      /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
Packit Service 51e54d
      /* WSA_INVALID_PARAMETER maps to EINVAL */
Packit Service 51e54d
    case WSA_OPERATION_ABORTED:
Packit Service 51e54d
      return "Overlapped operation aborted";
Packit Service 51e54d
    case WSA_IO_INCOMPLETE:
Packit Service 51e54d
      return "Overlapped I/O event object not in signaled state";
Packit Service 51e54d
    case WSA_IO_PENDING:
Packit Service 51e54d
      return "Overlapped operations will complete later";
Packit Service 51e54d
      /* WSAEINTR maps to EINTR */
Packit Service 51e54d
      /* WSAEBADF maps to EBADF */
Packit Service 51e54d
      /* WSAEACCES maps to EACCES */
Packit Service 51e54d
      /* WSAEFAULT maps to EFAULT */
Packit Service 51e54d
      /* WSAEINVAL maps to EINVAL */
Packit Service 51e54d
      /* WSAEMFILE maps to EMFILE */
Packit Service 51e54d
      /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
Packit Service 51e54d
      /* WSAEINPROGRESS maps to EINPROGRESS */
Packit Service 51e54d
      /* WSAEALREADY maps to EALREADY */
Packit Service 51e54d
      /* WSAENOTSOCK maps to ENOTSOCK */
Packit Service 51e54d
      /* WSAEDESTADDRREQ maps to EDESTADDRREQ */
Packit Service 51e54d
      /* WSAEMSGSIZE maps to EMSGSIZE */
Packit Service 51e54d
      /* WSAEPROTOTYPE maps to EPROTOTYPE */
Packit Service 51e54d
      /* WSAENOPROTOOPT maps to ENOPROTOOPT */
Packit Service 51e54d
      /* WSAEPROTONOSUPPORT maps to EPROTONOSUPPORT */
Packit Service 51e54d
      /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
Packit Service 51e54d
      /* WSAEOPNOTSUPP maps to EOPNOTSUPP */
Packit Service 51e54d
      /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
Packit Service 51e54d
      /* WSAEAFNOSUPPORT maps to EAFNOSUPPORT */
Packit Service 51e54d
      /* WSAEADDRINUSE maps to EADDRINUSE */
Packit Service 51e54d
      /* WSAEADDRNOTAVAIL maps to EADDRNOTAVAIL */
Packit Service 51e54d
      /* WSAENETDOWN maps to ENETDOWN */
Packit Service 51e54d
      /* WSAENETUNREACH maps to ENETUNREACH */
Packit Service 51e54d
      /* WSAENETRESET maps to ENETRESET */
Packit Service 51e54d
      /* WSAECONNABORTED maps to ECONNABORTED */
Packit Service 51e54d
      /* WSAECONNRESET maps to ECONNRESET */
Packit Service 51e54d
      /* WSAENOBUFS maps to ENOBUFS */
Packit Service 51e54d
      /* WSAEISCONN maps to EISCONN */
Packit Service 51e54d
      /* WSAENOTCONN maps to ENOTCONN */
Packit Service 51e54d
      /* WSAESHUTDOWN is ESHUTDOWN */
Packit Service 51e54d
      /* WSAETOOMANYREFS is ETOOMANYREFS */
Packit Service 51e54d
      /* WSAETIMEDOUT maps to ETIMEDOUT */
Packit Service 51e54d
      /* WSAECONNREFUSED maps to ECONNREFUSED */
Packit Service 51e54d
      /* WSAELOOP maps to ELOOP */
Packit Service 51e54d
      /* WSAENAMETOOLONG maps to ENAMETOOLONG */
Packit Service 51e54d
      /* WSAEHOSTDOWN is EHOSTDOWN */
Packit Service 51e54d
      /* WSAEHOSTUNREACH maps to EHOSTUNREACH */
Packit Service 51e54d
      /* WSAENOTEMPTY maps to ENOTEMPTY */
Packit Service 51e54d
      /* WSAEPROCLIM is EPROCLIM */
Packit Service 51e54d
      /* WSAEUSERS is EUSERS */
Packit Service 51e54d
      /* WSAEDQUOT is EDQUOT */
Packit Service 51e54d
      /* WSAESTALE is ESTALE */
Packit Service 51e54d
      /* WSAEREMOTE is EREMOTE */
Packit Service 51e54d
    case WSASYSNOTREADY:
Packit Service 51e54d
      return "Network subsystem is unavailable";
Packit Service 51e54d
    case WSAVERNOTSUPPORTED:
Packit Service 51e54d
      return "Winsock.dll version out of range";
Packit Service 51e54d
    case WSANOTINITIALISED:
Packit Service 51e54d
      return "Successful WSAStartup not yet performed";
Packit Service 51e54d
    case WSAEDISCON:
Packit Service 51e54d
      return "Graceful shutdown in progress";
Packit Service 51e54d
    case WSAENOMORE: case WSA_E_NO_MORE:
Packit Service 51e54d
      return "No more results";
Packit Service 51e54d
    case WSAECANCELLED: case WSA_E_CANCELLED:
Packit Service 51e54d
      return "Call was canceled";
Packit Service 51e54d
    case WSAEINVALIDPROCTABLE:
Packit Service 51e54d
      return "Procedure call table is invalid";
Packit Service 51e54d
    case WSAEINVALIDPROVIDER:
Packit Service 51e54d
      return "Service provider is invalid";
Packit Service 51e54d
    case WSAEPROVIDERFAILEDINIT:
Packit Service 51e54d
      return "Service provider failed to initialize";
Packit Service 51e54d
    case WSASYSCALLFAILURE:
Packit Service 51e54d
      return "System call failure";
Packit Service 51e54d
    case WSASERVICE_NOT_FOUND:
Packit Service 51e54d
      return "Service not found";
Packit Service 51e54d
    case WSATYPE_NOT_FOUND:
Packit Service 51e54d
      return "Class type not found";
Packit Service 51e54d
    case WSAEREFUSED:
Packit Service 51e54d
      return "Database query was refused";
Packit Service 51e54d
    case WSAHOST_NOT_FOUND:
Packit Service 51e54d
      return "Host not found";
Packit Service 51e54d
    case WSATRY_AGAIN:
Packit Service 51e54d
      return "Nonauthoritative host not found";
Packit Service 51e54d
    case WSANO_RECOVERY:
Packit Service 51e54d
      return "Nonrecoverable error";
Packit Service 51e54d
    case WSANO_DATA:
Packit Service 51e54d
      return "Valid name, no data record of requested type";
Packit Service 51e54d
      /* WSA_QOS_* omitted */
Packit Service 51e54d
# endif
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_ENOMSG
Packit Service 51e54d
    case ENOMSG:
Packit Service 51e54d
      return "No message of desired type";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_EIDRM
Packit Service 51e54d
    case EIDRM:
Packit Service 51e54d
      return "Identifier removed";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_ENOLINK
Packit Service 51e54d
    case ENOLINK:
Packit Service 51e54d
      return "Link has been severed";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_EPROTO
Packit Service 51e54d
    case EPROTO:
Packit Service 51e54d
      return "Protocol error";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_EMULTIHOP
Packit Service 51e54d
    case EMULTIHOP:
Packit Service 51e54d
      return "Multihop attempted";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_EBADMSG
Packit Service 51e54d
    case EBADMSG:
Packit Service 51e54d
      return "Bad message";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_EOVERFLOW
Packit Service 51e54d
    case EOVERFLOW:
Packit Service 51e54d
      return "Value too large for defined data type";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_ENOTSUP
Packit Service 51e54d
    case ENOTSUP:
Packit Service 51e54d
      return "Not supported";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_ENETRESET
Packit Service 51e54d
    case ENETRESET:
Packit Service 51e54d
      return "Network dropped connection on reset";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_ECONNABORTED
Packit Service 51e54d
    case ECONNABORTED:
Packit Service 51e54d
      return "Software caused connection abort";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_ESTALE
Packit Service 51e54d
    case ESTALE:
Packit Service 51e54d
      return "Stale NFS file handle";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_EDQUOT
Packit Service 51e54d
    case EDQUOT:
Packit Service 51e54d
      return "Disk quota exceeded";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_ECANCELED
Packit Service 51e54d
    case ECANCELED:
Packit Service 51e54d
      return "Operation canceled";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_EOWNERDEAD
Packit Service 51e54d
    case EOWNERDEAD:
Packit Service 51e54d
      return "Owner died";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_ENOTRECOVERABLE
Packit Service 51e54d
    case ENOTRECOVERABLE:
Packit Service 51e54d
      return "State not recoverable";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
#if GNULIB_defined_EILSEQ
Packit Service 51e54d
    case EILSEQ:
Packit Service 51e54d
      return "Invalid or incomplete multibyte or wide character";
Packit Service 51e54d
#endif
Packit Service 51e54d
Packit Service 51e54d
    default:
Packit Service 51e54d
      return NULL;
Packit Service 51e54d
    }
Packit Service 51e54d
}