Replace fgetln(3) with getline(3). OK?
Index: sbin/fdisk/misc.c =================================================================== RCS file: /cvs/src/sbin/fdisk/misc.c,v retrieving revision 1.63 diff -u -p -r1.63 misc.c --- sbin/fdisk/misc.c 3 Jul 2019 03:24:01 -0000 1.63 +++ sbin/fdisk/misc.c 30 Jan 2021 16:48:36 -0000 @@ -64,20 +64,18 @@ unit_lookup(char *units) int string_from_line(char *buf, size_t buflen) { - char *line; - size_t sz; + static char *line; + static size_t sz; + ssize_t len; - line = fgetln(stdin, &sz); - if (line == NULL) + len = getline(&line, &sz, stdin); + if (len == -1) return (1); - if (line[sz - 1] == '\n') - sz--; - if (sz >= buflen) - sz = buflen - 1; + if (line[len - 1] == '\n') + line[len - 1] = '\0'; - memcpy(buf, line, sz); - buf[sz] = '\0'; + strlcpy(buf, line, buflen); return (0); } -- Christian "naddy" Weisgerber na...@mips.inka.de