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