SMOLNET PORTAL home about changes
ifixed CTL macro causing buggy input - 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 9747f2c9e90a2160e5578b80aa3b91101d338120	/scm/iomenu/commit/9747f2c9e90a2160e5578b80aa3b91101d338120.gph	bitreich.org	70
1parent c1fc5b0c3cfd8ce193fd60d8a4586995b1af7758	/scm/iomenu/commit/c1fc5b0c3cfd8ce193fd60d8a4586995b1af7758.gph	bitreich.org	70
hAuthor: Josuah Demangeon <mail@josuah.net>	URL:mailto:mail@josuah.net	bitreich.org	70
iDate:   Sat,  3 Mar 2018 00:05:42 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
ifixed CTL macro causing buggy input	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |      11 +++++++----	Err	bitreich.org	70
i  M iomenu.c                            |      57 +++++++++++--------------------	Err	bitreich.org	70
i  A str.h                               |       1 +	Err	bitreich.org	70
i  A strcasestr.c                        |      25 +++++++++++++++++++++++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i4 files changed, 53 insertions(+), 41 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,6 +1,6 @@	Err	bitreich.org	70
i CFLAGS = -std=c89 -pedantic -Wall -Wextra -g -D_POSIX_C_SOURCE=200809L	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-SRC = iomenu.c utf8.c	Err	bitreich.org	70
i+SRC = iomenu.c utf8.c strcasestr.c	Err	bitreich.org	70
i OBJ = ${SRC:.o=.c}	Err	bitreich.org	70
i 	Err	bitreich.org	70
i all: iomenu	Err	bitreich.org	70
i@@ -8,16 +8,19 @@ all: iomenu	Err	bitreich.org	70
i .c.o:	Err	bitreich.org	70
i         ${CC} -c -o $@ ${CFLAGS} $<	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-iomenu: ${OBJ}	Err	bitreich.org	70
i+iomenu: ${OBJ} utf8.h str.h	Err	bitreich.org	70
i         ${CC} -o $@ ${LDFLAGS} ${OBJ}	Err	bitreich.org	70
i-${OBJ}: utf8.h	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+utf8.c: utf8.h	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+strcasestr.c: str.h	Err	bitreich.org	70
i 	Err	bitreich.org	70
i test: test.c	Err	bitreich.org	70
i         ${CC} -o $@ ${LDFLAGS} test.c utf8.c	Err	bitreich.org	70
i         ./$@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i clean:	Err	bitreich.org	70
i-        rm -f *.o *.core iomenu	Err	bitreich.org	70
i+        rm -f *.o *.core iomenu test	Err	bitreich.org	70
i 	Err	bitreich.org	70
i install: iomenu	Err	bitreich.org	70
i         mkdir -p  ${PREFIX}/share/man/man1	Err	bitreich.org	70
1diff --git a/iomenu.c b/iomenu.c	/scm/iomenu/file/iomenu.c.gph	bitreich.org	70
i@@ -12,13 +12,14 @@	Err	bitreich.org	70
i #include <unistd.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include "utf8.h"	Err	bitreich.org	70
i+#include "str.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #ifndef SIGWINCH	Err	bitreich.org	70
i #define SIGWINCH        28	Err	bitreich.org	70
i #endif	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define MIN(X, Y)        (((X) < (Y)) ? (X) : (Y))	Err	bitreich.org	70
i-#define CTL(char)        ((char) | 0x40)	Err	bitreich.org	70
i+#define CTL(char)        ((char) & ~0x40)	Err	bitreich.org	70
i #define ALT(char)        ((char) + 0x80)	Err	bitreich.org	70
i #define CSI(char)        ((char) + 0x80 + 0x80)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -26,32 +27,11 @@ static struct termios        termios;	Err	bitreich.org	70
i struct winsize                ws;	Err	bitreich.org	70
i static int                ttyfd;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-int                        linec = 0, matchc = 0, cur = 0;	Err	bitreich.org	70
i-char                        **linev = NULL, **matchv = NULL;	Err	bitreich.org	70
i-char                        input[LINE_MAX], formatted[LINE_MAX * 8];	Err	bitreich.org	70
i+static int                linec = 0, matchc = 0, cur = 0;	Err	bitreich.org	70
i+static char                **linev = NULL, **matchv = NULL;	Err	bitreich.org	70
i+static char                input[LINE_MAX], formatted[LINE_MAX * 8];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-int                        flag_hs = 0;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-static char *	Err	bitreich.org	70
i-io_strstr(const char *str1, const char *str2)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        const char        *s1;	Err	bitreich.org	70
i-        const char        *s2;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        for (;;) {	Err	bitreich.org	70
i-                s1 = str1;	Err	bitreich.org	70
i-                s2 = str2;	Err	bitreich.org	70
i-                while (*s1 != '\0' && tolower(*s1) == tolower(*s2))	Err	bitreich.org	70
i-                        s1++, s2++;	Err	bitreich.org	70
i-                if (*s2 == '\0')	Err	bitreich.org	70
i-                        return (char *) str1;	Err	bitreich.org	70
i-                if (*s1 == '\0')	Err	bitreich.org	70
i-                        return NULL;	Err	bitreich.org	70
i-                str1++;	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        return NULL;	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i+static int                flag_hs = 0;	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, and allowed to	Err	bitreich.org	70
i@@ -63,7 +43,7 @@ match_line(char *line, char **tokv)	Err	bitreich.org	70
i         if (flag_hs && line[0] == '#')	Err	bitreich.org	70
i                 return 2;	Err	bitreich.org	70
i         for (; *tokv != NULL; tokv++)	Err	bitreich.org	70
i-                if (io_strstr(line, *tokv) == NULL)	Err	bitreich.org	70
i+                if (strcasestr(line, *tokv) == NULL)	Err	bitreich.org	70
i                         return 0;	Err	bitreich.org	70
i         return 1;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i@@ -267,6 +247,8 @@ key(int k)	Err	bitreich.org	70
i         extern        int          linec;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i top:	Err	bitreich.org	70
i+        printf("{%d}", k);	Err	bitreich.org	70
i+        fflush(stdout);	Err	bitreich.org	70
i         switch (k) {	Err	bitreich.org	70
i         case CTL('C'):	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i@@ -382,7 +364,7 @@ set_terminal(void)	Err	bitreich.org	70
i                 perror("tcgetattr");	Err	bitreich.org	70
i                 exit(EXIT_FAILURE);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        new.c_lflag &= ~(ICANON | ECHO | IGNBRK | IEXTEN | ISIG);	Err	bitreich.org	70
i+        new.c_lflag &= ~(ICANON | ECHO | IEXTEN | IGNBRK);	Err	bitreich.org	70
i         tcsetattr(ttyfd, TCSANOW, &new);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -396,18 +378,19 @@ reset_terminal(void)	Err	bitreich.org	70
i         tcsetattr(ttyfd, TCSANOW, &termios);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-/*	Err	bitreich.org	70
i-** Redraw the whole screen on window resize.	Err	bitreich.org	70
i-*/	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i-sigwinch()	Err	bitreich.org	70
i+sighandle(int sig)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i         extern struct winsize        ws;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (ioctl(ttyfd, TIOCGWINSZ, &ws) < 0)	Err	bitreich.org	70
i-                err("ioctl");	Err	bitreich.org	70
i-        print_screen();	Err	bitreich.org	70
i-        signal(SIGWINCH, sigwinch);	Err	bitreich.org	70
i+        switch (sig) {	Err	bitreich.org	70
i+        case SIGWINCH:	Err	bitreich.org	70
i+                if (ioctl(ttyfd, TIOCGWINSZ, &ws) < 0)	Err	bitreich.org	70
i+                        err("ioctl");	Err	bitreich.org	70
i+                print_screen();	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        signal(sig, sighandle);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static void	Err	bitreich.org	70
i@@ -453,7 +436,7 @@ init(void)	Err	bitreich.org	70
i                 err("open /dev/tty");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         set_terminal();	Err	bitreich.org	70
i-        sigwinch();	Err	bitreich.org	70
i+        sighandle(SIGWINCH);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i /*	Err	bitreich.org	70
1diff --git a/str.h b/str.h	/scm/iomenu/file/str.h.gph	bitreich.org	70
i@@ -0,0 +1 @@	Err	bitreich.org	70
i+char        *strcasestr(const char *, const char *);	Err	bitreich.org	70
1diff --git a/strcasestr.c b/strcasestr.c	/scm/iomenu/file/strcasestr.c.gph	bitreich.org	70
i@@ -0,0 +1,25 @@	Err	bitreich.org	70
i+#include <ctype.h>	Err	bitreich.org	70
i+#include <stddef.h>	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#include "str.h"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+char *	Err	bitreich.org	70
i+strcasesstr(const char *str1, const char *str2)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        const char        *s1;	Err	bitreich.org	70
i+        const char        *s2;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for (;;) {	Err	bitreich.org	70
i+                s1 = str1;	Err	bitreich.org	70
i+                s2 = str2;	Err	bitreich.org	70
i+                while (*s1 != '\0' && tolower(*s1) == tolower(*s2))	Err	bitreich.org	70
i+                        s1++, s2++;	Err	bitreich.org	70
i+                if (*s2 == '\0')	Err	bitreich.org	70
i+                        return (char *) str1;	Err	bitreich.org	70
i+                if (*s1 == '\0')	Err	bitreich.org	70
i+                        return NULL;	Err	bitreich.org	70
i+                str1++;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return NULL;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/iomenu/commit/9747f2c9e90a216...
Content-Typetext/plain; charset=utf-8