fix stdin plitting into lines - iomenu - interactive terminal-based selection menu HTML git clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit e3bca30c0b12f79deb675e0e7bd36917226e3dff DIR parent aed045ad72c3828eaff58e4d289568789a0fa736 HTML Author: Josuah Demangeon <mail@josuah.net> Date: Fri, 8 Dec 2017 10:04:09 +0100 fix stdin plitting into lines Diffstat: M iomenu.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) --- DIR diff --git a/iomenu.c b/iomenu.c @@ -72,21 +72,17 @@ split_lines(char *buf) char *b, **lv, **mv; - linec = 0; - b = buf; - while ((b = strchr(b + 1, '\n'))) + linec = 1; + for (b = buf; (b = strchr(b, '\n')) != NULL && b[1] != '\0'; b++) linec++; - if (!linec) - linec = 1; - if (!(lv = linev = calloc(linec + 1, sizeof (char **)))) + if ((lv = linev = calloc(linec, sizeof (char **))) == NULL) die("calloc"); - if (!(mv = matchv = calloc(linec + 1, sizeof (char **)))) + if ((mv = matchv = calloc(linec, sizeof (char **))) == NULL) die("calloc"); *mv = *lv = b = buf; - while ((b = strchr(b, '\n'))) { + while ((b = strchr(b, '\n')) != NULL) { *b = '\0'; - mv++, lv++; - *mv = *lv = ++b; + *++mv = *++lv = ++b; } }