SMOLNET PORTAL home about changes
ireading the buffer fast - 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 17183e9024bb8a1fa1e2152819ac29a3e82047b4	/scm/iomenu/commit/17183e9024bb8a1fa1e2152819ac29a3e82047b4.gph	bitreich.org	70
1parent 277ca72956b6deb921cbe96f981214602624c6ac	/scm/iomenu/commit/277ca72956b6deb921cbe96f981214602624c6ac.gph	bitreich.org	70
hAuthor: Josuah Demangeon <mail@josuah.net>	URL:mailto:mail@josuah.net	bitreich.org	70
iDate:   Wed,  1 Nov 2017 14:42:53 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
ireading the buffer fast	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M .gitignore                          |       1 +	Err	bitreich.org	70
i  M Makefile                            |       2 +-	Err	bitreich.org	70
i  M buffer.c                            |      78 +++++++++++++++++--------------	Err	bitreich.org	70
i  M iomenu.h                            |       2 --	Err	bitreich.org	70
i  M main.c                              |       2 --	Err	bitreich.org	70
i	Err	bitreich.org	70
i5 files changed, 45 insertions(+), 40 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/.gitignore b/.gitignore	/scm/iomenu/file/.gitignore.gph	bitreich.org	70
i@@ -1,2 +1,3 @@	Err	bitreich.org	70
i iomenu	Err	bitreich.org	70
i *.o	Err	bitreich.org	70
i+*core*	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/iomenu/file/Makefile.gph	bitreich.org	70
i@@ -11,7 +11,7 @@ iomenu: $(OBJ)	Err	bitreich.org	70
i $(OBJ): $(INC)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i clean:	Err	bitreich.org	70
i-        rm -f *.o iomenu	Err	bitreich.org	70
i+        rm -f *.o *.core iomenu	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/buffer.c b/buffer.c	/scm/iomenu/file/buffer.c.gph	bitreich.org	70
i@@ -4,31 +4,13 @@	Err	bitreich.org	70
i #include <stdlib.h>	Err	bitreich.org	70
i #include <string.h>	Err	bitreich.org	70
i #include <limits.h>	Err	bitreich.org	70
i+#include <unistd.h>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include "iomenu.h"	Err	bitreich.org	70
i #include "buffer.h"	Err	bitreich.org	70
i #include "main.h"	Err	bitreich.org	70
i #include "control.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-static char *	Err	bitreich.org	70
i-read_line(FILE *fp)	Err	bitreich.org	70
i-{	Err	bitreich.org	70
i-        char *line;	Err	bitreich.org	70
i-        size_t len;	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        line = malloc(LINE_MAX + 1);	Err	bitreich.org	70
i-        if (!(fgets(line, LINE_MAX, fp))) {	Err	bitreich.org	70
i-                free(line);	Err	bitreich.org	70
i-                return NULL;	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        len = strlen(line);	Err	bitreich.org	70
i-        if (len > 0 && line[len - 1] == '\n')	Err	bitreich.org	70
i-                line[len - 1] = '\0';	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        return (line);	Err	bitreich.org	70
i-}	Err	bitreich.org	70
i-	Err	bitreich.org	70
i static int	Err	bitreich.org	70
i match_line(char *line, char **tokv, int tokc)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i@@ -47,8 +29,7 @@ free_lines(void)	Err	bitreich.org	70
i         extern char **linev;	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-                        free(linev[linec - 1]);	Err	bitreich.org	70
i+                free(linev[0]);	Err	bitreich.org	70
i                 free(linev);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         if (matchv)	Err	bitreich.org	70
i@@ -56,24 +37,51 @@ free_lines(void)	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i-read_stdin(void)	Err	bitreich.org	70
i+split_lines(char *buf)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        int size = 0;	Err	bitreich.org	70
i         extern char **linev;	Err	bitreich.org	70
i+        extern int linec;	Err	bitreich.org	70
i+        char *b;	Err	bitreich.org	70
i+        char **lv;	Err	bitreich.org	70
i+        char **mv;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        while (1) {	Err	bitreich.org	70
i-                if (linec >= size) {	Err	bitreich.org	70
i-                        size += BUFSIZ;	Err	bitreich.org	70
i-                        linev = realloc(linev,  sizeof (char **) * size);	Err	bitreich.org	70
i-                        matchv = realloc(matchv, sizeof (char **) * size);	Err	bitreich.org	70
i-                        if (!linev || !matchv)	Err	bitreich.org	70
i-                                die("realloc");	Err	bitreich.org	70
i-                }	Err	bitreich.org	70
i-                if ((linev[linec] = read_line(stdin)) == NULL)	Err	bitreich.org	70
i-                        break;	Err	bitreich.org	70
i+        linec = 0;	Err	bitreich.org	70
i+        b = buf;	Err	bitreich.org	70
i+        while ((b = strchr(b + 1, '\n')))	Err	bitreich.org	70
i                 linec++;	Err	bitreich.org	70
i-                matchc++;	Err	bitreich.org	70
i+        if (!(lv = linev = calloc(linec, sizeof (char **))))	Err	bitreich.org	70
i+                die("calloc");	Err	bitreich.org	70
i+        if (!(mv = matchv = calloc(linec, sizeof (char **)))) {	Err	bitreich.org	70
i+                free(linev);	Err	bitreich.org	70
i+                die("calloc");	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        *mv = *lv = b = buf;	Err	bitreich.org	70
i+        while ((b = strchr(b, '\n'))) {	Err	bitreich.org	70
i+                *b++ = '\0';	Err	bitreich.org	70
i+                mv++, lv++;	Err	bitreich.org	70
i+                *mv = *lv = b;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+read_stdin(void)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        size_t size = BUFSIZ;	Err	bitreich.org	70
i+        size_t len;	Err	bitreich.org	70
i+        size_t off;	Err	bitreich.org	70
i+        char *buf;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        off = 0;	Err	bitreich.org	70
i+        buf = malloc(size);	Err	bitreich.org	70
i+        while ((len = read(STDIN_FILENO, buf + off, size - off)) > 0) {	Err	bitreich.org	70
i+                off += len;	Err	bitreich.org	70
i+                if (off > size >> 1) {	Err	bitreich.org	70
i+                        size <<= 1;	Err	bitreich.org	70
i+                        buf = realloc(buf, size);	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i+        buf[off] = '\0';	Err	bitreich.org	70
i+        split_lines(buf);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i@@ -87,7 +95,7 @@ filter(void)	Err	bitreich.org	70
i         char         *s;	Err	bitreich.org	70
i         char          buf[sizeof (input)];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        current = offset = next = 0;	Err	bitreich.org	70
i+        current = 0;	Err	bitreich.org	70
i         strcpy(buf, input);	Err	bitreich.org	70
i         tokc = 0;	Err	bitreich.org	70
i         n = 0;	Err	bitreich.org	70
1diff --git a/iomenu.h b/iomenu.h	/scm/iomenu/file/iomenu.h.gph	bitreich.org	70
i@@ -15,7 +15,5 @@ extern char            *prompt;	Err	bitreich.org	70
i extern char             input[LINE_MAX];	Err	bitreich.org	70
i extern char             formatted[LINE_MAX * 8];	Err	bitreich.org	70
i extern int              current;	Err	bitreich.org	70
i-extern int              offset;	Err	bitreich.org	70
i-extern int              next;	Err	bitreich.org	70
i extern int              opt[128];	Err	bitreich.org	70
i extern int              rows;	Err	bitreich.org	70
1diff --git a/main.c b/main.c	/scm/iomenu/file/main.c.gph	bitreich.org	70
i@@ -27,9 +27,7 @@ char            *prompt = "";	Err	bitreich.org	70
i char             input[LINE_MAX];	Err	bitreich.org	70
i char             formatted[LINE_MAX * 8];	Err	bitreich.org	70
i int              current = 0;	Err	bitreich.org	70
i-int              offset = 0;	Err	bitreich.org	70
i int              rows = 0;	Err	bitreich.org	70
i-int              next = 0;	Err	bitreich.org	70
i int              opt[128];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/iomenu/commit/17183e9024bb8a1...
Content-Typetext/plain; charset=utf-8