SMOLNET PORTAL home about changes
imore descriptive names - iomenu - interactive terminal-based selection menu	Err	bitreich.org	70
hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu	URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu	bitreich.org	70
1Log	/scm/iomenu/log.gph	bitreich.org	70
1Files	/scm/iomenu/files.gph	bitreich.org	70
1Refs	/scm/iomenu/refs.gph	bitreich.org	70
1Tags	/scm/iomenu/tag	bitreich.org	70
1README	/scm/iomenu/file/README.gph	bitreich.org	70
1LICENSE	/scm/iomenu/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 5ac10691e817e4bfb903449a99614a1184d03a7e	/scm/iomenu/commit/5ac10691e817e4bfb903449a99614a1184d03a7e.gph	bitreich.org	70
1parent 8614ad4e2b6c08fcf82366637ee1cdf7662434f4	/scm/iomenu/commit/8614ad4e2b6c08fcf82366637ee1cdf7662434f4.gph	bitreich.org	70
hAuthor: Josuah Demangeon <josuah.demangeon@gandi.net>	URL:mailto:josuah.demangeon@gandi.net	bitreich.org	70
iDate:   Sun,  3 Sep 2017 12:04:49 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
imore descriptive names	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M iomenu.c                            |     125 +++++++++++++++++--------------	Err	bitreich.org	70
i  M utf8.c                              |      20 ++++++++++----------	Err	bitreich.org	70
i  M utf8.h                              |      12 ++++++------	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 86 insertions(+), 71 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/iomenu.c b/iomenu.c	/scm/iomenu/file/iomenu.c.gph	bitreich.org	70
i@@ -31,7 +31,7 @@ static int            opt[128], rows = 0;	Err	bitreich.org	70
i static char          *prompt = "";	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-freelines(void)	Err	bitreich.org	70
i+free_lines(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         if (linev) {	Err	bitreich.org	70
i                 for (; linec > 0; linec--)	Err	bitreich.org	70
i@@ -47,13 +47,13 @@ die(const char *s)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         tcsetattr(ttyfd, TCSANOW, &termios);	Err	bitreich.org	70
i         close(ttyfd);	Err	bitreich.org	70
i-        freelines();	Err	bitreich.org	70
i+        free_lines();	Err	bitreich.org	70
i         perror(s);	Err	bitreich.org	70
i         exit(EXIT_FAILURE);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-setterminal(void)	Err	bitreich.org	70
i+set_terminal(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         struct termios new;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -72,7 +72,7 @@ setterminal(void)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-resetterminal(void)	Err	bitreich.org	70
i+reset_terminal(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int i;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -88,7 +88,7 @@ resetterminal(void)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-readlines(void)	Err	bitreich.org	70
i+read_lines(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int    size = 0;	Err	bitreich.org	70
i         size_t len;	Err	bitreich.org	70
i@@ -115,41 +115,53 @@ readlines(void)	Err	bitreich.org	70
i         } while (++linec, ++matchc);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+static size_t	Err	bitreich.org	70
i+string_width(char *s)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        int width = 0;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        while (*s)	Err	bitreich.org	70
i+                if (*s++ == '\t')	Err	bitreich.org	70
i+                        width += (width + 7) % 8;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return width;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i static char *	Err	bitreich.org	70
i-format(char *s, int cols)	Err	bitreich.org	70
i+format(char *str, int cols)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        int   i = 0;	Err	bitreich.org	70
i-        long  r = 0;	Err	bitreich.org	70
i-        char *f = formatted;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        while (*s && i < cols) {	Err	bitreich.org	70
i-                if (*s == '\t') {	Err	bitreich.org	70
i-                        int t = 8 - i % 8;	Err	bitreich.org	70
i-                        while (t-- && i < cols) {	Err	bitreich.org	70
i-                                *f++ = ' ';	Err	bitreich.org	70
i-                                i++;	Err	bitreich.org	70
i+        int   col = 0;	Err	bitreich.org	70
i+        long  rune = 0;	Err	bitreich.org	70
i+        char *fmt = formatted;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        while (*str && col < cols) {	Err	bitreich.org	70
i+                if (*str == '\t') {	Err	bitreich.org	70
i+                        int t = 8 - col % 8;	Err	bitreich.org	70
i+                        while (t-- && col < cols) {	Err	bitreich.org	70
i+                                *fmt++ = ' ';	Err	bitreich.org	70
i+                                col++;	Err	bitreich.org	70
i                         }	Err	bitreich.org	70
i-                        s++;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-                } else if (utf8torune(&r, s) && utf8isprint(r)) {	Err	bitreich.org	70
i-                        int j = utf8len(s);	Err	bitreich.org	70
i-                        while (j--)	Err	bitreich.org	70
i-                                *f++ = *s++;	Err	bitreich.org	70
i-                        i++;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-                } else {	Err	bitreich.org	70
i-                        *f++ = '?';	Err	bitreich.org	70
i-                        i++;	Err	bitreich.org	70
i-                        s++;	Err	bitreich.org	70
i+                        str++;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                } else if (utf8_to_rune(&rune, str) && rune_is_print(rune)) {	Err	bitreich.org	70
i+                        int i = utf8_len(str);	Err	bitreich.org	70
i+                        while (i--)	Err	bitreich.org	70
i+                                *fmt++ = *str++;	Err	bitreich.org	70
i+                        col++;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        } else {	Err	bitreich.org	70
i+                *fmt++ = '?';	Err	bitreich.org	70
i+                col++;	Err	bitreich.org	70
i+                str++;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        *f = '\0';	Err	bitreich.org	70
i+        *fmt = '\0';	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         return formatted;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-printlines(void)	Err	bitreich.org	70
i+print_lines(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int printed = 0, i = current - current % rows;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -172,13 +184,13 @@ printlines(void)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-printscreen(void)	Err	bitreich.org	70
i+print_screen(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int cols = ws.ws_col - 1;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         fputs("\r\033[K", stderr);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        printlines();	Err	bitreich.org	70
i+        print_lines();	Err	bitreich.org	70
i         fprintf(stderr, "\033[%dA\r", rows);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (*prompt) {	Err	bitreich.org	70
i@@ -194,7 +206,7 @@ printscreen(void)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static int	Err	bitreich.org	70
i-matchline(char *line, char **tokv, int tokc)	Err	bitreich.org	70
i+match_line(char *line, char **tokv, int tokc)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         if (opt['#'] && line[0] == '#')	Err	bitreich.org	70
i                 return 2;	Err	bitreich.org	70
i@@ -220,10 +232,13 @@ move(signed int sign)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-movepg(signed int sign)	Err	bitreich.org	70
i+move_page(signed int sign)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int i = current - current % rows + rows * sign;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+        if (!opt['l'])	Err	bitreich.org	70
i+                return;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         if (0 > i || i > matchc)	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -255,7 +270,7 @@ filter(void)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         matchc = 0;	Err	bitreich.org	70
i         for (i = 0; i < linec; i++)	Err	bitreich.org	70
i-                if (matchline(linev[i], tokv, tokc))	Err	bitreich.org	70
i+                if (match_line(linev[i], tokv, tokc))	Err	bitreich.org	70
i                         matchv[matchc++] = linev[i];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         free(tokv);	Err	bitreich.org	70
i@@ -265,7 +280,7 @@ filter(void)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-removeword()	Err	bitreich.org	70
i+remove_word()	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int len = strlen(input) - 1, i;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -280,7 +295,7 @@ removeword()	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-addchar(char key)	Err	bitreich.org	70
i+add_char(char key)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         int len = strlen(input);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -293,7 +308,7 @@ addchar(char key)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-printselection(void)	Err	bitreich.org	70
i+print_selection(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         if (opt['#']) {	Err	bitreich.org	70
i                 char **match = matchv + current;	Err	bitreich.org	70
i@@ -334,7 +349,7 @@ top:	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         case CTL('W'):	Err	bitreich.org	70
i-                removeword();	Err	bitreich.org	70
i+                remove_word();	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         case 127:	Err	bitreich.org	70
i@@ -357,14 +372,14 @@ top:	Err	bitreich.org	70
i                 if (fgetc(stdin) != '~') break;	Err	bitreich.org	70
i                 /* FALLTHROUGH */	Err	bitreich.org	70
i         case ALT('v'):	Err	bitreich.org	70
i-                movepg(-1);	Err	bitreich.org	70
i+                move_page(-1);	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         case CSI('6'):  /* page down */	Err	bitreich.org	70
i                 if (fgetc(stdin) != '~') break;	Err	bitreich.org	70
i                 /* FALLTHROUGH */	Err	bitreich.org	70
i         case CTL('V'):	Err	bitreich.org	70
i-                movepg(+1);	Err	bitreich.org	70
i+                move_page(+1);	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         case CTL('I'):  /* tab */	Err	bitreich.org	70
i@@ -375,7 +390,7 @@ top:	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         case CTL('J'):  /* enter */	Err	bitreich.org	70
i         case CTL('M'):	Err	bitreich.org	70
i-                printselection();	Err	bitreich.org	70
i+                print_selection();	Err	bitreich.org	70
i                 return EXIT_SUCCESS;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         case ALT('['):	Err	bitreich.org	70
i@@ -387,7 +402,7 @@ top:	Err	bitreich.org	70
i                 goto top;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         default:	Err	bitreich.org	70
i-                addchar((char) key);	Err	bitreich.org	70
i+                add_char((char) key);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         return CONTINUE;	Err	bitreich.org	70
i@@ -400,7 +415,7 @@ sigwinch()	Err	bitreich.org	70
i                 die("ioctl");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         rows = MIN(opt['l'], ws.ws_row - 1);	Err	bitreich.org	70
i-        printscreen();	Err	bitreich.org	70
i+        print_screen();	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         signal(SIGWINCH, sigwinch);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i@@ -413,7 +428,7 @@ usage(void)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-parseopt(int argc, char *argv[])	Err	bitreich.org	70
i+parse_opt(int argc, char *argv[])	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         memset(opt, 0, 128 * sizeof (int));	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -454,11 +469,11 @@ parseopt(int argc, char *argv[])	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 exitcode;	Err	bitreich.org	70
i+        int exit_code;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        parseopt(argc, argv);	Err	bitreich.org	70
i+        parse_opt(argc, argv);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        readlines();	Err	bitreich.org	70
i+        read_lines();	Err	bitreich.org	70
i         filter();	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (!freopen("/dev/tty", "r", stdin) ||	Err	bitreich.org	70
i@@ -466,17 +481,17 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i                 die("freopen");	Err	bitreich.org	70
i         ttyfd =  open("/dev/tty", O_RDWR);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        setterminal();	Err	bitreich.org	70
i+        set_terminal();	Err	bitreich.org	70
i         sigwinch();	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         input[0] = '\0';	Err	bitreich.org	70
i-        while ((exitcode = key()) == CONTINUE)	Err	bitreich.org	70
i-                printscreen();	Err	bitreich.org	70
i-        printscreen();	Err	bitreich.org	70
i+        while ((exit_code = key()) == CONTINUE)	Err	bitreich.org	70
i+                print_screen();	Err	bitreich.org	70
i+        print_screen();	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        resetterminal();	Err	bitreich.org	70
i+        reset_terminal();	Err	bitreich.org	70
i         close(ttyfd);	Err	bitreich.org	70
i-        freelines();	Err	bitreich.org	70
i+        free_lines();	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        return exitcode;	Err	bitreich.org	70
i+        return exit_code;	Err	bitreich.org	70
i }	Err	bitreich.org	70
1diff --git a/utf8.c b/utf8.c	/scm/iomenu/file/utf8.c.gph	bitreich.org	70
i@@ -34,7 +34,7 @@	Err	bitreich.org	70
i  * or 0 if ti is misencoded.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i size_t	Err	bitreich.org	70
i-utf8len(char *s)	Err	bitreich.org	70
i+utf8_len(char *s)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         unsigned char *sp = (unsigned char *) s;	Err	bitreich.org	70
i         int i, len = (*sp < 0x80) ? 1 :  /* 0xxxxxxx < 10000000 */	Err	bitreich.org	70
i@@ -62,7 +62,7 @@ utf8len(char *s)	Err	bitreich.org	70
i  * 0 if rune is too long.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i size_t	Err	bitreich.org	70
i-utf8runelen(long r)	Err	bitreich.org	70
i+rune_len(long r)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         return (r <= 0x0000007f) ? 1 : (r <= 0x000007ff) ? 2 :	Err	bitreich.org	70
i                (r <= 0x0000ffff) ? 3 : (r <= 0x001fffff) ? 4 :	Err	bitreich.org	70
i@@ -76,10 +76,10 @@ utf8runelen(long r)	Err	bitreich.org	70
i  * Return the number of bytes read or 0 if the string is misencoded.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i size_t	Err	bitreich.org	70
i-utf8torune(long *r, char *s)	Err	bitreich.org	70
i+utf8_to_rune(long *r, char *s)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         char mask[] = { 0x7f, 0x1f, 0x0f, 0x07, 0x03, 0x01 };	Err	bitreich.org	70
i-        size_t i, len = utf8len(s);	Err	bitreich.org	70
i+        size_t i, len = utf8_len(s);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (len == 0 || len > 6 || (size_t) len > strlen(s))	Err	bitreich.org	70
i                 return 0;	Err	bitreich.org	70
i@@ -92,7 +92,7 @@ utf8torune(long *r, char *s)	Err	bitreich.org	70
i                 *r = (*r << 6) | (*s++ & 0x3f);  /* 10xxxxxx */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* overlong sequences */	Err	bitreich.org	70
i-        if (utf8runelen(*r) != len)	Err	bitreich.org	70
i+        if (rune_len(*r) != len)	Err	bitreich.org	70
i                 return 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         return len;	Err	bitreich.org	70
i@@ -103,7 +103,7 @@ utf8torune(long *r, char *s)	Err	bitreich.org	70
i  * Returns 1 if the rune is a valid unicode code point and 0 if not.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i int	Err	bitreich.org	70
i-utf8runeisunicode(long r)	Err	bitreich.org	70
i+rune_is_unicode(long r)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         return !(	Err	bitreich.org	70
i                 (r > 0x10ffff)                   ||  /* outside range */	Err	bitreich.org	70
i@@ -125,14 +125,14 @@ utf8runeisunicode(long r)	Err	bitreich.org	70
i  * code points.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i int	Err	bitreich.org	70
i-utf8check(char *s)	Err	bitreich.org	70
i+utf8_check(char *s)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         size_t shift, len = strlen(s);	Err	bitreich.org	70
i         long r = 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         while (len > 0) {	Err	bitreich.org	70
i-                shift = utf8torune(&r, s);	Err	bitreich.org	70
i-                if (!shift || !utf8runeisunicode(r))	Err	bitreich.org	70
i+                shift = utf8_to_rune(&r, s);	Err	bitreich.org	70
i+                if (!shift || !rune_is_unicode(r))	Err	bitreich.org	70
i                         return 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                 s   += shift;	Err	bitreich.org	70
i@@ -146,7 +146,7 @@ utf8check(char *s)	Err	bitreich.org	70
i  * Return 1 if the rune is a printable character, and 0 otherwise.	Err	bitreich.org	70
i  */	Err	bitreich.org	70
i int	Err	bitreich.org	70
i-utf8isprint(long r)	Err	bitreich.org	70
i+rune_is_print(long r)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         return (0x1f < r && r != 0x7f && r < 0x80) || 0x9f < r;	Err	bitreich.org	70
i }	Err	bitreich.org	70
1diff --git a/utf8.h b/utf8.h	/scm/iomenu/file/utf8.h.gph	bitreich.org	70
i@@ -1,6 +1,6 @@	Err	bitreich.org	70
i-size_t utf8len(char *);	Err	bitreich.org	70
i-size_t utf8runelen(long);	Err	bitreich.org	70
i-size_t utf8torune(long *, char *);	Err	bitreich.org	70
i-int    utf8isunicode(long);	Err	bitreich.org	70
i-int    utf8check(char *);	Err	bitreich.org	70
i-int    utf8isprint(long);	Err	bitreich.org	70
i+size_t utf8_len(char *);	Err	bitreich.org	70
i+size_t rune_len(long);	Err	bitreich.org	70
i+size_t utf8_to_rune(long *, char *);	Err	bitreich.org	70
i+int    utf8_is_unicode(long);	Err	bitreich.org	70
i+int    utf8_check(char *);	Err	bitreich.org	70
i+int    rune_is_print(long);	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/iomenu/commit/5ac10691e817e4b...
Content-Typetext/plain; charset=utf-8