util: handle errors in setting of signal handler as fatal

This commit is contained in:
Miroslav Lichvar 2018-08-01 11:59:00 +02:00
parent a8167b7959
commit 5bb2bf9361
2 changed files with 7 additions and 9 deletions

14
util.c
View file

@ -995,7 +995,7 @@ UTI_FdSetCloexec(int fd)
/* ================================================== */
int
void
UTI_SetQuitSignalsHandler(void (*handler)(int))
{
struct sigaction sa;
@ -1003,26 +1003,24 @@ UTI_SetQuitSignalsHandler(void (*handler)(int))
sa.sa_handler = handler;
sa.sa_flags = SA_RESTART;
if (sigemptyset(&sa.sa_mask) < 0)
return 0;
LOG_FATAL("sigemptyset() failed");
#ifdef SIGINT
if (sigaction(SIGINT, &sa, NULL) < 0)
return 0;
LOG_FATAL("sigaction(%d) failed", SIGINT);
#endif
#ifdef SIGTERM
if (sigaction(SIGTERM, &sa, NULL) < 0)
return 0;
LOG_FATAL("sigaction(%d) failed", SIGTERM);
#endif
#ifdef SIGQUIT
if (sigaction(SIGQUIT, &sa, NULL) < 0)
return 0;
LOG_FATAL("sigaction(%d) failed", SIGQUIT);
#endif
#ifdef SIGHUP
if (sigaction(SIGHUP, &sa, NULL) < 0)
return 0;
LOG_FATAL("sigaction(%d) failed", SIGHUP);
#endif
return 1;
}
/* ================================================== */

2
util.h
View file

@ -161,7 +161,7 @@ extern Float UTI_FloatHostToNetwork(double x);
/* Set FD_CLOEXEC on descriptor */
extern int UTI_FdSetCloexec(int fd);
extern int UTI_SetQuitSignalsHandler(void (*handler)(int));
extern void UTI_SetQuitSignalsHandler(void (*handler)(int));
/* Get directory (as an allocated string) for a path */
extern char *UTI_PathToDir(const char *path);