isplit line reading function - 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 376d9cfc1451c3e416065b0fdd958c491b9b4a93 /scm/iomenu/commit/376d9cfc1451c3e416065b0fdd958c491b9b4a93.gph bitreich.org 70
1parent 223058fdf9e2427b8ec9ec01df7185c074b545a7 /scm/iomenu/commit/223058fdf9e2427b8ec9ec01df7185c074b545a7.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Sun, 15 Oct 2017 23:26:30 +0200 Err bitreich.org 70
i Err bitreich.org 70
isplit line reading function Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M iomenu.c | 41 ++++++++++++++++++++----------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 26 insertions(+), 15 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/iomenu.c b/iomenu.c /scm/iomenu/file/iomenu.c.gph bitreich.org 70
i@@ -53,13 +53,31 @@ die(const char *s) Err bitreich.org 70
i exit(EXIT_FAILURE); Err bitreich.org 70
i } 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 void Err bitreich.org 70
i-read_lines(void) Err bitreich.org 70
i+read_stdin(void) Err bitreich.org 70
i { 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+ 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@@ -67,18 +85,11 @@ read_lines(void) 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- 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+ if ((linev[linec] = read_line(stdin)) == NULL) Err bitreich.org 70
i break; Err bitreich.org 70
i- } Err bitreich.org 70
i- 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- } while (++linec, ++matchc); Err bitreich.org 70
i+ linec++; Err bitreich.org 70
i+ matchc++; Err bitreich.org 70
i+ } Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static void Err bitreich.org 70
i@@ -537,7 +548,7 @@ main(int argc, char *argv[]) Err bitreich.org 70
i Err bitreich.org 70
i parse_opt(argc, argv); Err bitreich.org 70
i Err bitreich.org 70
i- read_lines(); Err bitreich.org 70
i+ read_stdin(); Err bitreich.org 70
i filter(); Err bitreich.org 70
i Err bitreich.org 70
i if (!freopen("/dev/tty", "r", stdin)) die("freopen /dev/tty"); Err bitreich.org 70
.
Response:
text/plain