/* strerror-override.c --- POSIX compatible system error routine

   Copyright (C) 2010-2021 Free Software Foundation, Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */

/* Written by Bruno Haible <bruno@clisp.org>, 2010.  */

#include <config.h>

#include "strerror-override.h"

#include <errno.h>

#if GNULIB_defined_EWINSOCK /* native Windows platforms */
# if HAVE_WINSOCK2_H
#  include <winsock2.h>
# endif
#endif

/* If ERRNUM maps to an errno value defined by gnulib, return a string
   describing the error.  Otherwise return NULL.  */
const char *
strerror_override (int errnum)
{
  /* These error messages are taken from glibc/sysdeps/gnu/errlist.c.  */
  switch (errnum)
    {
#if REPLACE_STRERROR_0
    case 0:
      return "Success";
#endif

#if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
    case EINPROGRESS:
      return "Operation now in progress";
    case EALREADY:
      return "Operation already in progress";
    case ENOTSOCK:
      return "Socket operation on non-socket";
    case EDESTADDRREQ:
      return "Destination address required";
    case EMSGSIZE:
      return "Message too long";
    case EPROTOTYPE:
      return "Protocol wrong type for socket";
    case ENOPROTOOPT:
      return "Protocol not available";
    case EPROTONOSUPPORT:
      return "Protocol not supported";
    case EOPNOTSUPP:
      return "Operation not supported";
    case EAFNOSUPPORT:
      return "Address family not supported by protocol";
    case EADDRINUSE:
      return "Address already in use";
    case EADDRNOTAVAIL:
      return "Cannot assign requested address";
    case ENETDOWN:
      return "Network is down";
    case ENETUNREACH:
      return "Network is unreachable";
    case ECONNRESET:
      return "Connection reset by peer";
    case ENOBUFS:
      return "No buffer space available";
    case EISCONN:
      return "Transport endpoint is already connected";
    case ENOTCONN:
      return "Transport endpoint is not connected";
    case ETIMEDOUT:
      return "Connection timed out";
    case ECONNREFUSED:
      return "Connection refused";
    case ELOOP:
      return "Too many levels of symbolic links";
    case EHOSTUNREACH:
      return "No route to host";
    case EWOULDBLOCK:
      return "Operation would block";
#endif
#if GNULIB_defined_ESTREAMS /* native Windows platforms with older <errno.h> */
    case ETXTBSY:
      return "Text file busy";
    case ENODATA:
      return "No data available";
    case ENOSR:
      return "Out of streams resources";
    case ENOSTR:
      return "Device not a stream";
    case ETIME:
      return "Timer expired";
    case EOTHER:
      return "Other error";
#endif
#if GNULIB_defined_EWINSOCK /* native Windows platforms */
    case ESOCKTNOSUPPORT:
      return "Socket type not supported";
    case EPFNOSUPPORT:
      return "Protocol family not supported";
    case ESHUTDOWN:
      return "Cannot send after transport endpoint shutdown";
    case ETOOMANYREFS:
      return "Too many references: cannot splice";
    case EHOSTDOWN:
      return "Host is down";
    case EPROCLIM:
      return "Too many processes";
    case EUSERS:
      return "Too many users";
    case EDQUOT:
      return "Disk quota exceeded";
    case ESTALE:
      return "Stale NFS file handle";
    case EREMOTE:
      return "Object is remote";
# if HAVE_WINSOCK2_H
      /* WSA_INVALID_HANDLE maps to EBADF */
      /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
      /* WSA_INVALID_PARAMETER maps to EINVAL */
    case WSA_OPERATION_ABORTED:
      return "Overlapped operation aborted";
    case WSA_IO_INCOMPLETE:
      return "Overlapped I/O event object not in signaled state";
    case WSA_IO_PENDING:
      return "Overlapped operations will complete later";
      /* WSAEINTR maps to EINTR */
      /* WSAEBADF maps to EBADF */
      /* WSAEACCES maps to EACCES */
      /* WSAEFAULT maps to EFAULT */
      /* WSAEINVAL maps to EINVAL */
      /* WSAEMFILE maps to EMFILE */
      /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
      /* WSAEINPROGRESS maps to EINPROGRESS */
      /* WSAEALREADY maps to EALREADY */
      /* WSAENOTSOCK maps to ENOTSOCK */
      /* WSAEDESTADDRREQ maps to EDESTADDRREQ */
      /* WSAEMSGSIZE maps to EMSGSIZE */
      /* WSAEPROTOTYPE maps to EPROTOTYPE */
      /* WSAENOPROTOOPT maps to ENOPROTOOPT */
      /* WSAEPROTONOSUPPORT maps to EPROTONOSUPPORT */
      /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
      /* WSAEOPNOTSUPP maps to EOPNOTSUPP */
      /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
      /* WSAEAFNOSUPPORT maps to EAFNOSUPPORT */
      /* WSAEADDRINUSE maps to EADDRINUSE */
      /* WSAEADDRNOTAVAIL maps to EADDRNOTAVAIL */
      /* WSAENETDOWN maps to ENETDOWN */
      /* WSAENETUNREACH maps to ENETUNREACH */
      /* WSAENETRESET maps to ENETRESET */
      /* WSAECONNABORTED maps to ECONNABORTED */
      /* WSAECONNRESET maps to ECONNRESET */
      /* WSAENOBUFS maps to ENOBUFS */
      /* WSAEISCONN maps to EISCONN */
      /* WSAENOTCONN maps to ENOTCONN */
      /* WSAESHUTDOWN is ESHUTDOWN */
      /* WSAETOOMANYREFS is ETOOMANYREFS */
      /* WSAETIMEDOUT maps to ETIMEDOUT */
      /* WSAECONNREFUSED maps to ECONNREFUSED */
      /* WSAELOOP maps to ELOOP */
      /* WSAENAMETOOLONG maps to ENAMETOOLONG */
      /* WSAEHOSTDOWN is EHOSTDOWN */
      /* WSAEHOSTUNREACH maps to EHOSTUNREACH */
      /* WSAENOTEMPTY maps to ENOTEMPTY */
      /* WSAEPROCLIM is EPROCLIM */
      /* WSAEUSERS is EUSERS */
      /* WSAEDQUOT is EDQUOT */
      /* WSAESTALE is ESTALE */
      /* WSAEREMOTE is EREMOTE */
    case WSASYSNOTREADY:
      return "Network subsystem is unavailable";
    case WSAVERNOTSUPPORTED:
      return "Winsock.dll version out of range";
    case WSANOTINITIALISED:
      return "Successful WSAStartup not yet performed";
    case WSAEDISCON:
      return "Graceful shutdown in progress";
    case WSAENOMORE: case WSA_E_NO_MORE:
      return "No more results";
    case WSAECANCELLED: case WSA_E_CANCELLED:
      return "Call was canceled";
    case WSAEINVALIDPROCTABLE:
      return "Procedure call table is invalid";
    case WSAEINVALIDPROVIDER:
      return "Service provider is invalid";
    case WSAEPROVIDERFAILEDINIT:
      return "Service provider failed to initialize";
    case WSASYSCALLFAILURE:
      return "System call failure";
    case WSASERVICE_NOT_FOUND:
      return "Service not found";
    case WSATYPE_NOT_FOUND:
      return "Class type not found";
    case WSAEREFUSED:
      return "Database query was refused";
    case WSAHOST_NOT_FOUND:
      return "Host not found";
    case WSATRY_AGAIN:
      return "Nonauthoritative host not found";
    case WSANO_RECOVERY:
      return "Nonrecoverable error";
    case WSANO_DATA:
      return "Valid name, no data record of requested type";
      /* WSA_QOS_* omitted */
# endif
#endif

#if GNULIB_defined_ENOMSG
    case ENOMSG:
      return "No message of desired type";
#endif

#if GNULIB_defined_EIDRM
    case EIDRM:
      return "Identifier removed";
#endif

#if GNULIB_defined_ENOLINK
    case ENOLINK:
      return "Link has been severed";
#endif

#if GNULIB_defined_EPROTO
    case EPROTO:
      return "Protocol error";
#endif

#if GNULIB_defined_EMULTIHOP
    case EMULTIHOP:
      return "Multihop attempted";
#endif

#if GNULIB_defined_EBADMSG
    case EBADMSG:
      return "Bad message";
#endif

#if GNULIB_defined_EOVERFLOW
    case EOVERFLOW:
      return "Value too large for defined data type";
#endif

#if GNULIB_defined_ENOTSUP
    case ENOTSUP:
      return "Not supported";
#endif

#if GNULIB_defined_ENETRESET
    case ENETRESET:
      return "Network dropped connection on reset";
#endif

#if GNULIB_defined_ECONNABORTED
    case ECONNABORTED:
      return "Software caused connection abort";
#endif

#if GNULIB_defined_ESTALE
    case ESTALE:
      return "Stale NFS file handle";
#endif

#if GNULIB_defined_EDQUOT
    case EDQUOT:
      return "Disk quota exceeded";
#endif

#if GNULIB_defined_ECANCELED
    case ECANCELED:
      return "Operation canceled";
#endif

#if GNULIB_defined_EOWNERDEAD
    case EOWNERDEAD:
      return "Owner died";
#endif

#if GNULIB_defined_ENOTRECOVERABLE
    case ENOTRECOVERABLE:
      return "State not recoverable";
#endif

#if GNULIB_defined_EILSEQ
    case EILSEQ:
      return "Invalid or incomplete multibyte or wide character";
#endif

    default:
      return NULL;
    }
}
