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