From d17fe40b3d6adcb31ac292da6c5f28f4bca9ae33 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Mon, 20 Apr 2026 23:39:42 +0200 Subject: [PATCH] Replace deprecated siginterrupt usage with sigaction --- src/ncpserv.c | 21 +++++++++++++++++---- src/nwbind.c | 18 ++++++++++++------ 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/ncpserv.c b/src/ncpserv.c index 3ad8d61..503eb64 100644 --- a/src/ncpserv.c +++ b/src/ncpserv.c @@ -17,6 +17,7 @@ */ #include "net.h" +#include #include #if !CALL_NWCONN_OVER_SOCKET #include @@ -464,14 +465,26 @@ static void sig_child(int isig) static void set_sig(void) { - signal(SIGQUIT, sig_quit); + struct sigaction sa_quit; + struct sigaction sa_child; + + memset(&sa_quit, 0, sizeof(sa_quit)); + sa_quit.sa_handler = sig_quit; + sigemptyset(&sa_quit.sa_mask); + sa_quit.sa_flags = 0; /* no SA_RESTART */ + + memset(&sa_child, 0, sizeof(sa_child)); + sa_child.sa_handler = sig_child; + sigemptyset(&sa_child.sa_mask); + sa_child.sa_flags = 0; /* no SA_RESTART */ + + sigaction(SIGQUIT, &sa_quit, NULL); + sigaction(SIGCHLD, &sa_child, NULL); + signal(SIGTERM, SIG_IGN); signal(SIGINT, SIG_IGN); signal(SIGPIPE, SIG_IGN); - signal(SIGCHLD, sig_child); signal(SIGHUP, SIG_IGN); - siginterrupt(SIGQUIT, 1); - siginterrupt(SIGCHLD, 1); } static int xread(IPX_DATA *ipxd, int *offs, uint8 *data, int size) diff --git a/src/nwbind.c b/src/nwbind.c index d7f6bdc..c08e90e 100644 --- a/src/nwbind.c +++ b/src/nwbind.c @@ -33,6 +33,7 @@ #include "net.h" +#include #include #include "nwdbm.h" #include "unxlog.h" @@ -2091,15 +2092,20 @@ static void sig_handler(int isig) static void set_sig(void) { - signal(SIGQUIT, sig_handler); - signal(SIGHUP, sig_handler); - signal(SIGUSR2, sig_handler); + struct sigaction sa; + + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = sig_handler; + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; /* no SA_RESTART */ + + sigaction(SIGQUIT, &sa, NULL); + sigaction(SIGHUP, &sa, NULL); + sigaction(SIGUSR2, &sa, NULL); + signal(SIGTERM, SIG_IGN); signal(SIGINT, SIG_IGN); signal(SIGPIPE, SIG_IGN); - siginterrupt(SIGQUIT, 1); - siginterrupt(SIGHUP, 1); - siginterrupt(SIGUSR2, 1); } int main(int argc, char *argv[])