Il 12/06/2012 03:22, Isaac Dunham ha scritto: >> > Performance, surely. But if there's >> > consensus that performance does not matter that >> > much with musl, perhaps we should default to the >> > slow version with musl. > 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."
I agree, downgrading to a #warning and removing SLOW_BUT_NO_HACKS should be enough. That would be something like this, but it would fail the tests. What to do? Paolo ------------ 8< ---------------- >From e2aa7434ad06a0ec4e2c47b57564313d16561c14 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini <pbonz...@redhat.com> Date: Tue, 12 Jun 2012 13:26:57 +0200 Subject: [PATCH 1/1] freadahead, freadptr, freadseek: Never fail compilation 2012-06-12 Paolo Bonzini <bonz...@gnu.org> * lib/freadahead.c [!SLOW_BUT_NO_HACKS]: Use the slow alternative, downgrading the #error to a #warning. * lib/freadptr.c [!SLOW_BUT_NO_HACKS]: Likewise. * lib/freadseek.c [!SLOW_BUT_NO_HACKS]: Likewise. * modules/freadahead: Depend on freading. --- lib/freadahead.c | 9 +++++---- lib/freadptr.c | 5 ++--- lib/freadseek.c | 4 ++-- modules/freadahead | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/freadahead.c b/lib/freadahead.c index 2ba8b34..473911f 100644 --- a/lib/freadahead.c +++ b/lib/freadahead.c @@ -21,6 +21,7 @@ #include <stdlib.h> #include "stdio-impl.h" +#include "freading.h" size_t freadahead (FILE *fp) @@ -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 } diff --git a/lib/freadptr.c b/lib/freadptr.c index 27c2285..325d91d 100644 --- a/lib/freadptr.c +++ b/lib/freadptr.c @@ -108,11 +108,10 @@ freadptr (FILE *fp, size_t *sizep) return NULL; *sizep = fp->wp - fp->rp; return fp->rp; -#elif defined SLOW_BUT_NO_HACKS /* users can define this */ +#else /* This implementation is correct on any ANSI C platform. It is just awfully slow. */ return NULL; -#else - #error "Please port gnulib freadptr.c to your platform! Look at the definition of fflush, fread, getc, getc_unlocked on your system, then report this to bug-gnulib." + #warning "Please port gnulib freadptr.c to your platform! Look at the definition of fflush, fread, getc, getc_unlocked on your system, then report this to bug-gnulib." #endif } diff --git a/lib/freadseek.c b/lib/freadseek.c index 4145173..67de1c0 100644 --- a/lib/freadseek.c +++ b/lib/freadseek.c @@ -60,9 +60,9 @@ freadptrinc (FILE *fp, size_t increment) fp->__bufp += increment; #elif defined EPLAN9 /* Plan9 */ fp->rp += increment; -#elif defined SLOW_BUT_NO_HACKS /* users can define this */ #else - #error "Please port gnulib freadseek.c to your platform! Look at the definition of getc, getc_unlocked on your system, then report this to bug-gnulib." + /* Doing nothing is fine on any ANSI C platform. It is just awfully slow. */ + #warning "Please port gnulib freadseek.c to your platform! Look at the definition of getc, getc_unlocked on your system, then report this to bug-gnulib." #endif } diff --git a/modules/freadahead b/modules/freadahead index 96ef2e8..4730695 100644 --- a/modules/freadahead +++ b/modules/freadahead @@ -8,6 +8,7 @@ lib/freadahead.c lib/stdio-impl.h Depends-on: +freading configure.ac: -- 1.7.10.2