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