path: root/include/stdio.h
diff options
authorJohn Baldwin <jhb@FreeBSD.org>2008-04-17 22:17:54 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2008-04-17 22:17:54 +0000
commit1e98f88776fc606df245a382685b1ac634a81389 (patch)
treeb259dd878c8cb0ee9fb15608aebb9453ad10e7b1 /include/stdio.h
parentaba7c5b84b764f7dcb96c651735aa1bb10348d34 (diff)
Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into
__sFILE. This was supposed to be done in 6.0. Some notes: - Where possible I restored the various lines to their pre-__sFILEX state. - Retire INITEXTRA() and just initialize the wchar bits (orientation and mbstate) explicitly instead. The various places that used INITEXTRA didn't need the locking fields or _up initialized. (Some places needed _up to exist and not be off the end of a NULL or garbage pointer, but they didn't require it to be initialized to a specific value.) - For now, stdio.h "knows" that pthread_t is a 'struct pthread *' to avoid namespace pollution of including all the pthread types in stdio.h. Once we remove all the inlines and make __sFILE private it can go back to using pthread_t, etc. - This does not remove any of the inlines currently and does not change any of the public ABI of 'FILE'. MFC after: 1 month Reviewed by: peter
Notes: svn path=/head/; revision=178287
Diffstat (limited to 'include/stdio.h')
1 files changed, 7 insertions, 4 deletions
diff --git a/include/stdio.h b/include/stdio.h
index 362a0dde0634..172a15ecf2b6 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -72,9 +72,6 @@ struct __sbuf {
int _size;
-/* hold a buncha junk that would grow the ABI */
-struct __sFILEX;
* stdio state variables.
@@ -121,7 +118,7 @@ typedef struct __sFILE {
/* separate buffer for long sequences of ungetc() */
struct __sbuf _ub; /* ungetc buffer */
- struct __sFILEX *_extra; /* additions to FILE to not break ABI */
+ unsigned char *_up; /* saved _p when _p is doing ungetc data */
int _ur; /* saved _r when _r is counting ungetc data */
/* tricks to meet minimum requirements even when malloc() fails */
@@ -134,6 +131,12 @@ typedef struct __sFILE {
/* Unix stdio files get aligned to block boundaries on fseek() */
int _blksize; /* stat.st_blksize (may be != _bf._size) */
fpos_t _offset; /* current lseek offset */
+ struct pthread_mutex *_fl_mutex; /* used for MT-safety */
+ struct pthread *_fl_owner; /* current owner */
+ int _fl_count; /* recursive lock count */
+ int _orientation; /* orientation for fwide() */
+ __mbstate_t _mbstate; /* multibyte conversion state */