Annotation of embedaddon/libiconv/srclib/strerror-override.c, revision 1.1
1.1 ! misho 1: /* strerror-override.c --- POSIX compatible system error routine
! 2:
! 3: Copyright (C) 2010-2011 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 <http://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_ESOCK /* 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_ETXTBSY
! 46: case ETXTBSY:
! 47: return "Text file busy";
! 48: #endif
! 49:
! 50: #if GNULIB_defined_ESOCK /* native Windows platforms */
! 51: /* EWOULDBLOCK is the same as EAGAIN. */
! 52: case EINPROGRESS:
! 53: return "Operation now in progress";
! 54: case EALREADY:
! 55: return "Operation already in progress";
! 56: case ENOTSOCK:
! 57: return "Socket operation on non-socket";
! 58: case EDESTADDRREQ:
! 59: return "Destination address required";
! 60: case EMSGSIZE:
! 61: return "Message too long";
! 62: case EPROTOTYPE:
! 63: return "Protocol wrong type for socket";
! 64: case ENOPROTOOPT:
! 65: return "Protocol not available";
! 66: case EPROTONOSUPPORT:
! 67: return "Protocol not supported";
! 68: case ESOCKTNOSUPPORT:
! 69: return "Socket type not supported";
! 70: case EOPNOTSUPP:
! 71: return "Operation not supported";
! 72: case EPFNOSUPPORT:
! 73: return "Protocol family not supported";
! 74: case EAFNOSUPPORT:
! 75: return "Address family not supported by protocol";
! 76: case EADDRINUSE:
! 77: return "Address already in use";
! 78: case EADDRNOTAVAIL:
! 79: return "Cannot assign requested address";
! 80: case ENETDOWN:
! 81: return "Network is down";
! 82: case ENETUNREACH:
! 83: return "Network is unreachable";
! 84: case ENETRESET:
! 85: return "Network dropped connection on reset";
! 86: case ECONNABORTED:
! 87: return "Software caused connection abort";
! 88: case ECONNRESET:
! 89: return "Connection reset by peer";
! 90: case ENOBUFS:
! 91: return "No buffer space available";
! 92: case EISCONN:
! 93: return "Transport endpoint is already connected";
! 94: case ENOTCONN:
! 95: return "Transport endpoint is not connected";
! 96: case ESHUTDOWN:
! 97: return "Cannot send after transport endpoint shutdown";
! 98: case ETOOMANYREFS:
! 99: return "Too many references: cannot splice";
! 100: case ETIMEDOUT:
! 101: return "Connection timed out";
! 102: case ECONNREFUSED:
! 103: return "Connection refused";
! 104: case ELOOP:
! 105: return "Too many levels of symbolic links";
! 106: case EHOSTDOWN:
! 107: return "Host is down";
! 108: case EHOSTUNREACH:
! 109: return "No route to host";
! 110: case EPROCLIM:
! 111: return "Too many processes";
! 112: case EUSERS:
! 113: return "Too many users";
! 114: case EDQUOT:
! 115: return "Disk quota exceeded";
! 116: case ESTALE:
! 117: return "Stale NFS file handle";
! 118: case EREMOTE:
! 119: return "Object is remote";
! 120: # if HAVE_WINSOCK2_H
! 121: /* WSA_INVALID_HANDLE maps to EBADF */
! 122: /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
! 123: /* WSA_INVALID_PARAMETER maps to EINVAL */
! 124: case WSA_OPERATION_ABORTED:
! 125: return "Overlapped operation aborted";
! 126: case WSA_IO_INCOMPLETE:
! 127: return "Overlapped I/O event object not in signaled state";
! 128: case WSA_IO_PENDING:
! 129: return "Overlapped operations will complete later";
! 130: /* WSAEINTR maps to EINTR */
! 131: /* WSAEBADF maps to EBADF */
! 132: /* WSAEACCES maps to EACCES */
! 133: /* WSAEFAULT maps to EFAULT */
! 134: /* WSAEINVAL maps to EINVAL */
! 135: /* WSAEMFILE maps to EMFILE */
! 136: /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
! 137: /* WSAEINPROGRESS is EINPROGRESS */
! 138: /* WSAEALREADY is EALREADY */
! 139: /* WSAENOTSOCK is ENOTSOCK */
! 140: /* WSAEDESTADDRREQ is EDESTADDRREQ */
! 141: /* WSAEMSGSIZE is EMSGSIZE */
! 142: /* WSAEPROTOTYPE is EPROTOTYPE */
! 143: /* WSAENOPROTOOPT is ENOPROTOOPT */
! 144: /* WSAEPROTONOSUPPORT is EPROTONOSUPPORT */
! 145: /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
! 146: /* WSAEOPNOTSUPP is EOPNOTSUPP */
! 147: /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
! 148: /* WSAEAFNOSUPPORT is EAFNOSUPPORT */
! 149: /* WSAEADDRINUSE is EADDRINUSE */
! 150: /* WSAEADDRNOTAVAIL is EADDRNOTAVAIL */
! 151: /* WSAENETDOWN is ENETDOWN */
! 152: /* WSAENETUNREACH is ENETUNREACH */
! 153: /* WSAENETRESET is ENETRESET */
! 154: /* WSAECONNABORTED is ECONNABORTED */
! 155: /* WSAECONNRESET is ECONNRESET */
! 156: /* WSAENOBUFS is ENOBUFS */
! 157: /* WSAEISCONN is EISCONN */
! 158: /* WSAENOTCONN is ENOTCONN */
! 159: /* WSAESHUTDOWN is ESHUTDOWN */
! 160: /* WSAETOOMANYREFS is ETOOMANYREFS */
! 161: /* WSAETIMEDOUT is ETIMEDOUT */
! 162: /* WSAECONNREFUSED is ECONNREFUSED */
! 163: /* WSAELOOP is ELOOP */
! 164: /* WSAENAMETOOLONG maps to ENAMETOOLONG */
! 165: /* WSAEHOSTDOWN is EHOSTDOWN */
! 166: /* WSAEHOSTUNREACH is EHOSTUNREACH */
! 167: /* WSAENOTEMPTY maps to ENOTEMPTY */
! 168: /* WSAEPROCLIM is EPROCLIM */
! 169: /* WSAEUSERS is EUSERS */
! 170: /* WSAEDQUOT is EDQUOT */
! 171: /* WSAESTALE is ESTALE */
! 172: /* WSAEREMOTE is EREMOTE */
! 173: case WSASYSNOTREADY:
! 174: return "Network subsystem is unavailable";
! 175: case WSAVERNOTSUPPORTED:
! 176: return "Winsock.dll version out of range";
! 177: case WSANOTINITIALISED:
! 178: return "Successful WSAStartup not yet performed";
! 179: case WSAEDISCON:
! 180: return "Graceful shutdown in progress";
! 181: case WSAENOMORE: case WSA_E_NO_MORE:
! 182: return "No more results";
! 183: case WSAECANCELLED: case WSA_E_CANCELLED:
! 184: return "Call was canceled";
! 185: case WSAEINVALIDPROCTABLE:
! 186: return "Procedure call table is invalid";
! 187: case WSAEINVALIDPROVIDER:
! 188: return "Service provider is invalid";
! 189: case WSAEPROVIDERFAILEDINIT:
! 190: return "Service provider failed to initialize";
! 191: case WSASYSCALLFAILURE:
! 192: return "System call failure";
! 193: case WSASERVICE_NOT_FOUND:
! 194: return "Service not found";
! 195: case WSATYPE_NOT_FOUND:
! 196: return "Class type not found";
! 197: case WSAEREFUSED:
! 198: return "Database query was refused";
! 199: case WSAHOST_NOT_FOUND:
! 200: return "Host not found";
! 201: case WSATRY_AGAIN:
! 202: return "Nonauthoritative host not found";
! 203: case WSANO_RECOVERY:
! 204: return "Nonrecoverable error";
! 205: case WSANO_DATA:
! 206: return "Valid name, no data record of requested type";
! 207: /* WSA_QOS_* omitted */
! 208: # endif
! 209: #endif
! 210:
! 211: #if GNULIB_defined_ENOMSG
! 212: case ENOMSG:
! 213: return "No message of desired type";
! 214: #endif
! 215:
! 216: #if GNULIB_defined_EIDRM
! 217: case EIDRM:
! 218: return "Identifier removed";
! 219: #endif
! 220:
! 221: #if GNULIB_defined_ENOLINK
! 222: case ENOLINK:
! 223: return "Link has been severed";
! 224: #endif
! 225:
! 226: #if GNULIB_defined_EPROTO
! 227: case EPROTO:
! 228: return "Protocol error";
! 229: #endif
! 230:
! 231: #if GNULIB_defined_EMULTIHOP
! 232: case EMULTIHOP:
! 233: return "Multihop attempted";
! 234: #endif
! 235:
! 236: #if GNULIB_defined_EBADMSG
! 237: case EBADMSG:
! 238: return "Bad message";
! 239: #endif
! 240:
! 241: #if GNULIB_defined_EOVERFLOW
! 242: case EOVERFLOW:
! 243: return "Value too large for defined data type";
! 244: #endif
! 245:
! 246: #if GNULIB_defined_ENOTSUP
! 247: case ENOTSUP:
! 248: return "Not supported";
! 249: #endif
! 250:
! 251: #if GNULIB_defined_ENETRESET
! 252: case ENETRESET:
! 253: return "Network dropped connection on reset";
! 254: #endif
! 255:
! 256: #if GNULIB_defined_ECONNABORTED
! 257: case ECONNABORTED:
! 258: return "Software caused connection abort";
! 259: #endif
! 260:
! 261: #if GNULIB_defined_ESTALE
! 262: case ESTALE:
! 263: return "Stale NFS file handle";
! 264: #endif
! 265:
! 266: #if GNULIB_defined_EDQUOT
! 267: case EDQUOT:
! 268: return "Disk quota exceeded";
! 269: #endif
! 270:
! 271: #if GNULIB_defined_ECANCELED
! 272: case ECANCELED:
! 273: return "Operation canceled";
! 274: #endif
! 275:
! 276: default:
! 277: return NULL;
! 278: }
! 279: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>