File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srclib / strerror-override.c
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 13:38:46 2021 UTC (3 years, 3 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_16p0, HEAD
libiconv 1.16

    1: /* strerror-override.c --- POSIX compatible system error routine
    2: 
    3:    Copyright (C) 2010-2019 Free Software Foundation, Inc.
    4: 
    5:    This program is free software: you can redistribute it and/or modify
    6:    it under the terms of the GNU General Public License as published by
    7:    the Free Software Foundation; either version 3 of the License, or
    8:    (at your option) any later version.
    9: 
   10:    This program is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   13:    GNU General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU General Public License
   16:    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
   17: 
   18: /* Written by Bruno Haible <bruno@clisp.org>, 2010.  */
   19: 
   20: #include <config.h>
   21: 
   22: #include "strerror-override.h"
   23: 
   24: #include <errno.h>
   25: 
   26: #if GNULIB_defined_EWINSOCK /* native Windows platforms */
   27: # if HAVE_WINSOCK2_H
   28: #  include <winsock2.h>
   29: # endif
   30: #endif
   31: 
   32: /* If ERRNUM maps to an errno value defined by gnulib, return a string
   33:    describing the error.  Otherwise return NULL.  */
   34: const char *
   35: strerror_override (int errnum)
   36: {
   37:   /* These error messages are taken from glibc/sysdeps/gnu/errlist.c.  */
   38:   switch (errnum)
   39:     {
   40: #if REPLACE_STRERROR_0
   41:     case 0:
   42:       return "Success";
   43: #endif
   44: 
   45: #if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
   46:     case EINPROGRESS:
   47:       return "Operation now in progress";
   48:     case EALREADY:
   49:       return "Operation already in progress";
   50:     case ENOTSOCK:
   51:       return "Socket operation on non-socket";
   52:     case EDESTADDRREQ:
   53:       return "Destination address required";
   54:     case EMSGSIZE:
   55:       return "Message too long";
   56:     case EPROTOTYPE:
   57:       return "Protocol wrong type for socket";
   58:     case ENOPROTOOPT:
   59:       return "Protocol not available";
   60:     case EPROTONOSUPPORT:
   61:       return "Protocol not supported";
   62:     case EOPNOTSUPP:
   63:       return "Operation not supported";
   64:     case EAFNOSUPPORT:
   65:       return "Address family not supported by protocol";
   66:     case EADDRINUSE:
   67:       return "Address already in use";
   68:     case EADDRNOTAVAIL:
   69:       return "Cannot assign requested address";
   70:     case ENETDOWN:
   71:       return "Network is down";
   72:     case ENETUNREACH:
   73:       return "Network is unreachable";
   74:     case ECONNRESET:
   75:       return "Connection reset by peer";
   76:     case ENOBUFS:
   77:       return "No buffer space available";
   78:     case EISCONN:
   79:       return "Transport endpoint is already connected";
   80:     case ENOTCONN:
   81:       return "Transport endpoint is not connected";
   82:     case ETIMEDOUT:
   83:       return "Connection timed out";
   84:     case ECONNREFUSED:
   85:       return "Connection refused";
   86:     case ELOOP:
   87:       return "Too many levels of symbolic links";
   88:     case EHOSTUNREACH:
   89:       return "No route to host";
   90:     case EWOULDBLOCK:
   91:       return "Operation would block";
   92: #endif
   93: #if GNULIB_defined_ESTREAMS /* native Windows platforms with older <errno.h> */
   94:     case ETXTBSY:
   95:       return "Text file busy";
   96:     case ENODATA:
   97:       return "No data available";
   98:     case ENOSR:
   99:       return "Out of streams resources";
  100:     case ENOSTR:
  101:       return "Device not a stream";
  102:     case ETIME:
  103:       return "Timer expired";
  104:     case EOTHER:
  105:       return "Other error";
  106: #endif
  107: #if GNULIB_defined_EWINSOCK /* native Windows platforms */
  108:     case ESOCKTNOSUPPORT:
  109:       return "Socket type not supported";
  110:     case EPFNOSUPPORT:
  111:       return "Protocol family not supported";
  112:     case ESHUTDOWN:
  113:       return "Cannot send after transport endpoint shutdown";
  114:     case ETOOMANYREFS:
  115:       return "Too many references: cannot splice";
  116:     case EHOSTDOWN:
  117:       return "Host is down";
  118:     case EPROCLIM:
  119:       return "Too many processes";
  120:     case EUSERS:
  121:       return "Too many users";
  122:     case EDQUOT:
  123:       return "Disk quota exceeded";
  124:     case ESTALE:
  125:       return "Stale NFS file handle";
  126:     case EREMOTE:
  127:       return "Object is remote";
  128: # if HAVE_WINSOCK2_H
  129:       /* WSA_INVALID_HANDLE maps to EBADF */
  130:       /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
  131:       /* WSA_INVALID_PARAMETER maps to EINVAL */
  132:     case WSA_OPERATION_ABORTED:
  133:       return "Overlapped operation aborted";
  134:     case WSA_IO_INCOMPLETE:
  135:       return "Overlapped I/O event object not in signaled state";
  136:     case WSA_IO_PENDING:
  137:       return "Overlapped operations will complete later";
  138:       /* WSAEINTR maps to EINTR */
  139:       /* WSAEBADF maps to EBADF */
  140:       /* WSAEACCES maps to EACCES */
  141:       /* WSAEFAULT maps to EFAULT */
  142:       /* WSAEINVAL maps to EINVAL */
  143:       /* WSAEMFILE maps to EMFILE */
  144:       /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
  145:       /* WSAEINPROGRESS maps to EINPROGRESS */
  146:       /* WSAEALREADY maps to EALREADY */
  147:       /* WSAENOTSOCK maps to ENOTSOCK */
  148:       /* WSAEDESTADDRREQ maps to EDESTADDRREQ */
  149:       /* WSAEMSGSIZE maps to EMSGSIZE */
  150:       /* WSAEPROTOTYPE maps to EPROTOTYPE */
  151:       /* WSAENOPROTOOPT maps to ENOPROTOOPT */
  152:       /* WSAEPROTONOSUPPORT maps to EPROTONOSUPPORT */
  153:       /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
  154:       /* WSAEOPNOTSUPP maps to EOPNOTSUPP */
  155:       /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
  156:       /* WSAEAFNOSUPPORT maps to EAFNOSUPPORT */
  157:       /* WSAEADDRINUSE maps to EADDRINUSE */
  158:       /* WSAEADDRNOTAVAIL maps to EADDRNOTAVAIL */
  159:       /* WSAENETDOWN maps to ENETDOWN */
  160:       /* WSAENETUNREACH maps to ENETUNREACH */
  161:       /* WSAENETRESET maps to ENETRESET */
  162:       /* WSAECONNABORTED maps to ECONNABORTED */
  163:       /* WSAECONNRESET maps to ECONNRESET */
  164:       /* WSAENOBUFS maps to ENOBUFS */
  165:       /* WSAEISCONN maps to EISCONN */
  166:       /* WSAENOTCONN maps to ENOTCONN */
  167:       /* WSAESHUTDOWN is ESHUTDOWN */
  168:       /* WSAETOOMANYREFS is ETOOMANYREFS */
  169:       /* WSAETIMEDOUT maps to ETIMEDOUT */
  170:       /* WSAECONNREFUSED maps to ECONNREFUSED */
  171:       /* WSAELOOP maps to ELOOP */
  172:       /* WSAENAMETOOLONG maps to ENAMETOOLONG */
  173:       /* WSAEHOSTDOWN is EHOSTDOWN */
  174:       /* WSAEHOSTUNREACH maps to EHOSTUNREACH */
  175:       /* WSAENOTEMPTY maps to ENOTEMPTY */
  176:       /* WSAEPROCLIM is EPROCLIM */
  177:       /* WSAEUSERS is EUSERS */
  178:       /* WSAEDQUOT is EDQUOT */
  179:       /* WSAESTALE is ESTALE */
  180:       /* WSAEREMOTE is EREMOTE */
  181:     case WSASYSNOTREADY:
  182:       return "Network subsystem is unavailable";
  183:     case WSAVERNOTSUPPORTED:
  184:       return "Winsock.dll version out of range";
  185:     case WSANOTINITIALISED:
  186:       return "Successful WSAStartup not yet performed";
  187:     case WSAEDISCON:
  188:       return "Graceful shutdown in progress";
  189:     case WSAENOMORE: case WSA_E_NO_MORE:
  190:       return "No more results";
  191:     case WSAECANCELLED: case WSA_E_CANCELLED:
  192:       return "Call was canceled";
  193:     case WSAEINVALIDPROCTABLE:
  194:       return "Procedure call table is invalid";
  195:     case WSAEINVALIDPROVIDER:
  196:       return "Service provider is invalid";
  197:     case WSAEPROVIDERFAILEDINIT:
  198:       return "Service provider failed to initialize";
  199:     case WSASYSCALLFAILURE:
  200:       return "System call failure";
  201:     case WSASERVICE_NOT_FOUND:
  202:       return "Service not found";
  203:     case WSATYPE_NOT_FOUND:
  204:       return "Class type not found";
  205:     case WSAEREFUSED:
  206:       return "Database query was refused";
  207:     case WSAHOST_NOT_FOUND:
  208:       return "Host not found";
  209:     case WSATRY_AGAIN:
  210:       return "Nonauthoritative host not found";
  211:     case WSANO_RECOVERY:
  212:       return "Nonrecoverable error";
  213:     case WSANO_DATA:
  214:       return "Valid name, no data record of requested type";
  215:       /* WSA_QOS_* omitted */
  216: # endif
  217: #endif
  218: 
  219: #if GNULIB_defined_ENOMSG
  220:     case ENOMSG:
  221:       return "No message of desired type";
  222: #endif
  223: 
  224: #if GNULIB_defined_EIDRM
  225:     case EIDRM:
  226:       return "Identifier removed";
  227: #endif
  228: 
  229: #if GNULIB_defined_ENOLINK
  230:     case ENOLINK:
  231:       return "Link has been severed";
  232: #endif
  233: 
  234: #if GNULIB_defined_EPROTO
  235:     case EPROTO:
  236:       return "Protocol error";
  237: #endif
  238: 
  239: #if GNULIB_defined_EMULTIHOP
  240:     case EMULTIHOP:
  241:       return "Multihop attempted";
  242: #endif
  243: 
  244: #if GNULIB_defined_EBADMSG
  245:     case EBADMSG:
  246:       return "Bad message";
  247: #endif
  248: 
  249: #if GNULIB_defined_EOVERFLOW
  250:     case EOVERFLOW:
  251:       return "Value too large for defined data type";
  252: #endif
  253: 
  254: #if GNULIB_defined_ENOTSUP
  255:     case ENOTSUP:
  256:       return "Not supported";
  257: #endif
  258: 
  259: #if GNULIB_defined_ENETRESET
  260:     case ENETRESET:
  261:       return "Network dropped connection on reset";
  262: #endif
  263: 
  264: #if GNULIB_defined_ECONNABORTED
  265:     case ECONNABORTED:
  266:       return "Software caused connection abort";
  267: #endif
  268: 
  269: #if GNULIB_defined_ESTALE
  270:     case ESTALE:
  271:       return "Stale NFS file handle";
  272: #endif
  273: 
  274: #if GNULIB_defined_EDQUOT
  275:     case EDQUOT:
  276:       return "Disk quota exceeded";
  277: #endif
  278: 
  279: #if GNULIB_defined_ECANCELED
  280:     case ECANCELED:
  281:       return "Operation canceled";
  282: #endif
  283: 
  284: #if GNULIB_defined_EOWNERDEAD
  285:     case EOWNERDEAD:
  286:       return "Owner died";
  287: #endif
  288: 
  289: #if GNULIB_defined_ENOTRECOVERABLE
  290:     case ENOTRECOVERABLE:
  291:       return "State not recoverable";
  292: #endif
  293: 
  294: #if GNULIB_defined_EILSEQ
  295:     case EILSEQ:
  296:       return "Invalid or incomplete multibyte or wide character";
  297: #endif
  298: 
  299:     default:
  300:       return NULL;
  301:     }
  302: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>