summaryrefslogtreecommitdiff
path: root/src/basic/signal-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-02-25 08:56:57 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2021-02-25 11:32:28 +0100
commit9c274488a9168f8284dc99882856ca79ce2aa132 (patch)
tree82f8a85d40d464998b08e9b0a8fb1c0719fa9f2e /src/basic/signal-util.c
parent155d626bc6dbf87728bb343fd787f5daf942edf4 (diff)
downloadsystemd-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.c52
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;