From: | Joerg Sonnenberger <joerg@xxxxxxxxxxxxxxxxxxxxxxx> |
Date: | Sat, 23 Jul 2005 13:23:06 -0700 (PDT) |
joerg 2005/07/23 13:23:06 PDT DragonFly src repository Modified files: lib/libc/stdio Makefile.inc _flock_stub.c asprintf.c fclose.c fdopen.c fflush.c fgetc.c fgetln.c fgets.c fileno.c findfp.c fopen.c fpurge.c fputs.c fread.c freopen.c fseek.c ftell.c funopen.c fvwrite.c fwalk.c fwrite.c local.h makebuf.c perror.c puts.c putw.c refill.c rget.c setvbuf.c snprintf.c sprintf.c sscanf.c stdio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vsnprintf.c vsprintf.c vsscanf.c wbuf.c wsetup.c lib/libftpio ftpio.c include stdio.h gnu/usr.bin/cvs/lib Makefile config.h.proto Added files: lib/libc/stdio __fpending.c fcookie.c priv_stdio.h Removed files: lib/libc/stdio fvwrite.h glue.h Log: First step to cleaning up stdio. This breaks the libc ABI, all programs have to be recompiled. Make FILE an opaque type for normal operation (anything outside libc). This means programs have to use the exported interface, they can neither make static instances on the heap or access fields of their own. Introduce a new type __FILE_public, which contains the fields accessed by the various macros. It is placed first in the real FILE and the macros cast the given FILE * to __FILE_public for access. To allow better argument checks, all macros have been converted to inline functions instead. Merge the various stdio helper headers into a single priv_stdio.h. The license from the original files has been kept, the third clause is gone as part of the UCB copyright addendum. They haven't been changed in FreeBSD at all. Add two new helper functions, fcookie and __fpending to read parts of the hidden state. The former is handy for funopen users, the latter exists on other systems as well. Cleanup some minor warnings on the way and hide some local functions with static. Adept libftpio and CVS to the chanced API. Revision Changes Path 1.3 +3 -3 src/lib/libc/stdio/Makefile.inc 1.9 +1 -0 src/lib/libc/stdio/_flock_stub.c 1.6 +6 -5 src/lib/libc/stdio/asprintf.c 1.9 +8 -6 src/lib/libc/stdio/fclose.c 1.6 +5 -3 src/lib/libc/stdio/fdopen.c 1.6 +9 -7 src/lib/libc/stdio/fflush.c 1.5 +1 -0 src/lib/libc/stdio/fgetc.c 1.5 +17 -15 src/lib/libc/stdio/fgetln.c 1.6 +9 -7 src/lib/libc/stdio/fgets.c 1.5 +3 -0 src/lib/libc/stdio/fileno.c 1.8 +13 -11 src/lib/libc/stdio/findfp.c 1.5 +4 -3 src/lib/libc/stdio/fopen.c 1.6 +6 -4 src/lib/libc/stdio/fpurge.c 1.5 +4 -2 src/lib/libc/stdio/fputs.c 1.6 +10 -8 src/lib/libc/stdio/fread.c 1.6 +19 -17 src/lib/libc/stdio/freopen.c 1.8 +32 -30 src/lib/libc/stdio/fseek.c 1.6 +7 -5 src/lib/libc/stdio/ftell.c 1.5 +7 -7 src/lib/libc/stdio/funopen.c 1.7 +23 -23 src/lib/libc/stdio/fvwrite.c 1.5 +2 -2 src/lib/libc/stdio/fwalk.c 1.5 +3 -2 src/lib/libc/stdio/fwrite.c 1.7 +1 -1 src/lib/libc/stdio/local.h 1.6 +11 -9 src/lib/libc/stdio/makebuf.c 1.6 +3 -3 src/lib/libc/stdio/perror.c 1.5 +4 -3 src/lib/libc/stdio/puts.c 1.5 +1 -1 src/lib/libc/stdio/putw.c 1.8 +23 -22 src/lib/libc/stdio/refill.c 1.3 +5 -3 src/lib/libc/stdio/rget.c 1.6 +13 -11 src/lib/libc/stdio/setvbuf.c 1.5 +6 -5 src/lib/libc/stdio/snprintf.c 1.5 +7 -5 src/lib/libc/stdio/sprintf.c 1.6 +6 -4 src/lib/libc/stdio/sscanf.c 1.6 +12 -10 src/lib/libc/stdio/stdio.c 1.6 +23 -21 src/lib/libc/stdio/ungetc.c 1.6 +7 -5 src/lib/libc/stdio/vasprintf.c 1.10 +10 -11 src/lib/libc/stdio/vfprintf.c 1.8 +34 -33 src/lib/libc/stdio/vfscanf.c 1.6 +7 -5 src/lib/libc/stdio/vsnprintf.c 1.6 +7 -5 src/lib/libc/stdio/vsprintf.c 1.7 +6 -4 src/lib/libc/stdio/vsscanf.c 1.6 +7 -5 src/lib/libc/stdio/wbuf.c 1.5 +13 -11 src/lib/libc/stdio/wsetup.c 1.8 +0 -11 src/lib/libftpio/ftpio.c 1.8 +65 -80 src/include/stdio.h 1.12 +1 -1 src/gnu/usr.bin/cvs/lib/Makefile 1.8 +2 -2 src/gnu/usr.bin/cvs/lib/config.h.proto http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/Makefile.inc.diff?r1=1.2&r2=1.3&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/_flock_stub.c.diff?r1=1.8&r2=1.9&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/asprintf.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fclose.c.diff?r1=1.8&r2=1.9&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fdopen.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fflush.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fgetc.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fgetln.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fgets.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fileno.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/findfp.c.diff?r1=1.7&r2=1.8&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fopen.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fpurge.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fputs.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fread.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/freopen.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fseek.c.diff?r1=1.7&r2=1.8&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/ftell.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/funopen.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fvwrite.c.diff?r1=1.6&r2=1.7&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fwalk.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/fwrite.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/local.h.diff?r1=1.6&r2=1.7&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/makebuf.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/perror.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/puts.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/putw.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/refill.c.diff?r1=1.7&r2=1.8&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/rget.c.diff?r1=1.2&r2=1.3&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/setvbuf.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/snprintf.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/sprintf.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/sscanf.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/stdio.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/ungetc.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/vasprintf.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/vfprintf.c.diff?r1=1.9&r2=1.10&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/vfscanf.c.diff?r1=1.7&r2=1.8&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/vsnprintf.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/vsprintf.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/vsscanf.c.diff?r1=1.6&r2=1.7&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/wbuf.c.diff?r1=1.5&r2=1.6&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libc/stdio/wsetup.c.diff?r1=1.4&r2=1.5&f=u http://www.dragonflybsd.org/cvsweb/src/lib/libftpio/ftpio.c.diff?r1=1.7&r2=1.8&f=u http://www.dragonflybsd.org/cvsweb/src/include/stdio.h.diff?r1=1.7&r2=1.8&f=u http://www.dragonflybsd.org/cvsweb/src/gnu/usr.bin/cvs/lib/Makefile.diff?r1=1.11&r2=1.12&f=u http://www.dragonflybsd.org/cvsweb/src/gnu/usr.bin/cvs/lib/config.h.proto.diff?r1=1.7&r2=1.8&f=u