| 553 | } |
| 554 | |
| 555 | static void |
| 556 | parse_signal_action_params (char const *arg, bool set_default) |
| 557 | { |
| 558 | if (! arg) |
| 559 | { |
| 560 | /* Without an argument, reset all signals. |
| 561 | Some signals cannot be set to ignore or default (e.g., SIGKILL, |
| 562 | SIGSTOP on most OSes, and SIGCONT on AIX.) - so ignore errors. */ |
| 563 | for (int i = 1 ; i <= SIGNUM_BOUND; i++) |
| 564 | signals[i] = set_default ? DEFAULT_NOERR : IGNORE_NOERR; |
| 565 | return; |
| 566 | } |
| 567 | |
| 568 | char *optarg_writable = xstrdup (arg); |
| 569 | |
| 570 | char *opt_sig = strtok (optarg_writable, ","); |
| 571 | while (opt_sig) |
| 572 | { |
| 573 | int signum = operand2sig (opt_sig); |
| 574 | /* operand2sig accepts signal 0 (EXIT) - but we reject it. */ |
| 575 | if (signum == 0) |
| 576 | error (0, 0, _("%s: invalid signal"), quote (opt_sig)); |
| 577 | if (signum <= 0) |
| 578 | usage (exit_failure); |
| 579 | |
| 580 | signals[signum] = set_default ? DEFAULT : IGNORE; |
| 581 | |
| 582 | opt_sig = strtok (NULL, ","); |
| 583 | } |
| 584 | |
| 585 | free (optarg_writable); |
| 586 | } |
| 587 | |
| 588 | static void |
| 589 | reset_signal_handlers (void) |
no test coverage detected