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