diff options
author | Lennart Poettering <lennart@poettering.net> | 2021-02-25 08:56:57 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2021-02-25 11:32:28 +0100 |
commit | 9c274488a9168f8284dc99882856ca79ce2aa132 (patch) | |
tree | 82f8a85d40d464998b08e9b0a8fb1c0719fa9f2e /src/basic/signal-util.c | |
parent | 155d626bc6dbf87728bb343fd787f5daf942edf4 (diff) | |
download | systemd-9c274488a9168f8284dc99882856ca79ce2aa132.tar.gz |
signal-util: make -1 termination of ignore_signals() argument list unnecessary
Clean up ignore_signals() + default_signals() + sigaction_many() a bit:
make it unnecessary to explicitly terminate the signal list with -1.
Merge all three calls into a single function that is just called with
slightly different parameters. And eliminate an unnecessary extra
iteration in its inner for() loop.
No change in behaviour.
Diffstat (limited to 'src/basic/signal-util.c')
-rw-r--r-- | src/basic/signal-util.c | 52 |
1 files changed, 6 insertions, 46 deletions
diff --git a/src/basic/signal-util.c b/src/basic/signal-util.c index 331295c2c5..131fd3ba00 100644 --- a/src/basic/signal-util.c +++ b/src/basic/signal-util.c @@ -45,11 +45,14 @@ int reset_signal_mask(void) { return 0; } -static int sigaction_many_ap(const struct sigaction *sa, int sig, va_list ap) { - int r = 0; +int sigaction_many_internal(const struct sigaction *sa, ...) { + int sig, r = 0; + va_list ap; + + va_start(ap, sa); /* negative signal ends the list. 0 signal is skipped. */ - for (; sig >= 0; sig = va_arg(ap, int)) { + while ((sig = va_arg(ap, int)) >= 0) { if (sig == 0) continue; @@ -60,49 +63,6 @@ static int sigaction_many_ap(const struct sigaction *sa, int sig, va_list ap) { } } - return r; -} - -int sigaction_many(const struct sigaction *sa, ...) { - va_list ap; - int r; - - va_start(ap, sa); - r = sigaction_many_ap(sa, 0, ap); - va_end(ap); - - return r; -} - -int ignore_signals(int sig, ...) { - - static const struct sigaction sa = { - .sa_handler = SIG_IGN, - .sa_flags = SA_RESTART, - }; - - va_list ap; - int r; - - va_start(ap, sig); - r = sigaction_many_ap(&sa, sig, ap); - va_end(ap); - - return r; -} - -int default_signals(int sig, ...) { - - static const struct sigaction sa = { - .sa_handler = SIG_DFL, - .sa_flags = SA_RESTART, - }; - - va_list ap; - int r; - - va_start(ap, sig); - r = sigaction_many_ap(&sa, sig, ap); va_end(ap); return r; |