What is the point of doing this? fgetln works fine.
On Sat, Jul 01, 2017 at 02:47:25PM -0400, Bryan Steele wrote: > Seems to work, does this look right? > > -Bryan. > > Index: magic-load.c > =================================================================== > RCS file: /cvs/src/usr.bin/file/magic-load.c,v > retrieving revision 1.25 > diff -u -p -r1.25 magic-load.c > --- magic-load.c 1 Jul 2017 14:34:29 -0000 1.25 > +++ magic-load.c 1 Jul 2017 18:44:42 -0000 > @@ -1071,6 +1071,7 @@ magic_load(FILE *f, const char *path, in > struct magic_line *ml = NULL, *parent, *parent0; > char *line, *tmp; > size_t size; > + ssize_t slen; > u_int at, level, n, i; > > m = xcalloc(1, sizeof *m); > @@ -1084,15 +1085,11 @@ magic_load(FILE *f, const char *path, in > > at = 0; > tmp = NULL; > - while ((line = fgetln(f, &size))) { > - if (line[size - 1] == '\n') > - line[size - 1] = '\0'; > - else { > - tmp = xmalloc(size + 1); > - memcpy(tmp, line, size); > - tmp[size] = '\0'; > - line = tmp; > - } > + while ((slen = getline(&tmp, &size, f)) != -1) { > + line = tmp; > + if (line[slen - 1] == '\n') > + line[slen - 1] = '\0'; > + > at++; > > while (isspace((u_char)*line))