diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-08-12 11:17:06 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-08-12 11:17:06 -0700 |
commit | a68a68735a637206baf1f6f5cd221b5fb697e370 (patch) | |
tree | 9fb4828b70b4d2b088a40a7f4bfcf24e4f16a8cb | |
parent | a19312bee0a7cef7cfa0fa109312600cc2da36f7 (diff) | |
download | syslinux-a68a68735a637206baf1f6f5cd221b5fb697e370.tar.gz |
stdio.h: revamp fread/fwrite to make gcc less unhappy
Implement the special case size == 1 in terms of a macro; this makes
gcc 4.3 less unhappy.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | com32/include/stdio.h | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/com32/include/stdio.h b/com32/include/stdio.h index bbb75529..0175654d 100644 --- a/com32/include/stdio.h +++ b/com32/include/stdio.h @@ -68,18 +68,19 @@ __extern char * fgets(char *, int, FILE *); __extern size_t _fread(void *, size_t, FILE *); __extern size_t _fwrite(const void *, size_t, FILE *); -#ifndef __NO_FREAD_FWRITE_INLINES -extern __inline__ size_t -fread(void *__p, size_t __s, size_t __n, FILE *__f) -{ - return _fread(__p, __s*__n, __f)/__s; -} +__extern size_t fread(void *, size_t, size_t, FILE *); +__extern size_t fwrite(const void *, size_t, size_t, FILE *); -extern __inline__ size_t -fwrite(void *__p, size_t __s, size_t __n, FILE *__f) -{ - return _fwrite(__p, __s*__n, __f)/__s; -} +#ifndef __NO_FREAD_FWRITE_INLINES +#define fread(__p, __s, __n, __f) \ + ( (__builtin_constant_p(__s) && __s == 1) \ + ? _fread(__p, __n, __f) \ + : fread(__p,__s,__n,__f) ) + +#define fwrite(__p, __s, __n, __f) \ + ( (__builtin_constant_p(__s) && __s == 1) \ + ? _fwrite(__p, __n, __f) \ + : fwrite(__p,__s,__n,__f) ) #endif /* No seek, but we can tell */ |