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 - 1.63
+++ sbin/fdisk/misc.c 30 Jan 2021 16:48:36 -
@@ -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