iremove BSD functions err and errx with die and cleanup more graceful there - catpoint - Catpoint simple presenting software. Err bitreich.org 70
hgit clone git://bitreich.org/catpoint/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/catpoint/ URL:git://bitreich.org/catpoint/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/catpoint/ bitreich.org 70
1Log /scm/catpoint/log.gph bitreich.org 70
1Files /scm/catpoint/files.gph bitreich.org 70
1Refs /scm/catpoint/refs.gph bitreich.org 70
1Tags /scm/catpoint/tag bitreich.org 70
1README /scm/catpoint/file/README.md.gph bitreich.org 70
1LICENSE /scm/catpoint/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 2f7d19fadd703f32a7a96555cea17c29ceb846e3 /scm/catpoint/commit/2f7d19fadd703f32a7a96555cea17c29ceb846e3.gph bitreich.org 70
1parent 4c69bd0f199e1b018ff9a8bae42bc2ddaaa0d863 /scm/catpoint/commit/4c69bd0f199e1b018ff9a8bae42bc2ddaaa0d863.gph bitreich.org 70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org> URL:mailto:hiltjo@codemadness.org bitreich.org 70
iDate: Sat, 29 May 2021 17:57:41 +0200 Err bitreich.org 70
i Err bitreich.org 70
iremove BSD functions err and errx with die and cleanup more graceful there Err bitreich.org 70
i Err bitreich.org 70
iSigned-off-by: Christoph Lohmann <20h@r-36.net> Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M catpoint.c | 47 +++++++++++++++++++++++++------ Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 38 insertions(+), 9 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/catpoint.c b/catpoint.c /scm/catpoint/file/catpoint.c.gph bitreich.org 70
i@@ -4,16 +4,19 @@ Err bitreich.org 70
i #include <sys/stat.h> Err bitreich.org 70
i #include <sys/types.h> Err bitreich.org 70
i Err bitreich.org 70
i-#include <err.h> Err bitreich.org 70
i #include <curses.h> Err bitreich.org 70
i+#include <errno.h> Err bitreich.org 70
i #include <fcntl.h> Err bitreich.org 70
i #include <locale.h> Err bitreich.org 70
i #include <signal.h> Err bitreich.org 70
i+#include <stdarg.h> Err bitreich.org 70
i #include <stdio.h> Err bitreich.org 70
i #include <stdlib.h> Err bitreich.org 70
i #include <string.h> Err bitreich.org 70
i #include <unistd.h> Err bitreich.org 70
i Err bitreich.org 70
i+void die(const char *, ...); Err bitreich.org 70
i+ Err bitreich.org 70
i char *currentslidep, **slidefiles; /* the slides */ Err bitreich.org 70
i int nslides, currentslide, currentslidelen; Err bitreich.org 70
i Err bitreich.org 70
i@@ -26,7 +29,7 @@ unloadcurrentslide(void) Err bitreich.org 70
i return; Err bitreich.org 70
i Err bitreich.org 70
i if (munmap(currentslidep, currentslidelen) < 0) Err bitreich.org 70
i- err(1, "munmap: %s", slidefiles[currentslide]); Err bitreich.org 70
i+ die("munmap: %s", slidefiles[currentslide]); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i@@ -37,6 +40,28 @@ cleanup(void) Err bitreich.org 70
i endwin(); /* restore terminal */ Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+/* print to stderr, call cleanup() and _exit(). */ Err bitreich.org 70
i+void Err bitreich.org 70
i+die(const char *fmt, ...) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ va_list ap; Err bitreich.org 70
i+ int saved_errno; Err bitreich.org 70
i+ Err bitreich.org 70
i+ saved_errno = errno; Err bitreich.org 70
i+ cleanup(); Err bitreich.org 70
i+ Err bitreich.org 70
i+ va_start(ap, fmt); Err bitreich.org 70
i+ vfprintf(stderr, fmt, ap); Err bitreich.org 70
i+ va_end(ap); Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (saved_errno) Err bitreich.org 70
i+ fprintf(stderr, ": %s", strerror(saved_errno)); Err bitreich.org 70
i+ fflush(stderr); Err bitreich.org 70
i+ write(2, "\n", 1); Err bitreich.org 70
i+ Err bitreich.org 70
i+ _exit(1); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i void Err bitreich.org 70
i quit(int sig) Err bitreich.org 70
i { Err bitreich.org 70
i@@ -54,12 +79,14 @@ loadcurrentslide(char **argv, int slide) Err bitreich.org 70
i Err bitreich.org 70
i fd = open(slidefiles[slide], O_RDONLY, 0); Err bitreich.org 70
i if (fd < 0) Err bitreich.org 70
i- err(1, "open: %s", slidefiles[slide]); Err bitreich.org 70
i+ die("open: %s", slidefiles[slide]); Err bitreich.org 70
i if (fstat(fd, &statbuf) < 0) Err bitreich.org 70
i- err(1, "fstat: %s", slidefiles[slide]); Err bitreich.org 70
i+ die("fstat: %s", slidefiles[slide]); Err bitreich.org 70
i currentslidep = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0); Err bitreich.org 70
i- if (currentslidep == MAP_FAILED) Err bitreich.org 70
i- err(1, "mmap: %s", slidefiles[slide]); Err bitreich.org 70
i+ if (currentslidep == MAP_FAILED) { Err bitreich.org 70
i+ currentslidep = NULL; Err bitreich.org 70
i+ die("mmap: %s", slidefiles[slide]); Err bitreich.org 70
i+ } Err bitreich.org 70
i currentslidelen = statbuf.st_size; Err bitreich.org 70
i close(fd); Err bitreich.org 70
i } Err bitreich.org 70
i@@ -75,7 +102,7 @@ reloadcurrentslide(int sig) Err bitreich.org 70
i if (sig == SIGHUP) { Err bitreich.org 70
i /* Make ncurses redisplay slide. */ Err bitreich.org 70
i if (raise(SIGWINCH) < 0) Err bitreich.org 70
i- err(1, "raise"); Err bitreich.org 70
i+ die("raise"); Err bitreich.org 70
i } Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i@@ -102,8 +129,10 @@ main(int argc, char *argv[]) Err bitreich.org 70
i { Err bitreich.org 70
i int c; Err bitreich.org 70
i Err bitreich.org 70
i- if (argc == 1) Err bitreich.org 70
i- errx(1, "usage: %s file ...", argv[0]); Err bitreich.org 70
i+ if (argc == 1) { Err bitreich.org 70
i+ errno = 0; Err bitreich.org 70
i+ die("usage: %s file ...", argv[0]); Err bitreich.org 70
i+ } Err bitreich.org 70
i slidefiles = ++argv; Err bitreich.org 70
i nslides = --argc; Err bitreich.org 70
i Err bitreich.org 70
.
Response:
text/plain