libexplain  1.4.D001
libexplain/errno_info.c
Go to the documentation of this file.
00001 /*
00002  * libexplain - Explain errno values returned by libc functions
00003  * Copyright (C) 2008-2010, 2013 Peter Miller
00004  * Written by Peter Miller <pmiller@opensource.org.au>
00005  *
00006  * This program is free software; you can redistribute it and/or modify
00007  * it under the terms of the GNU Lesser General Public License as published by
00008  * the Free Software Foundation; either version 3 of the License, or (at
00009  * your option) any later version.
00010  *
00011  * This program is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public License
00017  * along with this program. If not, see <http://www.gnu.org/licenses/>.
00018  */
00019 
00020 #include <libexplain/ac/errno.h>
00021 
00022 #include <libexplain/errno_info/table.h>
00023 #include <libexplain/sizeof.h>
00024 
00025 
00026 const explain_errno_info_t explain_errno_info[] =
00027 {
00028 #ifdef EPERM
00029     {
00030         EPERM,
00031         "EPERM",
00032         "Operation not permitted"
00033     },
00034 #endif
00035 #ifdef ENOENT
00036     {
00037         ENOENT,
00038         "ENOENT",
00039         "No such file or directory"
00040     },
00041 #endif
00042 #ifdef ESRCH
00043     {
00044         ESRCH,
00045         "ESRCH",
00046         "No such process"
00047     },
00048 #endif
00049 #ifdef EINTR
00050     {
00051         EINTR,
00052         "EINTR",
00053         "Interrupted system call"
00054     },
00055 #endif
00056 #ifdef EIO
00057     {
00058         EIO,
00059         "EIO",
00060         "Input/output error"
00061     },
00062 #endif
00063 #ifdef ENXIO
00064     {
00065         ENXIO,
00066         "ENXIO",
00067         "No such device or address"
00068     },
00069 #endif
00070 #ifdef E2BIG
00071     {
00072         E2BIG,
00073         "E2BIG",
00074         "Argument list too long"
00075     },
00076 #endif
00077 #ifdef ENOEXEC
00078     {
00079         ENOEXEC,
00080         "ENOEXEC",
00081         "Exec format error"
00082     },
00083 #endif
00084 #ifdef EBADF
00085     {
00086         EBADF,
00087         "EBADF",
00088         "Bad file descriptor"
00089     },
00090 #endif
00091 #ifdef ECHILD
00092     {
00093         ECHILD,
00094         "ECHILD",
00095         "No child processes"
00096     },
00097 #endif
00098 #ifdef EAGAIN
00099     {
00100         EAGAIN,
00101         "EAGAIN",
00102         "Resource temporarily unavailable"
00103     },
00104 #endif
00105 #ifdef ENOMEM
00106     {
00107         ENOMEM,
00108         "ENOMEM",
00109         "Cannot allocate memory"
00110     },
00111 #endif
00112 #ifdef EACCES
00113     {
00114         EACCES,
00115         "EACCES",
00116         "Permission denied"
00117     },
00118 #endif
00119 #ifdef EFAULT
00120     {
00121         EFAULT,
00122         "EFAULT",
00123         "Bad address"
00124     },
00125 #endif
00126 #ifdef ENOTBLK
00127     {
00128         ENOTBLK,
00129         "ENOTBLK",
00130         "Block device required"
00131     },
00132 #endif
00133 #ifdef EBUSY
00134     {
00135         EBUSY,
00136         "EBUSY",
00137         "Device or resource busy"
00138     },
00139 #endif
00140 #ifdef EEXIST
00141     {
00142         EEXIST,
00143         "EEXIST",
00144         "File exists"
00145     },
00146 #endif
00147 #ifdef EXDEV
00148     {
00149         EXDEV,
00150         "EXDEV",
00151         "Invalid cross-device link"
00152     },
00153 #endif
00154 #ifdef ENODEV
00155     {
00156         ENODEV,
00157         "ENODEV",
00158         "No such device"
00159     },
00160 #endif
00161 #ifdef ENOTDIR
00162     {
00163         ENOTDIR,
00164         "ENOTDIR",
00165         "Not a directory"
00166     },
00167 #endif
00168 #ifdef EISDIR
00169     {
00170         EISDIR,
00171         "EISDIR",
00172         "Is a directory"
00173     },
00174 #endif
00175 #ifdef EINVAL
00176     {
00177         EINVAL,
00178         "EINVAL",
00179         "Invalid argument"
00180     },
00181 #endif
00182 #ifdef ENFILE
00183     {
00184         ENFILE,
00185         "ENFILE",
00186         "Too many open files in system"
00187     },
00188 #endif
00189 #ifdef EMFILE
00190     {
00191         EMFILE,
00192         "EMFILE",
00193         "Too many open files"
00194     },
00195 #endif
00196 #ifdef ENOTTY
00197     {
00198         ENOTTY,
00199         "ENOTTY",
00200         "Inappropriate ioctl for device"
00201     },
00202 #endif
00203 #ifdef ETXTBSY
00204     {
00205         ETXTBSY,
00206         "ETXTBSY",
00207         "Text file busy"
00208     },
00209 #endif
00210 #ifdef EFBIG
00211     {
00212         EFBIG,
00213         "EFBIG",
00214         "File too large"
00215     },
00216 #endif
00217 #ifdef ENOSPC
00218     {
00219         ENOSPC,
00220         "ENOSPC",
00221         "No space left on device"
00222     },
00223 #endif
00224 #ifdef ESPIPE
00225     {
00226         ESPIPE,
00227         "ESPIPE",
00228         "Illegal seek"
00229     },
00230 #endif
00231 #ifdef EROFS
00232     {
00233         EROFS,
00234         "EROFS",
00235         "Read-only file system"
00236     },
00237 #endif
00238 #ifdef EMLINK
00239     {
00240         EMLINK,
00241         "EMLINK",
00242         "Too many links"
00243     },
00244 #endif
00245 #ifdef EPIPE
00246     {
00247         EPIPE,
00248         "EPIPE",
00249         "Broken pipe"
00250     },
00251 #endif
00252 #ifdef EDOM
00253     {
00254         EDOM,
00255         "EDOM",
00256         "Numerical argument out of domain"
00257     },
00258 #endif
00259 #ifdef ERANGE
00260     {
00261         ERANGE,
00262         "ERANGE",
00263         "Numerical result out of range"
00264     },
00265 #endif
00266 #ifdef EDEADLK
00267     {
00268         EDEADLK,
00269         "EDEADLK",
00270         "Resource deadlock avoided"
00271     },
00272 #endif
00273 #ifdef EDEADLOCK
00274     {
00275         EDEADLOCK,
00276         "EDEADLOCK",
00277         "Resource deadlock avoided"
00278     },
00279 #endif
00280 #ifdef ENAMETOOLONG
00281     {
00282         ENAMETOOLONG,
00283         "ENAMETOOLONG",
00284         "File name too long"
00285     },
00286 #endif
00287 #ifdef ENOLCK
00288     {
00289         ENOLCK,
00290         "ENOLCK",
00291         "No locks available"
00292     },
00293 #endif
00294 #ifdef ENOSYS
00295     {
00296         ENOSYS,
00297         "ENOSYS",
00298         "Function not implemented"
00299     },
00300 #endif
00301 #ifdef ENOTEMPTY
00302     {
00303         ENOTEMPTY,
00304         "ENOTEMPTY",
00305         "Directory not empty"
00306     },
00307 #endif
00308 #ifdef ELOOP
00309     {
00310         ELOOP,
00311         "ELOOP",
00312         "Too many levels of symbolic links"
00313     },
00314 #endif
00315 #ifdef EWOULDBLOCK
00316     {
00317         EWOULDBLOCK,
00318         "EWOULDBLOCK",
00319         "Resource temporarily unavailable"
00320     },
00321 #endif
00322 #ifdef ENOMSG
00323     {
00324         ENOMSG,
00325         "ENOMSG",
00326         "No message of desired type"
00327     },
00328 #endif
00329 #ifdef EIDRM
00330     {
00331         EIDRM,
00332         "EIDRM",
00333         "Identifier removed"
00334     },
00335 #endif
00336 #ifdef ECHRNG
00337     {
00338         ECHRNG,
00339         "ECHRNG",
00340         "Channel number out of range"
00341     },
00342 #endif
00343 #ifdef EL2NSYNC
00344     {
00345         EL2NSYNC,
00346         "EL2NSYNC",
00347         "Level 2 not synchronized"
00348     },
00349 #endif
00350 #ifdef EL3HLT
00351     {
00352         EL3HLT,
00353         "EL3HLT",
00354         "Level 3 halted"
00355     },
00356 #endif
00357 #ifdef EL3RST
00358     {
00359         EL3RST,
00360         "EL3RST",
00361         "Level 3 reset"
00362     },
00363 #endif
00364 #ifdef ELNRNG
00365     {
00366         ELNRNG,
00367         "ELNRNG",
00368         "Link number out of range"
00369     },
00370 #endif
00371 #ifdef EUNATCH
00372     {
00373         EUNATCH,
00374         "EUNATCH",
00375         "Protocol driver not attached"
00376     },
00377 #endif
00378 #ifdef ENOCSI
00379     {
00380         ENOCSI,
00381         "ENOCSI",
00382         "No CSI structure available"
00383     },
00384 #endif
00385 #ifdef EL2HLT
00386     {
00387         EL2HLT,
00388         "EL2HLT",
00389         "Level 2 halted"
00390     },
00391 #endif
00392 #ifdef EBADE
00393     {
00394         EBADE,
00395         "EBADE",
00396         "Invalid exchange"
00397     },
00398 #endif
00399 #ifdef EBADR
00400     {
00401         EBADR,
00402         "EBADR",
00403         "Invalid request descriptor"
00404     },
00405 #endif
00406 #ifdef EXFULL
00407     {
00408         EXFULL,
00409         "EXFULL",
00410         "Exchange full"
00411     },
00412 #endif
00413 #ifdef ENOANO
00414     {
00415         ENOANO,
00416         "ENOANO",
00417         "No anode"
00418     },
00419 #endif
00420 #ifdef EBADRQC
00421     {
00422         EBADRQC,
00423         "EBADRQC",
00424         "Invalid request code"
00425     },
00426 #endif
00427 #ifdef EBADSLT
00428     {
00429         EBADSLT,
00430         "EBADSLT",
00431         "Invalid slot"
00432     },
00433 #endif
00434 #ifdef EBFONT
00435     {
00436         EBFONT,
00437         "EBFONT",
00438         "Bad font file format"
00439     },
00440 #endif
00441 #ifdef ENOSTR
00442     {
00443         ENOSTR,
00444         "ENOSTR",
00445         "Device not a stream"
00446     },
00447 #endif
00448 #ifdef ENODATA
00449     {
00450         ENODATA,
00451         "ENODATA",
00452         "No data available"
00453     },
00454 #endif
00455 #ifdef ETIME
00456     {
00457         ETIME,
00458         "ETIME",
00459         "Timer expired"
00460     },
00461 #endif
00462 #ifdef ENOSR
00463     {
00464         ENOSR,
00465         "ENOSR",
00466         "Out of streams resources"
00467     },
00468 #endif
00469 #ifdef ENONET
00470     {
00471         ENONET,
00472         "ENONET",
00473         "Machine is not on the network"
00474     },
00475 #endif
00476 #ifdef ENOPKG
00477     {
00478         ENOPKG,
00479         "ENOPKG",
00480         "Package not installed"
00481     },
00482 #endif
00483 #ifdef EREMOTE
00484     {
00485         EREMOTE,
00486         "EREMOTE",
00487         "Object is remote"
00488     },
00489 #endif
00490 #ifdef ENOLINK
00491     {
00492         ENOLINK,
00493         "ENOLINK",
00494         "Link has been severed"
00495     },
00496 #endif
00497 #ifdef EADV
00498     {
00499         EADV,
00500         "EADV",
00501         "Advertise error"
00502     },
00503 #endif
00504 #ifdef ESRMNT
00505     {
00506         ESRMNT,
00507         "ESRMNT",
00508         "Srmount error"
00509     },
00510 #endif
00511 #ifdef ECOMM
00512     {
00513         ECOMM,
00514         "ECOMM",
00515         "Communication error on send"
00516     },
00517 #endif
00518 #ifdef EPROTO
00519     {
00520         EPROTO,
00521         "EPROTO",
00522         "Protocol error"
00523     },
00524 #endif
00525 #ifdef EMULTIHOP
00526     {
00527         EMULTIHOP,
00528         "EMULTIHOP",
00529         "Multihop attempted"
00530     },
00531 #endif
00532 #ifdef EDOTDOT
00533     {
00534         EDOTDOT,
00535         "EDOTDOT",
00536         "RFS specific error"
00537     },
00538 #endif
00539 #ifdef EBADMSG
00540     {
00541         EBADMSG,
00542         "EBADMSG",
00543         "Bad message"
00544     },
00545 #endif
00546 #ifdef EOVERFLOW
00547     {
00548         EOVERFLOW,
00549         "EOVERFLOW",
00550         "Value too large for defined data type"
00551     },
00552 #endif
00553 #ifdef ENOTUNIQ
00554     {
00555         ENOTUNIQ,
00556         "ENOTUNIQ",
00557         "Name not unique on network"
00558     },
00559 #endif
00560 #ifdef EBADFD
00561     {
00562         EBADFD,
00563         "EBADFD",
00564         "File descriptor in bad state"
00565     },
00566 #endif
00567 #ifdef EREMCHG
00568     {
00569         EREMCHG,
00570         "EREMCHG",
00571         "Remote address changed"
00572     },
00573 #endif
00574 #ifdef ELIBACC
00575     {
00576         ELIBACC,
00577         "ELIBACC",
00578         "Can not access a needed shared library"
00579     },
00580 #endif
00581 #ifdef ELIBBAD
00582     {
00583         ELIBBAD,
00584         "ELIBBAD",
00585         "Accessing a corrupted shared library"
00586     },
00587 #endif
00588 #ifdef ELIBSCN
00589     {
00590         ELIBSCN,
00591         "ELIBSCN",
00592         ".lib section in a.out corrupted"
00593     },
00594 #endif
00595 #ifdef ELIBMAX
00596     {
00597         ELIBMAX,
00598         "ELIBMAX",
00599         "Attempting to link in too many shared libraries"
00600     },
00601 #endif
00602 #ifdef ELIBEXEC
00603     {
00604         ELIBEXEC,
00605         "ELIBEXEC",
00606         "Cannot exec a shared library directly"
00607     },
00608 #endif
00609 #ifdef EILSEQ
00610     {
00611         EILSEQ,
00612         "EILSEQ",
00613         "Invalid or incomplete multibyte or wide character"
00614     },
00615 #endif
00616 #ifdef ERESTART
00617     {
00618         ERESTART,
00619         "ERESTART",
00620         "Interrupted system call should be restarted"
00621     },
00622 #endif
00623 #ifdef ESTRPIPE
00624     {
00625         ESTRPIPE,
00626         "ESTRPIPE",
00627         "Streams pipe error"
00628     },
00629 #endif
00630 #ifdef EUSERS
00631     {
00632         EUSERS,
00633         "EUSERS",
00634         "Too many users"
00635     },
00636 #endif
00637 #ifdef ENOTSOCK
00638     {
00639         ENOTSOCK,
00640         "ENOTSOCK",
00641         "Socket operation on non-socket"
00642     },
00643 #endif
00644 #ifdef EDESTADDRREQ
00645     {
00646         EDESTADDRREQ,
00647         "EDESTADDRREQ",
00648         "Destination address required"
00649     },
00650 #endif
00651 #ifdef EMSGSIZE
00652     {
00653         EMSGSIZE,
00654         "EMSGSIZE",
00655         "Message too long"
00656     },
00657 #endif
00658 #ifdef EPROTOTYPE
00659     {
00660         EPROTOTYPE,
00661         "EPROTOTYPE",
00662         "Protocol wrong type for socket"
00663     },
00664 #endif
00665 #ifdef ENOPROTOOPT
00666     {
00667         ENOPROTOOPT,
00668         "ENOPROTOOPT",
00669         "Protocol not available"
00670     },
00671 #endif
00672 #ifdef EPROTONOSUPPORT
00673     {
00674         EPROTONOSUPPORT,
00675         "EPROTONOSUPPORT",
00676         "Protocol not supported"
00677     },
00678 #endif
00679 #ifdef ESOCKTNOSUPPORT
00680     {
00681         ESOCKTNOSUPPORT,
00682         "ESOCKTNOSUPPORT",
00683         "Socket type not supported"
00684     },
00685 #endif
00686 #ifdef EOPNOTSUPP
00687     {
00688         EOPNOTSUPP,
00689         "EOPNOTSUPP",
00690         "Operation not supported"
00691     },
00692 #endif
00693 #ifdef EPFNOSUPPORT
00694     {
00695         EPFNOSUPPORT,
00696         "EPFNOSUPPORT",
00697         "Protocol family not supported"
00698     },
00699 #endif
00700 #ifdef EAFNOSUPPORT
00701     {
00702         EAFNOSUPPORT,
00703         "EAFNOSUPPORT",
00704         "Address family not supported by protocol"
00705     },
00706 #endif
00707 #ifdef EADDRINUSE
00708     {
00709         EADDRINUSE,
00710         "EADDRINUSE",
00711         "Address already in use"
00712     },
00713 #endif
00714 #ifdef EADDRNOTAVAIL
00715     {
00716         EADDRNOTAVAIL,
00717         "EADDRNOTAVAIL",
00718         "Cannot assign requested address"
00719     },
00720 #endif
00721 #ifdef ENETDOWN
00722     {
00723         ENETDOWN,
00724         "ENETDOWN",
00725         "Network is down"
00726     },
00727 #endif
00728 #ifdef ENETUNREACH
00729     {
00730         ENETUNREACH,
00731         "ENETUNREACH",
00732         "Network is unreachable"
00733     },
00734 #endif
00735 #ifdef ENETRESET
00736     {
00737         ENETRESET,
00738         "ENETRESET",
00739         "Network dropped connection on reset"
00740     },
00741 #endif
00742 #ifdef ECONNABORTED
00743     {
00744         ECONNABORTED,
00745         "ECONNABORTED",
00746         "Software caused connection abort"
00747     },
00748 #endif
00749 #ifdef ECONNRESET
00750     {
00751         ECONNRESET,
00752         "ECONNRESET",
00753         "Connection reset by peer"
00754     },
00755 #endif
00756 #ifdef ENOBUFS
00757     {
00758         ENOBUFS,
00759         "ENOBUFS",
00760         "No buffer space available"
00761     },
00762 #endif
00763 #ifdef EISCONN
00764     {
00765         EISCONN,
00766         "EISCONN",
00767         "Transport endpoint is already connected"
00768     },
00769 #endif
00770 #ifdef ENOTCONN
00771     {
00772         ENOTCONN,
00773         "ENOTCONN",
00774         "Transport endpoint is not connected"
00775     },
00776 #endif
00777 #ifdef ESHUTDOWN
00778     {
00779         ESHUTDOWN,
00780         "ESHUTDOWN",
00781         "Cannot send after transport endpoint shutdown"
00782     },
00783 #endif
00784 #ifdef ETOOMANYREFS
00785     {
00786         ETOOMANYREFS,
00787         "ETOOMANYREFS",
00788         "Too many references: cannot splice"
00789     },
00790 #endif
00791 #ifdef ETIMEDOUT
00792     {
00793         ETIMEDOUT,
00794         "ETIMEDOUT",
00795         "Connection timed out"
00796     },
00797 #endif
00798 #ifdef ECONNREFUSED
00799     {
00800         ECONNREFUSED,
00801         "ECONNREFUSED",
00802         "Connection refused"
00803     },
00804 #endif
00805 #ifdef EHOSTDOWN
00806     {
00807         EHOSTDOWN,
00808         "EHOSTDOWN",
00809         "Host is down"
00810     },
00811 #endif
00812 #ifdef EHOSTUNREACH
00813     {
00814         EHOSTUNREACH,
00815         "EHOSTUNREACH",
00816         "No route to host"
00817     },
00818 #endif
00819 #ifdef EALREADY
00820     {
00821         EALREADY,
00822         "EALREADY",
00823         "Operation already in progress"
00824     },
00825 #endif
00826 #ifdef EINPROGRESS
00827     {
00828         EINPROGRESS,
00829         "EINPROGRESS",
00830         "Operation now in progress"
00831     },
00832 #endif
00833 #ifdef ESTALE
00834     {
00835         ESTALE,
00836         "ESTALE",
00837         "Stale NFS file handle"
00838     },
00839 #endif
00840 #ifdef EUCLEAN
00841     {
00842         EUCLEAN,
00843         "EUCLEAN",
00844         "Structure needs cleaning"
00845     },
00846 #endif
00847 #ifdef ENOTNAM
00848     {
00849         ENOTNAM,
00850         "ENOTNAM",
00851         "Not a XENIX named type file"
00852     },
00853 #endif
00854 #ifdef ENAVAIL
00855     {
00856         ENAVAIL,
00857         "ENAVAIL",
00858         "No XENIX semaphores available"
00859     },
00860 #endif
00861 #ifdef EISNAM
00862     {
00863         EISNAM,
00864         "EISNAM",
00865         "Is a named type file"
00866     },
00867 #endif
00868 #ifdef EREMOTEIO
00869     {
00870         EREMOTEIO,
00871         "EREMOTEIO",
00872         "Remote I/O error"
00873     },
00874 #endif
00875 #ifdef EDQUOT
00876     {
00877         EDQUOT,
00878         "EDQUOT",
00879         "Disk quota exceeded"
00880     },
00881 #endif
00882 #ifdef ENOMEDIUM
00883     {
00884         ENOMEDIUM,
00885         "ENOMEDIUM",
00886         "No medium found"
00887     },
00888 #endif
00889 #ifdef EMEDIUMTYPE
00890     {
00891         EMEDIUMTYPE,
00892         "EMEDIUMTYPE",
00893         "Wrong medium type"
00894     },
00895 #endif
00896 #ifdef ECANCELED
00897     {
00898         ECANCELED,
00899         "ECANCELED",
00900         "Operation canceled"
00901     },
00902 #endif
00903 #ifdef ENOKEY
00904     {
00905         ENOKEY,
00906         "ENOKEY",
00907         "Required key not available"
00908     },
00909 #endif
00910 #ifdef EKEYEXPIRED
00911     {
00912         EKEYEXPIRED,
00913         "EKEYEXPIRED",
00914         "Key has expired"
00915     },
00916 #endif
00917 #ifdef EKEYREVOKED
00918     {
00919         EKEYREVOKED,
00920         "EKEYREVOKED",
00921         "Key has been revoked"
00922     },
00923 #endif
00924 #ifdef EKEYREJECTED
00925     {
00926         EKEYREJECTED,
00927         "EKEYREJECTED",
00928         "Key was rejected by service"
00929     },
00930 #endif
00931 #ifdef EOWNERDEAD
00932     {
00933         EOWNERDEAD,
00934         "EOWNERDEAD",
00935         "Owner died"
00936     },
00937 #endif
00938 #ifdef ENOTRECOVERABLE
00939     {
00940         ENOTRECOVERABLE,
00941         "ENOTRECOVERABLE",
00942         "State not recoverable"
00943     },
00944 #endif
00945 #ifdef ELIBAD
00946     { ELIBAD, "ELIBAD", 0 }, /* FreeBSD */
00947 #endif
00948 #ifdef EAUTH
00949     { EAUTH, "EAUTH", 0 }, /* FreeBSD */
00950 #endif
00951 #ifdef EBADRPC
00952     { EBADRPC, "EBADRPC", 0 }, /* FreeBSD */
00953 #endif
00954 #ifdef EDIRIOCTL
00955     { EDIRIOCTL, "EDIRIOCTL", 0 }, /* pseudo, FreeBSD */
00956 #endif
00957 #ifdef EDOOFUS
00958     { EDOOFUS, "EDOOFUS", 0 }, /* FreeBSD */
00959 #endif
00960 #ifdef EFTYPE
00961     { EFTYPE, "EFTYPE", 0 }, /* FreeBSD */
00962 #endif
00963 #ifdef EJUSTRETURN
00964     { EJUSTRETURN, "EJUSTRETURN", 0 }, /* pseudo, FreeBSD */
00965 #endif
00966 #ifdef ENEEDAUTH
00967     { ENEEDAUTH, "ENEEDAUTH", 0 }, /* FreeBSD */
00968 #endif
00969 #ifdef ENOATTR
00970     { ENOATTR, "ENOATTR", 0 }, /* FreeBSD */
00971 #endif
00972 #ifdef ENOIOCTL
00973     { ENOIOCTL, "ENOIOCTL", 0 }, /* pseudo, FreeBSD */
00974 #endif
00975 #ifdef EPROCLIM
00976     { EPROCLIM, "EPROCLIM", 0 }, /* FreeBSD */
00977 #endif
00978 #ifdef EPROCUNAVAIL
00979     { EPROCUNAVAIL, "EPROCUNAVAIL", 0 }, /* FreeBSD */
00980 #endif
00981 #ifdef EPROGMISMATCH
00982     { EPROGMISMATCH, "EPROGMISMATCH", 0 }, /* FreeBSD */
00983 #endif
00984 #ifdef EPROGUNAVAIL
00985     { EPROGUNAVAIL, "EPROGUNAVAIL", 0 }, /* FreeBSD */
00986 #endif
00987 #ifdef ERPCMISMATCH
00988     { ERPCMISMATCH, "ERPCMISMATCH", 0 }, /* FreeBSD */
00989 #endif
00990 #ifdef ENOTSUP
00991     {
00992         ENOTSUP,
00993         "ENOTSUP",
00994         "Operation not supported"
00995     },
00996 #endif
00997 #ifdef ELAST
00998     { ELAST, "ELAST", 0 }, /* FreeBSD: "must be equal to largest errno" */
00999 #endif
01000 };
01001 
01002 const size_t explain_errno_info_size = SIZEOF(explain_errno_info);
01003 
01004 
01005 /* vim: set ts=8 sw=4 et : */