[Top][All Lists]
[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
- Why require SLOW_BUT_NO_HACKS for stubs?, Isaac Dunham, 2012/06/10
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, Paul Eggert, 2012/06/10
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, Isaac Dunham, 2012/06/11
- Re: Why require SLOW_BUT_NO_HACKS for stubs?,
Paolo Bonzini <=
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, John Spencer, 2012/06/12
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, Bruno Haible, 2012/06/17
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, Paolo Bonzini, 2012/06/23
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, Bruno Haible, 2012/06/24
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, John Spencer, 2012/06/24
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, Paul Eggert, 2012/06/25
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, John Spencer, 2012/06/25
- Re: Why require SLOW_BUT_NO_HACKS for stubs?, Philipp Thomas, 2012/06/25
- Re: musl bugs found through gnulib, Bruno Haible, 2012/06/17
- Re: [musl] Re: musl bugs found through gnulib, idunham, 2012/06/17