Lines Matching refs:signum

85 static int xsigaction(int signum, const struct sigaction *restrict newaction,
87 static void set_special_handler(int signum, void (*handler)(int signum));
89 int signum, void (*handler)(int signum), bool leave);
90 static void sig_handler(int signum);
92 static void set_trap(int signum, const wchar_t *command);
93 static bool is_originally_ignored(int signum);
120 const wchar_t *get_signal_name(int signum) in get_signal_name() argument
122 if (signum == 0) in get_signal_name()
126 if (sigrtmin <= signum && signum <= sigrtmax) { in get_signal_name()
128 if (signum == sigrtmin) in get_signal_name()
130 if (signum == sigrtmax) in get_signal_name()
132 int range = sigrtmax - sigrtmin, diff = signum - sigrtmin; in get_signal_name()
137 name = malloc_wprintf(L"RTMAX-%d", sigrtmax - signum); in get_signal_name()
142 if (s->no == signum) in get_signal_name()
201 int signum; in parse_signal_number() local
204 if (!xwcstoi(number, 10, &signum) || signum < 0) in parse_signal_number()
208 if (signum == 0) in parse_signal_number()
211 if (SIGRTMIN <= signum && signum <= SIGRTMAX) in parse_signal_number()
212 return signum; in parse_signal_number()
215 if (s->no == signum) in parse_signal_number()
216 return signum; in parse_signal_number()
405 int xsigaction(int signum, const struct sigaction *restrict newaction, in xsigaction() argument
411 if (sigaction(signum, newaction, &oldaction2) < 0) in xsigaction()
417 if (sigismember(&originally_defaulted_signals, signum) || in xsigaction()
418 sigismember(&originally_ignored_signals, signum)) in xsigaction()
422 sigaddset(&originally_defaulted_signals, signum); in xsigaction()
424 sigaddset(&originally_ignored_signals, signum); in xsigaction()
438 void set_special_handler(int signum, void (*handler)(int signum)) in set_special_handler() argument
440 if (!is_phantom && sigismember(&trapped_signals, signum)) in set_special_handler()
448 if (xsigaction(signum, &action, &oldaction) >= 0) in set_special_handler()
450 sigaddset(&officially_ignored_signals, signum); in set_special_handler()
458 void reset_special_handler(int signum, void (*handler)(int signum), bool leave) in reset_special_handler() argument
460 if (sigismember(&trapped_signals, signum)) { in reset_special_handler()
461 assert(!sigismember(&officially_ignored_signals, signum)); in reset_special_handler()
466 if (sigismember(&officially_ignored_signals, signum)) in reset_special_handler()
477 sigaction(signum, &action, NULL); in reset_special_handler()
541 void sig_handler(int signum) in sig_handler() argument
546 if (sigrtmin <= signum && signum <= SIGRTMAX) { in sig_handler()
547 size_t index = signum - sigrtmin; in sig_handler()
553 signal_received[sigindex(signum)] = true; in sig_handler()
555 switch (signum) { in sig_handler()
746 int signum = 0; in handle_traps() local
767 signum = handled_signal = s->no; in handle_traps()
791 signum = handled_signal = sigrtmin + i; in handle_traps()
813 return signum; in handle_traps()
840 void set_trap(int signum, const wchar_t *command) in set_trap() argument
842 if (signum == SIGKILL || signum == SIGSTOP) { in set_trap()
844 signum == SIGKILL ? L"KILL" : L"STOP"); in set_trap()
852 if (sigrtmin <= signum && signum <= SIGRTMAX) { in set_trap()
853 size_t index = signum - sigrtmin; in set_trap()
859 get_signal_name(signum)); in set_trap()
865 size_t index = sigindex(signum); in set_trap()
870 if (!is_interactive && *commandp == NULL && is_originally_ignored(signum)) { in set_trap()
874 xerror(0, Ngt("SIG%ls cannot be reset"), get_signal_name(signum)); in set_trap()
890 if (signum == 0) in set_trap()
902 sigaddset(&officially_ignored_signals, signum); in set_trap()
904 sigdelset(&officially_ignored_signals, signum); in set_trap()
907 sigdelset(&official_sigmask, signum); in set_trap()
908 sigaddset(&trapped_signals, signum); in set_trap()
909 sigdelset(&accept_sigmask, signum); in set_trap()
911 sigdelset(&trapped_signals, signum); in set_trap()
914 switch (signum) { in set_trap()
949 if (xsigaction(signum, &action, NULL) < 0) { in set_trap()
951 xerror(saveerrno, "sigaction(SIG%ls)", get_signal_name(signum)); in set_trap()
957 bool is_originally_ignored(int signum) in is_originally_ignored() argument
961 if (signum == 0) in is_originally_ignored()
964 if (sigismember(&originally_ignored_signals, signum)) in is_originally_ignored()
966 if (sigismember(&originally_defaulted_signals, signum)) in is_originally_ignored()
969 xsigaction(signum, NULL, NULL); in is_originally_ignored()
970 return sigismember(&originally_ignored_signals, signum); in is_originally_ignored()
1158 static bool print_signal(int signum, const wchar_t *name, bool verbose)
1160 static void signal_job(int signum, const wchar_t *jobname)
1222 int signum = get_signal_number_toupper(name); in trap_builtin() local
1223 if (signum < 0) { in trap_builtin()
1229 if (sigrtmin <= signum && signum <= sigrtmax) { in trap_builtin()
1230 int index = signum - sigrtmin; in trap_builtin()
1237 if (!print_trap(name, trap_command[sigindex(signum)])) in trap_builtin()
1263 int signum = get_signal_number_toupper(name); in trap_builtin() local
1264 if (signum < 0) { in trap_builtin()
1268 set_trap(signum, command); in trap_builtin()
1310 int signum = SIGTERM; in kill_builtin() local
1341 signum = get_signal_number_toupper(arg); in kill_builtin()
1342 if (signum < 0 || (signum == 0 && !iswdigit(arg[0]))) { in kill_builtin()
1395 int signum; in kill_builtin() local
1398 if (xwcstoi(ARGV(optind), 10, &signum) && signum >= 0) { in kill_builtin()
1399 if (signum >= TERMSIGOFFSET) in kill_builtin()
1400 signum -= TERMSIGOFFSET; in kill_builtin()
1401 else if (signum >= (TERMSIGOFFSET & 0xFF)) in kill_builtin()
1402 signum -= (TERMSIGOFFSET & 0xFF); in kill_builtin()
1404 signum = get_signal_number_toupper(ARGV(optind)); in kill_builtin()
1406 signame = get_signal_name(signum); in kill_builtin()
1407 if (signum <= 0 || signame[0] == L'\0') { in kill_builtin()
1412 if (!print_signal(signum, signame, verbose)) in kill_builtin()
1424 signal_job(signum, proc); in kill_builtin()
1433 if (kill((pid_t) pid, signum) < 0) { in kill_builtin()
1447 bool print_signal(int signum, const wchar_t *name, bool verbose) in print_signal() argument
1453 const char *sigdesc = strsignal(signum); in print_signal()
1455 return xprintf("%d\t%-10ls %s\n", signum, name, sigdesc); in print_signal()
1458 return xprintf("%d\t%-10ls\n", signum, name); in print_signal()
1465 void signal_job(int signum, const wchar_t *jobspec) in signal_job() argument
1471 if (kill(-jobpgid, signum) < 0) in signal_job()