bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why require SLOW_BUT_NO_HACKS for stubs?


From: Paolo Bonzini
Subject: Re: Why require SLOW_BUT_NO_HACKS for stubs?
Date: Tue, 12 Jun 2012 13:30:45 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120605 Thunderbird/13.0

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 <address@hidden>
Date: Tue, 12 Jun 2012 13:26:57 +0200
Subject: [PATCH 1/1] freadahead, freadptr, freadseek: Never fail compilation

2012-06-12  Paolo Bonzini  <address@hidden>

        * 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]