aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2025-04-27 18:36:18 +0200
committerFurkan Sahin <furkan-dev@proton.me>2025-04-27 18:36:18 +0200
commitde78aafb6357c52056941f51bdc7b7e3cccae26c (patch)
treeaf3a5d748d7ddaff3a890d90a5e3a10b98be90dd
parentc18559fda98989574856e4aa095b0875eda674b3 (diff)
Replace signal() with sigaction()
The man page for signal(3) reads: > new applications should use sigaction() rather than signal()
-rw-r--r--sway/main.c12
-rw-r--r--swaybar/main.c5
-rw-r--r--swaynag/main.c3
3 files changed, 12 insertions, 8 deletions
diff --git a/sway/main.c b/sway/main.c
index 56f09b7e..69efd6cb 100644
--- a/sway/main.c
+++ b/sway/main.c
@@ -161,19 +161,21 @@ static void restore_signals(void) {
sigset_t set;
sigemptyset(&set);
sigprocmask(SIG_SETMASK, &set, NULL);
- signal(SIGCHLD, SIG_DFL);
- signal(SIGPIPE, SIG_DFL);
+
+ struct sigaction sa_dfl = { .sa_handler = SIG_DFL };
+ sigaction(SIGCHLD, &sa_dfl, NULL);
+ sigaction(SIGPIPE, &sa_dfl, NULL);
}
static void init_signals(void) {
wl_event_loop_add_signal(server.wl_event_loop, SIGTERM, term_signal, NULL);
wl_event_loop_add_signal(server.wl_event_loop, SIGINT, term_signal, NULL);
+ struct sigaction sa_ign = { .sa_handler = SIG_IGN };
// avoid need to reap children
- signal(SIGCHLD, SIG_IGN);
-
+ sigaction(SIGCHLD, &sa_ign, NULL);
// prevent ipc write errors from crashing sway
- signal(SIGPIPE, SIG_IGN);
+ sigaction(SIGPIPE, &sa_ign, NULL);
pthread_atfork(NULL, NULL, restore_signals);
}
diff --git a/swaybar/main.c b/swaybar/main.c
index 3dc67233..e1b0ceca 100644
--- a/swaybar/main.c
+++ b/swaybar/main.c
@@ -93,8 +93,9 @@ int main(int argc, char **argv) {
free(socket_path);
- signal(SIGINT, sig_handler);
- signal(SIGTERM, sig_handler);
+ struct sigaction sa = { .sa_handler = sig_handler };
+ sigaction(SIGINT, &sa, NULL);
+ sigaction(SIGTERM, &sa, NULL);
swaybar.running = true;
bar_run(&swaybar);
diff --git a/swaynag/main.c b/swaynag/main.c
index 54317dce..b68157ff 100644
--- a/swaynag/main.c
+++ b/swaynag/main.c
@@ -102,7 +102,8 @@ int main(int argc, char **argv) {
sway_log(SWAY_DEBUG, "\t[%s] `%s`", button->text, button->action);
}
- signal(SIGTERM, sig_handler);
+ struct sigaction sa = { .sa_handler = sig_handler };
+ sigaction(SIGTERM, &sa, NULL);
swaynag_setup(&swaynag);
swaynag_run(&swaynag);