SMOLNET PORTAL home about changes
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
Original URLgopher://bitreich.org/0/scm/catpoint/commit/2f7d19fadd703...
Content-Typetext/plain; charset=utf-8