[CONTACT]

[ABOUT]

[POLICY]

git clone catpoint catpoint Log gph

Found at: gopher.r-36.net:70/scm/catpoint/commit/9d56979dedbc9a3b279291ad07ab4ce277e8f5e7.gph

tAdd reload function to catpoint. - catpoint - Catpoint simple presenting software.

git clone git://r-36.net/catpoint

Log

Files

Refs

LICENSE

---

commit 9d56979dedbc9a3b279291ad07ab4ce277e8f5e7

parent fbd1f47fc5dc657c0bac33ac3d6f7c89495f4df9

Author: Christoph Lohmann <20h@r-36.net>

Date:   Sun, 20 Dec 2020 11:44:12 +0100
Add reload function to catpoint.
Thanks to Karchnu  for the initial patch!
Diffstat:
  catpoint.c                          |      42 +++++++++++++++++++++----------
1 file changed, 29 insertions(+), 13 deletions(-)
---

diff --git a/catpoint.c b/catpoint.c

t@@ -20,6 +20,7 @@ void
 cleanup(int s)
 {
         int i;
+
         for (i = 0; i
                 munmap(p[i], 0x1000);
t@@ -28,6 +29,26 @@ cleanup(int s)
 }
 void
+reload(char **argv, int i)
+{
+        struct stat statbuf;
+        int fd;
+
+        if (p[i] != NULL)
+                munmap(p[i], 0x1000);
+
+        fd = open(argv[i], O_RDONLY, 0);
+        if (fd < 0)
+                err(1, "open: %s", argv[i]);
+        if (fstat(fd, &statbuf) < 0)
+                err(1, "fstat: %s", argv[i]);
+        p[i] = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
+        if (p[i] == MAP_FAILED)
+                err(1, "mmap");
+        close(fd);
+}
+
+void
 setsignal()
 {
         signal(SIGHUP, cleanup);
t@@ -42,8 +63,7 @@ setsignal()
 int
 main(int argc, char *argv[])
 {
-        int c, i, fd;
-        struct stat statbuf;
+        int c, i;
         if (argc == 1)
                 errx(1, "usage: %s file ...", argv[0]);
t@@ -57,17 +77,8 @@ main(int argc, char *argv[])
         n = argc;
         /* map files to mem */
-        for (i = 0; argv[i] != NULL; i++) {
-                fd = open(argv[i], O_RDONLY, 0);
-                if (fd == -1)
-                        err(1, "open: %s", argv[i]);
-                if (fstat(fd, &statbuf) < 0)
-                        err(1, "fstat: %s", argv[i]);
-                p[i] = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
-                if (p[i] == MAP_FAILED)
-                        err(1, "mmap");
-                close(fd);
-        }
+        for (i = 0; argv[i] != NULL; i++)
+                reload(argv, i);
         /* init curses */
         initscr();
t@@ -83,6 +94,7 @@ main(int argc, char *argv[])
 show:
         /* display slide */
         clear();
+        refresh();
         printw("%s", p[i]);
 again:
         c = getch();
t@@ -128,6 +140,10 @@ again:
         case KEY_END:
                 i = argc - 1;
                 goto show;
+        /* reload */
+        case 'r':
+                reload(argv, i);
+                goto show;
         default:
                 /* printf("key pressed = '%d'\n", c); */
                 goto again;
.


AD: