[pacman-dev] [PATCH 1/1] signhandler: add SIGQUIT soft_interrupt_handler

ZheNing Hu adlternative at gmail.com
Wed Apr 7 10:47:11 UTC 2021


When we downloading with pacman. If we want to
stop downloading, use `Ctrl +C` can exit normally,
and "Interrupt signal received" will be print
on the terminal. But if we accidentally use
`Ctrl + \` to exit the download, it's not quite
so perfect. The program exits with a segment
fault, the database lock file was not deleted
in time. The next time we use pacman downloading,
the error will appear.

So we can add signal handler with SIGQUIT, just
like we did with SIGINT and SIGHUP. This way the
user doesn't have to delete lock file manually.

Signed-off-by: ZheNing Hu <adlternative at gmail.com>
---
 src/pacman/sighandler.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/pacman/sighandler.c b/src/pacman/sighandler.c
index ff54dce8..9fdbf917 100644
--- a/src/pacman/sighandler.c
+++ b/src/pacman/sighandler.c
@@ -81,15 +81,18 @@ void install_soft_interrupt_handler(void)
 	new_action.sa_flags = SA_RESTART;
 	sigemptyset(&new_action.sa_mask);
 	sigaddset(&new_action.sa_mask, SIGINT);
+	sigaddset(&new_action.sa_mask, SIGQUIT);
 	sigaddset(&new_action.sa_mask, SIGHUP);
 
 	sigaction(SIGINT, &new_action, NULL);
+	sigaction(SIGQUIT, &new_action, NULL);
 	sigaction(SIGHUP, &new_action, NULL);
 }
 
 void remove_soft_interrupt_handler(void)
 {
 	_reset_handler(SIGINT);
+	_reset_handler(SIGQUIT);
 	_reset_handler(SIGHUP);
 }
 
-- 
2.31.0


More information about the pacman-dev mailing list