diff --git a/Makefile b/Makefile index 827cc71..85ba5ad 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ MANPREFIX = ${PREFIX}/share/man # use system flags. CATPOINT_CFLAGS = ${CFLAGS} -CATPOINT_CPPFLAGS = ${CPPFLAGS} +CATPOINT_CPPFLAGS = ${CPPFLAGS} -D_DEFAULT_SOURCE CATPOINT_LDFLAGS = ${LDFLAGS} -lncursesw # Gentoo #CATPOINT_LDFLAGS = ${LDFLAGS} -lncursesw -ltinfow diff --git a/catpoint.c b/catpoint.c index 5bd0abc..d105b0d 100644 --- a/catpoint.c +++ b/catpoint.c @@ -61,18 +61,29 @@ reloadcurrentslide(int sig) { loadcurrentslide(slidefiles, currentslide); - if (sig == SIGHUP) - raise(SIGWINCH); /* Redisplay slide. */ + if (sig == SIGHUP) { + /* Make ncurses redisplay slide. */ + if (raise(SIGWINCH) < 0) + err(1, "raise"); + } } void setsignal() { - signal(SIGHUP, reloadcurrentslide); + struct sigaction sa; - signal(SIGINT, cleanup); - signal(SIGQUIT, cleanup); - signal(SIGTERM, cleanup); + memset(&sa, 0, sizeof(sa)); + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + + sa.sa_handler = cleanup; + sigaction(SIGINT, &sa, NULL); + sigaction(SIGQUIT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + + sa.sa_handler = reloadcurrentslide; + sigaction(SIGHUP, &sa, NULL); } int