• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <signal.h>
2 #include <string.h>
3 #include "locale_impl.h"
4 
5 #if (SIGHUP == 1) && (SIGINT == 2) && (SIGQUIT == 3) && (SIGILL == 4) \
6  && (SIGTRAP == 5) && (SIGABRT == 6) && (SIGBUS == 7) && (SIGFPE == 8) \
7  && (SIGKILL == 9) && (SIGUSR1 == 10) && (SIGSEGV == 11) && (SIGUSR2 == 12) \
8  && (SIGPIPE == 13) && (SIGALRM == 14) && (SIGTERM == 15) && (SIGSTKFLT == 16) \
9  && (SIGCHLD == 17) && (SIGCONT == 18) && (SIGSTOP == 19) && (SIGTSTP == 20) \
10  && (SIGTTIN == 21) && (SIGTTOU == 22) && (SIGURG == 23) && (SIGXCPU == 24) \
11  && (SIGXFSZ == 25) && (SIGVTALRM == 26) && (SIGPROF == 27) && (SIGWINCH == 28) \
12  && (SIGPOLL == 29) && (SIGPWR == 30) && (SIGSYS == 31)
13 
14 #define sigmap(x) x
15 
16 #else
17 
18 static const char map[] = {
19 	[SIGHUP]    = 1,
20 	[SIGINT]    = 2,
21 	[SIGQUIT]   = 3,
22 	[SIGILL]    = 4,
23 	[SIGTRAP]   = 5,
24 	[SIGABRT]   = 6,
25 	[SIGBUS]    = 7,
26 	[SIGFPE]    = 8,
27 	[SIGKILL]   = 9,
28 	[SIGUSR1]   = 10,
29 	[SIGSEGV]   = 11,
30 	[SIGUSR2]   = 12,
31 	[SIGPIPE]   = 13,
32 	[SIGALRM]   = 14,
33 	[SIGTERM]   = 15,
34 	[SIGSTKFLT] = 16,
35 	[SIGCHLD]   = 17,
36 	[SIGCONT]   = 18,
37 	[SIGSTOP]   = 19,
38 	[SIGTSTP]   = 20,
39 	[SIGTTIN]   = 21,
40 	[SIGTTOU]   = 22,
41 	[SIGURG]    = 23,
42 	[SIGXCPU]   = 24,
43 	[SIGXFSZ]   = 25,
44 	[SIGVTALRM] = 26,
45 	[SIGPROF]   = 27,
46 	[SIGWINCH]  = 28,
47 	[SIGPOLL]   = 29,
48 	[SIGPWR]    = 30,
49 	[SIGSYS]    = 31
50 };
51 
52 #define sigmap(x) ((x) >= sizeof map ? (x) : map[(x)])
53 
54 #endif
55 
56 static const char strings[] =
57 	"Unknown signal\0"
58 	"Hangup\0"
59 	"Interrupt\0"
60 	"Quit\0"
61 	"Illegal instruction\0"
62 	"Trace/breakpoint trap\0"
63 	"Aborted\0"
64 	"Bus error\0"
65 	"Arithmetic exception\0"
66 	"Killed\0"
67 	"User defined signal 1\0"
68 	"Segmentation fault\0"
69 	"User defined signal 2\0"
70 	"Broken pipe\0"
71 	"Alarm clock\0"
72 	"Terminated\0"
73 	"Stack fault\0"
74 	"Child process status\0"
75 	"Continued\0"
76 	"Stopped (signal)\0"
77 	"Stopped\0"
78 	"Stopped (tty input)\0"
79 	"Stopped (tty output)\0"
80 	"Urgent I/O condition\0"
81 	"CPU time limit exceeded\0"
82 	"File size limit exceeded\0"
83 	"Virtual timer expired\0"
84 	"Profiling timer expired\0"
85 	"Window changed\0"
86 	"I/O possible\0"
87 	"Power failure\0"
88 	"Bad system call\0"
89 	"RT32"
90 	"\0RT33\0RT34\0RT35\0RT36\0RT37\0RT38\0RT39\0RT40"
91 	"\0RT41\0RT42\0RT43\0RT44\0RT45\0RT46\0RT47\0RT48"
92 	"\0RT49\0RT50\0RT51\0RT52\0RT53\0RT54\0RT55\0RT56"
93 	"\0RT57\0RT58\0RT59\0RT60\0RT61\0RT62\0RT63\0RT64"
94 #if _NSIG > 65
95 	"\0RT65\0RT66\0RT67\0RT68\0RT69\0RT70\0RT71\0RT72"
96 	"\0RT73\0RT74\0RT75\0RT76\0RT77\0RT78\0RT79\0RT80"
97 	"\0RT81\0RT82\0RT83\0RT84\0RT85\0RT86\0RT87\0RT88"
98 	"\0RT89\0RT90\0RT91\0RT92\0RT93\0RT94\0RT95\0RT96"
99 	"\0RT97\0RT98\0RT99\0RT100\0RT101\0RT102\0RT103\0RT104"
100 	"\0RT105\0RT106\0RT107\0RT108\0RT109\0RT110\0RT111\0RT112"
101 	"\0RT113\0RT114\0RT115\0RT116\0RT117\0RT118\0RT119\0RT120"
102 	"\0RT121\0RT122\0RT123\0RT124\0RT125\0RT126\0RT127\0RT128"
103 #endif
104 	"";
105 
strsignal(int signum)106 char *strsignal(int signum)
107 {
108 	const char *s = strings;
109 
110 	signum = sigmap(signum);
111 	if (signum - 1U >= _NSIG-1) signum = 0;
112 
113 	for (; signum--; s++) for (; *s; s++);
114 
115 	return (char *)LCTRANS_CUR(s);
116 }
117