Blame lib/strerror-override.c

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