os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/generic/tclPosixStr.c
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/generic/tclPosixStr.c	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,1181 @@
     1.4 +/* 
     1.5 + * tclPosixStr.c --
     1.6 + *
     1.7 + *	This file contains procedures that generate strings
     1.8 + *	corresponding to various POSIX-related codes, such
     1.9 + *	as errno and signals.
    1.10 + *
    1.11 + * Copyright (c) 1991-1994 The Regents of the University of California.
    1.12 + * Copyright (c) 1994-1996 Sun Microsystems, Inc.
    1.13 + * Portions Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiaries. All rights reserved.  
    1.14 + *
    1.15 + * See the file "license.terms" for information on usage and redistribution
    1.16 + * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
    1.17 + *
    1.18 + * RCS: @(#) $Id: tclPosixStr.c,v 1.9 2002/05/27 10:14:21 dkf Exp $
    1.19 + */
    1.20 +
    1.21 +#include "tclInt.h"
    1.22 +#include "tclPort.h"
    1.23 +
    1.24 +/*
    1.25 + *----------------------------------------------------------------------
    1.26 + *
    1.27 + * Tcl_ErrnoId --
    1.28 + *
    1.29 + *	Return a textual identifier for the current errno value.
    1.30 + *
    1.31 + * Results:
    1.32 + *	This procedure returns a machine-readable textual identifier
    1.33 + *	that corresponds to the current errno value (e.g. "EPERM").
    1.34 + *	The identifier is the same as the #define name in errno.h.
    1.35 + *
    1.36 + * Side effects:
    1.37 + *	None.
    1.38 + *
    1.39 + *----------------------------------------------------------------------
    1.40 + */
    1.41 +
    1.42 +EXPORT_C CONST char *
    1.43 +Tcl_ErrnoId()
    1.44 +{
    1.45 +    switch (errno) {
    1.46 +#ifdef E2BIG
    1.47 +	case E2BIG: return "E2BIG";
    1.48 +#endif
    1.49 +#ifdef EACCES
    1.50 +	case EACCES: return "EACCES";
    1.51 +#endif
    1.52 +#ifdef EADDRINUSE
    1.53 +	case EADDRINUSE: return "EADDRINUSE";
    1.54 +#endif
    1.55 +#ifdef EADDRNOTAVAIL
    1.56 +	case EADDRNOTAVAIL: return "EADDRNOTAVAIL";
    1.57 +#endif
    1.58 +#ifdef EADV
    1.59 +	case EADV: return "EADV";
    1.60 +#endif
    1.61 +#ifdef EAFNOSUPPORT
    1.62 +	case EAFNOSUPPORT: return "EAFNOSUPPORT";
    1.63 +#endif
    1.64 +#ifdef EAGAIN
    1.65 +	case EAGAIN: return "EAGAIN";
    1.66 +#endif
    1.67 +#ifdef EALIGN
    1.68 +	case EALIGN: return "EALIGN";
    1.69 +#endif
    1.70 +#if defined(EALREADY) && (!defined(EBUSY) || (EALREADY != EBUSY ))
    1.71 +	case EALREADY: return "EALREADY";
    1.72 +#endif
    1.73 +#ifdef EBADE
    1.74 +	case EBADE: return "EBADE";
    1.75 +#endif
    1.76 +#ifdef EBADF
    1.77 +	case EBADF: return "EBADF";
    1.78 +#endif
    1.79 +#ifdef EBADFD
    1.80 +	case EBADFD: return "EBADFD";
    1.81 +#endif
    1.82 +#ifdef EBADMSG
    1.83 +	case EBADMSG: return "EBADMSG";
    1.84 +#endif
    1.85 +#ifdef EBADR
    1.86 +	case EBADR: return "EBADR";
    1.87 +#endif
    1.88 +#ifdef EBADRPC
    1.89 +	case EBADRPC: return "EBADRPC";
    1.90 +#endif
    1.91 +#ifdef EBADRQC
    1.92 +	case EBADRQC: return "EBADRQC";
    1.93 +#endif
    1.94 +#ifdef EBADSLT
    1.95 +	case EBADSLT: return "EBADSLT";
    1.96 +#endif
    1.97 +#ifdef EBFONT
    1.98 +	case EBFONT: return "EBFONT";
    1.99 +#endif
   1.100 +#ifdef EBUSY
   1.101 +	case EBUSY: return "EBUSY";
   1.102 +#endif
   1.103 +#ifdef ECHILD
   1.104 +	case ECHILD: return "ECHILD";
   1.105 +#endif
   1.106 +#ifdef ECHRNG
   1.107 +	case ECHRNG: return "ECHRNG";
   1.108 +#endif
   1.109 +#ifdef ECOMM
   1.110 +	case ECOMM: return "ECOMM";
   1.111 +#endif
   1.112 +#ifdef ECONNABORTED
   1.113 +	case ECONNABORTED: return "ECONNABORTED";
   1.114 +#endif
   1.115 +#ifdef ECONNREFUSED
   1.116 +	case ECONNREFUSED: return "ECONNREFUSED";
   1.117 +#endif
   1.118 +#ifdef ECONNRESET
   1.119 +	case ECONNRESET: return "ECONNRESET";
   1.120 +#endif
   1.121 +#if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK))
   1.122 +	case EDEADLK: return "EDEADLK";
   1.123 +#endif
   1.124 +#if defined(EDEADLOCK) && (!defined(EDEADLK) || (EDEADLOCK != EDEADLK))
   1.125 +	case EDEADLOCK: return "EDEADLOCK";
   1.126 +#endif
   1.127 +#ifdef EDESTADDRREQ
   1.128 +	case EDESTADDRREQ: return "EDESTADDRREQ";
   1.129 +#endif
   1.130 +#ifdef EDIRTY
   1.131 +	case EDIRTY: return "EDIRTY";
   1.132 +#endif
   1.133 +#ifdef EDOM
   1.134 +	case EDOM: return "EDOM";
   1.135 +#endif
   1.136 +#ifdef EDOTDOT
   1.137 +	case EDOTDOT: return "EDOTDOT";
   1.138 +#endif
   1.139 +#ifdef EDQUOT
   1.140 +	case EDQUOT: return "EDQUOT";
   1.141 +#endif
   1.142 +#ifdef EDUPPKG
   1.143 +	case EDUPPKG: return "EDUPPKG";
   1.144 +#endif
   1.145 +#ifdef EEXIST
   1.146 +	case EEXIST: return "EEXIST";
   1.147 +#endif
   1.148 +#ifdef EFAULT
   1.149 +	case EFAULT: return "EFAULT";
   1.150 +#endif
   1.151 +#ifdef EFBIG
   1.152 +	case EFBIG: return "EFBIG";
   1.153 +#endif
   1.154 +#ifdef EHOSTDOWN
   1.155 +	case EHOSTDOWN: return "EHOSTDOWN";
   1.156 +#endif
   1.157 +#ifdef EHOSTUNREACH
   1.158 +	case EHOSTUNREACH: return "EHOSTUNREACH";
   1.159 +#endif
   1.160 +#if defined(EIDRM) && (!defined(EINPROGRESS) || (EIDRM != EINPROGRESS))
   1.161 +	case EIDRM: return "EIDRM";
   1.162 +#endif
   1.163 +#ifdef EINIT
   1.164 +	case EINIT: return "EINIT";
   1.165 +#endif
   1.166 +#ifdef EINPROGRESS
   1.167 +	case EINPROGRESS: return "EINPROGRESS";
   1.168 +#endif
   1.169 +#ifdef EINTR
   1.170 +	case EINTR: return "EINTR";
   1.171 +#endif
   1.172 +#ifdef EINVAL
   1.173 +	case EINVAL: return "EINVAL";
   1.174 +#endif
   1.175 +#ifdef EIO
   1.176 +	case EIO: return "EIO";
   1.177 +#endif
   1.178 +#ifdef EISCONN
   1.179 +	case EISCONN: return "EISCONN";
   1.180 +#endif
   1.181 +#ifdef EISDIR
   1.182 +	case EISDIR: return "EISDIR";
   1.183 +#endif
   1.184 +#ifdef EISNAME
   1.185 +	case EISNAM: return "EISNAM";
   1.186 +#endif
   1.187 +#ifdef ELBIN
   1.188 +	case ELBIN: return "ELBIN";
   1.189 +#endif
   1.190 +#ifdef EL2HLT
   1.191 +	case EL2HLT: return "EL2HLT";
   1.192 +#endif
   1.193 +#ifdef EL2NSYNC
   1.194 +	case EL2NSYNC: return "EL2NSYNC";
   1.195 +#endif
   1.196 +#ifdef EL3HLT
   1.197 +	case EL3HLT: return "EL3HLT";
   1.198 +#endif
   1.199 +#ifdef EL3RST
   1.200 +	case EL3RST: return "EL3RST";
   1.201 +#endif
   1.202 +#ifdef ELIBACC
   1.203 +	case ELIBACC: return "ELIBACC";
   1.204 +#endif
   1.205 +#ifdef ELIBBAD
   1.206 +	case ELIBBAD: return "ELIBBAD";
   1.207 +#endif
   1.208 +#ifdef ELIBEXEC
   1.209 +	case ELIBEXEC: return "ELIBEXEC";
   1.210 +#endif
   1.211 +#ifdef ELIBMAX
   1.212 +	case ELIBMAX: return "ELIBMAX";
   1.213 +#endif
   1.214 +#ifdef ELIBSCN
   1.215 +	case ELIBSCN: return "ELIBSCN";
   1.216 +#endif
   1.217 +#ifdef ELNRNG
   1.218 +	case ELNRNG: return "ELNRNG";
   1.219 +#endif
   1.220 +#if defined(ELOOP) && (!defined(ENOENT) || (ELOOP != ENOENT))
   1.221 +	case ELOOP: return "ELOOP";
   1.222 +#endif
   1.223 +#ifdef EMFILE
   1.224 +	case EMFILE: return "EMFILE";
   1.225 +#endif
   1.226 +#ifdef EMLINK
   1.227 +	case EMLINK: return "EMLINK";
   1.228 +#endif
   1.229 +#ifdef EMSGSIZE
   1.230 +	case EMSGSIZE: return "EMSGSIZE";
   1.231 +#endif
   1.232 +#ifdef EMULTIHOP
   1.233 +	case EMULTIHOP: return "EMULTIHOP";
   1.234 +#endif
   1.235 +#ifdef ENAMETOOLONG
   1.236 +	case ENAMETOOLONG: return "ENAMETOOLONG";
   1.237 +#endif
   1.238 +#ifdef ENAVAIL
   1.239 +	case ENAVAIL: return "ENAVAIL";
   1.240 +#endif
   1.241 +#ifdef ENET
   1.242 +	case ENET: return "ENET";
   1.243 +#endif
   1.244 +#ifdef ENETDOWN
   1.245 +	case ENETDOWN: return "ENETDOWN";
   1.246 +#endif
   1.247 +#ifdef ENETRESET
   1.248 +	case ENETRESET: return "ENETRESET";
   1.249 +#endif
   1.250 +#ifdef ENETUNREACH
   1.251 +	case ENETUNREACH: return "ENETUNREACH";
   1.252 +#endif
   1.253 +#ifdef ENFILE
   1.254 +	case ENFILE: return "ENFILE";
   1.255 +#endif
   1.256 +#ifdef ENOANO
   1.257 +	case ENOANO: return "ENOANO";
   1.258 +#endif
   1.259 +#if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR))
   1.260 +	case ENOBUFS: return "ENOBUFS";
   1.261 +#endif
   1.262 +#ifdef ENOCSI
   1.263 +	case ENOCSI: return "ENOCSI";
   1.264 +#endif
   1.265 +#if defined(ENODATA) && (!defined(ECONNREFUSED) || (ENODATA != ECONNREFUSED))
   1.266 +	case ENODATA: return "ENODATA";
   1.267 +#endif
   1.268 +#ifdef ENODEV
   1.269 +	case ENODEV: return "ENODEV";
   1.270 +#endif
   1.271 +#ifdef ENOENT
   1.272 +	case ENOENT: return "ENOENT";
   1.273 +#endif
   1.274 +#ifdef ENOEXEC
   1.275 +	case ENOEXEC: return "ENOEXEC";
   1.276 +#endif
   1.277 +#ifdef ENOLCK
   1.278 +	case ENOLCK: return "ENOLCK";
   1.279 +#endif
   1.280 +#ifdef ENOLINK
   1.281 +	case ENOLINK: return "ENOLINK";
   1.282 +#endif
   1.283 +#ifdef ENOMEM
   1.284 +	case ENOMEM: return "ENOMEM";
   1.285 +#endif
   1.286 +#ifdef ENOMSG
   1.287 +	case ENOMSG: return "ENOMSG";
   1.288 +#endif
   1.289 +#ifdef ENONET
   1.290 +	case ENONET: return "ENONET";
   1.291 +#endif
   1.292 +#ifdef ENOPKG
   1.293 +	case ENOPKG: return "ENOPKG";
   1.294 +#endif
   1.295 +#ifdef ENOPROTOOPT
   1.296 +	case ENOPROTOOPT: return "ENOPROTOOPT";
   1.297 +#endif
   1.298 +#ifdef ENOSPC
   1.299 +	case ENOSPC: return "ENOSPC";
   1.300 +#endif
   1.301 +#if defined(ENOSR) && (!defined(ENAMETOOLONG) || (ENAMETOOLONG != ENOSR))
   1.302 +	case ENOSR: return "ENOSR";
   1.303 +#endif
   1.304 +#if defined(ENOSTR) && (!defined(ENOTTY) || (ENOTTY != ENOSTR))
   1.305 +	case ENOSTR: return "ENOSTR";
   1.306 +#endif
   1.307 +#ifdef ENOSYM
   1.308 +	case ENOSYM: return "ENOSYM";
   1.309 +#endif
   1.310 +#ifdef ENOSYS
   1.311 +	case ENOSYS: return "ENOSYS";
   1.312 +#endif
   1.313 +#ifdef ENOTBLK
   1.314 +	case ENOTBLK: return "ENOTBLK";
   1.315 +#endif
   1.316 +#ifdef ENOTCONN
   1.317 +	case ENOTCONN: return "ENOTCONN";
   1.318 +#endif
   1.319 +#ifdef ENOTDIR
   1.320 +	case ENOTDIR: return "ENOTDIR";
   1.321 +#endif
   1.322 +#if defined(ENOTEMPTY) && (!defined(EEXIST) || (ENOTEMPTY != EEXIST))
   1.323 +	case ENOTEMPTY: return "ENOTEMPTY";
   1.324 +#endif
   1.325 +#ifdef ENOTNAM
   1.326 +	case ENOTNAM: return "ENOTNAM";
   1.327 +#endif
   1.328 +#ifdef ENOTSOCK
   1.329 +	case ENOTSOCK: return "ENOTSOCK";
   1.330 +#endif
   1.331 +#ifdef ENOTSUP
   1.332 +	case ENOTSUP: return "ENOTSUP";
   1.333 +#endif
   1.334 +#ifdef ENOTTY
   1.335 +	case ENOTTY: return "ENOTTY";
   1.336 +#endif
   1.337 +#ifdef ENOTUNIQ
   1.338 +	case ENOTUNIQ: return "ENOTUNIQ";
   1.339 +#endif
   1.340 +#ifdef ENXIO
   1.341 +	case ENXIO: return "ENXIO";
   1.342 +#endif
   1.343 +#if defined(EOPNOTSUPP) &&  (!defined(ENOTSUP) || (ENOTSUP != EOPNOTSUPP))
   1.344 +	case EOPNOTSUPP: return "EOPNOTSUPP";
   1.345 +#endif
   1.346 +#if defined(EOVERFLOW) && ( !defined(EFBIG) || (EOVERFLOW != EFBIG) ) && ( !defined(EINVAL) || (EOVERFLOW != EINVAL) )
   1.347 +        case EOVERFLOW: return "EOVERFLOW";
   1.348 +#endif
   1.349 +#ifdef EPERM
   1.350 +	case EPERM: return "EPERM";
   1.351 +#endif
   1.352 +#if defined(EPFNOSUPPORT) && (!defined(ENOLCK) || (ENOLCK != EPFNOSUPPORT))
   1.353 +	case EPFNOSUPPORT: return "EPFNOSUPPORT";
   1.354 +#endif
   1.355 +#ifdef EPIPE
   1.356 +	case EPIPE: return "EPIPE";
   1.357 +#endif
   1.358 +#ifdef EPROCLIM
   1.359 +	case EPROCLIM: return "EPROCLIM";
   1.360 +#endif
   1.361 +#ifdef EPROCUNAVAIL
   1.362 +	case EPROCUNAVAIL: return "EPROCUNAVAIL";
   1.363 +#endif
   1.364 +#ifdef EPROGMISMATCH
   1.365 +	case EPROGMISMATCH: return "EPROGMISMATCH";
   1.366 +#endif
   1.367 +#ifdef EPROGUNAVAIL
   1.368 +	case EPROGUNAVAIL: return "EPROGUNAVAIL";
   1.369 +#endif
   1.370 +#ifdef EPROTO
   1.371 +	case EPROTO: return "EPROTO";
   1.372 +#endif
   1.373 +#ifdef EPROTONOSUPPORT
   1.374 +	case EPROTONOSUPPORT: return "EPROTONOSUPPORT";
   1.375 +#endif
   1.376 +#ifdef EPROTOTYPE
   1.377 +	case EPROTOTYPE: return "EPROTOTYPE";
   1.378 +#endif
   1.379 +#ifdef ERANGE
   1.380 +	case ERANGE: return "ERANGE";
   1.381 +#endif
   1.382 +#if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED))
   1.383 +	case EREFUSED: return "EREFUSED";
   1.384 +#endif
   1.385 +#ifdef EREMCHG
   1.386 +	case EREMCHG: return "EREMCHG";
   1.387 +#endif
   1.388 +#ifdef EREMDEV
   1.389 +	case EREMDEV: return "EREMDEV";
   1.390 +#endif
   1.391 +#ifdef EREMOTE
   1.392 +	case EREMOTE: return "EREMOTE";
   1.393 +#endif
   1.394 +#ifdef EREMOTEIO
   1.395 +	case EREMOTEIO: return "EREMOTEIO";
   1.396 +#endif
   1.397 +#ifdef EREMOTERELEASE
   1.398 +	case EREMOTERELEASE: return "EREMOTERELEASE";
   1.399 +#endif
   1.400 +#ifdef EROFS
   1.401 +	case EROFS: return "EROFS";
   1.402 +#endif
   1.403 +#ifdef ERPCMISMATCH
   1.404 +	case ERPCMISMATCH: return "ERPCMISMATCH";
   1.405 +#endif
   1.406 +#ifdef ERREMOTE
   1.407 +	case ERREMOTE: return "ERREMOTE";
   1.408 +#endif
   1.409 +#ifdef ESHUTDOWN
   1.410 +	case ESHUTDOWN: return "ESHUTDOWN";
   1.411 +#endif
   1.412 +#ifdef ESOCKTNOSUPPORT
   1.413 +	case ESOCKTNOSUPPORT: return "ESOCKTNOSUPPORT";
   1.414 +#endif
   1.415 +#ifdef ESPIPE
   1.416 +	case ESPIPE: return "ESPIPE";
   1.417 +#endif
   1.418 +#ifdef ESRCH
   1.419 +	case ESRCH: return "ESRCH";
   1.420 +#endif
   1.421 +#ifdef ESRMNT
   1.422 +	case ESRMNT: return "ESRMNT";
   1.423 +#endif
   1.424 +#ifdef ESTALE
   1.425 +	case ESTALE: return "ESTALE";
   1.426 +#endif
   1.427 +#ifdef ESUCCESS
   1.428 +	case ESUCCESS: return "ESUCCESS";
   1.429 +#endif
   1.430 +#if defined(ETIME) && (!defined(ELOOP) || (ETIME != ELOOP))
   1.431 +	case ETIME: return "ETIME";
   1.432 +#endif
   1.433 +#if defined(ETIMEDOUT) && (!defined(ENOSTR) || (ETIMEDOUT != ENOSTR))
   1.434 +	case ETIMEDOUT: return "ETIMEDOUT";
   1.435 +#endif
   1.436 +#ifdef ETOOMANYREFS
   1.437 +	case ETOOMANYREFS: return "ETOOMANYREFS";
   1.438 +#endif
   1.439 +#ifdef ETXTBSY
   1.440 +	case ETXTBSY: return "ETXTBSY";
   1.441 +#endif
   1.442 +#ifdef EUCLEAN
   1.443 +	case EUCLEAN: return "EUCLEAN";
   1.444 +#endif
   1.445 +#ifdef EUNATCH
   1.446 +	case EUNATCH: return "EUNATCH";
   1.447 +#endif
   1.448 +#ifdef EUSERS
   1.449 +	case EUSERS: return "EUSERS";
   1.450 +#endif
   1.451 +#ifdef EVERSION
   1.452 +	case EVERSION: return "EVERSION";
   1.453 +#endif
   1.454 +#if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN))
   1.455 +	case EWOULDBLOCK: return "EWOULDBLOCK";
   1.456 +#endif
   1.457 +#ifdef EXDEV
   1.458 +	case EXDEV: return "EXDEV";
   1.459 +#endif
   1.460 +#ifdef EXFULL
   1.461 +	case EXFULL: return "EXFULL";
   1.462 +#endif
   1.463 +    }
   1.464 +    return "unknown error";
   1.465 +}
   1.466 +
   1.467 +/*
   1.468 + *----------------------------------------------------------------------
   1.469 + *
   1.470 + * Tcl_ErrnoMsg --
   1.471 + *
   1.472 + *	Return a human-readable message corresponding to a given
   1.473 + *	errno value.
   1.474 + *
   1.475 + * Results:
   1.476 + *	The return value is the standard POSIX error message for
   1.477 + *	errno.  This procedure is used instead of strerror because
   1.478 + *	strerror returns slightly different values on different
   1.479 + *	machines (e.g. different capitalizations), which cause
   1.480 + *	problems for things such as regression tests.  This procedure
   1.481 + *	provides messages for most standard errors, then it calls
   1.482 + *	strerror for things it doesn't understand.
   1.483 + *
   1.484 + * Side effects:
   1.485 + *	None.
   1.486 + *
   1.487 + *----------------------------------------------------------------------
   1.488 + */
   1.489 +
   1.490 +EXPORT_C CONST char *
   1.491 +Tcl_ErrnoMsg(err)
   1.492 +    int err;			/* Error number (such as in errno variable). */
   1.493 +{
   1.494 +    switch (err) {
   1.495 +#ifdef E2BIG
   1.496 +	case E2BIG: return "argument list too long";
   1.497 +#endif
   1.498 +#ifdef EACCES
   1.499 +	case EACCES: return "permission denied";
   1.500 +#endif
   1.501 +#ifdef EADDRINUSE
   1.502 +	case EADDRINUSE: return "address already in use";
   1.503 +#endif
   1.504 +#ifdef EADDRNOTAVAIL
   1.505 +	case EADDRNOTAVAIL: return "can't assign requested address";
   1.506 +#endif
   1.507 +#ifdef EADV
   1.508 +	case EADV: return "advertise error";
   1.509 +#endif
   1.510 +#ifdef EAFNOSUPPORT
   1.511 +	case EAFNOSUPPORT: return "address family not supported by protocol family";
   1.512 +#endif
   1.513 +#ifdef EAGAIN
   1.514 +	case EAGAIN: return "resource temporarily unavailable";
   1.515 +#endif
   1.516 +#ifdef EALIGN
   1.517 +	case EALIGN: return "EALIGN";
   1.518 +#endif
   1.519 +#if defined(EALREADY) && (!defined(EBUSY) || (EALREADY != EBUSY ))
   1.520 +	case EALREADY: return "operation already in progress";
   1.521 +#endif
   1.522 +#ifdef EBADE
   1.523 +	case EBADE: return "bad exchange descriptor";
   1.524 +#endif
   1.525 +#ifdef EBADF
   1.526 +	case EBADF: return "bad file number";
   1.527 +#endif
   1.528 +#ifdef EBADFD
   1.529 +	case EBADFD: return "file descriptor in bad state";
   1.530 +#endif
   1.531 +#ifdef EBADMSG
   1.532 +	case EBADMSG: return "not a data message";
   1.533 +#endif
   1.534 +#ifdef EBADR
   1.535 +	case EBADR: return "bad request descriptor";
   1.536 +#endif
   1.537 +#ifdef EBADRPC
   1.538 +	case EBADRPC: return "RPC structure is bad";
   1.539 +#endif
   1.540 +#ifdef EBADRQC
   1.541 +	case EBADRQC: return "bad request code";
   1.542 +#endif
   1.543 +#ifdef EBADSLT
   1.544 +	case EBADSLT: return "invalid slot";
   1.545 +#endif
   1.546 +#ifdef EBFONT
   1.547 +	case EBFONT: return "bad font file format";
   1.548 +#endif
   1.549 +#ifdef EBUSY
   1.550 +	case EBUSY: return "file busy";
   1.551 +#endif
   1.552 +#ifdef ECHILD
   1.553 +	case ECHILD: return "no children";
   1.554 +#endif
   1.555 +#ifdef ECHRNG
   1.556 +	case ECHRNG: return "channel number out of range";
   1.557 +#endif
   1.558 +#ifdef ECOMM
   1.559 +	case ECOMM: return "communication error on send";
   1.560 +#endif
   1.561 +#ifdef ECONNABORTED
   1.562 +	case ECONNABORTED: return "software caused connection abort";
   1.563 +#endif
   1.564 +#ifdef ECONNREFUSED
   1.565 +	case ECONNREFUSED: return "connection refused";
   1.566 +#endif
   1.567 +#ifdef ECONNRESET
   1.568 +	case ECONNRESET: return "connection reset by peer";
   1.569 +#endif
   1.570 +#if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK))
   1.571 +	case EDEADLK: return "resource deadlock avoided";
   1.572 +#endif
   1.573 +#if defined(EDEADLOCK) && (!defined(EDEADLK) || (EDEADLOCK != EDEADLK))
   1.574 +	case EDEADLOCK: return "resource deadlock avoided";
   1.575 +#endif
   1.576 +#ifdef EDESTADDRREQ
   1.577 +	case EDESTADDRREQ: return "destination address required";
   1.578 +#endif
   1.579 +#ifdef EDIRTY
   1.580 +	case EDIRTY: return "mounting a dirty fs w/o force";
   1.581 +#endif
   1.582 +#ifdef EDOM
   1.583 +	case EDOM: return "math argument out of range";
   1.584 +#endif
   1.585 +#ifdef EDOTDOT
   1.586 +	case EDOTDOT: return "cross mount point";
   1.587 +#endif
   1.588 +#ifdef EDQUOT
   1.589 +	case EDQUOT: return "disk quota exceeded";
   1.590 +#endif
   1.591 +#ifdef EDUPPKG
   1.592 +	case EDUPPKG: return "duplicate package name";
   1.593 +#endif
   1.594 +#ifdef EEXIST
   1.595 +	case EEXIST: return "file already exists";
   1.596 +#endif
   1.597 +#ifdef EFAULT
   1.598 +	case EFAULT: return "bad address in system call argument";
   1.599 +#endif
   1.600 +#ifdef EFBIG
   1.601 +	case EFBIG: return "file too large";
   1.602 +#endif
   1.603 +#ifdef EHOSTDOWN
   1.604 +	case EHOSTDOWN: return "host is down";
   1.605 +#endif
   1.606 +#ifdef EHOSTUNREACH
   1.607 +	case EHOSTUNREACH: return "host is unreachable";
   1.608 +#endif
   1.609 +#if defined(EIDRM) && (!defined(EINPROGRESS) || (EIDRM != EINPROGRESS))
   1.610 +	case EIDRM: return "identifier removed";
   1.611 +#endif
   1.612 +#ifdef EINIT
   1.613 +	case EINIT: return "initialization error";
   1.614 +#endif
   1.615 +#ifdef EINPROGRESS
   1.616 +	case EINPROGRESS: return "operation now in progress";
   1.617 +#endif
   1.618 +#ifdef EINTR
   1.619 +	case EINTR: return "interrupted system call";
   1.620 +#endif
   1.621 +#ifdef EINVAL
   1.622 +	case EINVAL: return "invalid argument";
   1.623 +#endif
   1.624 +#ifdef EIO
   1.625 +	case EIO: return "I/O error";
   1.626 +#endif
   1.627 +#ifdef EISCONN
   1.628 +	case EISCONN: return "socket is already connected";
   1.629 +#endif
   1.630 +#ifdef EISDIR
   1.631 +	case EISDIR: return "illegal operation on a directory";
   1.632 +#endif
   1.633 +#ifdef EISNAME
   1.634 +	case EISNAM: return "is a name file";
   1.635 +#endif
   1.636 +#ifdef ELBIN
   1.637 +	case ELBIN: return "ELBIN";
   1.638 +#endif
   1.639 +#ifdef EL2HLT
   1.640 +	case EL2HLT: return "level 2 halted";
   1.641 +#endif
   1.642 +#ifdef EL2NSYNC
   1.643 +	case EL2NSYNC: return "level 2 not synchronized";
   1.644 +#endif
   1.645 +#ifdef EL3HLT
   1.646 +	case EL3HLT: return "level 3 halted";
   1.647 +#endif
   1.648 +#ifdef EL3RST
   1.649 +	case EL3RST: return "level 3 reset";
   1.650 +#endif
   1.651 +#ifdef ELIBACC
   1.652 +	case ELIBACC: return "can not access a needed shared library";
   1.653 +#endif
   1.654 +#ifdef ELIBBAD
   1.655 +	case ELIBBAD: return "accessing a corrupted shared library";
   1.656 +#endif
   1.657 +#ifdef ELIBEXEC
   1.658 +	case ELIBEXEC: return "can not exec a shared library directly";
   1.659 +#endif
   1.660 +#ifdef ELIBMAX
   1.661 +	case ELIBMAX: return
   1.662 +		"attempting to link in more shared libraries than system limit";
   1.663 +#endif
   1.664 +#ifdef ELIBSCN
   1.665 +	case ELIBSCN: return ".lib section in a.out corrupted";
   1.666 +#endif
   1.667 +#ifdef ELNRNG
   1.668 +	case ELNRNG: return "link number out of range";
   1.669 +#endif
   1.670 +#if defined(ELOOP) && (!defined(ENOENT) || (ELOOP != ENOENT))
   1.671 +	case ELOOP: return "too many levels of symbolic links";
   1.672 +#endif
   1.673 +#ifdef EMFILE
   1.674 +	case EMFILE: return "too many open files";
   1.675 +#endif
   1.676 +#ifdef EMLINK
   1.677 +	case EMLINK: return "too many links";
   1.678 +#endif
   1.679 +#ifdef EMSGSIZE
   1.680 +	case EMSGSIZE: return "message too long";
   1.681 +#endif
   1.682 +#ifdef EMULTIHOP
   1.683 +	case EMULTIHOP: return "multihop attempted";
   1.684 +#endif
   1.685 +#ifdef ENAMETOOLONG
   1.686 +	case ENAMETOOLONG: return "file name too long";
   1.687 +#endif
   1.688 +#ifdef ENAVAIL
   1.689 +	case ENAVAIL: return "not available";
   1.690 +#endif
   1.691 +#ifdef ENET
   1.692 +	case ENET: return "ENET";
   1.693 +#endif
   1.694 +#ifdef ENETDOWN
   1.695 +	case ENETDOWN: return "network is down";
   1.696 +#endif
   1.697 +#ifdef ENETRESET
   1.698 +	case ENETRESET: return "network dropped connection on reset";
   1.699 +#endif
   1.700 +#ifdef ENETUNREACH
   1.701 +	case ENETUNREACH: return "network is unreachable";
   1.702 +#endif
   1.703 +#ifdef ENFILE
   1.704 +	case ENFILE: return "file table overflow";
   1.705 +#endif
   1.706 +#ifdef ENOANO
   1.707 +	case ENOANO: return "anode table overflow";
   1.708 +#endif
   1.709 +#if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR))
   1.710 +	case ENOBUFS: return "no buffer space available";
   1.711 +#endif
   1.712 +#ifdef ENOCSI
   1.713 +	case ENOCSI: return "no CSI structure available";
   1.714 +#endif
   1.715 +#if defined(ENODATA) && (!defined(ECONNREFUSED) || (ENODATA != ECONNREFUSED))
   1.716 +	case ENODATA: return "no data available";
   1.717 +#endif
   1.718 +#ifdef ENODEV
   1.719 +	case ENODEV: return "no such device";
   1.720 +#endif
   1.721 +#ifdef ENOENT
   1.722 +	case ENOENT: return "no such file or directory";
   1.723 +#endif
   1.724 +#ifdef ENOEXEC
   1.725 +	case ENOEXEC: return "exec format error";
   1.726 +#endif
   1.727 +#ifdef ENOLCK
   1.728 +	case ENOLCK: return "no locks available";
   1.729 +#endif
   1.730 +#ifdef ENOLINK
   1.731 +	case ENOLINK: return "link has be severed";
   1.732 +#endif
   1.733 +#ifdef ENOMEM
   1.734 +	case ENOMEM: return "not enough memory";
   1.735 +#endif
   1.736 +#ifdef ENOMSG
   1.737 +	case ENOMSG: return "no message of desired type";
   1.738 +#endif
   1.739 +#ifdef ENONET
   1.740 +	case ENONET: return "machine is not on the network";
   1.741 +#endif
   1.742 +#ifdef ENOPKG
   1.743 +	case ENOPKG: return "package not installed";
   1.744 +#endif
   1.745 +#ifdef ENOPROTOOPT
   1.746 +	case ENOPROTOOPT: return "bad protocol option";
   1.747 +#endif
   1.748 +#ifdef ENOSPC
   1.749 +	case ENOSPC: return "no space left on device";
   1.750 +#endif
   1.751 +#if defined(ENOSR) && (!defined(ENAMETOOLONG) || (ENAMETOOLONG != ENOSR))
   1.752 +	case ENOSR: return "out of stream resources";
   1.753 +#endif
   1.754 +#if defined(ENOSTR) && (!defined(ENOTTY) || (ENOTTY != ENOSTR))
   1.755 +	case ENOSTR: return "not a stream device";
   1.756 +#endif
   1.757 +#ifdef ENOSYM
   1.758 +	case ENOSYM: return "unresolved symbol name";
   1.759 +#endif
   1.760 +#ifdef ENOSYS
   1.761 +	case ENOSYS: return "function not implemented";
   1.762 +#endif
   1.763 +#ifdef ENOTBLK
   1.764 +	case ENOTBLK: return "block device required";
   1.765 +#endif
   1.766 +#ifdef ENOTCONN
   1.767 +	case ENOTCONN: return "socket is not connected";
   1.768 +#endif
   1.769 +#ifdef ENOTDIR
   1.770 +	case ENOTDIR: return "not a directory";
   1.771 +#endif
   1.772 +#if defined(ENOTEMPTY) && (!defined(EEXIST) || (ENOTEMPTY != EEXIST))
   1.773 +	case ENOTEMPTY: return "directory not empty";
   1.774 +#endif
   1.775 +#ifdef ENOTNAM
   1.776 +	case ENOTNAM: return "not a name file";
   1.777 +#endif
   1.778 +#ifdef ENOTSOCK
   1.779 +	case ENOTSOCK: return "socket operation on non-socket";
   1.780 +#endif
   1.781 +#ifdef ENOTSUP
   1.782 +	case ENOTSUP: return "operation not supported";
   1.783 +#endif
   1.784 +#ifdef ENOTTY
   1.785 +	case ENOTTY: return "inappropriate device for ioctl";
   1.786 +#endif
   1.787 +#ifdef ENOTUNIQ
   1.788 +	case ENOTUNIQ: return "name not unique on network";
   1.789 +#endif
   1.790 +#ifdef ENXIO
   1.791 +	case ENXIO: return "no such device or address";
   1.792 +#endif
   1.793 +#if defined(EOPNOTSUPP) &&  (!defined(ENOTSUP) || (ENOTSUP != EOPNOTSUPP))
   1.794 +	case EOPNOTSUPP: return "operation not supported on socket";
   1.795 +#endif
   1.796 +#if defined(EOVERFLOW) && ( !defined(EFBIG) || (EOVERFLOW != EFBIG) ) && ( !defined(EINVAL) || (EOVERFLOW != EINVAL) )
   1.797 +        case EOVERFLOW: return "file too big";
   1.798 +#endif
   1.799 +#ifdef EPERM
   1.800 +	case EPERM: return "not owner";
   1.801 +#endif
   1.802 +#if defined(EPFNOSUPPORT) && (!defined(ENOLCK) || (ENOLCK != EPFNOSUPPORT))
   1.803 +	case EPFNOSUPPORT: return "protocol family not supported";
   1.804 +#endif
   1.805 +#ifdef EPIPE
   1.806 +	case EPIPE: return "broken pipe";
   1.807 +#endif
   1.808 +#ifdef EPROCLIM
   1.809 +	case EPROCLIM: return "too many processes";
   1.810 +#endif
   1.811 +#ifdef EPROCUNAVAIL
   1.812 +	case EPROCUNAVAIL: return "bad procedure for program";
   1.813 +#endif
   1.814 +#ifdef EPROGMISMATCH
   1.815 +	case EPROGMISMATCH: return "program version wrong";
   1.816 +#endif
   1.817 +#ifdef EPROGUNAVAIL
   1.818 +	case EPROGUNAVAIL: return "RPC program not available";
   1.819 +#endif
   1.820 +#ifdef EPROTO
   1.821 +	case EPROTO: return "protocol error";
   1.822 +#endif
   1.823 +#ifdef EPROTONOSUPPORT
   1.824 +	case EPROTONOSUPPORT: return "protocol not suppored";
   1.825 +#endif
   1.826 +#ifdef EPROTOTYPE
   1.827 +	case EPROTOTYPE: return "protocol wrong type for socket";
   1.828 +#endif
   1.829 +#ifdef ERANGE
   1.830 +	case ERANGE: return "math result unrepresentable";
   1.831 +#endif
   1.832 +#if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED))
   1.833 +	case EREFUSED: return "EREFUSED";
   1.834 +#endif
   1.835 +#ifdef EREMCHG
   1.836 +	case EREMCHG: return "remote address changed";
   1.837 +#endif
   1.838 +#ifdef EREMDEV
   1.839 +	case EREMDEV: return "remote device";
   1.840 +#endif
   1.841 +#ifdef EREMOTE
   1.842 +	case EREMOTE: return "pathname hit remote file system";
   1.843 +#endif
   1.844 +#ifdef EREMOTEIO
   1.845 +	case EREMOTEIO: return "remote i/o error";
   1.846 +#endif
   1.847 +#ifdef EREMOTERELEASE
   1.848 +	case EREMOTERELEASE: return "EREMOTERELEASE";
   1.849 +#endif
   1.850 +#ifdef EROFS
   1.851 +	case EROFS: return "read-only file system";
   1.852 +#endif
   1.853 +#ifdef ERPCMISMATCH
   1.854 +	case ERPCMISMATCH: return "RPC version is wrong";
   1.855 +#endif
   1.856 +#ifdef ERREMOTE
   1.857 +	case ERREMOTE: return "object is remote";
   1.858 +#endif
   1.859 +#ifdef ESHUTDOWN
   1.860 +	case ESHUTDOWN: return "can't send afer socket shutdown";
   1.861 +#endif
   1.862 +#ifdef ESOCKTNOSUPPORT
   1.863 +	case ESOCKTNOSUPPORT: return "socket type not supported";
   1.864 +#endif
   1.865 +#ifdef ESPIPE
   1.866 +	case ESPIPE: return "invalid seek";
   1.867 +#endif
   1.868 +#ifdef ESRCH
   1.869 +	case ESRCH: return "no such process";
   1.870 +#endif
   1.871 +#ifdef ESRMNT
   1.872 +	case ESRMNT: return "srmount error";
   1.873 +#endif
   1.874 +#ifdef ESTALE
   1.875 +	case ESTALE: return "stale remote file handle";
   1.876 +#endif
   1.877 +#ifdef ESUCCESS
   1.878 +	case ESUCCESS: return "Error 0";
   1.879 +#endif
   1.880 +#if defined(ETIME) && (!defined(ELOOP) || (ETIME != ELOOP))
   1.881 +	case ETIME: return "timer expired";
   1.882 +#endif
   1.883 +#if defined(ETIMEDOUT) && (!defined(ENOSTR) || (ETIMEDOUT != ENOSTR))
   1.884 +	case ETIMEDOUT: return "connection timed out";
   1.885 +#endif
   1.886 +#ifdef ETOOMANYREFS
   1.887 +	case ETOOMANYREFS: return "too many references: can't splice";
   1.888 +#endif
   1.889 +#ifdef ETXTBSY
   1.890 +	case ETXTBSY: return "text file or pseudo-device busy";
   1.891 +#endif
   1.892 +#ifdef EUCLEAN
   1.893 +	case EUCLEAN: return "structure needs cleaning";
   1.894 +#endif
   1.895 +#ifdef EUNATCH
   1.896 +	case EUNATCH: return "protocol driver not attached";
   1.897 +#endif
   1.898 +#ifdef EUSERS
   1.899 +	case EUSERS: return "too many users";
   1.900 +#endif
   1.901 +#ifdef EVERSION
   1.902 +	case EVERSION: return "version mismatch";
   1.903 +#endif
   1.904 +#if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN))
   1.905 +	case EWOULDBLOCK: return "operation would block";
   1.906 +#endif
   1.907 +#ifdef EXDEV
   1.908 +	case EXDEV: return "cross-domain link";
   1.909 +#endif
   1.910 +#ifdef EXFULL
   1.911 +	case EXFULL: return "message tables full";
   1.912 +#endif
   1.913 +	default:
   1.914 +#ifdef NO_STRERROR
   1.915 +	    return "unknown POSIX error";
   1.916 +#else
   1.917 +	    return strerror(errno);
   1.918 +#endif
   1.919 +    }
   1.920 +}
   1.921 +
   1.922 +/*
   1.923 + *----------------------------------------------------------------------
   1.924 + *
   1.925 + * Tcl_SignalId --
   1.926 + *
   1.927 + *	Return a textual identifier for a signal number.
   1.928 + *
   1.929 + * Results:
   1.930 + *	This procedure returns a machine-readable textual identifier
   1.931 + *	that corresponds to sig.  The identifier is the same as the
   1.932 + *	#define name in signal.h.
   1.933 + *
   1.934 + * Side effects:
   1.935 + *	None.
   1.936 + *
   1.937 + *----------------------------------------------------------------------
   1.938 + */
   1.939 +
   1.940 +EXPORT_C CONST char *
   1.941 +Tcl_SignalId(sig)
   1.942 +    int sig;			/* Number of signal. */
   1.943 +{
   1.944 +    switch (sig) {
   1.945 +#ifdef SIGABRT
   1.946 +	case SIGABRT: return "SIGABRT";
   1.947 +#endif
   1.948 +#ifdef SIGALRM
   1.949 +	case SIGALRM: return "SIGALRM";
   1.950 +#endif
   1.951 +#ifdef SIGBUS
   1.952 +	case SIGBUS: return "SIGBUS";
   1.953 +#endif
   1.954 +#ifdef SIGCHLD
   1.955 +	case SIGCHLD: return "SIGCHLD";
   1.956 +#endif
   1.957 +#if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD))
   1.958 +	case SIGCLD: return "SIGCLD";
   1.959 +#endif
   1.960 +#ifdef SIGCONT
   1.961 +	case SIGCONT: return "SIGCONT";
   1.962 +#endif
   1.963 +#if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU))
   1.964 +	case SIGEMT: return "SIGEMT";
   1.965 +#endif
   1.966 +#ifdef SIGFPE
   1.967 +	case SIGFPE: return "SIGFPE";
   1.968 +#endif
   1.969 +#ifdef SIGHUP
   1.970 +	case SIGHUP: return "SIGHUP";
   1.971 +#endif
   1.972 +#ifdef SIGILL
   1.973 +	case SIGILL: return "SIGILL";
   1.974 +#endif
   1.975 +#ifdef SIGINT
   1.976 +	case SIGINT: return "SIGINT";
   1.977 +#endif
   1.978 +#ifdef SIGIO
   1.979 +	case SIGIO: return "SIGIO";
   1.980 +#endif
   1.981 +#if defined(SIGIOT) && (!defined(SIGABRT) || (SIGIOT != SIGABRT))
   1.982 +	case SIGIOT: return "SIGIOT";
   1.983 +#endif
   1.984 +#ifdef SIGKILL
   1.985 +	case SIGKILL: return "SIGKILL";
   1.986 +#endif
   1.987 +#if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT)) && (!defined(SIGURG) || (SIGLOST != SIGURG)) && (!defined(SIGPROF) || (SIGLOST != SIGPROF)) && (!defined(SIGIO) || (SIGLOST != SIGIO))
   1.988 +	case SIGLOST: return "SIGLOST";
   1.989 +#endif
   1.990 +#ifdef SIGPIPE
   1.991 +	case SIGPIPE: return "SIGPIPE";
   1.992 +#endif
   1.993 +#if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO))
   1.994 +	case SIGPOLL: return "SIGPOLL";
   1.995 +#endif
   1.996 +#ifdef SIGPROF
   1.997 +	case SIGPROF: return "SIGPROF";
   1.998 +#endif
   1.999 +#if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ)) && (!defined(SIGLOST) || (SIGPWR != SIGLOST))
  1.1000 +	case SIGPWR: return "SIGPWR";
  1.1001 +#endif
  1.1002 +#ifdef SIGQUIT
  1.1003 +	case SIGQUIT: return "SIGQUIT";
  1.1004 +#endif
  1.1005 +#ifdef SIGSEGV
  1.1006 +	case SIGSEGV: return "SIGSEGV";
  1.1007 +#endif
  1.1008 +#ifdef SIGSTOP
  1.1009 +	case SIGSTOP: return "SIGSTOP";
  1.1010 +#endif
  1.1011 +#ifdef SIGSYS
  1.1012 +	case SIGSYS: return "SIGSYS";
  1.1013 +#endif
  1.1014 +#ifdef SIGTERM
  1.1015 +	case SIGTERM: return "SIGTERM";
  1.1016 +#endif
  1.1017 +#ifdef SIGTRAP
  1.1018 +	case SIGTRAP: return "SIGTRAP";
  1.1019 +#endif
  1.1020 +#ifdef SIGTSTP
  1.1021 +	case SIGTSTP: return "SIGTSTP";
  1.1022 +#endif
  1.1023 +#ifdef SIGTTIN
  1.1024 +	case SIGTTIN: return "SIGTTIN";
  1.1025 +#endif
  1.1026 +#ifdef SIGTTOU
  1.1027 +	case SIGTTOU: return "SIGTTOU";
  1.1028 +#endif
  1.1029 +#if defined(SIGURG) && (!defined(SIGIO) || (SIGURG != SIGIO))
  1.1030 +	case SIGURG: return "SIGURG";
  1.1031 +#endif
  1.1032 +#if defined(SIGUSR1) && (!defined(SIGIO) || (SIGUSR1 != SIGIO))
  1.1033 +	case SIGUSR1: return "SIGUSR1";
  1.1034 +#endif
  1.1035 +#if defined(SIGUSR2) && (!defined(SIGURG) || (SIGUSR2 != SIGURG))
  1.1036 +	case SIGUSR2: return "SIGUSR2";
  1.1037 +#endif
  1.1038 +#ifdef SIGVTALRM
  1.1039 +	case SIGVTALRM: return "SIGVTALRM";
  1.1040 +#endif
  1.1041 +#ifdef SIGWINCH
  1.1042 +	case SIGWINCH: return "SIGWINCH";
  1.1043 +#endif
  1.1044 +#ifdef SIGXCPU
  1.1045 +	case SIGXCPU: return "SIGXCPU";
  1.1046 +#endif
  1.1047 +#ifdef SIGXFSZ
  1.1048 +	case SIGXFSZ: return "SIGXFSZ";
  1.1049 +#endif
  1.1050 +    }
  1.1051 +    return "unknown signal";
  1.1052 +}
  1.1053 +
  1.1054 +/*
  1.1055 + *----------------------------------------------------------------------
  1.1056 + *
  1.1057 + * Tcl_SignalMsg --
  1.1058 + *
  1.1059 + *	Return a human-readable message describing a signal.
  1.1060 + *
  1.1061 + * Results:
  1.1062 + *	This procedure returns a string describing sig that should
  1.1063 + *	make sense to a human.  It may not be easy for a machine
  1.1064 + *	to parse.
  1.1065 + *
  1.1066 + * Side effects:
  1.1067 + *	None.
  1.1068 + *
  1.1069 + *----------------------------------------------------------------------
  1.1070 + */
  1.1071 +
  1.1072 +EXPORT_C CONST char *
  1.1073 +Tcl_SignalMsg(sig)
  1.1074 +    int sig;			/* Number of signal. */
  1.1075 +{
  1.1076 +    switch (sig) {
  1.1077 +#ifdef SIGABRT
  1.1078 +	case SIGABRT: return "SIGABRT";
  1.1079 +#endif
  1.1080 +#ifdef SIGALRM
  1.1081 +	case SIGALRM: return "alarm clock";
  1.1082 +#endif
  1.1083 +#ifdef SIGBUS
  1.1084 +	case SIGBUS: return "bus error";
  1.1085 +#endif
  1.1086 +#ifdef SIGCHLD
  1.1087 +	case SIGCHLD: return "child status changed";
  1.1088 +#endif
  1.1089 +#if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD))
  1.1090 +	case SIGCLD: return "child status changed";
  1.1091 +#endif
  1.1092 +#ifdef SIGCONT
  1.1093 +	case SIGCONT: return "continue after stop";
  1.1094 +#endif
  1.1095 +#if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU))
  1.1096 +	case SIGEMT: return "EMT instruction";
  1.1097 +#endif
  1.1098 +#ifdef SIGFPE
  1.1099 +	case SIGFPE: return "floating-point exception";
  1.1100 +#endif
  1.1101 +#ifdef SIGHUP
  1.1102 +	case SIGHUP: return "hangup";
  1.1103 +#endif
  1.1104 +#ifdef SIGILL
  1.1105 +	case SIGILL: return "illegal instruction";
  1.1106 +#endif
  1.1107 +#ifdef SIGINT
  1.1108 +	case SIGINT: return "interrupt";
  1.1109 +#endif
  1.1110 +#ifdef SIGIO
  1.1111 +	case SIGIO: return "input/output possible on file";
  1.1112 +#endif
  1.1113 +#if defined(SIGIOT) && (!defined(SIGABRT) || (SIGABRT != SIGIOT))
  1.1114 +	case SIGIOT: return "IOT instruction";
  1.1115 +#endif
  1.1116 +#ifdef SIGKILL
  1.1117 +	case SIGKILL: return "kill signal";
  1.1118 +#endif
  1.1119 +#if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT)) && (!defined(SIGURG) || (SIGLOST != SIGURG)) && (!defined(SIGPROF) || (SIGLOST != SIGPROF)) && (!defined(SIGIO) || (SIGLOST != SIGIO))
  1.1120 +	case SIGLOST: return "resource lost";
  1.1121 +#endif
  1.1122 +#ifdef SIGPIPE
  1.1123 +	case SIGPIPE: return "write on pipe with no readers";
  1.1124 +#endif
  1.1125 +#if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO))
  1.1126 +	case SIGPOLL: return "input/output possible on file";
  1.1127 +#endif
  1.1128 +#ifdef SIGPROF
  1.1129 +	case SIGPROF: return "profiling alarm";
  1.1130 +#endif
  1.1131 +#if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ)) && (!defined(SIGLOST) || (SIGPWR != SIGLOST))
  1.1132 +	case SIGPWR: return "power-fail restart";
  1.1133 +#endif
  1.1134 +#ifdef SIGQUIT
  1.1135 +	case SIGQUIT: return "quit signal";
  1.1136 +#endif
  1.1137 +#ifdef SIGSEGV
  1.1138 +	case SIGSEGV: return "segmentation violation";
  1.1139 +#endif
  1.1140 +#ifdef SIGSTOP
  1.1141 +	case SIGSTOP: return "stop";
  1.1142 +#endif
  1.1143 +#ifdef SIGSYS
  1.1144 +	case SIGSYS: return "bad argument to system call";
  1.1145 +#endif
  1.1146 +#ifdef SIGTERM
  1.1147 +	case SIGTERM: return "software termination signal";
  1.1148 +#endif
  1.1149 +#ifdef SIGTRAP
  1.1150 +	case SIGTRAP: return "trace trap";
  1.1151 +#endif
  1.1152 +#ifdef SIGTSTP
  1.1153 +	case SIGTSTP: return "stop signal from tty";
  1.1154 +#endif
  1.1155 +#ifdef SIGTTIN
  1.1156 +	case SIGTTIN: return "background tty read";
  1.1157 +#endif
  1.1158 +#ifdef SIGTTOU
  1.1159 +	case SIGTTOU: return "background tty write";
  1.1160 +#endif
  1.1161 +#if defined(SIGURG) && (!defined(SIGIO) || (SIGURG != SIGIO))
  1.1162 +	case SIGURG: return "urgent I/O condition";
  1.1163 +#endif
  1.1164 +#if defined(SIGUSR1) && (!defined(SIGIO) || (SIGUSR1 != SIGIO))
  1.1165 +	case SIGUSR1: return "user-defined signal 1";
  1.1166 +#endif
  1.1167 +#if defined(SIGUSR2) && (!defined(SIGURG) || (SIGUSR2 != SIGURG))
  1.1168 +	case SIGUSR2: return "user-defined signal 2";
  1.1169 +#endif
  1.1170 +#ifdef SIGVTALRM
  1.1171 +	case SIGVTALRM: return "virtual time alarm";
  1.1172 +#endif
  1.1173 +#ifdef SIGWINCH
  1.1174 +	case SIGWINCH: return "window changed";
  1.1175 +#endif
  1.1176 +#ifdef SIGXCPU
  1.1177 +	case SIGXCPU: return "exceeded CPU time limit";
  1.1178 +#endif
  1.1179 +#ifdef SIGXFSZ
  1.1180 +	case SIGXFSZ: return "exceeded file size limit";
  1.1181 +#endif
  1.1182 +    }
  1.1183 +    return "unknown signal";
  1.1184 +}