SMOLNET PORTAL home about changes
iMassive refactoring for features (SIGHUP, variable names). - 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 5672cc0e5930ed81ca8129230adae7f18a1225d4	/scm/catpoint/commit/5672cc0e5930ed81ca8129230adae7f18a1225d4.gph	bitreich.org	70
1parent a4f575be610e1f6ff6f12c0d4adbc09c270eb274	/scm/catpoint/commit/a4f575be610e1f6ff6f12c0d4adbc09c270eb274.gph	bitreich.org	70
hAuthor: Christoph Lohmann <20h@r-36.net>	URL:mailto:20h@r-36.net	bitreich.org	70
iDate:   Sun, 20 Dec 2020 14:57:45 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iMassive refactoring for features (SIGHUP, variable names).	Err	bitreich.org	70
i	Err	bitreich.org	70
i* Now the global variable names are easier to use.	Err	bitreich.org	70
i* Only the global variables are used.	Err	bitreich.org	70
i* A new loadcurrentslide() function is used for SIGHUP.	Err	bitreich.org	70
i        * This allows slideshows to be programmed using SIGHUP.	Err	bitreich.org	70
i        * Thanks Bob for the suggestion!	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M catpoint.c                          |      76 +++++++++++++++++++------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 46 insertions(+), 30 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@@ -13,16 +13,16 @@	Err	bitreich.org	70
i #include <locale.h>	Err	bitreich.org	70
i #include <signal.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-char **p; /* the slides */	Err	bitreich.org	70
i-int n; /* the number of slides */	Err	bitreich.org	70
i+char **slides, **slidefiles; /* the slides */	Err	bitreich.org	70
i+int nslides, currentslide;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i cleanup(int sig)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int i;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        for (i = 0; i < n; i++)	Err	bitreich.org	70
i-                munmap(p[i], 0x1000);	Err	bitreich.org	70
i+        for (i = 0; i < nslides; i++)	Err	bitreich.org	70
i+                munmap(slides[i], 0x1000);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         endwin(); /* restore terminal */	Err	bitreich.org	70
i         exit(1);	Err	bitreich.org	70
i@@ -34,26 +34,39 @@ reload(char **argv, int i)	Err	bitreich.org	70
i         struct stat statbuf;	Err	bitreich.org	70
i         int fd;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (p[i] != NULL) {	Err	bitreich.org	70
i-                if (munmap(p[i], 0x1000) < 0)	Err	bitreich.org	70
i-                        err(1, "munmap: %s", argv[i]);	Err	bitreich.org	70
i+        if (slides[i] != NULL) {	Err	bitreich.org	70
i+                if (munmap(slides[i], 0x1000) < 0)	Err	bitreich.org	70
i+                        err(1, "munmap: %s", slidefiles[i]);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        fd = open(argv[i], O_RDONLY, 0);	Err	bitreich.org	70
i+        fd = open(slidefiles[i], O_RDONLY, 0);	Err	bitreich.org	70
i         if (fd < 0)	Err	bitreich.org	70
i-                err(1, "open: %s", argv[i]);	Err	bitreich.org	70
i+                err(1, "open: %s", slidefiles[i]);	Err	bitreich.org	70
i         if (fstat(fd, &statbuf) < 0)	Err	bitreich.org	70
i-                err(1, "fstat: %s", argv[i]);	Err	bitreich.org	70
i-        p[i] = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);	Err	bitreich.org	70
i-        if (p[i] == MAP_FAILED)	Err	bitreich.org	70
i+                err(1, "fstat: %s", slidefiles[i]);	Err	bitreich.org	70
i+        slides[i] = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);	Err	bitreich.org	70
i+        if (slides[i] == MAP_FAILED)	Err	bitreich.org	70
i                 err(1, "mmap");	Err	bitreich.org	70
i         close(fd);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i+reloadcurrentslide(int sig)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        reload(slidefiles, currentslide);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (sig == SIGHUP) {	Err	bitreich.org	70
i+                clear();	Err	bitreich.org	70
i+                refresh();	Err	bitreich.org	70
i+                printw("%s", slides[currentslide]);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i setsignal()	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        signal(SIGHUP, cleanup);	Err	bitreich.org	70
i+        signal(SIGHUP, reloadcurrentslide);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         signal(SIGINT, cleanup);	Err	bitreich.org	70
i         signal(SIGQUIT, cleanup);	Err	bitreich.org	70
i         signal(SIGABRT, cleanup);	Err	bitreich.org	70
i@@ -64,22 +77,25 @@ setsignal()	Err	bitreich.org	70
i int	Err	bitreich.org	70
i main(int argc, char *argv[])	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        int c, 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-        argv++;	Err	bitreich.org	70
i-        argc--;	Err	bitreich.org	70
i+        slidefiles = ++argv;	Err	bitreich.org	70
i+        nslides = --argc;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         setsignal();	Err	bitreich.org	70
i         setlocale(LC_ALL, "");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        p = calloc(argc, sizeof(char *));	Err	bitreich.org	70
i-        n = argc;	Err	bitreich.org	70
i+        slides = calloc(nslides, sizeof(char *));	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* map files to mem */	Err	bitreich.org	70
i-        for (i = 0; argv[i] != NULL; i++)	Err	bitreich.org	70
i-                reload(argv, i);	Err	bitreich.org	70
i+        for (currentslide = 0; slidefiles[currentslide] != NULL;	Err	bitreich.org	70
i+                        currentslide++) {	Err	bitreich.org	70
i+                reload(slidefiles, currentslide);	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        /* start */	Err	bitreich.org	70
i+        currentslide = 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* init curses */	Err	bitreich.org	70
i         initscr();	Err	bitreich.org	70
i@@ -90,13 +106,12 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         keypad(stdscr, TRUE);	Err	bitreich.org	70
i         curs_set(FALSE); /* hide cursor */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        /* start */	Err	bitreich.org	70
i-        i = 0;	Err	bitreich.org	70
i show:	Err	bitreich.org	70
i         /* display slide */	Err	bitreich.org	70
i         clear();	Err	bitreich.org	70
i         refresh();	Err	bitreich.org	70
i-        printw("%s", p[i]);	Err	bitreich.org	70
i+        printw("%s", slides[currentslide]);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i again:	Err	bitreich.org	70
i         c = getch();	Err	bitreich.org	70
i         switch (c) {	Err	bitreich.org	70
i@@ -112,8 +127,8 @@ again:	Err	bitreich.org	70
i         case KEY_RIGHT:	Err	bitreich.org	70
i         case KEY_DOWN:	Err	bitreich.org	70
i         case KEY_NPAGE:	Err	bitreich.org	70
i-                if (i < argc - 1) {	Err	bitreich.org	70
i-                        i++;	Err	bitreich.org	70
i+                if (currentslide < nslides - 1) {	Err	bitreich.org	70
i+                        currentslide++;	Err	bitreich.org	70
i                         goto show;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 goto again;	Err	bitreich.org	70
i@@ -123,8 +138,8 @@ again:	Err	bitreich.org	70
i         case KEY_LEFT:	Err	bitreich.org	70
i         case KEY_UP:	Err	bitreich.org	70
i         case KEY_PPAGE:	Err	bitreich.org	70
i-                if (i > 0) {	Err	bitreich.org	70
i-                        i--;	Err	bitreich.org	70
i+                if (currentslide > 0) {	Err	bitreich.org	70
i+                        currentslide--;	Err	bitreich.org	70
i                         goto show;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i                 goto again;	Err	bitreich.org	70
i@@ -134,16 +149,16 @@ again:	Err	bitreich.org	70
i         case 'u':	Err	bitreich.org	70
i         case KEY_BEG:	Err	bitreich.org	70
i         case KEY_HOME:	Err	bitreich.org	70
i-                i = 0;	Err	bitreich.org	70
i+                currentslide = 0;	Err	bitreich.org	70
i                 goto show;	Err	bitreich.org	70
i         /* last */	Err	bitreich.org	70
i         case 'i':	Err	bitreich.org	70
i         case KEY_END:	Err	bitreich.org	70
i-                i = argc - 1;	Err	bitreich.org	70
i+                currentslide = nslides - 1;	Err	bitreich.org	70
i                 goto show;	Err	bitreich.org	70
i         /* reload */	Err	bitreich.org	70
i         case 'r':	Err	bitreich.org	70
i-                reload(argv, i);	Err	bitreich.org	70
i+                reloadcurrentslide(0);	Err	bitreich.org	70
i                 goto show;	Err	bitreich.org	70
i         default:	Err	bitreich.org	70
i                 /* printf("key pressed = '%d'\n", c); */	Err	bitreich.org	70
i@@ -155,3 +170,4 @@ again:	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         return 0;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i+	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/catpoint/commit/5672cc0e5930e...
Content-Typetext/plain; charset=utf-8