iiomenu.c: refactored readlines() - 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 8614ad4e2b6c08fcf82366637ee1cdf7662434f4 /scm/iomenu/commit/8614ad4e2b6c08fcf82366637ee1cdf7662434f4.gph bitreich.org 70 1parent 3d81e355d3a20771ccedf81e929a69fc65c3e638 /scm/iomenu/commit/3d81e355d3a20771ccedf81e929a69fc65c3e638.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:josuah.demangeon@gandi.net bitreich.org 70 iDate: Sat, 26 Aug 2017 23:04:39 +0200 Err bitreich.org 70 i Err bitreich.org 70 iiomenu.c: refactored readlines() Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 9 +++++---- Err bitreich.org 70 i M iomenu.c | 25 ++++++++++++++----------- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 19 insertions(+), 15 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,4 +1,4 @@ Err bitreich.org 70 i-CFLAGS = -std=c89 -Wpedantic -Wall -Wextra -g Err bitreich.org 70 i+CFLAGS = -std=c89 -Wpedantic -Wall -Wextra -g -D_POSIX_C_SOURCE=200809L Err bitreich.org 70 i Err bitreich.org 70 i all: iomenu Err bitreich.org 70 i Err bitreich.org 70 i@@ -8,6 +8,7 @@ clean: Err bitreich.org 70 i rm -f *.o iomenu Err bitreich.org 70 i Err bitreich.org 70 i install: iomenu Err bitreich.org 70 i- mkdir -p $(PREFIX)/bin $(PREFIX)/share/man/man1 Err bitreich.org 70 i- cp *.1 $(PREFIX)/share/man/man1/ Err bitreich.org 70 i- cp iomenu $(PREFIX)/bin/ Err bitreich.org 70 i+ mkdir -p $(PREFIX)/share/man/man1 Err bitreich.org 70 i+ cp *.1 $(PREFIX)/share/man/man1 Err bitreich.org 70 i+ mkdir -p $(PREFIX)/bin Err bitreich.org 70 i+ cp iomenu $(PREFIX)/bin Err bitreich.org 70 1diff --git a/iomenu.c b/iomenu.c /scm/iomenu/file/iomenu.c.gph bitreich.org 70 i@@ -1,5 +1,6 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i@@ -25,7 +26,7 @@ static int ttyfd; Err bitreich.org 70 i static int current = 0, offset = 0, prev = 0, next = 0; Err bitreich.org 70 i static int linec = 0, matchc = 0; Err bitreich.org 70 i static char **linev = NULL, **matchv = NULL; Err bitreich.org 70 i-static char input[BUFSIZ], formatted[BUFSIZ * 8]; Err bitreich.org 70 i+static char input[LINE_MAX], formatted[LINE_MAX * 8]; Err bitreich.org 70 i static int opt[128], rows = 0; Err bitreich.org 70 i static char *prompt = ""; Err bitreich.org 70 i Err bitreich.org 70 i@@ -89,7 +90,8 @@ resetterminal(void) Err bitreich.org 70 i static void Err bitreich.org 70 i readlines(void) Err bitreich.org 70 i { Err bitreich.org 70 i- int size = 0; Err bitreich.org 70 i+ int size = 0; Err bitreich.org 70 i+ size_t len; Err bitreich.org 70 i Err bitreich.org 70 i do { Err bitreich.org 70 i if (linec >= size) { Err bitreich.org 70 i@@ -100,13 +102,17 @@ readlines(void) Err bitreich.org 70 i die("realloc"); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- linev[linec] = matchv[linec] = malloc(BUFSIZ); Err bitreich.org 70 i- if (linev[linec] == NULL) Err bitreich.org 70 i- die("malloc"); Err bitreich.org 70 i+ linev[linec] = malloc(LINE_MAX + 1); Err bitreich.org 70 i+ if (!(fgets(linev[linec], LINE_MAX, stdin))) { Err bitreich.org 70 i+ free(linev[linec]); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i- } while (fgets(linev[linec++], BUFSIZ, stdin)); Err bitreich.org 70 i+ len = strlen(linev[linec]); Err bitreich.org 70 i+ if (len > 0 && linec[linev][len - 1] == '\n') Err bitreich.org 70 i+ linev[linec][len - 1] = '\0'; Err bitreich.org 70 i Err bitreich.org 70 i- matchc = linec; Err bitreich.org 70 i+ } while (++linec, ++matchc); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i static char * Err bitreich.org 70 i@@ -117,10 +123,7 @@ format(char *s, int cols) 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 == '\n') { Err bitreich.org 70 i- s++; Err bitreich.org 70 i- Err bitreich.org 70 i- } else if (*s == '\t') { 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 .