SMOLNET PORTAL home about changes
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
Original URLgopher://bitreich.org/0/scm/iomenu/commit/376d9cfc1451c3e...
Content-Typetext/plain; charset=utf-8