SMOLNET PORTAL home about changes
iDo not mmap all slides at the beginning to scale better. - 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 b0efd23c2469cec3f5baea1c71b71bce82456e8f	/scm/catpoint/commit/b0efd23c2469cec3f5baea1c71b71bce82456e8f.gph	bitreich.org	70
1parent 5672cc0e5930ed81ca8129230adae7f18a1225d4	/scm/catpoint/commit/5672cc0e5930ed81ca8129230adae7f18a1225d4.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 15:25:52 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iDo not mmap all slides at the beginning to scale better.	Err	bitreich.org	70
i	Err	bitreich.org	70
iWithout mmaping all slides at the beginning, catpoint scales better	Err	bitreich.org	70
iand the whole internal algorithms are simplified.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M catpoint.c                          |      55 +++++++++++++++----------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 27 insertions(+), 28 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,52 +13,57 @@	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 **slides, **slidefiles; /* the slides */	Err	bitreich.org	70
i-int nslides, currentslide;	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 void	Err	bitreich.org	70
i-cleanup(int sig)	Err	bitreich.org	70
i+unloadcurrentslide(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        int i;	Err	bitreich.org	70
i+        if (currentslidep == NULL)	Err	bitreich.org	70
i+                return;	Err	bitreich.org	70
i 	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+        if (munmap(currentslidep, currentslidelen) < 0)	Err	bitreich.org	70
i+                err(1, "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+cleanup(int sig)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        unloadcurrentslide();	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 }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i-reload(char **argv, int i)	Err	bitreich.org	70
i+loadcurrentslide(char **argv, int slide)	Err	bitreich.org	70
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 (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+        unloadcurrentslide();	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        fd = open(slidefiles[i], O_RDONLY, 0);	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[i]);	Err	bitreich.org	70
i+                err(1, "open: %s", slidefiles[slide]);	Err	bitreich.org	70
i         if (fstat(fd, &statbuf) < 0)	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, "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");	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 	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+        loadcurrentslide(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+                printw("%s", currentslidep);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -69,8 +74,6 @@ setsignal()	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-        signal(SIGKILL, cleanup);	Err	bitreich.org	70
i         signal(SIGTERM, cleanup);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -87,15 +90,10 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         setsignal();	Err	bitreich.org	70
i         setlocale(LC_ALL, "");	Err	bitreich.org	70
i 	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 (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+        currentslidep = NULL;	Err	bitreich.org	70
i+        currentslidelen = 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* init curses */	Err	bitreich.org	70
i         initscr();	Err	bitreich.org	70
i@@ -108,9 +106,10 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i 	Err	bitreich.org	70
i show:	Err	bitreich.org	70
i         /* display slide */	Err	bitreich.org	70
i+        loadcurrentslide(slidefiles, currentslide);	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+        printw("%s", currentslidep);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i again:	Err	bitreich.org	70
i         c = getch();	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/catpoint/commit/b0efd23c2469c...
Content-Typetext/plain; charset=utf-8