SMOLNET PORTAL home about changes
iimprove different libc compatibility thanks to _anthk feedback - 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 0332f4dd490ea3fe6421a8f064142c3747938653	/scm/iomenu/commit/0332f4dd490ea3fe6421a8f064142c3747938653.gph	bitreich.org	70
1parent 61d1c7b96e038a9af18330f8a2efa1b648441575	/scm/iomenu/commit/61d1c7b96e038a9af18330f8a2efa1b648441575.gph	bitreich.org	70
hAuthor: Josuah Demangeon <me@josuah.net>	URL:mailto:me@josuah.net	bitreich.org	70
iDate:   Fri, 29 Oct 2021 19:45:58 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iimprove different libc compatibility thanks to _anthk feedback	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |      13 +++++++------	Err	bitreich.org	70
i  M iomenu.c                            |      20 ++++++++++----------	Err	bitreich.org	70
i  M term.c                              |      17 +++++++++--------	Err	bitreich.org	70
i  M term.h                              |       2 +-	Err	bitreich.org	70
i	Err	bitreich.org	70
i4 files changed, 27 insertions(+), 25 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/iomenu/file/Makefile.gph	bitreich.org	70
i@@ -1,7 +1,8 @@	Err	bitreich.org	70
i NAME = iomenu	Err	bitreich.org	70
i-VERSION = 0.1	Err	bitreich.org	70
i+V = 0.1	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-CFLAGS = -DVERSION='"${VERSION}"' -I./src  -Wall -Wextra -std=c99 --pedantic -g	Err	bitreich.org	70
i+D = -DVERSION='"$V"' -D_POSIX_C_SOURCE=200809L -D_BSD_SOURCE	Err	bitreich.org	70
i+CFLAGS = $D -Wall -Wextra -std=c99 -pedantic -g	Err	bitreich.org	70
i LDFLAGS = -static	Err	bitreich.org	70
i PREFIX = /usr/local	Err	bitreich.org	70
i MANPREFIX = ${PREFIX}/man	Err	bitreich.org	70
i@@ -22,7 +23,7 @@ ${BIN}: ${OBJ} ${BIN:=.o}	Err	bitreich.org	70
i         ${CC} ${LDFLAGS} -o $@ $@.o ${OBJ} ${LIB}	Err	bitreich.org	70
i 	Err	bitreich.org	70
i clean:	Err	bitreich.org	70
i-        rm -rf *.o ${BIN} ${NAME}-${VERSION} *.gz	Err	bitreich.org	70
i+        rm -rf *.o ${BIN} ${NAME}-$V *.gz	Err	bitreich.org	70
i 	Err	bitreich.org	70
i install:	Err	bitreich.org	70
i         mkdir -p ${DESTDIR}${PREFIX}/bin	Err	bitreich.org	70
i@@ -31,6 +32,6 @@ install:	Err	bitreich.org	70
i         cp -rf ${MAN1} ${DESTDIR}${MANPREFIX}/man1	Err	bitreich.org	70
i 	Err	bitreich.org	70
i dist: clean	Err	bitreich.org	70
i-        mkdir -p ${NAME}-${VERSION}	Err	bitreich.org	70
i-        cp -r README Makefile bin ${MAN1} ${SRC} ${NAME}-${VERSION}	Err	bitreich.org	70
i-        tar -cf - ${NAME}-${VERSION} | gzip -c >${NAME}-${VERSION}.tar.gz	Err	bitreich.org	70
i+        mkdir -p ${NAME}-$V	Err	bitreich.org	70
i+        cp -r README Makefile bin ${MAN1} ${SRC} ${NAME}-$V	Err	bitreich.org	70
i+        tar -cf - ${NAME}-$V | gzip -c >${NAME}-$V.tar.gz	Err	bitreich.org	70
1diff --git a/iomenu.c b/iomenu.c	/scm/iomenu/file/iomenu.c.gph	bitreich.org	70
i@@ -16,7 +16,7 @@	Err	bitreich.org	70
i #include "utf8.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i struct {	Err	bitreich.org	70
i-        char input[LINE_MAX];	Err	bitreich.org	70
i+        char input[256];	Err	bitreich.org	70
i         size_t cur;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         char **lines_buf;	Err	bitreich.org	70
i@@ -26,7 +26,7 @@ struct {	Err	bitreich.org	70
i         size_t match_count;	Err	bitreich.org	70
i } ctx;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-int opt_comment;	Err	bitreich.org	70
i+int flag_comment;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /*	Err	bitreich.org	70
i  * Keep the line if it match every token (in no particular order,	Err	bitreich.org	70
i@@ -35,7 +35,7 @@ int opt_comment;	Err	bitreich.org	70
i static int	Err	bitreich.org	70
i match_line(char *line, char **tokv)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        if (opt_comment && line[0] == '#')	Err	bitreich.org	70
i+        if (flag_comment && line[0] == '#')	Err	bitreich.org	70
i                 return 2;	Err	bitreich.org	70
i         for (; *tokv != NULL; tokv++)	Err	bitreich.org	70
i                 if (strcasestr(line, *tokv) == NULL)	Err	bitreich.org	70
i@@ -86,7 +86,7 @@ do_move(int sign)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         /* integer overflow will do what we need */	Err	bitreich.org	70
i         for (size_t i = ctx.cur + sign; i < ctx.match_count; i += sign) {	Err	bitreich.org	70
i-                if (opt_comment == 0 || ctx.match_buf[i][0] != '#') {	Err	bitreich.org	70
i+                if (flag_comment == 0 || ctx.match_buf[i][0] != '#') {	Err	bitreich.org	70
i                         ctx.cur = i;	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i@@ -114,7 +114,7 @@ do_filter(char **search_buf, size_t search_count)	Err	bitreich.org	70
i         for (size_t n = 0; n < search_count; n++)	Err	bitreich.org	70
i                 if (match_line(search_buf[n], tokv))	Err	bitreich.org	70
i                         ctx.match_buf[ctx.match_count++] = search_buf[n];	Err	bitreich.org	70
i-        if (opt_comment && ctx.match_buf[ctx.cur][0] == '#')	Err	bitreich.org	70
i+        if (flag_comment && ctx.match_buf[ctx.cur][0] == '#')	Err	bitreich.org	70
i                 do_move(+1);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -136,7 +136,7 @@ do_move_header(signed int sign)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         do_move(sign);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (opt_comment == 0)	Err	bitreich.org	70
i+        if (flag_comment == 0)	Err	bitreich.org	70
i                 return;	Err	bitreich.org	70
i         for (ctx.cur += sign;; ctx.cur += sign) {	Err	bitreich.org	70
i                 char *cur = ctx.match_buf[ctx.cur];	Err	bitreich.org	70
i@@ -184,7 +184,7 @@ do_add_char(char c)	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i do_print_selection(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        if (opt_comment) {	Err	bitreich.org	70
i+        if (flag_comment) {	Err	bitreich.org	70
i                 char **match = ctx.match_buf + ctx.cur;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                 while (--match >= ctx.match_buf) {	Err	bitreich.org	70
i@@ -197,7 +197,7 @@ do_print_selection(void)	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         term_raw_off(2);	Err	bitreich.org	70
i         if (ctx.match_count == 0	Err	bitreich.org	70
i-          || (opt_comment && ctx.match_buf[ctx.cur][0] == '#'))	Err	bitreich.org	70
i+          || (flag_comment && ctx.match_buf[ctx.cur][0] == '#'))	Err	bitreich.org	70
i                 fprintf(stdout, "%s\n", ctx.input);	Err	bitreich.org	70
i         else	Err	bitreich.org	70
i                 fprintf(stdout, "%s\n", ctx.match_buf[ctx.cur]);	Err	bitreich.org	70
i@@ -277,7 +277,7 @@ key_action(void)	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i print_line(char *line, int highlight)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        if (opt_comment && line[0] == '#') {	Err	bitreich.org	70
i+        if (flag_comment && line[0] == '#') {	Err	bitreich.org	70
i                 fprintf(stderr, "\n\x1b[1m\r%.*s\x1b[m",	Err	bitreich.org	70
i                   term_at_width(line + 1, term.winsize.ws_col, 0), line + 1);	Err	bitreich.org	70
i         } else if (highlight) {	Err	bitreich.org	70
i@@ -390,7 +390,7 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i                         fprintf(stdout, "%s\n", VERSION);	Err	bitreich.org	70
i                         exit(0);	Err	bitreich.org	70
i                 case '#':	Err	bitreich.org	70
i-                        opt_comment = 1;	Err	bitreich.org	70
i+                        flag_comment = 1;	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i                 default:	Err	bitreich.org	70
i                         usage(arg0);	Err	bitreich.org	70
1diff --git a/term.c b/term.c	/scm/iomenu/file/term.c.gph	bitreich.org	70
i@@ -36,19 +36,20 @@ term_at_width(char const *s, int width, int pos)	Err	bitreich.org	70
i int	Err	bitreich.org	70
i term_raw_on(int fd)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        struct termios new_termios = {0};	Err	bitreich.org	70
i-        char *seq = "\x1b[s\x1b[?1049h\x1b[H";	Err	bitreich.org	70
i+        static char *seq = "\x1b[s\x1b[?1049h\x1b[H";	Err	bitreich.org	70
i+        struct termios termios;	Err	bitreich.org	70
i         ssize_t len = strlen(seq);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (write(fd, seq, len) < len)	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (tcgetattr(fd, &term.old_termios) < 0)	Err	bitreich.org	70
i+        memset(&termios, 0, sizeof termios);	Err	bitreich.org	70
i+        if (tcgetattr(fd, &term.termios) < 0)	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i-        memcpy(&new_termios, &term.old_termios, sizeof new_termios);	Err	bitreich.org	70
i+        memcpy(&termios, &term.termios, sizeof termios);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        new_termios.c_lflag &= ~(ICANON | ECHO | IEXTEN | IGNBRK | ISIG);	Err	bitreich.org	70
i-        if (tcsetattr(fd, TCSANOW, &new_termios) == -1)	Err	bitreich.org	70
i+        termios.c_lflag &= ~(ICANON | ECHO | IEXTEN | IGNBRK | ISIG);	Err	bitreich.org	70
i+        if (tcsetattr(fd, TCSANOW, &termios) == -1)	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i         return 0;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i@@ -56,10 +57,10 @@ term_raw_on(int fd)	Err	bitreich.org	70
i int	Err	bitreich.org	70
i term_raw_off(int fd)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        char *seq = "\x1b[2J\x1b[u\033[?1049l";	Err	bitreich.org	70
i+        static char *seq = "\x1b[2J\x1b[u\033[?1049l";	Err	bitreich.org	70
i         ssize_t len = strlen(seq);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (tcsetattr(fd, TCSANOW, &term.old_termios) < 0)	Err	bitreich.org	70
i+        if (tcsetattr(fd, TCSANOW, &term.termios) < 0)	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i         if (write(fd, seq, len) < len)	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
1diff --git a/term.h b/term.h	/scm/iomenu/file/term.h.gph	bitreich.org	70
i@@ -25,7 +25,7 @@ enum term_key {	Err	bitreich.org	70
i 	Err	bitreich.org	70
i struct term {	Err	bitreich.org	70
i         struct winsize winsize;	Err	bitreich.org	70
i-        struct termios old_termios;	Err	bitreich.org	70
i+        struct termios termios;	Err	bitreich.org	70
i };	Err	bitreich.org	70
i 	Err	bitreich.org	70
i extern struct term term;	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/iomenu/commit/0332f4dd490ea3f...
Content-Typetext/plain; charset=utf-8