/[dtapublic]/projs/trunk/shared_source/c_tcl_base_7_5_w_mods/tclposixstr.c
ViewVC logotype

Diff of /projs/trunk/shared_source/c_tcl_base_7_5_w_mods/tclposixstr.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

projs/trunk/shared_source/tcl_base/tclposixstr.c revision 42 by dashley, Fri Oct 14 01:50:00 2016 UTC projs/trunk/shared_source/c_tcl_base_7_5_w_mods/tclposixstr.c revision 71 by dashley, Sat Nov 5 11:07:06 2016 UTC
# Line 1  Line 1 
 /* $Header: /cvsroot/esrg/sfesrg/esrgpcpj/shared/tcl_base/tclposixstr.c,v 1.1.1.1 2001/06/13 04:45:10 dtashley Exp $ */  
   
 /*  
  * tclPosixStr.c --  
  *  
  *      This file contains procedures that generate strings  
  *      corresponding to various POSIX-related codes, such  
  *      as errno and signals.  
  *  
  * Copyright (c) 1991-1994 The Regents of the University of California.  
  * Copyright (c) 1994-1996 Sun Microsystems, Inc.  
  *  
  * See the file "license.terms" for information on usage and redistribution  
  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.  
  *  
  * RCS: @(#) $Id: tclposixstr.c,v 1.1.1.1 2001/06/13 04:45:10 dtashley Exp $  
  */  
   
 #include "tclInt.h"  
 #include "tclPort.h"  
   
 /*  
  *----------------------------------------------------------------------  
  *  
  * Tcl_ErrnoId --  
  *  
  *      Return a textual identifier for the current errno value.  
  *  
  * Results:  
  *      This procedure returns a machine-readable textual identifier  
  *      that corresponds to the current errno value (e.g. "EPERM").  
  *      The identifier is the same as the #define name in errno.h.  
  *  
  * Side effects:  
  *      None.  
  *  
  *----------------------------------------------------------------------  
  */  
   
 char *  
 Tcl_ErrnoId()  
 {  
     switch (errno) {  
 #ifdef E2BIG  
         case E2BIG: return "E2BIG";  
 #endif  
 #ifdef EACCES  
         case EACCES: return "EACCES";  
 #endif  
 #ifdef EADDRINUSE  
         case EADDRINUSE: return "EADDRINUSE";  
 #endif  
 #ifdef EADDRNOTAVAIL  
         case EADDRNOTAVAIL: return "EADDRNOTAVAIL";  
 #endif  
 #ifdef EADV  
         case EADV: return "EADV";  
 #endif  
 #ifdef EAFNOSUPPORT  
         case EAFNOSUPPORT: return "EAFNOSUPPORT";  
 #endif  
 #ifdef EAGAIN  
         case EAGAIN: return "EAGAIN";  
 #endif  
 #ifdef EALIGN  
         case EALIGN: return "EALIGN";  
 #endif  
 #if defined(EALREADY) && (!defined(EBUSY) || (EALREADY != EBUSY ))  
         case EALREADY: return "EALREADY";  
 #endif  
 #ifdef EBADE  
         case EBADE: return "EBADE";  
 #endif  
 #ifdef EBADF  
         case EBADF: return "EBADF";  
 #endif  
 #ifdef EBADFD  
         case EBADFD: return "EBADFD";  
 #endif  
 #ifdef EBADMSG  
         case EBADMSG: return "EBADMSG";  
 #endif  
 #ifdef EBADR  
         case EBADR: return "EBADR";  
 #endif  
 #ifdef EBADRPC  
         case EBADRPC: return "EBADRPC";  
 #endif  
 #ifdef EBADRQC  
         case EBADRQC: return "EBADRQC";  
 #endif  
 #ifdef EBADSLT  
         case EBADSLT: return "EBADSLT";  
 #endif  
 #ifdef EBFONT  
         case EBFONT: return "EBFONT";  
 #endif  
 #ifdef EBUSY  
         case EBUSY: return "EBUSY";  
 #endif  
 #ifdef ECHILD  
         case ECHILD: return "ECHILD";  
 #endif  
 #ifdef ECHRNG  
         case ECHRNG: return "ECHRNG";  
 #endif  
 #ifdef ECOMM  
         case ECOMM: return "ECOMM";  
 #endif  
 #ifdef ECONNABORTED  
         case ECONNABORTED: return "ECONNABORTED";  
 #endif  
 #ifdef ECONNREFUSED  
         case ECONNREFUSED: return "ECONNREFUSED";  
 #endif  
 #ifdef ECONNRESET  
         case ECONNRESET: return "ECONNRESET";  
 #endif  
 #if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK))  
         case EDEADLK: return "EDEADLK";  
 #endif  
 #if defined(EDEADLOCK) && (!defined(EDEADLK) || (EDEADLOCK != EDEADLK))  
         case EDEADLOCK: return "EDEADLOCK";  
 #endif  
 #ifdef EDESTADDRREQ  
         case EDESTADDRREQ: return "EDESTADDRREQ";  
 #endif  
 #ifdef EDIRTY  
         case EDIRTY: return "EDIRTY";  
 #endif  
 #ifdef EDOM  
         case EDOM: return "EDOM";  
 #endif  
 #ifdef EDOTDOT  
         case EDOTDOT: return "EDOTDOT";  
 #endif  
 #ifdef EDQUOT  
         case EDQUOT: return "EDQUOT";  
 #endif  
 #ifdef EDUPPKG  
         case EDUPPKG: return "EDUPPKG";  
 #endif  
 #ifdef EEXIST  
         case EEXIST: return "EEXIST";  
 #endif  
 #ifdef EFAULT  
         case EFAULT: return "EFAULT";  
 #endif  
 #ifdef EFBIG  
         case EFBIG: return "EFBIG";  
 #endif  
 #ifdef EHOSTDOWN  
         case EHOSTDOWN: return "EHOSTDOWN";  
 #endif  
 #ifdef EHOSTUNREACH  
         case EHOSTUNREACH: return "EHOSTUNREACH";  
 #endif  
 #if defined(EIDRM) && (!defined(EINPROGRESS) || (EIDRM != EINPROGRESS))  
         case EIDRM: return "EIDRM";  
 #endif  
 #ifdef EINIT  
         case EINIT: return "EINIT";  
 #endif  
 #ifdef EINPROGRESS  
         case EINPROGRESS: return "EINPROGRESS";  
 #endif  
 #ifdef EINTR  
         case EINTR: return "EINTR";  
 #endif  
 #ifdef EINVAL  
         case EINVAL: return "EINVAL";  
 #endif  
 #ifdef EIO  
         case EIO: return "EIO";  
 #endif  
 #ifdef EISCONN  
         case EISCONN: return "EISCONN";  
 #endif  
 #ifdef EISDIR  
         case EISDIR: return "EISDIR";  
 #endif  
 #ifdef EISNAME  
         case EISNAM: return "EISNAM";  
 #endif  
 #ifdef ELBIN  
         case ELBIN: return "ELBIN";  
 #endif  
 #ifdef EL2HLT  
         case EL2HLT: return "EL2HLT";  
 #endif  
 #ifdef EL2NSYNC  
         case EL2NSYNC: return "EL2NSYNC";  
 #endif  
 #ifdef EL3HLT  
         case EL3HLT: return "EL3HLT";  
 #endif  
 #ifdef EL3RST  
         case EL3RST: return "EL3RST";  
 #endif  
 #ifdef ELIBACC  
         case ELIBACC: return "ELIBACC";  
 #endif  
 #ifdef ELIBBAD  
         case ELIBBAD: return "ELIBBAD";  
 #endif  
 #ifdef ELIBEXEC  
         case ELIBEXEC: return "ELIBEXEC";  
 #endif  
 #ifdef ELIBMAX  
         case ELIBMAX: return "ELIBMAX";  
 #endif  
 #ifdef ELIBSCN  
         case ELIBSCN: return "ELIBSCN";  
 #endif  
 #ifdef ELNRNG  
         case ELNRNG: return "ELNRNG";  
 #endif  
 #if defined(ELOOP) && (!defined(ENOENT) || (ELOOP != ENOENT))  
         case ELOOP: return "ELOOP";  
 #endif  
 #ifdef EMFILE  
         case EMFILE: return "EMFILE";  
 #endif  
 #ifdef EMLINK  
         case EMLINK: return "EMLINK";  
 #endif  
 #ifdef EMSGSIZE  
         case EMSGSIZE: return "EMSGSIZE";  
 #endif  
 #ifdef EMULTIHOP  
         case EMULTIHOP: return "EMULTIHOP";  
 #endif  
 #ifdef ENAMETOOLONG  
         case ENAMETOOLONG: return "ENAMETOOLONG";  
 #endif  
 #ifdef ENAVAIL  
         case ENAVAIL: return "ENAVAIL";  
 #endif  
 #ifdef ENET  
         case ENET: return "ENET";  
 #endif  
 #ifdef ENETDOWN  
         case ENETDOWN: return "ENETDOWN";  
 #endif  
 #ifdef ENETRESET  
         case ENETRESET: return "ENETRESET";  
 #endif  
 #ifdef ENETUNREACH  
         case ENETUNREACH: return "ENETUNREACH";  
 #endif  
 #ifdef ENFILE  
         case ENFILE: return "ENFILE";  
 #endif  
 #ifdef ENOANO  
         case ENOANO: return "ENOANO";  
 #endif  
 #if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR))  
         case ENOBUFS: return "ENOBUFS";  
 #endif  
 #ifdef ENOCSI  
         case ENOCSI: return "ENOCSI";  
 #endif  
 #if defined(ENODATA) && (!defined(ECONNREFUSED) || (ENODATA != ECONNREFUSED))  
         case ENODATA: return "ENODATA";  
 #endif  
 #ifdef ENODEV  
         case ENODEV: return "ENODEV";  
 #endif  
 #ifdef ENOENT  
         case ENOENT: return "ENOENT";  
 #endif  
 #ifdef ENOEXEC  
         case ENOEXEC: return "ENOEXEC";  
 #endif  
 #ifdef ENOLCK  
         case ENOLCK: return "ENOLCK";  
 #endif  
 #ifdef ENOLINK  
         case ENOLINK: return "ENOLINK";  
 #endif  
 #ifdef ENOMEM  
         case ENOMEM: return "ENOMEM";  
 #endif  
 #ifdef ENOMSG  
         case ENOMSG: return "ENOMSG";  
 #endif  
 #ifdef ENONET  
         case ENONET: return "ENONET";  
 #endif  
 #ifdef ENOPKG  
         case ENOPKG: return "ENOPKG";  
 #endif  
 #ifdef ENOPROTOOPT  
         case ENOPROTOOPT: return "ENOPROTOOPT";  
 #endif  
 #ifdef ENOSPC  
         case ENOSPC: return "ENOSPC";  
 #endif  
 #if defined(ENOSR) && (!defined(ENAMETOOLONG) || (ENAMETOOLONG != ENOSR))  
         case ENOSR: return "ENOSR";  
 #endif  
 #if defined(ENOSTR) && (!defined(ENOTTY) || (ENOTTY != ENOSTR))  
         case ENOSTR: return "ENOSTR";  
 #endif  
 #ifdef ENOSYM  
         case ENOSYM: return "ENOSYM";  
 #endif  
 #ifdef ENOSYS  
         case ENOSYS: return "ENOSYS";  
 #endif  
 #ifdef ENOTBLK  
         case ENOTBLK: return "ENOTBLK";  
 #endif  
 #ifdef ENOTCONN  
         case ENOTCONN: return "ENOTCONN";  
 #endif  
 #ifdef ENOTDIR  
         case ENOTDIR: return "ENOTDIR";  
 #endif  
 #if defined(ENOTEMPTY) && (!defined(EEXIST) || (ENOTEMPTY != EEXIST))  
         case ENOTEMPTY: return "ENOTEMPTY";  
 #endif  
 #ifdef ENOTNAM  
         case ENOTNAM: return "ENOTNAM";  
 #endif  
 #ifdef ENOTSOCK  
         case ENOTSOCK: return "ENOTSOCK";  
 #endif  
 #ifdef ENOTSUP  
         case ENOTSUP: return "ENOTSUP";  
 #endif  
 #ifdef ENOTTY  
         case ENOTTY: return "ENOTTY";  
 #endif  
 #ifdef ENOTUNIQ  
         case ENOTUNIQ: return "ENOTUNIQ";  
 #endif  
 #ifdef ENXIO  
         case ENXIO: return "ENXIO";  
 #endif  
 #if defined(EOPNOTSUPP) &&  (!defined(ENOTSUP) || (ENOTSUP != EOPNOTSUPP))  
         case EOPNOTSUPP: return "EOPNOTSUPP";  
 #endif  
 #ifdef EPERM  
         case EPERM: return "EPERM";  
 #endif  
 #if defined(EPFNOSUPPORT) && (!defined(ENOLCK) || (ENOLCK != EPFNOSUPPORT))  
         case EPFNOSUPPORT: return "EPFNOSUPPORT";  
 #endif  
 #ifdef EPIPE  
         case EPIPE: return "EPIPE";  
 #endif  
 #ifdef EPROCLIM  
         case EPROCLIM: return "EPROCLIM";  
 #endif  
 #ifdef EPROCUNAVAIL  
         case EPROCUNAVAIL: return "EPROCUNAVAIL";  
 #endif  
 #ifdef EPROGMISMATCH  
         case EPROGMISMATCH: return "EPROGMISMATCH";  
 #endif  
 #ifdef EPROGUNAVAIL  
         case EPROGUNAVAIL: return "EPROGUNAVAIL";  
 #endif  
 #ifdef EPROTO  
         case EPROTO: return "EPROTO";  
 #endif  
 #ifdef EPROTONOSUPPORT  
         case EPROTONOSUPPORT: return "EPROTONOSUPPORT";  
 #endif  
 #ifdef EPROTOTYPE  
         case EPROTOTYPE: return "EPROTOTYPE";  
 #endif  
 #ifdef ERANGE  
         case ERANGE: return "ERANGE";  
 #endif  
 #if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED))  
         case EREFUSED: return "EREFUSED";  
 #endif  
 #ifdef EREMCHG  
         case EREMCHG: return "EREMCHG";  
 #endif  
 #ifdef EREMDEV  
         case EREMDEV: return "EREMDEV";  
 #endif  
 #ifdef EREMOTE  
         case EREMOTE: return "EREMOTE";  
 #endif  
 #ifdef EREMOTEIO  
         case EREMOTEIO: return "EREMOTEIO";  
 #endif  
 #ifdef EREMOTERELEASE  
         case EREMOTERELEASE: return "EREMOTERELEASE";  
 #endif  
 #ifdef EROFS  
         case EROFS: return "EROFS";  
 #endif  
 #ifdef ERPCMISMATCH  
         case ERPCMISMATCH: return "ERPCMISMATCH";  
 #endif  
 #ifdef ERREMOTE  
         case ERREMOTE: return "ERREMOTE";  
 #endif  
 #ifdef ESHUTDOWN  
         case ESHUTDOWN: return "ESHUTDOWN";  
 #endif  
 #ifdef ESOCKTNOSUPPORT  
         case ESOCKTNOSUPPORT: return "ESOCKTNOSUPPORT";  
 #endif  
 #ifdef ESPIPE  
         case ESPIPE: return "ESPIPE";  
 #endif  
 #ifdef ESRCH  
         case ESRCH: return "ESRCH";  
 #endif  
 #ifdef ESRMNT  
         case ESRMNT: return "ESRMNT";  
 #endif  
 #ifdef ESTALE  
         case ESTALE: return "ESTALE";  
 #endif  
 #ifdef ESUCCESS  
         case ESUCCESS: return "ESUCCESS";  
 #endif  
 #if defined(ETIME) && (!defined(ELOOP) || (ETIME != ELOOP))  
         case ETIME: return "ETIME";  
 #endif  
 #if defined(ETIMEDOUT) && (!defined(ENOSTR) || (ETIMEDOUT != ENOSTR))  
         case ETIMEDOUT: return "ETIMEDOUT";  
 #endif  
 #ifdef ETOOMANYREFS  
         case ETOOMANYREFS: return "ETOOMANYREFS";  
 #endif  
 #ifdef ETXTBSY  
         case ETXTBSY: return "ETXTBSY";  
 #endif  
 #ifdef EUCLEAN  
         case EUCLEAN: return "EUCLEAN";  
 #endif  
 #ifdef EUNATCH  
         case EUNATCH: return "EUNATCH";  
 #endif  
 #ifdef EUSERS  
         case EUSERS: return "EUSERS";  
 #endif  
 #ifdef EVERSION  
         case EVERSION: return "EVERSION";  
 #endif  
 #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN))  
         case EWOULDBLOCK: return "EWOULDBLOCK";  
 #endif  
 #ifdef EXDEV  
         case EXDEV: return "EXDEV";  
 #endif  
 #ifdef EXFULL  
         case EXFULL: return "EXFULL";  
 #endif  
     }  
     return "unknown error";  
 }  
   
 /*  
  *----------------------------------------------------------------------  
  *  
  * Tcl_ErrnoMsg --  
  *  
  *      Return a human-readable message corresponding to a given  
  *      errno value.  
  *  
  * Results:  
  *      The return value is the standard POSIX error message for  
  *      errno.  This procedure is used instead of strerror because  
  *      strerror returns slightly different values on different  
  *      machines (e.g. different capitalizations), which cause  
  *      problems for things such as regression tests.  This procedure  
  *      provides messages for most standard errors, then it calls  
  *      strerror for things it doesn't understand.  
  *  
  * Side effects:  
  *      None.  
  *  
  *----------------------------------------------------------------------  
  */  
   
 char *  
 Tcl_ErrnoMsg(err)  
     int err;                    /* Error number (such as in errno variable). */  
 {  
     switch (err) {  
 #ifdef E2BIG  
         case E2BIG: return "argument list too long";  
 #endif  
 #ifdef EACCES  
         case EACCES: return "permission denied";  
 #endif  
 #ifdef EADDRINUSE  
         case EADDRINUSE: return "address already in use";  
 #endif  
 #ifdef EADDRNOTAVAIL  
         case EADDRNOTAVAIL: return "can't assign requested address";  
 #endif  
 #ifdef EADV  
         case EADV: return "advertise error";  
 #endif  
 #ifdef EAFNOSUPPORT  
         case EAFNOSUPPORT: return "address family not supported by protocol family";  
 #endif  
 #ifdef EAGAIN  
         case EAGAIN: return "resource temporarily unavailable";  
 #endif  
 #ifdef EALIGN  
         case EALIGN: return "EALIGN";  
 #endif  
 #if defined(EALREADY) && (!defined(EBUSY) || (EALREADY != EBUSY ))  
         case EALREADY: return "operation already in progress";  
 #endif  
 #ifdef EBADE  
         case EBADE: return "bad exchange descriptor";  
 #endif  
 #ifdef EBADF  
         case EBADF: return "bad file number";  
 #endif  
 #ifdef EBADFD  
         case EBADFD: return "file descriptor in bad state";  
 #endif  
 #ifdef EBADMSG  
         case EBADMSG: return "not a data message";  
 #endif  
 #ifdef EBADR  
         case EBADR: return "bad request descriptor";  
 #endif  
 #ifdef EBADRPC  
         case EBADRPC: return "RPC structure is bad";  
 #endif  
 #ifdef EBADRQC  
         case EBADRQC: return "bad request code";  
 #endif  
 #ifdef EBADSLT  
         case EBADSLT: return "invalid slot";  
 #endif  
 #ifdef EBFONT  
         case EBFONT: return "bad font file format";  
 #endif  
 #ifdef EBUSY  
         case EBUSY: return "file busy";  
 #endif  
 #ifdef ECHILD  
         case ECHILD: return "no children";  
 #endif  
 #ifdef ECHRNG  
         case ECHRNG: return "channel number out of range";  
 #endif  
 #ifdef ECOMM  
         case ECOMM: return "communication error on send";  
 #endif  
 #ifdef ECONNABORTED  
         case ECONNABORTED: return "software caused connection abort";  
 #endif  
 #ifdef ECONNREFUSED  
         case ECONNREFUSED: return "connection refused";  
 #endif  
 #ifdef ECONNRESET  
         case ECONNRESET: return "connection reset by peer";  
 #endif  
 #if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK))  
         case EDEADLK: return "resource deadlock avoided";  
 #endif  
 #if defined(EDEADLOCK) && (!defined(EDEADLK) || (EDEADLOCK != EDEADLK))  
         case EDEADLOCK: return "resource deadlock avoided";  
 #endif  
 #ifdef EDESTADDRREQ  
         case EDESTADDRREQ: return "destination address required";  
 #endif  
 #ifdef EDIRTY  
         case EDIRTY: return "mounting a dirty fs w/o force";  
 #endif  
 #ifdef EDOM  
         case EDOM: return "math argument out of range";  
 #endif  
 #ifdef EDOTDOT  
         case EDOTDOT: return "cross mount point";  
 #endif  
 #ifdef EDQUOT  
         case EDQUOT: return "disk quota exceeded";  
 #endif  
 #ifdef EDUPPKG  
         case EDUPPKG: return "duplicate package name";  
 #endif  
 #ifdef EEXIST  
         case EEXIST: return "file already exists";  
 #endif  
 #ifdef EFAULT  
         case EFAULT: return "bad address in system call argument";  
 #endif  
 #ifdef EFBIG  
         case EFBIG: return "file too large";  
 #endif  
 #ifdef EHOSTDOWN  
         case EHOSTDOWN: return "host is down";  
 #endif  
 #ifdef EHOSTUNREACH  
         case EHOSTUNREACH: return "host is unreachable";  
 #endif  
 #if defined(EIDRM) && (!defined(EINPROGRESS) || (EIDRM != EINPROGRESS))  
         case EIDRM: return "identifier removed";  
 #endif  
 #ifdef EINIT  
         case EINIT: return "initialization error";  
 #endif  
 #ifdef EINPROGRESS  
         case EINPROGRESS: return "operation now in progress";  
 #endif  
 #ifdef EINTR  
         case EINTR: return "interrupted system call";  
 #endif  
 #ifdef EINVAL  
         case EINVAL: return "invalid argument";  
 #endif  
 #ifdef EIO  
         case EIO: return "I/O error";  
 #endif  
 #ifdef EISCONN  
         case EISCONN: return "socket is already connected";  
 #endif  
 #ifdef EISDIR  
         case EISDIR: return "illegal operation on a directory";  
 #endif  
 #ifdef EISNAME  
         case EISNAM: return "is a name file";  
 #endif  
 #ifdef ELBIN  
         case ELBIN: return "ELBIN";  
 #endif  
 #ifdef EL2HLT  
         case EL2HLT: return "level 2 halted";  
 #endif  
 #ifdef EL2NSYNC  
         case EL2NSYNC: return "level 2 not synchronized";  
 #endif  
 #ifdef EL3HLT  
         case EL3HLT: return "level 3 halted";  
 #endif  
 #ifdef EL3RST  
         case EL3RST: return "level 3 reset";  
 #endif  
 #ifdef ELIBACC  
         case ELIBACC: return "can not access a needed shared library";  
 #endif  
 #ifdef ELIBBAD  
         case ELIBBAD: return "accessing a corrupted shared library";  
 #endif  
 #ifdef ELIBEXEC  
         case ELIBEXEC: return "can not exec a shared library directly";  
 #endif  
 #ifdef ELIBMAX  
         case ELIBMAX: return  
                 "attempting to link in more shared libraries than system limit";  
 #endif  
 #ifdef ELIBSCN  
         case ELIBSCN: return ".lib section in a.out corrupted";  
 #endif  
 #ifdef ELNRNG  
         case ELNRNG: return "link number out of range";  
 #endif  
 #if defined(ELOOP) && (!defined(ENOENT) || (ELOOP != ENOENT))  
         case ELOOP: return "too many levels of symbolic links";  
 #endif  
 #ifdef EMFILE  
         case EMFILE: return "too many open files";  
 #endif  
 #ifdef EMLINK  
         case EMLINK: return "too many links";  
 #endif  
 #ifdef EMSGSIZE  
         case EMSGSIZE: return "message too long";  
 #endif  
 #ifdef EMULTIHOP  
         case EMULTIHOP: return "multihop attempted";  
 #endif  
 #ifdef ENAMETOOLONG  
         case ENAMETOOLONG: return "file name too long";  
 #endif  
 #ifdef ENAVAIL  
         case ENAVAIL: return "not available";  
 #endif  
 #ifdef ENET  
         case ENET: return "ENET";  
 #endif  
 #ifdef ENETDOWN  
         case ENETDOWN: return "network is down";  
 #endif  
 #ifdef ENETRESET  
         case ENETRESET: return "network dropped connection on reset";  
 #endif  
 #ifdef ENETUNREACH  
         case ENETUNREACH: return "network is unreachable";  
 #endif  
 #ifdef ENFILE  
         case ENFILE: return "file table overflow";  
 #endif  
 #ifdef ENOANO  
         case ENOANO: return "anode table overflow";  
 #endif  
 #if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR))  
         case ENOBUFS: return "no buffer space available";  
 #endif  
 #ifdef ENOCSI  
         case ENOCSI: return "no CSI structure available";  
 #endif  
 #if defined(ENODATA) && (!defined(ECONNREFUSED) || (ENODATA != ECONNREFUSED))  
         case ENODATA: return "no data available";  
 #endif  
 #ifdef ENODEV  
         case ENODEV: return "no such device";  
 #endif  
 #ifdef ENOENT  
         case ENOENT: return "no such file or directory";  
 #endif  
 #ifdef ENOEXEC  
         case ENOEXEC: return "exec format error";  
 #endif  
 #ifdef ENOLCK  
         case ENOLCK: return "no locks available";  
 #endif  
 #ifdef ENOLINK  
         case ENOLINK: return "link has be severed";  
 #endif  
 #ifdef ENOMEM  
         case ENOMEM: return "not enough memory";  
 #endif  
 #ifdef ENOMSG  
         case ENOMSG: return "no message of desired type";  
 #endif  
 #ifdef ENONET  
         case ENONET: return "machine is not on the network";  
 #endif  
 #ifdef ENOPKG  
         case ENOPKG: return "package not installed";  
 #endif  
 #ifdef ENOPROTOOPT  
         case ENOPROTOOPT: return "bad protocol option";  
 #endif  
 #ifdef ENOSPC  
         case ENOSPC: return "no space left on device";  
 #endif  
 #if defined(ENOSR) && (!defined(ENAMETOOLONG) || (ENAMETOOLONG != ENOSR))  
         case ENOSR: return "out of stream resources";  
 #endif  
 #if defined(ENOSTR) && (!defined(ENOTTY) || (ENOTTY != ENOSTR))  
         case ENOSTR: return "not a stream device";  
 #endif  
 #ifdef ENOSYM  
         case ENOSYM: return "unresolved symbol name";  
 #endif  
 #ifdef ENOSYS  
         case ENOSYS: return "function not implemented";  
 #endif  
 #ifdef ENOTBLK  
         case ENOTBLK: return "block device required";  
 #endif  
 #ifdef ENOTCONN  
         case ENOTCONN: return "socket is not connected";  
 #endif  
 #ifdef ENOTDIR  
         case ENOTDIR: return "not a directory";  
 #endif  
 #if defined(ENOTEMPTY) && (!defined(EEXIST) || (ENOTEMPTY != EEXIST))  
         case ENOTEMPTY: return "directory not empty";  
 #endif  
 #ifdef ENOTNAM  
         case ENOTNAM: return "not a name file";  
 #endif  
 #ifdef ENOTSOCK  
         case ENOTSOCK: return "socket operation on non-socket";  
 #endif  
 #ifdef ENOTSUP  
         case ENOTSUP: return "operation not supported";  
 #endif  
 #ifdef ENOTTY  
         case ENOTTY: return "inappropriate device for ioctl";  
 #endif  
 #ifdef ENOTUNIQ  
         case ENOTUNIQ: return "name not unique on network";  
 #endif  
 #ifdef ENXIO  
         case ENXIO: return "no such device or address";  
 #endif  
 #if defined(EOPNOTSUPP) &&  (!defined(ENOTSUP) || (ENOTSUP != EOPNOTSUPP))  
         case EOPNOTSUPP: return "operation not supported on socket";  
 #endif  
 #ifdef EPERM  
         case EPERM: return "not owner";  
 #endif  
 #if defined(EPFNOSUPPORT) && (!defined(ENOLCK) || (ENOLCK != EPFNOSUPPORT))  
         case EPFNOSUPPORT: return "protocol family not supported";  
 #endif  
 #ifdef EPIPE  
         case EPIPE: return "broken pipe";  
 #endif  
 #ifdef EPROCLIM  
         case EPROCLIM: return "too many processes";  
 #endif  
 #ifdef EPROCUNAVAIL  
         case EPROCUNAVAIL: return "bad procedure for program";  
 #endif  
 #ifdef EPROGMISMATCH  
         case EPROGMISMATCH: return "program version wrong";  
 #endif  
 #ifdef EPROGUNAVAIL  
         case EPROGUNAVAIL: return "RPC program not available";  
 #endif  
 #ifdef EPROTO  
         case EPROTO: return "protocol error";  
 #endif  
 #ifdef EPROTONOSUPPORT  
         case EPROTONOSUPPORT: return "protocol not suppored";  
 #endif  
 #ifdef EPROTOTYPE  
         case EPROTOTYPE: return "protocol wrong type for socket";  
 #endif  
 #ifdef ERANGE  
         case ERANGE: return "math result unrepresentable";  
 #endif  
 #if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED))  
         case EREFUSED: return "EREFUSED";  
 #endif  
 #ifdef EREMCHG  
         case EREMCHG: return "remote address changed";  
 #endif  
 #ifdef EREMDEV  
         case EREMDEV: return "remote device";  
 #endif  
 #ifdef EREMOTE  
         case EREMOTE: return "pathname hit remote file system";  
 #endif  
 #ifdef EREMOTEIO  
         case EREMOTEIO: return "remote i/o error";  
 #endif  
 #ifdef EREMOTERELEASE  
         case EREMOTERELEASE: return "EREMOTERELEASE";  
 #endif  
 #ifdef EROFS  
         case EROFS: return "read-only file system";  
 #endif  
 #ifdef ERPCMISMATCH  
         case ERPCMISMATCH: return "RPC version is wrong";  
 #endif  
 #ifdef ERREMOTE  
         case ERREMOTE: return "object is remote";  
 #endif  
 #ifdef ESHUTDOWN  
         case ESHUTDOWN: return "can't send afer socket shutdown";  
 #endif  
 #ifdef ESOCKTNOSUPPORT  
         case ESOCKTNOSUPPORT: return "socket type not supported";  
 #endif  
 #ifdef ESPIPE  
         case ESPIPE: return "invalid seek";  
 #endif  
 #ifdef ESRCH  
         case ESRCH: return "no such process";  
 #endif  
 #ifdef ESRMNT  
         case ESRMNT: return "srmount error";  
 #endif  
 #ifdef ESTALE  
         case ESTALE: return "stale remote file handle";  
 #endif  
 #ifdef ESUCCESS  
         case ESUCCESS: return "Error 0";  
 #endif  
 #if defined(ETIME) && (!defined(ELOOP) || (ETIME != ELOOP))  
         case ETIME: return "timer expired";  
 #endif  
 #if defined(ETIMEDOUT) && (!defined(ENOSTR) || (ETIMEDOUT != ENOSTR))  
         case ETIMEDOUT: return "connection timed out";  
 #endif  
 #ifdef ETOOMANYREFS  
         case ETOOMANYREFS: return "too many references: can't splice";  
 #endif  
 #ifdef ETXTBSY  
         case ETXTBSY: return "text file or pseudo-device busy";  
 #endif  
 #ifdef EUCLEAN  
         case EUCLEAN: return "structure needs cleaning";  
 #endif  
 #ifdef EUNATCH  
         case EUNATCH: return "protocol driver not attached";  
 #endif  
 #ifdef EUSERS  
         case EUSERS: return "too many users";  
 #endif  
 #ifdef EVERSION  
         case EVERSION: return "version mismatch";  
 #endif  
 #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN))  
         case EWOULDBLOCK: return "operation would block";  
 #endif  
 #ifdef EXDEV  
         case EXDEV: return "cross-domain link";  
 #endif  
 #ifdef EXFULL  
         case EXFULL: return "message tables full";  
 #endif  
         default:  
 #ifdef NO_STRERROR  
             return "unknown POSIX error";  
 #else  
             return strerror(errno);  
 #endif  
     }  
 }  
   
 /*  
  *----------------------------------------------------------------------  
  *  
  * Tcl_SignalId --  
  *  
  *      Return a textual identifier for a signal number.  
  *  
  * Results:  
  *      This procedure returns a machine-readable textual identifier  
  *      that corresponds to sig.  The identifier is the same as the  
  *      #define name in signal.h.  
  *  
  * Side effects:  
  *      None.  
  *  
  *----------------------------------------------------------------------  
  */  
   
 char *  
 Tcl_SignalId(sig)  
     int sig;                    /* Number of signal. */  
 {  
     switch (sig) {  
 #ifdef SIGABRT  
         case SIGABRT: return "SIGABRT";  
 #endif  
 #ifdef SIGALRM  
         case SIGALRM: return "SIGALRM";  
 #endif  
 #ifdef SIGBUS  
         case SIGBUS: return "SIGBUS";  
 #endif  
 #ifdef SIGCHLD  
         case SIGCHLD: return "SIGCHLD";  
 #endif  
 #if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD))  
         case SIGCLD: return "SIGCLD";  
 #endif  
 #ifdef SIGCONT  
         case SIGCONT: return "SIGCONT";  
 #endif  
 #if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU))  
         case SIGEMT: return "SIGEMT";  
 #endif  
 #ifdef SIGFPE  
         case SIGFPE: return "SIGFPE";  
 #endif  
 #ifdef SIGHUP  
         case SIGHUP: return "SIGHUP";  
 #endif  
 #ifdef SIGILL  
         case SIGILL: return "SIGILL";  
 #endif  
 #ifdef SIGINT  
         case SIGINT: return "SIGINT";  
 #endif  
 #ifdef SIGIO  
         case SIGIO: return "SIGIO";  
 #endif  
 #if defined(SIGIOT) && (!defined(SIGABRT) || (SIGIOT != SIGABRT))  
         case SIGIOT: return "SIGIOT";  
 #endif  
 #ifdef SIGKILL  
         case SIGKILL: return "SIGKILL";  
 #endif  
 #if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT)) && (!defined(SIGURG) || (SIGLOST != SIGURG)) && (!defined(SIGPROF) || (SIGLOST != SIGPROF)) && (!defined(SIGIO) || (SIGLOST != SIGIO))  
         case SIGLOST: return "SIGLOST";  
 #endif  
 #ifdef SIGPIPE  
         case SIGPIPE: return "SIGPIPE";  
 #endif  
 #if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO))  
         case SIGPOLL: return "SIGPOLL";  
 #endif  
 #ifdef SIGPROF  
         case SIGPROF: return "SIGPROF";  
 #endif  
 #if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ))  
         case SIGPWR: return "SIGPWR";  
 #endif  
 #ifdef SIGQUIT  
         case SIGQUIT: return "SIGQUIT";  
 #endif  
 #ifdef SIGSEGV  
         case SIGSEGV: return "SIGSEGV";  
 #endif  
 #ifdef SIGSTOP  
         case SIGSTOP: return "SIGSTOP";  
 #endif  
 #ifdef SIGSYS  
         case SIGSYS: return "SIGSYS";  
 #endif  
 #ifdef SIGTERM  
         case SIGTERM: return "SIGTERM";  
 #endif  
 #ifdef SIGTRAP  
         case SIGTRAP: return "SIGTRAP";  
 #endif  
 #ifdef SIGTSTP  
         case SIGTSTP: return "SIGTSTP";  
 #endif  
 #ifdef SIGTTIN  
         case SIGTTIN: return "SIGTTIN";  
 #endif  
 #ifdef SIGTTOU  
         case SIGTTOU: return "SIGTTOU";  
 #endif  
 #if defined(SIGURG) && (!defined(SIGIO) || (SIGURG != SIGIO))  
         case SIGURG: return "SIGURG";  
 #endif  
 #if defined(SIGUSR1) && (!defined(SIGIO) || (SIGUSR1 != SIGIO))  
         case SIGUSR1: return "SIGUSR1";  
 #endif  
 #if defined(SIGUSR2) && (!defined(SIGURG) || (SIGUSR2 != SIGURG))  
         case SIGUSR2: return "SIGUSR2";  
 #endif  
 #ifdef SIGVTALRM  
         case SIGVTALRM: return "SIGVTALRM";  
 #endif  
 #ifdef SIGWINCH  
         case SIGWINCH: return "SIGWINCH";  
 #endif  
 #ifdef SIGXCPU  
         case SIGXCPU: return "SIGXCPU";  
 #endif  
 #ifdef SIGXFSZ  
         case SIGXFSZ: return "SIGXFSZ";  
 #endif  
     }  
     return "unknown signal";  
 }  
   
 /*  
  *----------------------------------------------------------------------  
  *  
  * Tcl_SignalMsg --  
  *  
  *      Return a human-readable message describing a signal.  
  *  
  * Results:  
  *      This procedure returns a string describing sig that should  
  *      make sense to a human.  It may not be easy for a machine  
  *      to parse.  
  *  
  * Side effects:  
  *      None.  
  *  
  *----------------------------------------------------------------------  
  */  
   
 char *  
 Tcl_SignalMsg(sig)  
     int sig;                    /* Number of signal. */  
 {  
     switch (sig) {  
 #ifdef SIGABRT  
         case SIGABRT: return "SIGABRT";  
 #endif  
 #ifdef SIGALRM  
         case SIGALRM: return "alarm clock";  
 #endif  
 #ifdef SIGBUS  
         case SIGBUS: return "bus error";  
 #endif  
 #ifdef SIGCHLD  
         case SIGCHLD: return "child status changed";  
 #endif  
 #if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD))  
         case SIGCLD: return "child status changed";  
 #endif  
 #ifdef SIGCONT  
         case SIGCONT: return "continue after stop";  
 #endif  
 #if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU))  
         case SIGEMT: return "EMT instruction";  
 #endif  
 #ifdef SIGFPE  
         case SIGFPE: return "floating-point exception";  
 #endif  
 #ifdef SIGHUP  
         case SIGHUP: return "hangup";  
 #endif  
 #ifdef SIGILL  
         case SIGILL: return "illegal instruction";  
 #endif  
 #ifdef SIGINT  
         case SIGINT: return "interrupt";  
 #endif  
 #ifdef SIGIO  
         case SIGIO: return "input/output possible on file";  
 #endif  
 #if defined(SIGIOT) && (!defined(SIGABRT) || (SIGABRT != SIGIOT))  
         case SIGIOT: return "IOT instruction";  
 #endif  
 #ifdef SIGKILL  
         case SIGKILL: return "kill signal";  
 #endif  
 #if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT)) && (!defined(SIGURG) || (SIGLOST != SIGURG)) && (!defined(SIGPROF) || (SIGLOST != SIGPROF)) && (!defined(SIGIO) || (SIGLOST != SIGIO))  
         case SIGLOST: return "resource lost";  
 #endif  
 #ifdef SIGPIPE  
         case SIGPIPE: return "write on pipe with no readers";  
 #endif  
 #if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO))  
         case SIGPOLL: return "input/output possible on file";  
 #endif  
 #ifdef SIGPROF  
         case SIGPROF: return "profiling alarm";  
 #endif  
 #if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ))  
         case SIGPWR: return "power-fail restart";  
 #endif  
 #ifdef SIGQUIT  
         case SIGQUIT: return "quit signal";  
 #endif  
 #ifdef SIGSEGV  
         case SIGSEGV: return "segmentation violation";  
 #endif  
 #ifdef SIGSTOP  
         case SIGSTOP: return "stop";  
 #endif  
 #ifdef SIGSYS  
         case SIGSYS: return "bad argument to system call";  
 #endif  
 #ifdef SIGTERM  
         case SIGTERM: return "software termination signal";  
 #endif  
 #ifdef SIGTRAP  
         case SIGTRAP: return "trace trap";  
 #endif  
 #ifdef SIGTSTP  
         case SIGTSTP: return "stop signal from tty";  
 #endif  
 #ifdef SIGTTIN  
         case SIGTTIN: return "background tty read";  
 #endif  
 #ifdef SIGTTOU  
         case SIGTTOU: return "background tty write";  
 #endif  
 #if defined(SIGURG) && (!defined(SIGIO) || (SIGURG != SIGIO))  
         case SIGURG: return "urgent I/O condition";  
 #endif  
 #if defined(SIGUSR1) && (!defined(SIGIO) || (SIGUSR1 != SIGIO))  
         case SIGUSR1: return "user-defined signal 1";  
 #endif  
 #if defined(SIGUSR2) && (!defined(SIGURG) || (SIGUSR2 != SIGURG))  
         case SIGUSR2: return "user-defined signal 2";  
 #endif  
 #ifdef SIGVTALRM  
         case SIGVTALRM: return "virtual time alarm";  
 #endif  
 #ifdef SIGWINCH  
         case SIGWINCH: return "window changed";  
 #endif  
 #ifdef SIGXCPU  
         case SIGXCPU: return "exceeded CPU time limit";  
 #endif  
 #ifdef SIGXFSZ  
         case SIGXFSZ: return "exceeded file size limit";  
 #endif  
     }  
     return "unknown signal";  
 }  
   
   
 /* $History: tclposixstr.c $  
  *  
  * *****************  Version 1  *****************  
  * User: Dtashley     Date: 1/02/01    Time: 1:36a  
  * Created in $/IjuScripter, IjuConsole/Source/Tcl Base  
  * Initial check-in.  
  */  
   
 /* End of TCLPOSIXSTR.C */  
1    /* $Header$ */
2    /*
3     * tclPosixStr.c --
4     *
5     *      This file contains procedures that generate strings
6     *      corresponding to various POSIX-related codes, such
7     *      as errno and signals.
8     *
9     * Copyright (c) 1991-1994 The Regents of the University of California.
10     * Copyright (c) 1994-1996 Sun Microsystems, Inc.
11     *
12     * See the file "license.terms" for information on usage and redistribution
13     * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
14     *
15     * RCS: @(#) $Id: tclposixstr.c,v 1.1.1.1 2001/06/13 04:45:10 dtashley Exp $
16     */
17    
18    #include "tclInt.h"
19    #include "tclPort.h"
20    
21    /*
22     *----------------------------------------------------------------------
23     *
24     * Tcl_ErrnoId --
25     *
26     *      Return a textual identifier for the current errno value.
27     *
28     * Results:
29     *      This procedure returns a machine-readable textual identifier
30     *      that corresponds to the current errno value (e.g. "EPERM").
31     *      The identifier is the same as the #define name in errno.h.
32     *
33     * Side effects:
34     *      None.
35     *
36     *----------------------------------------------------------------------
37     */
38    
39    char *
40    Tcl_ErrnoId()
41    {
42        switch (errno) {
43    #ifdef E2BIG
44            case E2BIG: return "E2BIG";
45    #endif
46    #ifdef EACCES
47            case EACCES: return "EACCES";
48    #endif
49    #ifdef EADDRINUSE
50            case EADDRINUSE: return "EADDRINUSE";
51    #endif
52    #ifdef EADDRNOTAVAIL
53            case EADDRNOTAVAIL: return "EADDRNOTAVAIL";
54    #endif
55    #ifdef EADV
56            case EADV: return "EADV";
57    #endif
58    #ifdef EAFNOSUPPORT
59            case EAFNOSUPPORT: return "EAFNOSUPPORT";
60    #endif
61    #ifdef EAGAIN
62            case EAGAIN: return "EAGAIN";
63    #endif
64    #ifdef EALIGN
65            case EALIGN: return "EALIGN";
66    #endif
67    #if defined(EALREADY) && (!defined(EBUSY) || (EALREADY != EBUSY ))
68            case EALREADY: return "EALREADY";
69    #endif
70    #ifdef EBADE
71            case EBADE: return "EBADE";
72    #endif
73    #ifdef EBADF
74            case EBADF: return "EBADF";
75    #endif
76    #ifdef EBADFD
77            case EBADFD: return "EBADFD";
78    #endif
79    #ifdef EBADMSG
80            case EBADMSG: return "EBADMSG";
81    #endif
82    #ifdef EBADR
83            case EBADR: return "EBADR";
84    #endif
85    #ifdef EBADRPC
86            case EBADRPC: return "EBADRPC";
87    #endif
88    #ifdef EBADRQC
89            case EBADRQC: return "EBADRQC";
90    #endif
91    #ifdef EBADSLT
92            case EBADSLT: return "EBADSLT";
93    #endif
94    #ifdef EBFONT
95            case EBFONT: return "EBFONT";
96    #endif
97    #ifdef EBUSY
98            case EBUSY: return "EBUSY";
99    #endif
100    #ifdef ECHILD
101            case ECHILD: return "ECHILD";
102    #endif
103    #ifdef ECHRNG
104            case ECHRNG: return "ECHRNG";
105    #endif
106    #ifdef ECOMM
107            case ECOMM: return "ECOMM";
108    #endif
109    #ifdef ECONNABORTED
110            case ECONNABORTED: return "ECONNABORTED";
111    #endif
112    #ifdef ECONNREFUSED
113            case ECONNREFUSED: return "ECONNREFUSED";
114    #endif
115    #ifdef ECONNRESET
116            case ECONNRESET: return "ECONNRESET";
117    #endif
118    #if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK))
119            case EDEADLK: return "EDEADLK";
120    #endif
121    #if defined(EDEADLOCK) && (!defined(EDEADLK) || (EDEADLOCK != EDEADLK))
122            case EDEADLOCK: return "EDEADLOCK";
123    #endif
124    #ifdef EDESTADDRREQ
125            case EDESTADDRREQ: return "EDESTADDRREQ";
126    #endif
127    #ifdef EDIRTY
128            case EDIRTY: return "EDIRTY";
129    #endif
130    #ifdef EDOM
131            case EDOM: return "EDOM";
132    #endif
133    #ifdef EDOTDOT
134            case EDOTDOT: return "EDOTDOT";
135    #endif
136    #ifdef EDQUOT
137            case EDQUOT: return "EDQUOT";
138    #endif
139    #ifdef EDUPPKG
140            case EDUPPKG: return "EDUPPKG";
141    #endif
142    #ifdef EEXIST
143            case EEXIST: return "EEXIST";
144    #endif
145    #ifdef EFAULT
146            case EFAULT: return "EFAULT";
147    #endif
148    #ifdef EFBIG
149            case EFBIG: return "EFBIG";
150    #endif
151    #ifdef EHOSTDOWN
152            case EHOSTDOWN: return "EHOSTDOWN";
153    #endif
154    #ifdef EHOSTUNREACH
155            case EHOSTUNREACH: return "EHOSTUNREACH";
156    #endif
157    #if defined(EIDRM) && (!defined(EINPROGRESS) || (EIDRM != EINPROGRESS))
158            case EIDRM: return "EIDRM";
159    #endif
160    #ifdef EINIT
161            case EINIT: return "EINIT";
162    #endif
163    #ifdef EINPROGRESS
164            case EINPROGRESS: return "EINPROGRESS";
165    #endif
166    #ifdef EINTR
167            case EINTR: return "EINTR";
168    #endif
169    #ifdef EINVAL
170            case EINVAL: return "EINVAL";
171    #endif
172    #ifdef EIO
173            case EIO: return "EIO";
174    #endif
175    #ifdef EISCONN
176            case EISCONN: return "EISCONN";
177    #endif
178    #ifdef EISDIR
179            case EISDIR: return "EISDIR";
180    #endif
181    #ifdef EISNAME
182            case EISNAM: return "EISNAM";
183    #endif
184    #ifdef ELBIN
185            case ELBIN: return "ELBIN";
186    #endif
187    #ifdef EL2HLT
188            case EL2HLT: return "EL2HLT";
189    #endif
190    #ifdef EL2NSYNC
191            case EL2NSYNC: return "EL2NSYNC";
192    #endif
193    #ifdef EL3HLT
194            case EL3HLT: return "EL3HLT";
195    #endif
196    #ifdef EL3RST
197            case EL3RST: return "EL3RST";
198    #endif
199    #ifdef ELIBACC
200            case ELIBACC: return "ELIBACC";
201    #endif
202    #ifdef ELIBBAD
203            case ELIBBAD: return "ELIBBAD";
204    #endif
205    #ifdef ELIBEXEC
206            case ELIBEXEC: return "ELIBEXEC";
207    #endif
208    #ifdef ELIBMAX
209            case ELIBMAX: return "ELIBMAX";
210    #endif
211    #ifdef ELIBSCN
212            case ELIBSCN: return "ELIBSCN";
213    #endif
214    #ifdef ELNRNG
215            case ELNRNG: return "ELNRNG";
216    #endif
217    #if defined(ELOOP) && (!defined(ENOENT) || (ELOOP != ENOENT))
218            case ELOOP: return "ELOOP";
219    #endif
220    #ifdef EMFILE
221            case EMFILE: return "EMFILE";
222    #endif
223    #ifdef EMLINK
224            case EMLINK: return "EMLINK";
225    #endif
226    #ifdef EMSGSIZE
227            case EMSGSIZE: return "EMSGSIZE";
228    #endif
229    #ifdef EMULTIHOP
230            case EMULTIHOP: return "EMULTIHOP";
231    #endif
232    #ifdef ENAMETOOLONG
233            case ENAMETOOLONG: return "ENAMETOOLONG";
234    #endif
235    #ifdef ENAVAIL
236            case ENAVAIL: return "ENAVAIL";
237    #endif
238    #ifdef ENET
239            case ENET: return "ENET";
240    #endif
241    #ifdef ENETDOWN
242            case ENETDOWN: return "ENETDOWN";
243    #endif
244    #ifdef ENETRESET
245            case ENETRESET: return "ENETRESET";
246    #endif
247    #ifdef ENETUNREACH
248            case ENETUNREACH: return "ENETUNREACH";
249    #endif
250    #ifdef ENFILE
251            case ENFILE: return "ENFILE";
252    #endif
253    #ifdef ENOANO
254            case ENOANO: return "ENOANO";
255    #endif
256    #if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR))
257            case ENOBUFS: return "ENOBUFS";
258    #endif
259    #ifdef ENOCSI
260            case ENOCSI: return "ENOCSI";
261    #endif
262    #if defined(ENODATA) && (!defined(ECONNREFUSED) || (ENODATA != ECONNREFUSED))
263            case ENODATA: return "ENODATA";
264    #endif
265    #ifdef ENODEV
266            case ENODEV: return "ENODEV";
267    #endif
268    #ifdef ENOENT
269            case ENOENT: return "ENOENT";
270    #endif
271    #ifdef ENOEXEC
272            case ENOEXEC: return "ENOEXEC";
273    #endif
274    #ifdef ENOLCK
275            case ENOLCK: return "ENOLCK";
276    #endif
277    #ifdef ENOLINK
278            case ENOLINK: return "ENOLINK";
279    #endif
280    #ifdef ENOMEM
281            case ENOMEM: return "ENOMEM";
282    #endif
283    #ifdef ENOMSG
284            case ENOMSG: return "ENOMSG";
285    #endif
286    #ifdef ENONET
287            case ENONET: return "ENONET";
288    #endif
289    #ifdef ENOPKG
290            case ENOPKG: return "ENOPKG";
291    #endif
292    #ifdef ENOPROTOOPT
293            case ENOPROTOOPT: return "ENOPROTOOPT";
294    #endif
295    #ifdef ENOSPC
296            case ENOSPC: return "ENOSPC";
297    #endif
298    #if defined(ENOSR) && (!defined(ENAMETOOLONG) || (ENAMETOOLONG != ENOSR))
299            case ENOSR: return "ENOSR";
300    #endif
301    #if defined(ENOSTR) && (!defined(ENOTTY) || (ENOTTY != ENOSTR))
302            case ENOSTR: return "ENOSTR";
303    #endif
304    #ifdef ENOSYM
305            case ENOSYM: return "ENOSYM";
306    #endif
307    #ifdef ENOSYS
308            case ENOSYS: return "ENOSYS";
309    #endif
310    #ifdef ENOTBLK
311            case ENOTBLK: return "ENOTBLK";
312    #endif
313    #ifdef ENOTCONN
314            case ENOTCONN: return "ENOTCONN";
315    #endif
316    #ifdef ENOTDIR
317            case ENOTDIR: return "ENOTDIR";
318    #endif
319    #if defined(ENOTEMPTY) && (!defined(EEXIST) || (ENOTEMPTY != EEXIST))
320            case ENOTEMPTY: return "ENOTEMPTY";
321    #endif
322    #ifdef ENOTNAM
323            case ENOTNAM: return "ENOTNAM";
324    #endif
325    #ifdef ENOTSOCK
326            case ENOTSOCK: return "ENOTSOCK";
327    #endif
328    #ifdef ENOTSUP
329            case ENOTSUP: return "ENOTSUP";
330    #endif
331    #ifdef ENOTTY
332            case ENOTTY: return "ENOTTY";
333    #endif
334    #ifdef ENOTUNIQ
335            case ENOTUNIQ: return "ENOTUNIQ";
336    #endif
337    #ifdef ENXIO
338            case ENXIO: return "ENXIO";
339    #endif
340    #if defined(EOPNOTSUPP) &&  (!defined(ENOTSUP) || (ENOTSUP != EOPNOTSUPP))
341            case EOPNOTSUPP: return "EOPNOTSUPP";
342    #endif
343    #ifdef EPERM
344            case EPERM: return "EPERM";
345    #endif
346    #if defined(EPFNOSUPPORT) && (!defined(ENOLCK) || (ENOLCK != EPFNOSUPPORT))
347            case EPFNOSUPPORT: return "EPFNOSUPPORT";
348    #endif
349    #ifdef EPIPE
350            case EPIPE: return "EPIPE";
351    #endif
352    #ifdef EPROCLIM
353            case EPROCLIM: return "EPROCLIM";
354    #endif
355    #ifdef EPROCUNAVAIL
356            case EPROCUNAVAIL: return "EPROCUNAVAIL";
357    #endif
358    #ifdef EPROGMISMATCH
359            case EPROGMISMATCH: return "EPROGMISMATCH";
360    #endif
361    #ifdef EPROGUNAVAIL
362            case EPROGUNAVAIL: return "EPROGUNAVAIL";
363    #endif
364    #ifdef EPROTO
365            case EPROTO: return "EPROTO";
366    #endif
367    #ifdef EPROTONOSUPPORT
368            case EPROTONOSUPPORT: return "EPROTONOSUPPORT";
369    #endif
370    #ifdef EPROTOTYPE
371            case EPROTOTYPE: return "EPROTOTYPE";
372    #endif
373    #ifdef ERANGE
374            case ERANGE: return "ERANGE";
375    #endif
376    #if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED))
377            case EREFUSED: return "EREFUSED";
378    #endif
379    #ifdef EREMCHG
380            case EREMCHG: return "EREMCHG";
381    #endif
382    #ifdef EREMDEV
383            case EREMDEV: return "EREMDEV";
384    #endif
385    #ifdef EREMOTE
386            case EREMOTE: return "EREMOTE";
387    #endif
388    #ifdef EREMOTEIO
389            case EREMOTEIO: return "EREMOTEIO";
390    #endif
391    #ifdef EREMOTERELEASE
392            case EREMOTERELEASE: return "EREMOTERELEASE";
393    #endif
394    #ifdef EROFS
395            case EROFS: return "EROFS";
396    #endif
397    #ifdef ERPCMISMATCH
398            case ERPCMISMATCH: return "ERPCMISMATCH";
399    #endif
400    #ifdef ERREMOTE
401            case ERREMOTE: return "ERREMOTE";
402    #endif
403    #ifdef ESHUTDOWN
404            case ESHUTDOWN: return "ESHUTDOWN";
405    #endif
406    #ifdef ESOCKTNOSUPPORT
407            case ESOCKTNOSUPPORT: return "ESOCKTNOSUPPORT";
408    #endif
409    #ifdef ESPIPE
410            case ESPIPE: return "ESPIPE";
411    #endif
412    #ifdef ESRCH
413            case ESRCH: return "ESRCH";
414    #endif
415    #ifdef ESRMNT
416            case ESRMNT: return "ESRMNT";
417    #endif
418    #ifdef ESTALE
419            case ESTALE: return "ESTALE";
420    #endif
421    #ifdef ESUCCESS
422            case ESUCCESS: return "ESUCCESS";
423    #endif
424    #if defined(ETIME) && (!defined(ELOOP) || (ETIME != ELOOP))
425            case ETIME: return "ETIME";
426    #endif
427    #if defined(ETIMEDOUT) && (!defined(ENOSTR) || (ETIMEDOUT != ENOSTR))
428            case ETIMEDOUT: return "ETIMEDOUT";
429    #endif
430    #ifdef ETOOMANYREFS
431            case ETOOMANYREFS: return "ETOOMANYREFS";
432    #endif
433    #ifdef ETXTBSY
434            case ETXTBSY: return "ETXTBSY";
435    #endif
436    #ifdef EUCLEAN
437            case EUCLEAN: return "EUCLEAN";
438    #endif
439    #ifdef EUNATCH
440            case EUNATCH: return "EUNATCH";
441    #endif
442    #ifdef EUSERS
443            case EUSERS: return "EUSERS";
444    #endif
445    #ifdef EVERSION
446            case EVERSION: return "EVERSION";
447    #endif
448    #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN))
449            case EWOULDBLOCK: return "EWOULDBLOCK";
450    #endif
451    #ifdef EXDEV
452            case EXDEV: return "EXDEV";
453    #endif
454    #ifdef EXFULL
455            case EXFULL: return "EXFULL";
456    #endif
457        }
458        return "unknown error";
459    }
460    
461    /*
462     *----------------------------------------------------------------------
463     *
464     * Tcl_ErrnoMsg --
465     *
466     *      Return a human-readable message corresponding to a given
467     *      errno value.
468     *
469     * Results:
470     *      The return value is the standard POSIX error message for
471     *      errno.  This procedure is used instead of strerror because
472     *      strerror returns slightly different values on different
473     *      machines (e.g. different capitalizations), which cause
474     *      problems for things such as regression tests.  This procedure
475     *      provides messages for most standard errors, then it calls
476     *      strerror for things it doesn't understand.
477     *
478     * Side effects:
479     *      None.
480     *
481     *----------------------------------------------------------------------
482     */
483    
484    char *
485    Tcl_ErrnoMsg(err)
486        int err;                    /* Error number (such as in errno variable). */
487    {
488        switch (err) {
489    #ifdef E2BIG
490            case E2BIG: return "argument list too long";
491    #endif
492    #ifdef EACCES
493            case EACCES: return "permission denied";
494    #endif
495    #ifdef EADDRINUSE
496            case EADDRINUSE: return "address already in use";
497    #endif
498    #ifdef EADDRNOTAVAIL
499            case EADDRNOTAVAIL: return "can't assign requested address";
500    #endif
501    #ifdef EADV
502            case EADV: return "advertise error";
503    #endif
504    #ifdef EAFNOSUPPORT
505            case EAFNOSUPPORT: return "address family not supported by protocol family";
506    #endif
507    #ifdef EAGAIN
508            case EAGAIN: return "resource temporarily unavailable";
509    #endif
510    #ifdef EALIGN
511            case EALIGN: return "EALIGN";
512    #endif
513    #if defined(EALREADY) && (!defined(EBUSY) || (EALREADY != EBUSY ))
514            case EALREADY: return "operation already in progress";
515    #endif
516    #ifdef EBADE
517            case EBADE: return "bad exchange descriptor";
518    #endif
519    #ifdef EBADF
520            case EBADF: return "bad file number";
521    #endif
522    #ifdef EBADFD
523            case EBADFD: return "file descriptor in bad state";
524    #endif
525    #ifdef EBADMSG
526            case EBADMSG: return "not a data message";
527    #endif
528    #ifdef EBADR
529            case EBADR: return "bad request descriptor";
530    #endif
531    #ifdef EBADRPC
532            case EBADRPC: return "RPC structure is bad";
533    #endif
534    #ifdef EBADRQC
535            case EBADRQC: return "bad request code";
536    #endif
537    #ifdef EBADSLT
538            case EBADSLT: return "invalid slot";
539    #endif
540    #ifdef EBFONT
541            case EBFONT: return "bad font file format";
542    #endif
543    #ifdef EBUSY
544            case EBUSY: return "file busy";
545    #endif
546    #ifdef ECHILD
547            case ECHILD: return "no children";
548    #endif
549    #ifdef ECHRNG
550            case ECHRNG: return "channel number out of range";
551    #endif
552    #ifdef ECOMM
553            case ECOMM: return "communication error on send";
554    #endif
555    #ifdef ECONNABORTED
556            case ECONNABORTED: return "software caused connection abort";
557    #endif
558    #ifdef ECONNREFUSED
559            case ECONNREFUSED: return "connection refused";
560    #endif
561    #ifdef ECONNRESET
562            case ECONNRESET: return "connection reset by peer";
563    #endif
564    #if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK))
565            case EDEADLK: return "resource deadlock avoided";
566    #endif
567    #if defined(EDEADLOCK) && (!defined(EDEADLK) || (EDEADLOCK != EDEADLK))
568            case EDEADLOCK: return "resource deadlock avoided";
569    #endif
570    #ifdef EDESTADDRREQ
571            case EDESTADDRREQ: return "destination address required";
572    #endif
573    #ifdef EDIRTY
574            case EDIRTY: return "mounting a dirty fs w/o force";
575    #endif
576    #ifdef EDOM
577            case EDOM: return "math argument out of range";
578    #endif
579    #ifdef EDOTDOT
580            case EDOTDOT: return "cross mount point";
581    #endif
582    #ifdef EDQUOT
583            case EDQUOT: return "disk quota exceeded";
584    #endif
585    #ifdef EDUPPKG
586            case EDUPPKG: return "duplicate package name";
587    #endif
588    #ifdef EEXIST
589            case EEXIST: return "file already exists";
590    #endif
591    #ifdef EFAULT
592            case EFAULT: return "bad address in system call argument";
593    #endif
594    #ifdef EFBIG
595            case EFBIG: return "file too large";
596    #endif
597    #ifdef EHOSTDOWN
598            case EHOSTDOWN: return "host is down";
599    #endif
600    #ifdef EHOSTUNREACH
601            case EHOSTUNREACH: return "host is unreachable";
602    #endif
603    #if defined(EIDRM) && (!defined(EINPROGRESS) || (EIDRM != EINPROGRESS))
604            case EIDRM: return "identifier removed";
605    #endif
606    #ifdef EINIT
607            case EINIT: return "initialization error";
608    #endif
609    #ifdef EINPROGRESS
610            case EINPROGRESS: return "operation now in progress";
611    #endif
612    #ifdef EINTR
613            case EINTR: return "interrupted system call";
614    #endif
615    #ifdef EINVAL
616            case EINVAL: return "invalid argument";
617    #endif
618    #ifdef EIO
619            case EIO: return "I/O error";
620    #endif
621    #ifdef EISCONN
622            case EISCONN: return "socket is already connected";
623    #endif
624    #ifdef EISDIR
625            case EISDIR: return "illegal operation on a directory";
626    #endif
627    #ifdef EISNAME
628            case EISNAM: return "is a name file";
629    #endif
630    #ifdef ELBIN
631            case ELBIN: return "ELBIN";
632    #endif
633    #ifdef EL2HLT
634            case EL2HLT: return "level 2 halted";
635    #endif
636    #ifdef EL2NSYNC
637            case EL2NSYNC: return "level 2 not synchronized";
638    #endif
639    #ifdef EL3HLT
640            case EL3HLT: return "level 3 halted";
641    #endif
642    #ifdef EL3RST
643            case EL3RST: return "level 3 reset";
644    #endif
645    #ifdef ELIBACC
646            case ELIBACC: return "can not access a needed shared library";
647    #endif
648    #ifdef ELIBBAD
649            case ELIBBAD: return "accessing a corrupted shared library";
650    #endif
651    #ifdef ELIBEXEC
652            case ELIBEXEC: return "can not exec a shared library directly";
653    #endif
654    #ifdef ELIBMAX
655            case ELIBMAX: return
656                    "attempting to link in more shared libraries than system limit";
657    #endif
658    #ifdef ELIBSCN
659            case ELIBSCN: return ".lib section in a.out corrupted";
660    #endif
661    #ifdef ELNRNG
662            case ELNRNG: return "link number out of range";
663    #endif
664    #if defined(ELOOP) && (!defined(ENOENT) || (ELOOP != ENOENT))
665            case ELOOP: return "too many levels of symbolic links";
666    #endif
667    #ifdef EMFILE
668            case EMFILE: return "too many open files";
669    #endif
670    #ifdef EMLINK
671            case EMLINK: return "too many links";
672    #endif
673    #ifdef EMSGSIZE
674            case EMSGSIZE: return "message too long";
675    #endif
676    #ifdef EMULTIHOP
677            case EMULTIHOP: return "multihop attempted";
678    #endif
679    #ifdef ENAMETOOLONG
680            case ENAMETOOLONG: return "file name too long";
681    #endif
682    #ifdef ENAVAIL
683            case ENAVAIL: return "not available";
684    #endif
685    #ifdef ENET
686            case ENET: return "ENET";
687    #endif
688    #ifdef ENETDOWN
689            case ENETDOWN: return "network is down";
690    #endif
691    #ifdef ENETRESET
692            case ENETRESET: return "network dropped connection on reset";
693    #endif
694    #ifdef ENETUNREACH
695            case ENETUNREACH: return "network is unreachable";
696    #endif
697    #ifdef ENFILE
698            case ENFILE: return "file table overflow";
699    #endif
700    #ifdef ENOANO
701            case ENOANO: return "anode table overflow";
702    #endif
703    #if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR))
704            case ENOBUFS: return "no buffer space available";
705    #endif
706    #ifdef ENOCSI
707            case ENOCSI: return "no CSI structure available";
708    #endif
709    #if defined(ENODATA) && (!defined(ECONNREFUSED) || (ENODATA != ECONNREFUSED))
710            case ENODATA: return "no data available";
711    #endif
712    #ifdef ENODEV
713            case ENODEV: return "no such device";
714    #endif
715    #ifdef ENOENT
716            case ENOENT: return "no such file or directory";
717    #endif
718    #ifdef ENOEXEC
719            case ENOEXEC: return "exec format error";
720    #endif
721    #ifdef ENOLCK
722            case ENOLCK: return "no locks available";
723    #endif
724    #ifdef ENOLINK
725            case ENOLINK: return "link has be severed";
726    #endif
727    #ifdef ENOMEM
728            case ENOMEM: return "not enough memory";
729    #endif
730    #ifdef ENOMSG
731            case ENOMSG: return "no message of desired type";
732    #endif
733    #ifdef ENONET
734            case ENONET: return "machine is not on the network";
735    #endif
736    #ifdef ENOPKG
737            case ENOPKG: return "package not installed";
738    #endif
739    #ifdef ENOPROTOOPT
740            case ENOPROTOOPT: return "bad protocol option";
741    #endif
742    #ifdef ENOSPC
743            case ENOSPC: return "no space left on device";
744    #endif
745    #if defined(ENOSR) && (!defined(ENAMETOOLONG) || (ENAMETOOLONG != ENOSR))
746            case ENOSR: return "out of stream resources";
747    #endif
748    #if defined(ENOSTR) && (!defined(ENOTTY) || (ENOTTY != ENOSTR))
749            case ENOSTR: return "not a stream device";
750    #endif
751    #ifdef ENOSYM
752            case ENOSYM: return "unresolved symbol name";
753    #endif
754    #ifdef ENOSYS
755            case ENOSYS: return "function not implemented";
756    #endif
757    #ifdef ENOTBLK
758            case ENOTBLK: return "block device required";
759    #endif
760    #ifdef ENOTCONN
761            case ENOTCONN: return "socket is not connected";
762    #endif
763    #ifdef ENOTDIR
764            case ENOTDIR: return "not a directory";
765    #endif
766    #if defined(ENOTEMPTY) && (!defined(EEXIST) || (ENOTEMPTY != EEXIST))
767            case ENOTEMPTY: return "directory not empty";
768    #endif
769    #ifdef ENOTNAM
770            case ENOTNAM: return "not a name file";
771    #endif
772    #ifdef ENOTSOCK
773            case ENOTSOCK: return "socket operation on non-socket";
774    #endif
775    #ifdef ENOTSUP
776            case ENOTSUP: return "operation not supported";
777    #endif
778    #ifdef ENOTTY
779            case ENOTTY: return "inappropriate device for ioctl";
780    #endif
781    #ifdef ENOTUNIQ
782            case ENOTUNIQ: return "name not unique on network";
783    #endif
784    #ifdef ENXIO
785            case ENXIO: return "no such device or address";
786    #endif
787    #if defined(EOPNOTSUPP) &&  (!defined(ENOTSUP) || (ENOTSUP != EOPNOTSUPP))
788            case EOPNOTSUPP: return "operation not supported on socket";
789    #endif
790    #ifdef EPERM
791            case EPERM: return "not owner";
792    #endif
793    #if defined(EPFNOSUPPORT) && (!defined(ENOLCK) || (ENOLCK != EPFNOSUPPORT))
794            case EPFNOSUPPORT: return "protocol family not supported";
795    #endif
796    #ifdef EPIPE
797            case EPIPE: return "broken pipe";
798    #endif
799    #ifdef EPROCLIM
800            case EPROCLIM: return "too many processes";
801    #endif
802    #ifdef EPROCUNAVAIL
803            case EPROCUNAVAIL: return "bad procedure for program";
804    #endif
805    #ifdef EPROGMISMATCH
806            case EPROGMISMATCH: return "program version wrong";
807    #endif
808    #ifdef EPROGUNAVAIL
809            case EPROGUNAVAIL: return "RPC program not available";
810    #endif
811    #ifdef EPROTO
812            case EPROTO: return "protocol error";
813    #endif
814    #ifdef EPROTONOSUPPORT
815            case EPROTONOSUPPORT: return "protocol not suppored";
816    #endif
817    #ifdef EPROTOTYPE
818            case EPROTOTYPE: return "protocol wrong type for socket";
819    #endif
820    #ifdef ERANGE
821            case ERANGE: return "math result unrepresentable";
822    #endif
823    #if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED))
824            case EREFUSED: return "EREFUSED";
825    #endif
826    #ifdef EREMCHG
827            case EREMCHG: return "remote address changed";
828    #endif
829    #ifdef EREMDEV
830            case EREMDEV: return "remote device";
831    #endif
832    #ifdef EREMOTE
833            case EREMOTE: return "pathname hit remote file system";
834    #endif
835    #ifdef EREMOTEIO
836            case EREMOTEIO: return "remote i/o error";
837    #endif
838    #ifdef EREMOTERELEASE
839            case EREMOTERELEASE: return "EREMOTERELEASE";
840    #endif
841    #ifdef EROFS
842            case EROFS: return "read-only file system";
843    #endif
844    #ifdef ERPCMISMATCH
845            case ERPCMISMATCH: return "RPC version is wrong";
846    #endif
847    #ifdef ERREMOTE
848            case ERREMOTE: return "object is remote";
849    #endif
850    #ifdef ESHUTDOWN
851            case ESHUTDOWN: return "can't send afer socket shutdown";
852    #endif
853    #ifdef ESOCKTNOSUPPORT
854            case ESOCKTNOSUPPORT: return "socket type not supported";
855    #endif
856    #ifdef ESPIPE
857            case ESPIPE: return "invalid seek";
858    #endif
859    #ifdef ESRCH
860            case ESRCH: return "no such process";
861    #endif
862    #ifdef ESRMNT
863            case ESRMNT: return "srmount error";
864    #endif
865    #ifdef ESTALE
866            case ESTALE: return "stale remote file handle";
867    #endif
868    #ifdef ESUCCESS
869            case ESUCCESS: return "Error 0";
870    #endif
871    #if defined(ETIME) && (!defined(ELOOP) || (ETIME != ELOOP))
872            case ETIME: return "timer expired";
873    #endif
874    #if defined(ETIMEDOUT) && (!defined(ENOSTR) || (ETIMEDOUT != ENOSTR))
875            case ETIMEDOUT: return "connection timed out";
876    #endif
877    #ifdef ETOOMANYREFS
878            case ETOOMANYREFS: return "too many references: can't splice";
879    #endif
880    #ifdef ETXTBSY
881            case ETXTBSY: return "text file or pseudo-device busy";
882    #endif
883    #ifdef EUCLEAN
884            case EUCLEAN: return "structure needs cleaning";
885    #endif
886    #ifdef EUNATCH
887            case EUNATCH: return "protocol driver not attached";
888    #endif
889    #ifdef EUSERS
890            case EUSERS: return "too many users";
891    #endif
892    #ifdef EVERSION
893            case EVERSION: return "version mismatch";
894    #endif
895    #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN))
896            case EWOULDBLOCK: return "operation would block";
897    #endif
898    #ifdef EXDEV
899            case EXDEV: return "cross-domain link";
900    #endif
901    #ifdef EXFULL
902            case EXFULL: return "message tables full";
903    #endif
904            default:
905    #ifdef NO_STRERROR
906                return "unknown POSIX error";
907    #else
908                return strerror(errno);
909    #endif
910        }
911    }
912    
913    /*
914     *----------------------------------------------------------------------
915     *
916     * Tcl_SignalId --
917     *
918     *      Return a textual identifier for a signal number.
919     *
920     * Results:
921     *      This procedure returns a machine-readable textual identifier
922     *      that corresponds to sig.  The identifier is the same as the
923     *      #define name in signal.h.
924     *
925     * Side effects:
926     *      None.
927     *
928     *----------------------------------------------------------------------
929     */
930    
931    char *
932    Tcl_SignalId(sig)
933        int sig;                    /* Number of signal. */
934    {
935        switch (sig) {
936    #ifdef SIGABRT
937            case SIGABRT: return "SIGABRT";
938    #endif
939    #ifdef SIGALRM
940            case SIGALRM: return "SIGALRM";
941    #endif
942    #ifdef SIGBUS
943            case SIGBUS: return "SIGBUS";
944    #endif
945    #ifdef SIGCHLD
946            case SIGCHLD: return "SIGCHLD";
947    #endif
948    #if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD))
949            case SIGCLD: return "SIGCLD";
950    #endif
951    #ifdef SIGCONT
952            case SIGCONT: return "SIGCONT";
953    #endif
954    #if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU))
955            case SIGEMT: return "SIGEMT";
956    #endif
957    #ifdef SIGFPE
958            case SIGFPE: return "SIGFPE";
959    #endif
960    #ifdef SIGHUP
961            case SIGHUP: return "SIGHUP";
962    #endif
963    #ifdef SIGILL
964            case SIGILL: return "SIGILL";
965    #endif
966    #ifdef SIGINT
967            case SIGINT: return "SIGINT";
968    #endif
969    #ifdef SIGIO
970            case SIGIO: return "SIGIO";
971    #endif
972    #if defined(SIGIOT) && (!defined(SIGABRT) || (SIGIOT != SIGABRT))
973            case SIGIOT: return "SIGIOT";
974    #endif
975    #ifdef SIGKILL
976            case SIGKILL: return "SIGKILL";
977    #endif
978    #if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT)) && (!defined(SIGURG) || (SIGLOST != SIGURG)) && (!defined(SIGPROF) || (SIGLOST != SIGPROF)) && (!defined(SIGIO) || (SIGLOST != SIGIO))
979            case SIGLOST: return "SIGLOST";
980    #endif
981    #ifdef SIGPIPE
982            case SIGPIPE: return "SIGPIPE";
983    #endif
984    #if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO))
985            case SIGPOLL: return "SIGPOLL";
986    #endif
987    #ifdef SIGPROF
988            case SIGPROF: return "SIGPROF";
989    #endif
990    #if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ))
991            case SIGPWR: return "SIGPWR";
992    #endif
993    #ifdef SIGQUIT
994            case SIGQUIT: return "SIGQUIT";
995    #endif
996    #ifdef SIGSEGV
997            case SIGSEGV: return "SIGSEGV";
998    #endif
999    #ifdef SIGSTOP
1000            case SIGSTOP: return "SIGSTOP";
1001    #endif
1002    #ifdef SIGSYS
1003            case SIGSYS: return "SIGSYS";
1004    #endif
1005    #ifdef SIGTERM
1006            case SIGTERM: return "SIGTERM";
1007    #endif
1008    #ifdef SIGTRAP
1009            case SIGTRAP: return "SIGTRAP";
1010    #endif
1011    #ifdef SIGTSTP
1012            case SIGTSTP: return "SIGTSTP";
1013    #endif
1014    #ifdef SIGTTIN
1015            case SIGTTIN: return "SIGTTIN";
1016    #endif
1017    #ifdef SIGTTOU
1018            case SIGTTOU: return "SIGTTOU";
1019    #endif
1020    #if defined(SIGURG) && (!defined(SIGIO) || (SIGURG != SIGIO))
1021            case SIGURG: return "SIGURG";
1022    #endif
1023    #if defined(SIGUSR1) && (!defined(SIGIO) || (SIGUSR1 != SIGIO))
1024            case SIGUSR1: return "SIGUSR1";
1025    #endif
1026    #if defined(SIGUSR2) && (!defined(SIGURG) || (SIGUSR2 != SIGURG))
1027            case SIGUSR2: return "SIGUSR2";
1028    #endif
1029    #ifdef SIGVTALRM
1030            case SIGVTALRM: return "SIGVTALRM";
1031    #endif
1032    #ifdef SIGWINCH
1033            case SIGWINCH: return "SIGWINCH";
1034    #endif
1035    #ifdef SIGXCPU
1036            case SIGXCPU: return "SIGXCPU";
1037    #endif
1038    #ifdef SIGXFSZ
1039            case SIGXFSZ: return "SIGXFSZ";
1040    #endif
1041        }
1042        return "unknown signal";
1043    }
1044    
1045    /*
1046     *----------------------------------------------------------------------
1047     *
1048     * Tcl_SignalMsg --
1049     *
1050     *      Return a human-readable message describing a signal.
1051     *
1052     * Results:
1053     *      This procedure returns a string describing sig that should
1054     *      make sense to a human.  It may not be easy for a machine
1055     *      to parse.
1056     *
1057     * Side effects:
1058     *      None.
1059     *
1060     *----------------------------------------------------------------------
1061     */
1062    
1063    char *
1064    Tcl_SignalMsg(sig)
1065        int sig;                    /* Number of signal. */
1066    {
1067        switch (sig) {
1068    #ifdef SIGABRT
1069            case SIGABRT: return "SIGABRT";
1070    #endif
1071    #ifdef SIGALRM
1072            case SIGALRM: return "alarm clock";
1073    #endif
1074    #ifdef SIGBUS
1075            case SIGBUS: return "bus error";
1076    #endif
1077    #ifdef SIGCHLD
1078            case SIGCHLD: return "child status changed";
1079    #endif
1080    #if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD))
1081            case SIGCLD: return "child status changed";
1082    #endif
1083    #ifdef SIGCONT
1084            case SIGCONT: return "continue after stop";
1085    #endif
1086    #if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU))
1087            case SIGEMT: return "EMT instruction";
1088    #endif
1089    #ifdef SIGFPE
1090            case SIGFPE: return "floating-point exception";
1091    #endif
1092    #ifdef SIGHUP
1093            case SIGHUP: return "hangup";
1094    #endif
1095    #ifdef SIGILL
1096            case SIGILL: return "illegal instruction";
1097    #endif
1098    #ifdef SIGINT
1099            case SIGINT: return "interrupt";
1100    #endif
1101    #ifdef SIGIO
1102            case SIGIO: return "input/output possible on file";
1103    #endif
1104    #if defined(SIGIOT) && (!defined(SIGABRT) || (SIGABRT != SIGIOT))
1105            case SIGIOT: return "IOT instruction";
1106    #endif
1107    #ifdef SIGKILL
1108            case SIGKILL: return "kill signal";
1109    #endif
1110    #if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT)) && (!defined(SIGURG) || (SIGLOST != SIGURG)) && (!defined(SIGPROF) || (SIGLOST != SIGPROF)) && (!defined(SIGIO) || (SIGLOST != SIGIO))
1111            case SIGLOST: return "resource lost";
1112    #endif
1113    #ifdef SIGPIPE
1114            case SIGPIPE: return "write on pipe with no readers";
1115    #endif
1116    #if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO))
1117            case SIGPOLL: return "input/output possible on file";
1118    #endif
1119    #ifdef SIGPROF
1120            case SIGPROF: return "profiling alarm";
1121    #endif
1122    #if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ))
1123            case SIGPWR: return "power-fail restart";
1124    #endif
1125    #ifdef SIGQUIT
1126            case SIGQUIT: return "quit signal";
1127    #endif
1128    #ifdef SIGSEGV
1129            case SIGSEGV: return "segmentation violation";
1130    #endif
1131    #ifdef SIGSTOP
1132            case SIGSTOP: return "stop";
1133    #endif
1134    #ifdef SIGSYS
1135            case SIGSYS: return "bad argument to system call";
1136    #endif
1137    #ifdef SIGTERM
1138            case SIGTERM: return "software termination signal";
1139    #endif
1140    #ifdef SIGTRAP
1141            case SIGTRAP: return "trace trap";
1142    #endif
1143    #ifdef SIGTSTP
1144            case SIGTSTP: return "stop signal from tty";
1145    #endif
1146    #ifdef SIGTTIN
1147            case SIGTTIN: return "background tty read";
1148    #endif
1149    #ifdef SIGTTOU
1150            case SIGTTOU: return "background tty write";
1151    #endif
1152    #if defined(SIGURG) && (!defined(SIGIO) || (SIGURG != SIGIO))
1153            case SIGURG: return "urgent I/O condition";
1154    #endif
1155    #if defined(SIGUSR1) && (!defined(SIGIO) || (SIGUSR1 != SIGIO))
1156            case SIGUSR1: return "user-defined signal 1";
1157    #endif
1158    #if defined(SIGUSR2) && (!defined(SIGURG) || (SIGUSR2 != SIGURG))
1159            case SIGUSR2: return "user-defined signal 2";
1160    #endif
1161    #ifdef SIGVTALRM
1162            case SIGVTALRM: return "virtual time alarm";
1163    #endif
1164    #ifdef SIGWINCH
1165            case SIGWINCH: return "window changed";
1166    #endif
1167    #ifdef SIGXCPU
1168            case SIGXCPU: return "exceeded CPU time limit";
1169    #endif
1170    #ifdef SIGXFSZ
1171            case SIGXFSZ: return "exceeded file size limit";
1172    #endif
1173        }
1174        return "unknown signal";
1175    }
1176    
1177    /* End of tclposixstr.c */

Legend:
Removed from v.42  
changed lines
  Added in v.71

dashley@gmail.com
ViewVC Help
Powered by ViewVC 1.1.25