]> git.zerfleddert.de Git - micropolis/blob - src/tcl/tclunxst.c
correctly differentiate between solaris and SunOS
[micropolis] / src / tcl / tclunxst.c
1 /*
2 * tclUnixStr.c --
3 *
4 * This file contains procedures that generate strings
5 * corresponding to various UNIX-related codes, such
6 * as errno and signals.
7 *
8 * Copyright 1991 Regents of the University of California
9 * Permission to use, copy, modify, and distribute this
10 * software and its documentation for any purpose and without
11 * fee is hereby granted, provided that this copyright
12 * notice appears in all copies. The University of California
13 * makes no representations about the suitability of this
14 * software for any purpose. It is provided "as is" without
15 * express or implied warranty.
16 */
17
18 #ifndef lint
19 static char rcsid[] = "$Header: /user6/ouster/tcl/RCS/tclUnixStr.c,v 1.12 92/04/30 15:51:15 ouster Exp $ SPRITE (Berkeley)";
20 #endif /* not lint */
21
22 #include "tclint.h"
23 #include "tclunix.h"
24 \f
25 /*
26 *----------------------------------------------------------------------
27 *
28 * Tcl_ErrnoId --
29 *
30 * Return a textual identifier for the current errno value.
31 *
32 * Results:
33 * This procedure returns a machine-readable textual identifier
34 * that corresponds to the current errno value (e.g. "EPERM").
35 * The identifier is the same as the #define name in errno.h.
36 *
37 * Side effects:
38 * None.
39 *
40 *----------------------------------------------------------------------
41 */
42
43 char *
44 Tcl_ErrnoId()
45 {
46 switch (errno) {
47 #ifdef E2BIG
48 case E2BIG: return "E2BIG";
49 #endif
50 #ifdef EACCES
51 case EACCES: return "EACCES";
52 #endif
53 #ifdef EADDRINUSE
54 case EADDRINUSE: return "EADDRINUSE";
55 #endif
56 #ifdef EADDRNOTAVAIL
57 case EADDRNOTAVAIL: return "EADDRNOTAVAIL";
58 #endif
59 #ifdef EADV
60 case EADV: return "EADV";
61 #endif
62 #ifdef EAFNOSUPPORT
63 case EAFNOSUPPORT: return "EAFNOSUPPORT";
64 #endif
65 #ifdef EAGAIN
66 case EAGAIN: return "EAGAIN";
67 #endif
68 #ifdef EALIGN
69 case EALIGN: return "EALIGN";
70 #endif
71 #ifdef EALREADY
72 case EALREADY: return "EALREADY";
73 #endif
74 #ifdef EBADE
75 case EBADE: return "EBADE";
76 #endif
77 #ifdef EBADF
78 case EBADF: return "EBADF";
79 #endif
80 #ifdef EBADFD
81 case EBADFD: return "EBADFD";
82 #endif
83 #ifdef EBADMSG
84 case EBADMSG: return "EBADMSG";
85 #endif
86 #ifdef EBADR
87 case EBADR: return "EBADR";
88 #endif
89 #ifdef EBADRPC
90 case EBADRPC: return "EBADRPC";
91 #endif
92 #ifdef EBADRQC
93 case EBADRQC: return "EBADRQC";
94 #endif
95 #ifdef EBADSLT
96 case EBADSLT: return "EBADSLT";
97 #endif
98 #ifdef EBFONT
99 case EBFONT: return "EBFONT";
100 #endif
101 #ifdef EBUSY
102 case EBUSY: return "EBUSY";
103 #endif
104 #ifdef ECHILD
105 case ECHILD: return "ECHILD";
106 #endif
107 #ifdef ECHRNG
108 case ECHRNG: return "ECHRNG";
109 #endif
110 #ifdef ECOMM
111 case ECOMM: return "ECOMM";
112 #endif
113 #ifdef ECONNABORTED
114 case ECONNABORTED: return "ECONNABORTED";
115 #endif
116 #ifdef ECONNREFUSED
117 case ECONNREFUSED: return "ECONNREFUSED";
118 #endif
119 #ifdef ECONNRESET
120 case ECONNRESET: return "ECONNRESET";
121 #endif
122 #if defined(EDEADLK) && (!defined(EWOULDBLOCK) || (EDEADLK != EWOULDBLOCK))
123 case EDEADLK: return "EDEADLK";
124 #endif
125 #ifndef IS_LINUX
126 #ifdef EDEADLOCK
127 case EDEADLOCK: return "EDEADLOCK";
128 #endif
129 #endif
130 #ifdef EDESTADDRREQ
131 case EDESTADDRREQ: return "EDESTADDRREQ";
132 #endif
133 #ifdef EDIRTY
134 case EDIRTY: return "EDIRTY";
135 #endif
136 #ifdef EDOM
137 case EDOM: return "EDOM";
138 #endif
139 #ifdef EDOTDOT
140 case EDOTDOT: return "EDOTDOT";
141 #endif
142 #ifdef EDQUOT
143 case EDQUOT: return "EDQUOT";
144 #endif
145 #ifdef EDUPPKG
146 case EDUPPKG: return "EDUPPKG";
147 #endif
148 #ifdef EEXIST
149 case EEXIST: return "EEXIST";
150 #endif
151 #ifdef EFAULT
152 case EFAULT: return "EFAULT";
153 #endif
154 #ifdef EFBIG
155 case EFBIG: return "EFBIG";
156 #endif
157 #ifdef EHOSTDOWN
158 case EHOSTDOWN: return "EHOSTDOWN";
159 #endif
160 #ifdef EHOSTUNREACH
161 case EHOSTUNREACH: return "EHOSTUNREACH";
162 #endif
163 #ifdef EIDRM
164 case EIDRM: return "EIDRM";
165 #endif
166 #ifdef EINIT
167 case EINIT: return "EINIT";
168 #endif
169 #ifdef EINPROGRESS
170 case EINPROGRESS: return "EINPROGRESS";
171 #endif
172 #ifdef EINTR
173 case EINTR: return "EINTR";
174 #endif
175 #ifdef EINVAL
176 case EINVAL: return "EINVAL";
177 #endif
178 #ifdef EIO
179 case EIO: return "EIO";
180 #endif
181 #ifdef EISCONN
182 case EISCONN: return "EISCONN";
183 #endif
184 #ifdef EISDIR
185 case EISDIR: return "EISDIR";
186 #endif
187 #ifdef EISNAME
188 case EISNAM: return "EISNAM";
189 #endif
190 #ifdef ELBIN
191 case ELBIN: return "ELBIN";
192 #endif
193 #ifdef EL2HLT
194 case EL2HLT: return "EL2HLT";
195 #endif
196 #ifdef EL2NSYNC
197 case EL2NSYNC: return "EL2NSYNC";
198 #endif
199 #ifdef EL3HLT
200 case EL3HLT: return "EL3HLT";
201 #endif
202 #ifdef EL3RST
203 case EL3RST: return "EL3RST";
204 #endif
205 #ifdef ELIBACC
206 case ELIBACC: return "ELIBACC";
207 #endif
208 #ifdef ELIBBAD
209 case ELIBBAD: return "ELIBBAD";
210 #endif
211 #ifdef ELIBEXEC
212 case ELIBEXEC: return "ELIBEXEC";
213 #endif
214 #ifdef ELIBMAX
215 case ELIBMAX: return "ELIBMAX";
216 #endif
217 #ifdef ELIBSCN
218 case ELIBSCN: return "ELIBSCN";
219 #endif
220 #ifdef ELNRNG
221 case ELNRNG: return "ELNRNG";
222 #endif
223 #ifdef ELOOP
224 case ELOOP: return "ELOOP";
225 #endif
226 #ifdef EMFILE
227 case EMFILE: return "EMFILE";
228 #endif
229 #ifdef EMLINK
230 case EMLINK: return "EMLINK";
231 #endif
232 #ifdef EMSGSIZE
233 case EMSGSIZE: return "EMSGSIZE";
234 #endif
235 #ifdef EMULTIHOP
236 case EMULTIHOP: return "EMULTIHOP";
237 #endif
238 #ifdef ENAMETOOLONG
239 case ENAMETOOLONG: return "ENAMETOOLONG";
240 #endif
241 #ifdef ENAVAIL
242 case ENAVAIL: return "ENAVAIL";
243 #endif
244 #ifdef ENET
245 case ENET: return "ENET";
246 #endif
247 #ifdef ENETDOWN
248 case ENETDOWN: return "ENETDOWN";
249 #endif
250 #ifdef ENETRESET
251 case ENETRESET: return "ENETRESET";
252 #endif
253 #ifdef ENETUNREACH
254 case ENETUNREACH: return "ENETUNREACH";
255 #endif
256 #ifdef ENFILE
257 case ENFILE: return "ENFILE";
258 #endif
259 #ifdef ENOANO
260 case ENOANO: return "ENOANO";
261 #endif
262 #if defined(ENOBUFS) && (!defined(ENOSR) || (ENOBUFS != ENOSR))
263 case ENOBUFS: return "ENOBUFS";
264 #endif
265 #ifdef ENOCSI
266 case ENOCSI: return "ENOCSI";
267 #endif
268 #ifdef ENODATA
269 case ENODATA: return "ENODATA";
270 #endif
271 #ifdef ENODEV
272 case ENODEV: return "ENODEV";
273 #endif
274 #ifdef ENOENT
275 case ENOENT: return "ENOENT";
276 #endif
277 #ifdef ENOEXEC
278 case ENOEXEC: return "ENOEXEC";
279 #endif
280 #ifdef ENOLCK
281 case ENOLCK: return "ENOLCK";
282 #endif
283 #ifdef ENOLINK
284 case ENOLINK: return "ENOLINK";
285 #endif
286 #ifdef ENOMEM
287 case ENOMEM: return "ENOMEM";
288 #endif
289 #ifdef ENOMSG
290 case ENOMSG: return "ENOMSG";
291 #endif
292 #ifdef ENONET
293 case ENONET: return "ENONET";
294 #endif
295 #ifdef ENOPKG
296 case ENOPKG: return "ENOPKG";
297 #endif
298 #ifdef ENOPROTOOPT
299 case ENOPROTOOPT: return "ENOPROTOOPT";
300 #endif
301 #ifdef ENOSPC
302 case ENOSPC: return "ENOSPC";
303 #endif
304 #ifdef ENOSR
305 case ENOSR: return "ENOSR";
306 #endif
307 #ifdef ENOSTR
308 case ENOSTR: return "ENOSTR";
309 #endif
310 #ifdef ENOSYM
311 case ENOSYM: return "ENOSYM";
312 #endif
313 #ifdef ENOSYS
314 case ENOSYS: return "ENOSYS";
315 #endif
316 #ifdef ENOTBLK
317 case ENOTBLK: return "ENOTBLK";
318 #endif
319 #ifdef ENOTCONN
320 case ENOTCONN: return "ENOTCONN";
321 #endif
322 #ifdef ENOTDIR
323 case ENOTDIR: return "ENOTDIR";
324 #endif
325 #if defined(ENOTEMPTY) && (!defined(EEXIST) || (ENOTEMPTY != EEXIST))
326 case ENOTEMPTY: return "ENOTEMPTY";
327 #endif
328 #ifdef ENOTNAM
329 case ENOTNAM: return "ENOTNAM";
330 #endif
331 #ifdef ENOTSOCK
332 case ENOTSOCK: return "ENOTSOCK";
333 #endif
334 #ifdef ENOTTY
335 case ENOTTY: return "ENOTTY";
336 #endif
337 #ifdef ENOTUNIQ
338 case ENOTUNIQ: return "ENOTUNIQ";
339 #endif
340 #ifndef __GNUC__
341 #ifdef ENXIO
342 case ENXIO: return "ENXIO";
343 #endif
344 #endif
345 #ifdef EOPNOTSUPP
346 case EOPNOTSUPP: return "EOPNOTSUPP";
347 #endif
348 #ifndef __GNUC__
349 #ifdef EPERM
350 case EPERM: return "EPERM";
351 #endif
352 #endif
353 #ifdef EPFNOSUPPORT
354 case EPFNOSUPPORT: return "EPFNOSUPPORT";
355 #endif
356 #ifdef EPIPE
357 case EPIPE: return "EPIPE";
358 #endif
359 #ifdef EPROCLIM
360 case EPROCLIM: return "EPROCLIM";
361 #endif
362 #ifdef EPROCUNAVAIL
363 case EPROCUNAVAIL: return "EPROCUNAVAIL";
364 #endif
365 #ifdef EPROGMISMATCH
366 case EPROGMISMATCH: return "EPROGMISMATCH";
367 #endif
368 #ifdef EPROGUNAVAIL
369 case EPROGUNAVAIL: return "EPROGUNAVAIL";
370 #endif
371 #ifdef EPROTO
372 case EPROTO: return "EPROTO";
373 #endif
374 #ifdef EPROTONOSUPPORT
375 case EPROTONOSUPPORT: return "EPROTONOSUPPORT";
376 #endif
377 #ifdef EPROTOTYPE
378 case EPROTOTYPE: return "EPROTOTYPE";
379 #endif
380 #ifdef ERANGE
381 case ERANGE: return "ERANGE";
382 #endif
383 #if defined(EREFUSED) && (!defined(ECONNREFUSED) || (EREFUSED != ECONNREFUSED))
384 case EREFUSED: return "EREFUSED";
385 #endif
386 #ifdef EREMCHG
387 case EREMCHG: return "EREMCHG";
388 #endif
389 #ifdef EREMDEV
390 case EREMDEV: return "EREMDEV";
391 #endif
392 #ifdef EREMOTE
393 case EREMOTE: return "EREMOTE";
394 #endif
395 #ifdef EREMOTEIO
396 case EREMOTEIO: return "EREMOTEIO";
397 #endif
398 #ifdef EREMOTERELEASE
399 case EREMOTERELEASE: return "EREMOTERELEASE";
400 #endif
401 #ifdef EROFS
402 case EROFS: return "EROFS";
403 #endif
404 #ifdef ERPCMISMATCH
405 case ERPCMISMATCH: return "ERPCMISMATCH";
406 #endif
407 #ifdef ERREMOTE
408 case ERREMOTE: return "ERREMOTE";
409 #endif
410 #ifdef ESHUTDOWN
411 case ESHUTDOWN: return "ESHUTDOWN";
412 #endif
413 #ifdef ESOCKTNOSUPPORT
414 case ESOCKTNOSUPPORT: return "ESOCKTNOSUPPORT";
415 #endif
416 #ifdef ESPIPE
417 case ESPIPE: return "ESPIPE";
418 #endif
419 #ifdef ESRCH
420 case ESRCH: return "ESRCH";
421 #endif
422 #ifdef ESRMNT
423 case ESRMNT: return "ESRMNT";
424 #endif
425 #ifdef ESTALE
426 case ESTALE: return "ESTALE";
427 #endif
428 #ifdef ESUCCESS
429 case ESUCCESS: return "ESUCCESS";
430 #endif
431 #ifdef ETIME
432 case ETIME: return "ETIME";
433 #endif
434 #ifdef ETIMEDOUT
435 case ETIMEDOUT: return "ETIMEDOUT";
436 #endif
437 #ifdef ETOOMANYREFS
438 case ETOOMANYREFS: return "ETOOMANYREFS";
439 #endif
440 #ifdef ETXTBSY
441 case ETXTBSY: return "ETXTBSY";
442 #endif
443 #ifdef EUCLEAN
444 case EUCLEAN: return "EUCLEAN";
445 #endif
446 #ifdef EUNATCH
447 case EUNATCH: return "EUNATCH";
448 #endif
449 #ifdef EUSERS
450 case EUSERS: return "EUSERS";
451 #endif
452 #ifdef EVERSION
453 case EVERSION: return "EVERSION";
454 #endif
455 #if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN))
456 case EWOULDBLOCK: return "EWOULDBLOCK";
457 #endif
458 #ifdef EXDEV
459 case EXDEV: return "EXDEV";
460 #endif
461 #ifdef EXFULL
462 case EXFULL: return "EXFULL";
463 #endif
464 }
465 return "unknown error";
466 }
467 \f
468 /*
469 *----------------------------------------------------------------------
470 *
471 * Tcl_SignalId --
472 *
473 * Return a textual identifier for a signal number.
474 *
475 * Results:
476 * This procedure returns a machine-readable textual identifier
477 * that corresponds to sig. The identifier is the same as the
478 * #define name in signal.h.
479 *
480 * Side effects:
481 * None.
482 *
483 *----------------------------------------------------------------------
484 */
485
486 char *
487 Tcl_SignalId(sig)
488 int sig; /* Number of signal. */
489 {
490 switch (sig) {
491 #ifdef SIGABRT
492 case SIGABRT: return "SIGABRT";
493 #endif
494 #ifdef SIGALRM
495 case SIGALRM: return "SIGALRM";
496 #endif
497 #ifdef SIGBUS
498 case SIGBUS: return "SIGBUS";
499 #endif
500 #ifdef SIGCHLD
501 case SIGCHLD: return "SIGCHLD";
502 #endif
503 #if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD))
504 case SIGCLD: return "SIGCLD";
505 #endif
506 #ifdef SIGCONT
507 case SIGCONT: return "SIGCONT";
508 #endif
509 #if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU))
510 case SIGEMT: return "SIGEMT";
511 #endif
512 #ifdef SIGFPE
513 case SIGFPE: return "SIGFPE";
514 #endif
515 #ifdef SIGHUP
516 case SIGHUP: return "SIGHUP";
517 #endif
518 #ifdef SIGILL
519 case SIGILL: return "SIGILL";
520 #endif
521 #ifdef SIGINT
522 case SIGINT: return "SIGINT";
523 #endif
524 #ifdef SIGIO
525 case SIGIO: return "SIGIO";
526 #endif
527 #if defined(SIGIOT) && (!defined(SIGABRT) || (SIGIOT != SIGABRT))
528 case SIGIOT: return "SIGIOT";
529 #endif
530 #ifdef SIGKILL
531 case SIGKILL: return "SIGKILL";
532 #endif
533 #if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT))
534 case SIGLOST: return "SIGLOST";
535 #endif
536 #ifdef SIGPIPE
537 case SIGPIPE: return "SIGPIPE";
538 #endif
539 #if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO))
540 case SIGPOLL: return "SIGPOLL";
541 #endif
542 #ifdef SIGPROF
543 case SIGPROF: return "SIGPROF";
544 #endif
545 #if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ))
546 case SIGPWR: return "SIGPWR";
547 #endif
548 #ifdef SIGQUIT
549 case SIGQUIT: return "SIGQUIT";
550 #endif
551 #ifdef SIGSEGV
552 case SIGSEGV: return "SIGSEGV";
553 #endif
554 #ifdef SIGSTOP
555 case SIGSTOP: return "SIGSTOP";
556 #endif
557 #ifdef SIGSYS
558 case SIGSYS: return "SIGSYS";
559 #endif
560 #ifdef SIGTERM
561 case SIGTERM: return "SIGTERM";
562 #endif
563 #ifdef SIGTRAP
564 case SIGTRAP: return "SIGTRAP";
565 #endif
566 #ifdef SIGTSTP
567 case SIGTSTP: return "SIGTSTP";
568 #endif
569 #ifdef SIGTTIN
570 case SIGTTIN: return "SIGTTIN";
571 #endif
572 #ifdef SIGTTOU
573 case SIGTTOU: return "SIGTTOU";
574 #endif
575 #ifdef SIGURG
576 case SIGURG: return "SIGURG";
577 #endif
578 #ifdef SIGUSR1
579 case SIGUSR1: return "SIGUSR1";
580 #endif
581 #ifdef SIGUSR2
582 case SIGUSR2: return "SIGUSR2";
583 #endif
584 #ifdef SIGVTALRM
585 case SIGVTALRM: return "SIGVTALRM";
586 #endif
587 #ifdef SIGWINCH
588 case SIGWINCH: return "SIGWINCH";
589 #endif
590 #ifdef SIGXCPU
591 case SIGXCPU: return "SIGXCPU";
592 #endif
593 #ifdef SIGXFSZ
594 case SIGXFSZ: return "SIGXFSZ";
595 #endif
596 }
597 return "unknown signal";
598 }
599 \f
600 /*
601 *----------------------------------------------------------------------
602 *
603 * Tcl_SignalMsg --
604 *
605 * Return a human-readable message describing a signal.
606 *
607 * Results:
608 * This procedure returns a string describing sig that should
609 * make sense to a human. It may not be easy for a machine
610 * to parse.
611 *
612 * Side effects:
613 * None.
614 *
615 *----------------------------------------------------------------------
616 */
617
618 char *
619 Tcl_SignalMsg(sig)
620 int sig; /* Number of signal. */
621 {
622 switch (sig) {
623 #ifdef SIGABRT
624 case SIGABRT: return "SIGABRT";
625 #endif
626 #ifdef SIGALRM
627 case SIGALRM: return "alarm clock";
628 #endif
629 #ifdef SIGBUS
630 case SIGBUS: return "bus error";
631 #endif
632 #ifdef SIGCHLD
633 case SIGCHLD: return "child status changed";
634 #endif
635 #if defined(SIGCLD) && (!defined(SIGCHLD) || (SIGCLD != SIGCHLD))
636 case SIGCLD: return "child status changed";
637 #endif
638 #ifdef SIGCONT
639 case SIGCONT: return "continue after stop";
640 #endif
641 #if defined(SIGEMT) && (!defined(SIGXCPU) || (SIGEMT != SIGXCPU))
642 case SIGEMT: return "EMT instruction";
643 #endif
644 #ifdef SIGFPE
645 case SIGFPE: return "floating-point exception";
646 #endif
647 #ifdef SIGHUP
648 case SIGHUP: return "hangup";
649 #endif
650 #ifdef SIGILL
651 case SIGILL: return "illegal instruction";
652 #endif
653 #ifdef SIGINT
654 case SIGINT: return "interrupt";
655 #endif
656 #ifdef SIGIO
657 case SIGIO: return "input/output possible on file";
658 #endif
659 #if defined(SIGIOT) && (!defined(SIGABRT) || (SIGABRT != SIGIOT))
660 case SIGIOT: return "IOT instruction";
661 #endif
662 #ifdef SIGKILL
663 case SIGKILL: return "kill signal";
664 #endif
665 #if defined(SIGLOST) && (!defined(SIGIOT) || (SIGLOST != SIGIOT))
666 case SIGLOST: return "resource lost";
667 #endif
668 #ifdef SIGPIPE
669 case SIGPIPE: return "write on pipe with no readers";
670 #endif
671 #if defined(SIGPOLL) && (!defined(SIGIO) || (SIGPOLL != SIGIO))
672 case SIGPOLL: return "input/output possible on file";
673 #endif
674 #ifdef SIGPROF
675 case SIGPROF: return "profiling alarm";
676 #endif
677 #if defined(SIGPWR) && (!defined(SIGXFSZ) || (SIGPWR != SIGXFSZ))
678 case SIGPWR: return "power-fail restart";
679 #endif
680 #ifdef SIGQUIT
681 case SIGQUIT: return "quit signal";
682 #endif
683 #ifdef SIGSEGV
684 case SIGSEGV: return "segmentation violation";
685 #endif
686 #ifdef SIGSTOP
687 case SIGSTOP: return "stop";
688 #endif
689 #ifdef SIGSYS
690 case SIGSYS: return "bad argument to system call";
691 #endif
692 #ifdef SIGTERM
693 case SIGTERM: return "software termination signal";
694 #endif
695 #ifdef SIGTRAP
696 case SIGTRAP: return "trace trap";
697 #endif
698 #ifdef SIGTSTP
699 case SIGTSTP: return "stop signal from tty";
700 #endif
701 #ifdef SIGTTIN
702 case SIGTTIN: return "background tty read";
703 #endif
704 #ifdef SIGTTOU
705 case SIGTTOU: return "background tty write";
706 #endif
707 #ifdef SIGURG
708 case SIGURG: return "urgent I/O condition";
709 #endif
710 #ifdef SIGUSR1
711 case SIGUSR1: return "user-defined signal 1";
712 #endif
713 #ifdef SIGUSR2
714 case SIGUSR2: return "user-defined signal 2";
715 #endif
716 #ifdef SIGVTALRM
717 case SIGVTALRM: return "virtual time alarm";
718 #endif
719 #ifdef SIGWINCH
720 case SIGWINCH: return "window changed";
721 #endif
722 #ifdef SIGXCPU
723 case SIGXCPU: return "exceeded CPU time limit";
724 #endif
725 #ifdef SIGXFSZ
726 case SIGXFSZ: return "exceeded file size limit";
727 #endif
728 }
729 return "unknown signal";
730 }
Impressum, Datenschutz