URI: 
       Add reload function to catpoint. - catpoint - Catpoint simple presenting software.
  HTML git clone git://bitreich.org/catpoint/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/catpoint/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
   DIR commit 9d56979dedbc9a3b279291ad07ab4ce277e8f5e7
   DIR parent fbd1f47fc5dc657c0bac33ac3d6f7c89495f4df9
  HTML Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sun, 20 Dec 2020 11:44:12 +0100
       
       Add reload function to catpoint.
       
       Thanks to Karchnu <karchnu@karchnu.fr> for the initial patch!
       
       Diffstat:
         M catpoint.c                          |      42 +++++++++++++++++++++----------
       
       1 file changed, 29 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/catpoint.c b/catpoint.c
       @@ -20,6 +20,7 @@ void
        cleanup(int s)
        {
                int i;
       +
                for (i = 0; i<n; i++)
                        munmap(p[i], 0x1000);
        
       @@ -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);
       @@ -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]);
       @@ -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();
       @@ -83,6 +94,7 @@ main(int argc, char *argv[])
        show:
                /* display slide */
                clear();
       +        refresh();
                printw("%s", p[i]);
        again:
                c = getch();
       @@ -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;