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