catpoint

Catpoint simple presenting software.
git clone git://r-36.net/catpoint
Log | Files | Refs | LICENSE

commit 0ebd046cc4dc1cfca5e7120fa2115354efb0a87f
parent 6649dc02de2035e52c61b3e62cc543fd6bfdb1a7
Author: Christoph Lohmann <20h@r-36.net>
Date:   Sun, 20 Dec 2020 17:20:03 +0100

Move to sigaction. Raise SIGWINCH on HUP for ncurses.

Thanks Bob for the sigaction suggestion!

Diffstat:
Makefile | 2+-
catpoint.c | 23+++++++++++++++++------
2 files changed, 18 insertions(+), 7 deletions(-)

diff --git 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 @@ -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; + + 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); - signal(SIGINT, cleanup); - signal(SIGQUIT, cleanup); - signal(SIGTERM, cleanup); + sa.sa_handler = reloadcurrentslide; + sigaction(SIGHUP, &sa, NULL); } int