Mercurial > irccd
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