3 #if (SIGHUP == 1) && (SIGINT == 2) && (SIGQUIT == 3) && (SIGILL == 4) \
4 && (SIGTRAP == 5) && (SIGABRT == 6) && (SIGBUS == 7) && (SIGFPE == 8) \
5 && (SIGKILL == 9) && (SIGUSR1 == 10) && (SIGSEGV == 11) && (SIGUSR2 == 12) \
6 && (SIGPIPE == 13) && (SIGALRM == 14) && (SIGTERM == 15) && (SIGSTKFLT == 16) \
7 && (SIGCHLD == 17) && (SIGCONT == 18) && (SIGSTOP == 19) && (SIGTSTP == 20) \
8 && (SIGTTIN == 21) && (SIGTTOU == 22) && (SIGURG == 23) && (SIGXCPU == 24) \
9 && (SIGXFSZ == 25) && (SIGVTALRM == 26) && (SIGPROF == 27) && (SIGWINCH == 28) \
10 && (SIGPOLL == 29) && (SIGPWR == 30) && (SIGSYS == 31)
16 static const char map[] = {
50 #define sigmap(x) ((unsigned)(x) > sizeof map ? 0 : map[(unsigned)(x)])
54 static const char strings[] =
59 "Illegal instruction\0"
60 "Trace/breakpoint trap\0"
63 "Floating point exception\0"
65 "User defined signal 1\0"
66 "Segmentation fault\0"
67 "User defined signal 2\0"
76 "Stopped (tty input)\0"
77 "Stopped (tty output)\0"
78 "Urgent I/O condition\0"
79 "CPU time limit exceeded\0"
80 "File size limit exceeded\0"
81 "Virtual timer expired\0"
82 "Profiling timer expired\0"
88 char *strsignal(int signum)
90 char *s = (char *)strings;
92 signum = sigmap(signum);
93 if ((unsigned)signum - 1 > 31) signum = 0;
95 for (; signum--; s++) for (; *s; s++);