Isaac Dunham wrote:
> > The test as it stands is "error out on unsupported platforms unless
> > user specifies to use slow method".
> > My proposal is "On unsupported platforms, use the slow method instead
> > of erroring out."

If we did this, nobody would report to bug-gnulib (or to the libc maintainer)
the need to port the functions. You would get a slow or buggy program
instead.

Paolo Bonzini wrote:
> @@ -84,10 +85,10 @@ freadahead (FILE *fp)
>    if (fp->state == 4 /* WR */ || fp->rp >= fp->wp)
>      return 0;
>    return fp->wp - fp->rp;
> -#elif defined SLOW_BUT_NO_HACKS     /* users can define this */
> -  abort ();
> -  return 0;
>  #else
> - #error "Please port gnulib freadahead.c to your platform! Look at the 
> definition of fflush, fread, ungetc on your system, then report this to 
> bug-gnulib."
> +  /* This implementation is correct on any ANSI C platform.  It is just
> +     awfully slow.  */
> +  return freading(fp) && !feof(fp);
> + #warning "Please port gnulib freadahead.c to your platform! Look at the 
> definition of fflush, fread, ungetc on your system, then report this to 
> bug-gnulib."
>  #endif
>  }

This alternative code is not correct. On a stream freshly opened for reading
it returns 1 where is should return 0 instead.

Bruno


Reply via email to