| 1 | #include "signal.h"
|
| 2 |
|
| 3 | #include <signal.h> // SIG*
|
| 4 | #include <stdio.h> // printf
|
| 5 |
|
| 6 | namespace signal_def {
|
| 7 |
|
| 8 |
|
| 9 | void PrintSignals() {
|
| 10 | #ifdef SIGHUP
|
| 11 | printf("%2d SIGHUP\n", SIGHUP);
|
| 12 | #endif
|
| 13 | #ifdef SIGINT
|
| 14 | printf("%2d SIGINT\n", SIGINT);
|
| 15 | #endif
|
| 16 | #ifdef SIGQUIT
|
| 17 | printf("%2d SIGQUIT\n", SIGQUIT);
|
| 18 | #endif
|
| 19 | #ifdef SIGILL
|
| 20 | printf("%2d SIGILL\n", SIGILL);
|
| 21 | #endif
|
| 22 | #ifdef SIGTRAP
|
| 23 | printf("%2d SIGTRAP\n", SIGTRAP);
|
| 24 | #endif
|
| 25 | #ifdef SIGABRT
|
| 26 | printf("%2d SIGABRT\n", SIGABRT);
|
| 27 | #endif
|
| 28 | #ifdef SIGBUS
|
| 29 | printf("%2d SIGBUS\n", SIGBUS);
|
| 30 | #endif
|
| 31 | #ifdef SIGFPE
|
| 32 | printf("%2d SIGFPE\n", SIGFPE);
|
| 33 | #endif
|
| 34 | #ifdef SIGUSR1
|
| 35 | printf("%2d SIGUSR1\n", SIGUSR1);
|
| 36 | #endif
|
| 37 | #ifdef SIGSEGV
|
| 38 | printf("%2d SIGSEGV\n", SIGSEGV);
|
| 39 | #endif
|
| 40 | #ifdef SIGUSR2
|
| 41 | printf("%2d SIGUSR2\n", SIGUSR2);
|
| 42 | #endif
|
| 43 | #ifdef SIGPIPE
|
| 44 | printf("%2d SIGPIPE\n", SIGPIPE);
|
| 45 | #endif
|
| 46 | #ifdef SIGALRM
|
| 47 | printf("%2d SIGALRM\n", SIGALRM);
|
| 48 | #endif
|
| 49 | #ifdef SIGTERM
|
| 50 | printf("%2d SIGTERM\n", SIGTERM);
|
| 51 | #endif
|
| 52 | #ifdef SIGCHLD
|
| 53 | printf("%2d SIGCHLD\n", SIGCHLD);
|
| 54 | #endif
|
| 55 | #ifdef SIGCONT
|
| 56 | printf("%2d SIGCONT\n", SIGCONT);
|
| 57 | #endif
|
| 58 | #ifdef SIGSTOP
|
| 59 | printf("%2d SIGSTOP\n", SIGSTOP);
|
| 60 | #endif
|
| 61 | #ifdef SIGTSTP
|
| 62 | printf("%2d SIGTSTP\n", SIGTSTP);
|
| 63 | #endif
|
| 64 | #ifdef SIGTTIN
|
| 65 | printf("%2d SIGTTIN\n", SIGTTIN);
|
| 66 | #endif
|
| 67 | #ifdef SIGTTOU
|
| 68 | printf("%2d SIGTTOU\n", SIGTTOU);
|
| 69 | #endif
|
| 70 | #ifdef SIGURG
|
| 71 | printf("%2d SIGURG\n", SIGURG);
|
| 72 | #endif
|
| 73 | #ifdef SIGXCPU
|
| 74 | printf("%2d SIGXCPU\n", SIGXCPU);
|
| 75 | #endif
|
| 76 | #ifdef SIGXFSZ
|
| 77 | printf("%2d SIGXFSZ\n", SIGXFSZ);
|
| 78 | #endif
|
| 79 | #ifdef SIGVTALRM
|
| 80 | printf("%2d SIGVTALRM\n", SIGVTALRM);
|
| 81 | #endif
|
| 82 | #ifdef SIGWINCH
|
| 83 | printf("%2d SIGWINCH\n", SIGWINCH);
|
| 84 | #endif
|
| 85 | #ifdef SIGSYS
|
| 86 | printf("%2d SIGSYS\n", SIGSYS);
|
| 87 | #endif
|
| 88 | }
|
| 89 |
|
| 90 | int GetNumber(BigStr* sig_spec) {
|
| 91 | int length = len(sig_spec);
|
| 92 | if (length == 0) {
|
| 93 | return NO_SIGNAL;
|
| 94 | }
|
| 95 |
|
| 96 | const char* data = sig_spec->data_;
|
| 97 |
|
| 98 | if ((length == 6 && memcmp("SIGHUP", data, 6) == 0) ||
|
| 99 | (length == 3 && memcmp("HUP", data, 3) == 0)) {
|
| 100 | return SIGHUP;
|
| 101 | }
|
| 102 | if ((length == 6 && memcmp("SIGINT", data, 6) == 0) ||
|
| 103 | (length == 3 && memcmp("INT", data, 3) == 0)) {
|
| 104 | return SIGINT;
|
| 105 | }
|
| 106 | if ((length == 7 && memcmp("SIGQUIT", data, 7) == 0) ||
|
| 107 | (length == 4 && memcmp("QUIT", data, 4) == 0)) {
|
| 108 | return SIGQUIT;
|
| 109 | }
|
| 110 | if ((length == 6 && memcmp("SIGILL", data, 6) == 0) ||
|
| 111 | (length == 3 && memcmp("ILL", data, 3) == 0)) {
|
| 112 | return SIGILL;
|
| 113 | }
|
| 114 | if ((length == 7 && memcmp("SIGTRAP", data, 7) == 0) ||
|
| 115 | (length == 4 && memcmp("TRAP", data, 4) == 0)) {
|
| 116 | return SIGTRAP;
|
| 117 | }
|
| 118 | if ((length == 7 && memcmp("SIGABRT", data, 7) == 0) ||
|
| 119 | (length == 4 && memcmp("ABRT", data, 4) == 0)) {
|
| 120 | return SIGABRT;
|
| 121 | }
|
| 122 | if ((length == 6 && memcmp("SIGBUS", data, 6) == 0) ||
|
| 123 | (length == 3 && memcmp("BUS", data, 3) == 0)) {
|
| 124 | return SIGBUS;
|
| 125 | }
|
| 126 | if ((length == 6 && memcmp("SIGFPE", data, 6) == 0) ||
|
| 127 | (length == 3 && memcmp("FPE", data, 3) == 0)) {
|
| 128 | return SIGFPE;
|
| 129 | }
|
| 130 | if ((length == 7 && memcmp("SIGUSR1", data, 7) == 0) ||
|
| 131 | (length == 4 && memcmp("USR1", data, 4) == 0)) {
|
| 132 | return SIGUSR1;
|
| 133 | }
|
| 134 | if ((length == 7 && memcmp("SIGSEGV", data, 7) == 0) ||
|
| 135 | (length == 4 && memcmp("SEGV", data, 4) == 0)) {
|
| 136 | return SIGSEGV;
|
| 137 | }
|
| 138 | if ((length == 7 && memcmp("SIGUSR2", data, 7) == 0) ||
|
| 139 | (length == 4 && memcmp("USR2", data, 4) == 0)) {
|
| 140 | return SIGUSR2;
|
| 141 | }
|
| 142 | if ((length == 7 && memcmp("SIGPIPE", data, 7) == 0) ||
|
| 143 | (length == 4 && memcmp("PIPE", data, 4) == 0)) {
|
| 144 | return SIGPIPE;
|
| 145 | }
|
| 146 | if ((length == 7 && memcmp("SIGALRM", data, 7) == 0) ||
|
| 147 | (length == 4 && memcmp("ALRM", data, 4) == 0)) {
|
| 148 | return SIGALRM;
|
| 149 | }
|
| 150 | if ((length == 7 && memcmp("SIGTERM", data, 7) == 0) ||
|
| 151 | (length == 4 && memcmp("TERM", data, 4) == 0)) {
|
| 152 | return SIGTERM;
|
| 153 | }
|
| 154 | if ((length == 7 && memcmp("SIGCHLD", data, 7) == 0) ||
|
| 155 | (length == 4 && memcmp("CHLD", data, 4) == 0)) {
|
| 156 | return SIGCHLD;
|
| 157 | }
|
| 158 | if ((length == 7 && memcmp("SIGCONT", data, 7) == 0) ||
|
| 159 | (length == 4 && memcmp("CONT", data, 4) == 0)) {
|
| 160 | return SIGCONT;
|
| 161 | }
|
| 162 | if ((length == 7 && memcmp("SIGSTOP", data, 7) == 0) ||
|
| 163 | (length == 4 && memcmp("STOP", data, 4) == 0)) {
|
| 164 | return SIGSTOP;
|
| 165 | }
|
| 166 | if ((length == 7 && memcmp("SIGTSTP", data, 7) == 0) ||
|
| 167 | (length == 4 && memcmp("TSTP", data, 4) == 0)) {
|
| 168 | return SIGTSTP;
|
| 169 | }
|
| 170 | if ((length == 7 && memcmp("SIGTTIN", data, 7) == 0) ||
|
| 171 | (length == 4 && memcmp("TTIN", data, 4) == 0)) {
|
| 172 | return SIGTTIN;
|
| 173 | }
|
| 174 | if ((length == 7 && memcmp("SIGTTOU", data, 7) == 0) ||
|
| 175 | (length == 4 && memcmp("TTOU", data, 4) == 0)) {
|
| 176 | return SIGTTOU;
|
| 177 | }
|
| 178 | if ((length == 6 && memcmp("SIGURG", data, 6) == 0) ||
|
| 179 | (length == 3 && memcmp("URG", data, 3) == 0)) {
|
| 180 | return SIGURG;
|
| 181 | }
|
| 182 | if ((length == 7 && memcmp("SIGXCPU", data, 7) == 0) ||
|
| 183 | (length == 4 && memcmp("XCPU", data, 4) == 0)) {
|
| 184 | return SIGXCPU;
|
| 185 | }
|
| 186 | if ((length == 7 && memcmp("SIGXFSZ", data, 7) == 0) ||
|
| 187 | (length == 4 && memcmp("XFSZ", data, 4) == 0)) {
|
| 188 | return SIGXFSZ;
|
| 189 | }
|
| 190 | if ((length == 9 && memcmp("SIGVTALRM", data, 9) == 0) ||
|
| 191 | (length == 6 && memcmp("VTALRM", data, 6) == 0)) {
|
| 192 | return SIGVTALRM;
|
| 193 | }
|
| 194 | if ((length == 8 && memcmp("SIGWINCH", data, 8) == 0) ||
|
| 195 | (length == 5 && memcmp("WINCH", data, 5) == 0)) {
|
| 196 | return SIGWINCH;
|
| 197 | }
|
| 198 | if ((length == 6 && memcmp("SIGSYS", data, 6) == 0) ||
|
| 199 | (length == 3 && memcmp("SYS", data, 3) == 0)) {
|
| 200 | return SIGSYS;
|
| 201 | }
|
| 202 | return NO_SIGNAL;
|
| 203 | }
|
| 204 |
|
| 205 | } // namespace signal_def
|