diff --git a/main.c b/main.c index 393b12e..c3c5574 100644 --- a/main.c +++ b/main.c @@ -51,6 +51,7 @@ #include "nameserv.h" #include "smooth.h" #include "tempcomp.h" +#include "util.h" /* ================================================== */ @@ -522,12 +523,7 @@ int main post_init_rtc_hook(NULL); } - signal(SIGINT, signal_cleanup); - signal(SIGTERM, signal_cleanup); -#if !defined(WINNT) - signal(SIGQUIT, signal_cleanup); - signal(SIGHUP, signal_cleanup); -#endif /* WINNT */ + UTI_SetQuitSignalsHandler(signal_cleanup); /* The program normally runs under control of the main loop in the scheduler. */ diff --git a/util.c b/util.c index 2f2c462..126c74f 100644 --- a/util.c +++ b/util.c @@ -839,3 +839,17 @@ UTI_DecodePasswordFromText(char *key) return len; } } + +/* ================================================== */ + +int +UTI_SetQuitSignalsHandler(void (*handler)(int)) +{ + signal(SIGINT, handler); + signal(SIGTERM, handler); +#if !defined(WINNT) + signal(SIGQUIT, handler); + signal(SIGHUP, handler); +#endif /* WINNT */ + return 1; +} diff --git a/util.h b/util.h index cb084ed..68afb78 100644 --- a/util.h +++ b/util.h @@ -127,4 +127,6 @@ extern int UTI_CheckNTPAuth(int hash_id, const unsigned char *key, int key_len, /* Decode password encoded in ASCII or HEX */ extern int UTI_DecodePasswordFromText(char *key); +extern int UTI_SetQuitSignalsHandler(void (*handler)(int)); + #endif /* GOT_UTIL_H */