errdefs.cpp

00001 // LICENSE: (Please see the file COPYING for details)
00002 //
00003 // NUS - Nemesis Utilities System: A C++ application development framework 
00004 // Copyright (C) 2006, 2008 Otavio Rodolfo Piske
00005 //
00006 //  This file is part of NUS
00007 //
00008 //  This library is free software; you can redistribute it and/or
00009 //  modify it under the terms of the GNU Lesser General Public
00010 //  License as published by the Free Software Foundation version 2.1
00011 //  of the License.
00012 //
00013 //  This library is distributed in the hope that it will be useful,
00014 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016 //  Lesser General Public License for more details.
00017 //
00018 //  You should have received a copy of the GNU Lesser General Public
00019 //  License along with this library; if not, write to the Free Software
00020 //  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00021 //
00022 #include "errdefs.h"
00023 
00024 const char *nerror(int code) {
00025       switch (code) {
00026             case EPERM:
00027             case EACCES: {
00028                   return "Permission denied";
00029             }
00030             case ESRCH: {
00031                   return "No such proccess";
00032             }
00033             case EINTR: {
00034                   return "Interrupted function";
00035             }
00036             case EIO: {
00037                   return "I/O Error";
00038             } 
00039             case ENXIO: {
00040                   return "No such device or address";
00041             }
00042             case E2BIG: {
00043                   return "Argument list too long";
00044             }
00045             case ENOEXEC: {
00046                   return "Exec format error";
00047             }
00048             case EBADF: {
00049                   return "Bad file number";
00050             }
00051             case ECHILD: {
00052                   return "No spawned proccess";
00053             }
00054             // = EWOULDBLOCK
00055             case EAGAIN: {
00056                   return "Resource temporarly unavailable";
00057             }
00058             case ENOMEM: {
00059                   return "The system is out of memory";
00060             }
00061             case EFAULT: {
00062                   return "The given buffer points to unaccessible memory";
00063             }
00064             case EBUSY: {
00065                   return "Too busy to complete the request";
00066             }
00067             case EEXIST: {
00068                   return "File exists";
00069             }
00070             case EXDEV: {
00071                   return "Cross-device link";
00072             }
00073             case ENODEV: {
00074                   return "No such device";
00075             }
00076             case ENOTDIR: {
00077                   return "A directory component in one of the paths isn't a directory";
00078             }
00079             case EISDIR: {
00080                   return "The given path is a directory";
00081             }
00082             case EINVAL: {
00083                   return "Invalid argument";
00084             }
00085             case ENFILE: { 
00086                   return "Too many open files";
00087             }
00088             case EMFILE: {
00089                   return "Too many open files";
00090             }
00091             case ENOTTY: {
00092                   return "Inappropriate I/O control operation";
00093             }
00094             case EFBIG: {
00095                   return "File too big";
00096             }
00097             case ENOSPC: { 
00098                   return "No space left on the device";
00099             }
00100             case ESPIPE: {
00101                   return "Invalid seek";
00102             }
00103             case EROFS: {
00104                   return "Read-only filesystem";
00105             }
00106             case EMLINK: {
00107                   return "Too many links";
00108             }
00109             case EPIPE: {
00110                   return "Broken pipe";
00111             }
00112             case EDOM: {
00113                   return "Math argument";
00114             }
00115             case ERANGE: {
00116                   return "Result too large";
00117             }
00118 #if !defined(__APPLE__) && !defined(__FreeBSD__)
00119             case EDEADLOCK: {
00120                   return "Resource deadlock would occur";
00121             }
00122 #endif // !defined(__APPLE__) && !defined(__FreeBSD__)
00123             case ENAMETOOLONG: {
00124                   return "Filename too long";
00125             }
00126             case ENOLCK: {
00127                   return "No locks available";
00128             }
00129             case ENOSYS: {
00130                   return "Function not supported";
00131             }
00132             case ENOTEMPTY: {
00133                   return "Directory not empty";
00134             }
00135             case EILSEQ: {
00136                   return "Illegal byte sequence";
00137             }
00138 #if defined(__WIN32) && defined (_MSC_VER)
00139             case STRUNCATE: {
00140                   return "String was truncated";
00141             }
00142 #endif // defined(__WIN32) && defined (_MSC_VER)
00143             
00144 #ifndef __WIN32
00145             case ELOOP: {
00146                   return "Too many symbolics links";
00147             }
00148             case EADDRINUSE: {
00149                   return "Address already in use";
00150             }
00151             case EALREADY: {
00152                   return "Connection already in progress";
00153             }
00154 #if !defined(__APPLE__) && !defined(__FreeBSD__)
00155             case EBADE: {
00156                   return "Invalid exchange";
00157             }
00158             case EBADFD: {
00159                   return "File descriptor in bad state";
00160             }
00161             case EBADR: {
00162                   return "Invalid request descriptor";
00163             }
00164             
00165             case EBADRQC: {
00166                   return "Invalid request code";
00167             }
00168             case EBADSLT: {
00169                   return "Invalid slot";
00170             }
00171             
00172             case ECHRNG: {
00173                   return "Channel number out of range";
00174             }
00175             case ECOMM: {
00176                   return "Communication error on send";
00177             }
00178 #if !defined(__CYGWIN__)
00179             case EISNAM: { 
00180                   return "Is a named type file";
00181             }
00182             case EKEYEXPIRED: {
00183                   return "Key has expired";
00184             }
00185             case EKEYREJECTED: {
00186                   return "Key was rejected by service";
00187             }
00188             case EKEYREVOKED: {
00189                   return "Key has been revoked";
00190             }
00191 #endif // !defined(__CYGWIN__)
00192             case EL2HLT: {
00193                   return "Level 2 halted";
00194             }
00195             case EL2NSYNC: {
00196                   return "Level 2 not synchronized";
00197             }
00198             case EL3HLT: {
00199                   return "Level 3 halted";
00200             }
00201             case EL3RST: {
00202                   return "Level 3 halted";
00203             }
00204             case ELIBACC: {
00205                   return "Cannot access a needed shared library";
00206             }
00207             case ELIBBAD: {
00208                   return "Accessing a corrupted shared library";
00209             }
00210             case ELIBMAX: { 
00211                   return "Attempting to link in too many shared libraries";
00212             }
00213             case ELIBSCN: {
00214                   return "lib section in a.out corrupted";
00215             }
00216             case ELIBEXEC: {
00217                   return "Cannot exec a shared library directly";
00218             }
00219 #if !defined(__CYGWIN__)
00220             case EMEDIUMTYPE: {
00221                   return "Wrong medium type";
00222             }
00223             case ENOKEY: { 
00224                   return "Required key not available";
00225             }
00226 #endif // !defined(__CYGWIN__)
00227             case ENOTUNIQ: {
00228                   return "Name not unique on network";
00229             }
00230             case EREMCHG: {
00231                   return "Remote address changed";
00232             }
00233 #if !defined(__CYGWIN__)
00234             case EREMOTEIO: { 
00235                   return "Remote I/O error";
00236             }
00237             case ERESTART: {
00238                   return "Interrupted system call should be restarted";
00239             }
00240             case ESTRPIPE: {
00241                   return "Streams pipe error";
00242             }
00243             case EUCLEAN: {
00244                   return "Structure needs cleaning";
00245             }
00246 #endif // !defined(__CYGWIN__)
00247             case EUNATCH: {
00248                   return "Protocol driver not attached";
00249             }
00250             case EXFULL: {
00251                   return "Exchange full";
00252             }
00253 #endif // !defined(__APPLE__) && !defined(__FreeBSD__)
00254             case EBADMSG: {
00255                   return "Bad message";
00256             }
00257 #if !defined(__CYGWIN__)
00258             case ECANCELED: {
00259                   return "Operation canceled";
00260             }
00261 #endif // !defined(__CYGWIN__)
00262             case ECONNABORTED: {
00263                   return "connection aborted";
00264             }
00265             case ECONNREFUSED: {
00266                   return "Connection refused";
00267             }
00268             case ECONNRESET: {
00269                   return "Connection reset";
00270             }
00271             case EDESTADDRREQ: {
00272                   return "Destination address required";
00273             }
00274             case EDQUOT: { 
00275                   return "Disk quota exceeded";
00276             }
00277             case EHOSTDOWN: {
00278                   return "Host is down:";
00279             }
00280             case EHOSTUNREACH: {
00281                   return "Host is unreachable";
00282             }
00283             case EIDRM: {
00284                   return "Identifier removed";
00285             }
00286             case EINPROGRESS: {
00287                   return "Operation in progress";
00288             }
00289             case EISCONN: {
00290                   return "Socket is connected";
00291             }
00292             case EMSGSIZE: {
00293                   return "Message too long";
00294             }
00295             case EMULTIHOP: {
00296                   return "Multihop attempted";
00297             }
00298             case ENETDOWN: {
00299                   return "Network is down";
00300             }
00301             case ENETRESET: {
00302                   return "Connection aborted by network";
00303             }
00304             case ENETUNREACH: {
00305                   return "Network unreachable";
00306             }
00307             case ENOBUFS: {
00308                   return "No buffer space available";
00309             }
00310             case ENODATA: {
00311                   return "No message is available on the STREAM head read queue";
00312             }
00313 //          case ENODEV: {
00314 //                return "No such device";
00315 //          }
00316             case ENOLINK: {
00317                   return "Link has been severed";
00318             }
00319             case ENOPROTOOPT: {
00320                   return "Protocol not available";
00321             }
00322             case ENOSR: {
00323                   return "No STREAM resources";
00324             }
00325             case ENOSTR: {
00326                   return "Not a STREAM";
00327             }
00328             case ENOTBLK: {
00329                   return "Block device required";
00330             }
00331             case ENOTCONN: {
00332                   return "The socket is not connected";
00333             }
00334             case ENOTSOCK: {
00335                   return "Not a socket";
00336             }
00337             // From the errno man page: ENOTSUP  and  EOPNOTSUPP  have  the 
00338             // same value on Linux, but according to POSIX.1 these error 
00339             // values should be distinct. 
00340             case ENOTSUP: {
00341                   return "Operation not supported";
00342             }
00343             case EOVERFLOW: {
00344                   return "Value too large to be stored in data type";
00345             }
00346             case EPFNOSUPPORT: {
00347                   return "Protocol family not supported";
00348             }
00349             case EPROTO: {
00350                   return "Protocol error";
00351             }
00352             case EPROTONOSUPPORT: { 
00353                   return "Protocol not supported";
00354             }
00355             case EPROTOTYPE: {
00356                   return "Protocol wrong type for socket";
00357             }
00358             case EREMOTE: {
00359                   return "Object is remote";
00360             }
00361             case ESHUTDOWN: { 
00362                   return "Cannot send after transport endpoint shutdown";
00363             }
00364             case ESOCKTNOSUPPORT: {
00365                   return "Socket type not supported";
00366             }
00367             case ESTALE: {
00368                   // From the errno man page: this error can occur for 
00369                   // NFS and for other file systems
00370                   return "Stale file handle";
00371             }
00372             case ETIME: {
00373                   return "Timer expired";
00374             }
00375             case ETIMEDOUT: {
00376                   return "Connection timed out";
00377             }
00378             case ETXTBSY: { 
00379                   return "Text file busy";
00380             }
00381             
00382             case EUSERS: { 
00383                   return "Too many users";
00384             }
00385             case ENOENT: { 
00386                   return "File does not exist";
00387             }
00388                                     
00389 #endif // __WIN32
00390 
00391             default: {
00392                   return "Unhandled error";
00393             }
00394       }
00395 }

Generated on Wed Mar 5 23:10:35 2008 for NemesisUtilitiesSystem by  doxygen 1.5.4