In preparation of the DragonflyBSD port, another refactoring. This should help to keep the number of #ifs limited.
2008-04-26 Bruno Haible <[EMAIL PROTECTED]> * lib/stdio-impl.h: New file. * lib/fbufmode.c: Include stdio-impl.h. (fbufmode): Use fp_, remove redundant #defines. * lib/fflush.c: Include stdio-impl.h. (clear_ungetc_buffer): Remove redundant #defines. * lib/fpurge.c: Include stdio-impl.h. (fpurge): Remove redundant #defines. * lib/freadable.c: Include stdio-impl.h. (freadable): Remove redundant #defines. * lib/freadahead.c: Include stdio-impl.h. (freadahead): Remove redundant #defines. * lib/freading.c: Include stdio-impl.h. (freading): Remove redundant #defines. * lib/freadptr.c: Include stdio-impl.h. (freadptr): Remove redundant #defines. * lib/freadseek.c: Include stdio-impl.h. (freadptrinc): Remove redundant #defines. * lib/fseeko.c: Include stdio-impl.h. (rpl_fseeko): Remove redundant #defines. * lib/fseterr.c: Include stdio-impl.h. (fseterr): Remove redundant #defines. * lib/fwritable.c: Include stdio-impl.h. (fwritable: Remove redundant #defines. * lib/fwriting.c: Include stdio-impl.h. (fwriting): Remove redundant #defines. * modules/fbufmode (Files): Add lib/stdio-impl.h. * modules/fflush (Files): Likewise. * modules/fpurge (Files): Likewise. * modules/freadable (Files): Likewise. * modules/freadahead (Files): Likewise. * modules/freading (Files): Likewise. * modules/freadptr (Files): Likewise. * modules/freadseek (Files): Likewise. * modules/fseeko (Files): Likewise. * modules/fseterr (Files): Likewise. * modules/fwritable (Files): Likewise. * modules/fwriting (Files): Likewise. ============================= lib/stdio-impl.h =========================== /* Implementation details of FILE streams. Copyright (C) 2007-2008 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* Many stdio implementations have the same logic and therefore can share the same implementation of stdio extension API, except that some fields have different naming conventions, or their access requires some casts. */ /* BSD stdio derived implementations. */ #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ # if defined __NetBSD__ || defined __OpenBSD__ /* NetBSD, OpenBSD */ /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */ struct __sfileext { struct __sbuf _ub; /* ungetc buffer */ /* More fields, not relevant here. */ }; # define fp_ub ((struct __sfileext *) fp->_ext._base)->_ub # else /* FreeBSD, MacOS X, Cygwin */ # define fp_ub fp->_ub # endif # define HASUB(fp) (fp_ub._base != NULL) #endif /* SystemV derived implementations. */ #if defined _IOERR # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ # define fp_ ((struct { unsigned char *_ptr; \ unsigned char *_base; \ unsigned char *_end; \ long _cnt; \ int _file; \ unsigned int _flag; \ } *) fp) # else # define fp_ fp # endif # if defined _SCO_DS /* OpenServer */ # define _cnt __cnt # define _ptr __ptr # define _base __base # define _flag __flag # endif #endif =========================================================================== *** lib/fbufmode.c.orig 2008-04-26 17:59:09.000000000 +0200 --- lib/fbufmode.c 2008-04-26 17:42:40.000000000 +0200 *************** *** 23,28 **** --- 23,30 ---- # include <stdio_ext.h> #endif + #include "stdio-impl.h" + int fbufmode (FILE *fp) { *************** *** 56,78 **** if (fp->_flag & _IOLBF) return _IOLBF; # endif ! # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ ! # define fp_ ((struct { unsigned char *_ptr; \ ! unsigned char *_base; \ ! unsigned char *_end; \ ! long _cnt; \ ! int _file; \ ! unsigned int _flag; \ ! } *) fp) ! return fp_->_flag & (_IONBF | _IOFBF); ! # else ! # if defined _SCO_DS /* OpenServer */ ! # define _flag __flag ! # endif ! if (fp->_flag & _IONBF) return _IONBF; return _IOFBF; - # endif #elif defined __UCLIBC__ /* uClibc */ if (fp->__modeflags & __FLAG_LBF) return _IOLBF; --- 58,66 ---- if (fp->_flag & _IOLBF) return _IOLBF; # endif ! if (fp_->_flag & _IONBF) return _IONBF; return _IOFBF; #elif defined __UCLIBC__ /* uClibc */ if (fp->__modeflags & __FLAG_LBF) return _IOLBF; *** lib/fflush.c.orig 2008-04-26 17:59:09.000000000 +0200 --- lib/fflush.c 2008-04-26 17:56:00.000000000 +0200 *************** *** 27,48 **** #include "freading.h" #include "fpurge.h" #undef fflush static inline void clear_ungetc_buffer (FILE *fp) { #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ - # if defined __NetBSD__ || defined __OpenBSD__ - struct __sfileext - { - struct __sbuf _ub; /* ungetc buffer */ - /* More fields, not relevant here. */ - }; - # define HASUB(fp) (((struct __sfileext *) (fp)->_ext._base)->_ub._base != NULL) - # else - # define HASUB(fp) ((fp)->_ub._base != NULL) - # endif if (HASUB (fp)) { fp->_p += stream->_r; --- 27,40 ---- #include "freading.h" #include "fpurge.h" + #include "stdio-impl.h" + #undef fflush static inline void clear_ungetc_buffer (FILE *fp) { #if defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ if (HASUB (fp)) { fp->_p += stream->_r; *** lib/fpurge.c.orig 2008-04-26 17:59:09.000000000 +0200 --- lib/fpurge.c 2008-04-26 17:49:00.000000000 +0200 *************** *** 24,29 **** --- 24,31 ---- #endif #include <stdlib.h> + #include "stdio-impl.h" + int fpurge (FILE *fp) { *************** *** 76,88 **** ? fp->_bf._size : 0); /* Avoid memory leak when there is an active ungetc buffer. */ - # if defined __NetBSD__ || defined __OpenBSD__ /* NetBSD, OpenBSD */ - /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> - and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */ - # define fp_ub ((struct { struct __sbuf _ub; } *) fp->_ext._base)->_ub - # else /* FreeBSD, MacOS X, Cygwin */ - # define fp_ub fp->_ub - # endif if (fp_ub._base != NULL) { if (fp_ub._base != fp->_ubuf) --- 78,83 ---- *************** *** 97,107 **** fp->_ungetc_count = 0; return 0; # elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined _SCO_DS /* OpenServer */ - # define _base __base - # define _ptr __ptr - # define _cnt __cnt - # endif fp->_ptr = fp->_base; if (fp->_ptr != NULL) fp->_cnt = 0; --- 92,97 ---- *** lib/freadable.c.orig 2008-04-26 17:59:09.000000000 +0200 --- lib/freadable.c 2008-04-26 17:40:20.000000000 +0200 *************** *** 19,24 **** --- 19,26 ---- /* Specification. */ #include "freadable.h" + #include "stdio-impl.h" + bool freadable (FILE *fp) { *************** *** 32,40 **** #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & (_IORW | _IOREAD)) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined _SCO_DS /* OpenServer */ - # define _flag __flag - # endif return (fp->_flag & (_IORW | _IOREAD)) != 0; #elif defined __QNX__ /* QNX */ return (fp->_Mode & 0x1 /* _MOPENR */) != 0; --- 34,39 ---- *** lib/freadahead.c.orig 2008-04-26 17:59:09.000000000 +0200 --- lib/freadahead.c 2008-04-26 17:56:10.000000000 +0200 *************** *** 19,24 **** --- 19,26 ---- /* Specification. */ #include "freadahead.h" + #include "stdio-impl.h" + size_t freadahead (FILE *fp) { *************** *** 29,44 **** + (fp->_flags & _IO_IN_BACKUP ? fp->_IO_save_end - fp->_IO_save_base : 0); #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ - # if defined __NetBSD__ || defined __OpenBSD__ - struct __sfileext - { - struct __sbuf _ub; /* ungetc buffer */ - /* More fields, not relevant here. */ - }; - # define HASUB(fp) (((struct __sfileext *) (fp)->_ext._base)->_ub._base != NULL) - # else - # define HASUB(fp) ((fp)->_ub._base != NULL) - # endif if ((fp->_flags & __SWR) != 0 || fp->_r < 0) return 0; return fp->_r --- 31,36 ---- *************** *** 52,77 **** (fp->_ungetc_count == 0 ? fp->_rcount : fp->_ungetc_count - fp->_rcount) */ return (fp->_rcount > 0 ? fp->_rcount : fp->_ungetc_count - fp->_rcount); #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ - # define fp_ ((struct { unsigned char *_ptr; \ - unsigned char *_base; \ - unsigned char *_end; \ - long _cnt; \ - int _file; \ - unsigned int _flag; \ - } *) fp) if ((fp_->_flag & _IOWRT) != 0) return 0; return fp_->_cnt; - # else - # if defined _SCO_DS /* OpenServer */ - # define _flag __flag - # define _cnt __cnt - # endif - if ((fp->_flag & _IOWRT) != 0) - return 0; - return fp->_cnt; - # endif #elif defined __UCLIBC__ /* uClibc */ # ifdef __STDIO_BUFFERS if (fp->__modeflags & __FLAG_WRITING) --- 44,52 ---- *** lib/freading.c.orig 2008-04-26 17:59:09.000000000 +0200 --- lib/freading.c 2008-04-26 17:40:20.000000000 +0200 *************** *** 19,24 **** --- 19,26 ---- /* Specification. */ #include "freading.h" + #include "stdio-impl.h" + /* Don't use glibc's __freading function in glibc < 2.7, see <http://sourceware.org/bugzilla/show_bug.cgi?id=4359> */ #if !(HAVE___FREADING && (!defined __GLIBC__ || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 7))) *************** *** 38,46 **** #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & _IOREAD) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined _SCO_DS /* OpenServer */ - # define _flag __flag - # endif return (fp->_flag & _IOREAD) != 0; #elif defined __UCLIBC__ /* uClibc */ return (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) != 0; --- 40,45 ---- *** lib/freadptr.c.orig 2008-04-26 17:59:09.000000000 +0200 --- lib/freadptr.c 2008-04-26 17:43:51.000000000 +0200 *************** *** 21,26 **** --- 21,28 ---- #include <stdlib.h> + #include "stdio-impl.h" + const char * freadptr (FILE *fp, size_t *sizep) { *************** *** 55,68 **** *sizep = fp->_rcount; return fp->_ptr; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ - # define fp_ ((struct { unsigned char *_ptr; \ - unsigned char *_base; \ - unsigned char *_end; \ - long _cnt; \ - int _file; \ - unsigned int _flag; \ - } *) fp) if ((fp_->_flag & _IOWRT) != 0) return NULL; size = fp_->_cnt; --- 57,62 ---- *************** *** 70,89 **** return NULL; *sizep = size; return (const char *) fp_->_ptr; - # else - # if defined _SCO_DS /* OpenServer */ - # define _flag __flag - # define _ptr __ptr - # define _cnt __cnt - # endif - if ((fp->_flag & _IOWRT) != 0) - return NULL; - size = fp->_cnt; - if (size == 0) - return NULL; - *sizep = size; - return (const char *) fp->_ptr; - # endif #elif defined __UCLIBC__ /* uClibc */ # ifdef __STDIO_BUFFERS if (fp->__modeflags & __FLAG_WRITING) --- 64,69 ---- *** lib/freadseek.c.orig 2008-04-26 17:59:10.000000000 +0200 --- lib/freadseek.c 2008-04-26 17:44:29.000000000 +0200 *************** *** 25,30 **** --- 25,32 ---- #include "freadahead.h" #include "freadptr.h" + #include "stdio-impl.h" + /* Increment the in-memory pointer. INCREMENT must be at most the buffer size returned by freadptr(). This is very cheap (no system calls). */ *************** *** 41,64 **** fp->_ptr += increment; fp->_rcount -= increment; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ - # define fp_ ((struct { unsigned char *_ptr; \ - unsigned char *_base; \ - unsigned char *_end; \ - long _cnt; \ - int _file; \ - unsigned int _flag; \ - } *) fp) fp_->_ptr += increment; fp_->_cnt -= increment; - # else - # if defined _SCO_DS /* OpenServer */ - # define _ptr __ptr - # define _cnt __cnt - # endif - fp->_ptr += increment; - fp->_cnt -= increment; - # endif #elif defined __UCLIBC__ /* uClibc */ # ifdef __STDIO_BUFFERS fp->__bufpos += increment; --- 43,50 ---- *** lib/fseeko.c.orig 2008-04-26 17:59:10.000000000 +0200 --- lib/fseeko.c 2008-04-26 17:49:53.000000000 +0200 *************** *** 23,28 **** --- 23,30 ---- /* Get off_t and lseek. */ #include <unistd.h> + #include "stdio-impl.h" + #undef fseeko #if !HAVE_FSEEKO # undef fseek *************** *** 44,56 **** && fp->_IO_write_ptr == fp->_IO_write_base && fp->_IO_save_base == NULL) #elif defined __sferror /* FreeBSD, NetBSD, OpenBSD, MacOS X, Cygwin */ - # if defined __NetBSD__ || defined __OpenBSD__ /* NetBSD, OpenBSD */ - /* See <http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> - and <http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fileext.h?rev=HEAD&content-type=text/x-cvsweb-markup> */ - # define fp_ub ((struct { struct __sbuf _ub; } *) fp->_ext._base)->_ub - # else /* FreeBSD, MacOS X, Cygwin */ - # define fp_ub fp->_ub - # endif # if defined __SL64 && defined __SCLE /* Cygwin */ if ((fp->_flags & __SL64) == 0) { --- 46,51 ---- *************** *** 76,100 **** && fp->_wcount == 0 && fp->_ungetc_count == 0) #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ - # define fp_ ((struct { unsigned char *_ptr; \ - unsigned char *_base; \ - unsigned char *_end; \ - long _cnt; \ - int _file; \ - unsigned int _flag; \ - } *) fp) if (fp_->_ptr == fp_->_base && (fp_->_ptr == NULL || fp_->_cnt == 0)) - # else - # if defined _SCO_DS /* OpenServer */ - # define _base __base - # define _ptr __ptr - # define _cnt __cnt - # endif - if (fp->_ptr == fp->_base - && (fp->_ptr == NULL || fp->_cnt == 0)) - # endif #elif defined __UCLIBC__ /* uClibc */ if (((fp->__modeflags & __FLAG_WRITING) == 0 || fp->__bufpos == fp->__bufstart) --- 71,78 ---- *************** *** 125,133 **** #elif defined __EMX__ /* emx+gcc */ fp->_flags &= ~_IOEOF; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined _SCO_DS /* OpenServer */ - # define _flag __flag - # endif fp->_flag &= ~_IOEOF; #endif return 0; --- 103,108 ---- *** lib/fseterr.c.orig 2008-04-26 17:59:10.000000000 +0200 --- lib/fseterr.c 2008-04-26 17:45:14.000000000 +0200 *************** *** 21,26 **** --- 21,28 ---- #include <errno.h> + #include "stdio-impl.h" + void fseterr (FILE *fp) { *************** *** 34,54 **** #elif defined __EMX__ /* emx+gcc */ fp->_flags |= _IOERR; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined __sun && defined _LP64 /* Solaris/{SPARC,AMD64} 64-bit */ - # define fp_ ((struct { unsigned char *_ptr; \ - unsigned char *_base; \ - unsigned char *_end; \ - long _cnt; \ - int _file; \ - unsigned int _flag; \ - } *) fp) fp_->_flag |= _IOERR; - # else - # if defined _SCO_DS /* OpenServer */ - # define _flag __flag - # endif - fp->_flag |= _IOERR; - # endif #elif defined __UCLIBC__ /* uClibc */ fp->__modeflags |= __FLAG_ERROR; #elif defined __QNX__ /* QNX */ --- 36,42 ---- *** lib/fwritable.c.orig 2008-04-26 17:59:10.000000000 +0200 --- lib/fwritable.c 2008-04-26 17:40:20.000000000 +0200 *************** *** 19,24 **** --- 19,26 ---- /* Specification. */ #include "fwritable.h" + #include "stdio-impl.h" + bool fwritable (FILE *fp) { *************** *** 32,40 **** #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & (_IORW | _IOWRT)) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined _SCO_DS /* OpenServer */ - # define _flag __flag - # endif return (fp->_flag & (_IORW | _IOWRT)) != 0; #elif defined __QNX__ /* QNX */ return (fp->_Mode & 0x2 /* _MOPENW */) != 0; --- 34,39 ---- *** lib/fwriting.c.orig 2008-04-26 17:59:10.000000000 +0200 --- lib/fwriting.c 2008-04-26 17:40:20.000000000 +0200 *************** *** 19,24 **** --- 19,26 ---- /* Specification. */ #include "fwriting.h" + #include "stdio-impl.h" + bool fwriting (FILE *fp) { *************** *** 32,40 **** #elif defined __EMX__ /* emx+gcc */ return (fp->_flags & _IOWRT) != 0; #elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, mingw */ - # if defined _SCO_DS /* OpenServer */ - # define _flag __flag - # endif return (fp->_flag & _IOWRT) != 0; #elif defined __UCLIBC__ /* uClibc */ return (fp->__modeflags & __FLAG_WRITING) != 0; --- 34,39 ---- *** modules/fbufmode.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/fbufmode 2008-04-26 17:36:57.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/fbufmode.h lib/fbufmode.c + lib/stdio-impl.h m4/fbufmode.m4 Depends-on: *** modules/fflush.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/fflush 2008-04-26 17:36:58.000000000 +0200 *************** *** 3,8 **** --- 3,9 ---- Files: lib/fflush.c + lib/stdio-impl.h m4/fflush.m4 Depends-on: *** modules/fpurge.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/fpurge 2008-04-26 17:36:58.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/fpurge.h lib/fpurge.c + lib/stdio-impl.h m4/fpurge.m4 Depends-on: *** modules/freadable.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/freadable 2008-04-26 17:36:59.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/freadable.h lib/freadable.c + lib/stdio-impl.h m4/freadable.m4 Depends-on: *** modules/freadahead.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/freadahead 2008-04-26 17:36:59.000000000 +0200 *************** *** 5,10 **** --- 5,11 ---- Files: lib/freadahead.h lib/freadahead.c + lib/stdio-impl.h Depends-on: *** modules/freading.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/freading 2008-04-26 17:37:00.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/freading.h lib/freading.c + lib/stdio-impl.h m4/freading.m4 Depends-on: *** modules/freadptr.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/freadptr 2008-04-26 17:37:00.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/freadptr.h lib/freadptr.c + lib/stdio-impl.h Depends-on: *** modules/freadseek.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/freadseek 2008-04-26 17:37:00.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/freadseek.h lib/freadseek.c + lib/stdio-impl.h Depends-on: freadahead *** modules/fseeko.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/fseeko 2008-04-26 17:37:01.000000000 +0200 *************** *** 3,8 **** --- 3,9 ---- Files: lib/fseeko.c + lib/stdio-impl.h m4/fseeko.m4 Depends-on: *** modules/fseterr.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/fseterr 2008-04-26 17:37:01.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/fseterr.h lib/fseterr.c + lib/stdio-impl.h Depends-on: *** modules/fwritable.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/fwritable 2008-04-26 17:37:02.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/fwritable.h lib/fwritable.c + lib/stdio-impl.h m4/fwritable.m4 Depends-on: *** modules/fwriting.orig 2008-04-26 17:59:10.000000000 +0200 --- modules/fwriting 2008-04-26 17:37:02.000000000 +0200 *************** *** 4,9 **** --- 4,10 ---- Files: lib/fwriting.h lib/fwriting.c + lib/stdio-impl.h m4/fwriting.m4 Depends-on: