changeset 1056:58df32d96d5d

irccd: try to remove transport file at exit
author David Demelier <markand@malikania.fr>
date Sun, 20 Jun 2021 15:14:12 +0200
parents 1965c1c23454
children 049b8fe77535
files irccd/main.c
diffstat 1 files changed, 18 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/irccd/main.c	Sun Jun 20 13:09:26 2021 +0200
+++ b/irccd/main.c	Sun Jun 20 15:14:12 2021 +0200
@@ -19,6 +19,7 @@
 #include <err.h>
 #include <errno.h>
 #include <poll.h>
+#include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -108,15 +109,31 @@
 	return 0;
 }
 
-static inline void
+static void
+stop(int signum)
+{
+	irc_log_info("irccd: stopping on signal %d", signum);
+	running = 0;
+}
+
+static void
 init(void)
 {
+	struct sigaction sig;
+
 	irc_bot_init();
 	irc_bot_plugin_loader_add(dl_plugin_loader_new());
 
 #if defined(IRCCD_WITH_JS)
 	irc_bot_plugin_loader_add(js_plugin_loader_new());
 #endif
+
+	sig.sa_handler = stop;
+	sig.sa_flags = SA_RESTART;
+	sigemptyset(&sig.sa_mask);
+
+	if (sigaction(SIGINT, &sig, NULL) < 0 || sigaction(SIGTERM, &sig, NULL) < 0)
+		err(1, "sigaction");
 }
 
 static void