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))

Reply via email to