modernc.org/cc@v1.0.1/v2/headers/linux_386/usr/include/i386-linux-gnu/bits/libio.h (about)

     1  /* Copyright (C) 1991-2018 Free Software Foundation, Inc.
     2     This file is part of the GNU C Library.
     3     Written by Per Bothner <bothner@cygnus.com>.
     4  
     5     The GNU C Library is free software; you can redistribute it and/or
     6     modify it under the terms of the GNU Lesser General Public
     7     License as published by the Free Software Foundation; either
     8     version 2.1 of the License, or (at your option) any later version.
     9  
    10     The GNU C Library is distributed in the hope that it will be useful,
    11     but WITHOUT ANY WARRANTY; without even the implied warranty of
    12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    13     Lesser General Public License for more details.
    14  
    15     You should have received a copy of the GNU Lesser General Public
    16     License along with the GNU C Library; if not, see
    17     <http://www.gnu.org/licenses/>.
    18  
    19     As a special exception, if you link the code in this file with
    20     files compiled with a GNU compiler to produce an executable,
    21     that does not cause the resulting executable to be covered by
    22     the GNU Lesser General Public License.  This exception does not
    23     however invalidate any other reasons why the executable file
    24     might be covered by the GNU Lesser General Public License.
    25     This exception applies to code released by its copyright holders
    26     in files containing the exception.  */
    27  
    28  #ifndef _BITS_LIBIO_H
    29  #define _BITS_LIBIO_H 1
    30  
    31  #if !defined _STDIO_H && !defined _LIBIO_H
    32  # error "Never include <bits/libio.h> directly; use <stdio.h> instead."
    33  #endif
    34  
    35  #include <bits/_G_config.h>
    36  /* ALL of these should be defined in _G_config.h */
    37  #define _IO_fpos_t _G_fpos_t
    38  #define _IO_fpos64_t _G_fpos64_t
    39  #define _IO_size_t size_t
    40  #define _IO_ssize_t __ssize_t
    41  #define _IO_off_t __off_t
    42  #define _IO_off64_t __off64_t
    43  #define _IO_pid_t __pid_t
    44  #define _IO_uid_t __uid_t
    45  #define _IO_iconv_t _G_iconv_t
    46  #define _IO_HAVE_ST_BLKSIZE _G_HAVE_ST_BLKSIZE
    47  #define _IO_BUFSIZ _G_BUFSIZ
    48  #define _IO_va_list _G_va_list
    49  #define _IO_wint_t wint_t
    50  
    51  /* This define avoids name pollution if we're using GNU stdarg.h */
    52  #define __need___va_list
    53  #include <stdarg.h>
    54  #ifdef __GNUC_VA_LIST
    55  # undef _IO_va_list
    56  # define _IO_va_list __gnuc_va_list
    57  #endif				/* __GNUC_VA_LIST */
    58  
    59  #ifndef __P
    60  # include <sys/cdefs.h>
    61  #endif				/*!__P */
    62  
    63  #define _IO_UNIFIED_JUMPTABLES 1
    64  
    65  #ifndef EOF
    66  # define EOF (-1)
    67  #endif
    68  #ifndef NULL
    69  # if defined __GNUG__ && \
    70      (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))
    71  #  define NULL (__null)
    72  # else
    73  #  if !defined(__cplusplus)
    74  #   define NULL ((void*)0)
    75  #  else
    76  #   define NULL (0)
    77  #  endif
    78  # endif
    79  #endif
    80  
    81  #define _IOS_INPUT	1
    82  #define _IOS_OUTPUT	2
    83  #define _IOS_ATEND	4
    84  #define _IOS_APPEND	8
    85  #define _IOS_TRUNC	16
    86  #define _IOS_NOCREATE	32
    87  #define _IOS_NOREPLACE	64
    88  #define _IOS_BIN	128
    89  
    90  /* Magic numbers and bits for the _flags field.
    91     The magic numbers use the high-order bits of _flags;
    92     the remaining bits are available for variable flags.
    93     Note: The magic numbers must all be negative if stdio
    94     emulation is desired. */
    95  
    96  #define _IO_MAGIC 0xFBAD0000	/* Magic number */
    97  #define _OLD_STDIO_MAGIC 0xFABC0000	/* Emulate old stdio. */
    98  #define _IO_MAGIC_MASK 0xFFFF0000
    99  #define _IO_USER_BUF 1		/* User owns buffer; don't delete it on close. */
   100  #define _IO_UNBUFFERED 2
   101  #define _IO_NO_READS 4		/* Reading not allowed */
   102  #define _IO_NO_WRITES 8		/* Writing not allowd */
   103  #define _IO_EOF_SEEN 0x10
   104  #define _IO_ERR_SEEN 0x20
   105  #define _IO_DELETE_DONT_CLOSE 0x40	/* Don't call close(_fileno) on cleanup. */
   106  #define _IO_LINKED 0x80		/* Set if linked (using _chain) to streambuf::_list_all. */
   107  #define _IO_IN_BACKUP 0x100
   108  #define _IO_LINE_BUF 0x200
   109  #define _IO_TIED_PUT_GET 0x400	/* Set if put and get pointer logicly tied. */
   110  #define _IO_CURRENTLY_PUTTING 0x800
   111  #define _IO_IS_APPENDING 0x1000
   112  #define _IO_IS_FILEBUF 0x2000
   113  #define _IO_BAD_SEEN 0x4000
   114  #define _IO_USER_LOCK 0x8000
   115  
   116  #define _IO_FLAGS2_MMAP 1
   117  #define _IO_FLAGS2_NOTCANCEL 2
   118  #ifdef _LIBC
   119  # define _IO_FLAGS2_FORTIFY 4
   120  #endif
   121  #define _IO_FLAGS2_USER_WBUF 8
   122  #ifdef _LIBC
   123  # define _IO_FLAGS2_SCANF_STD 16
   124  # define _IO_FLAGS2_NOCLOSE 32
   125  # define _IO_FLAGS2_CLOEXEC 64
   126  # define _IO_FLAGS2_NEED_LOCK 128
   127  #endif
   128  
   129  /* These are "formatting flags" matching the iostream fmtflags enum values. */
   130  #define _IO_SKIPWS 01
   131  #define _IO_LEFT 02
   132  #define _IO_RIGHT 04
   133  #define _IO_INTERNAL 010
   134  #define _IO_DEC 020
   135  #define _IO_OCT 040
   136  #define _IO_HEX 0100
   137  #define _IO_SHOWBASE 0200
   138  #define _IO_SHOWPOINT 0400
   139  #define _IO_UPPERCASE 01000
   140  #define _IO_SHOWPOS 02000
   141  #define _IO_SCIENTIFIC 04000
   142  #define _IO_FIXED 010000
   143  #define _IO_UNITBUF 020000
   144  #define _IO_STDIO 040000
   145  #define _IO_DONT_CLOSE 0100000
   146  #define _IO_BOOLALPHA 0200000
   147  
   148  struct _IO_jump_t;
   149  struct _IO_FILE;
   150  
   151  /* During the build of glibc itself, _IO_lock_t will already have been
   152     defined by internal headers.  */
   153  #ifndef _IO_lock_t_defined
   154  typedef void _IO_lock_t;
   155  #endif
   156  
   157  /* A streammarker remembers a position in a buffer. */
   158  
   159  struct _IO_marker {
   160  	struct _IO_marker *_next;
   161  	struct _IO_FILE *_sbuf;
   162  	/* If _pos >= 0
   163  	   it points to _buf->Gbase()+_pos. FIXME comment */
   164  	/* if _pos < 0, it points to _buf->eBptr()+_pos. FIXME comment */
   165  	int _pos;
   166  #if 0
   167  	void set_streampos(streampos sp) {
   168  		_spos = sp;
   169  	} void set_offset(int offset) {
   170  		_pos = offset;
   171  		_spos = (streampos) (-2);
   172  	}
   173   public:
   174  	streammarker(streambuf * sb);
   175  	~streammarker();
   176  	int saving() {
   177  		return _spos == -2;
   178  	}
   179  	int delta(streammarker &);
   180  	int delta();
   181  #endif
   182  };
   183  
   184  /* This is the structure from the libstdc++ codecvt class.  */
   185  enum __codecvt_result {
   186  	__codecvt_ok,
   187  	__codecvt_partial,
   188  	__codecvt_error,
   189  	__codecvt_noconv
   190  };
   191  
   192  #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
   193  /* The order of the elements in the following struct must match the order
   194     of the virtual functions in the libstdc++ codecvt class.  */
   195  struct _IO_codecvt {
   196  	void (*__codecvt_destr) (struct _IO_codecvt *);
   197  	enum __codecvt_result (*__codecvt_do_out) (struct _IO_codecvt *, __mbstate_t *, const wchar_t *, const wchar_t *, const wchar_t **, char *, char *, char **);
   198  	enum __codecvt_result (*__codecvt_do_unshift) (struct _IO_codecvt *, __mbstate_t *, char *, char *, char **);
   199  	enum __codecvt_result (*__codecvt_do_in) (struct _IO_codecvt *, __mbstate_t *, const char *, const char *, const char **, wchar_t *, wchar_t *, wchar_t **);
   200  	int (*__codecvt_do_encoding) (struct _IO_codecvt *);
   201  	int (*__codecvt_do_always_noconv) (struct _IO_codecvt *);
   202  	int (*__codecvt_do_length) (struct _IO_codecvt *, __mbstate_t *, const char *, const char *, _IO_size_t);
   203  	int (*__codecvt_do_max_length) (struct _IO_codecvt *);
   204  
   205  	_IO_iconv_t __cd_in;
   206  	_IO_iconv_t __cd_out;
   207  };
   208  
   209  /* Extra data for wide character streams.  */
   210  struct _IO_wide_data {
   211  	wchar_t *_IO_read_ptr;	/* Current read pointer */
   212  	wchar_t *_IO_read_end;	/* End of get area. */
   213  	wchar_t *_IO_read_base;	/* Start of putback+get area. */
   214  	wchar_t *_IO_write_base;	/* Start of put area. */
   215  	wchar_t *_IO_write_ptr;	/* Current put pointer. */
   216  	wchar_t *_IO_write_end;	/* End of put area. */
   217  	wchar_t *_IO_buf_base;	/* Start of reserve area. */
   218  	wchar_t *_IO_buf_end;	/* End of reserve area. */
   219  	/* The following fields are used to support backing up and undo. */
   220  	wchar_t *_IO_save_base;	/* Pointer to start of non-current get area. */
   221  	wchar_t *_IO_backup_base;	/* Pointer to first valid character of
   222  					   backup area */
   223  	wchar_t *_IO_save_end;	/* Pointer to end of non-current get area. */
   224  
   225  	__mbstate_t _IO_state;
   226  	__mbstate_t _IO_last_state;
   227  	struct _IO_codecvt _codecvt;
   228  
   229  	wchar_t _shortbuf[1];
   230  
   231  	const struct _IO_jump_t *_wide_vtable;
   232  };
   233  #endif
   234  
   235  struct _IO_FILE {
   236  	int _flags;		/* High-order word is _IO_MAGIC; rest is flags. */
   237  #define _IO_file_flags _flags
   238  
   239  	/* The following pointers correspond to the C++ streambuf protocol. */
   240  	/* Note:  Tk uses the _IO_read_ptr and _IO_read_end fields directly. */
   241  	char *_IO_read_ptr;	/* Current read pointer */
   242  	char *_IO_read_end;	/* End of get area. */
   243  	char *_IO_read_base;	/* Start of putback+get area. */
   244  	char *_IO_write_base;	/* Start of put area. */
   245  	char *_IO_write_ptr;	/* Current put pointer. */
   246  	char *_IO_write_end;	/* End of put area. */
   247  	char *_IO_buf_base;	/* Start of reserve area. */
   248  	char *_IO_buf_end;	/* End of reserve area. */
   249  	/* The following fields are used to support backing up and undo. */
   250  	char *_IO_save_base;	/* Pointer to start of non-current get area. */
   251  	char *_IO_backup_base;	/* Pointer to first valid character of backup area */
   252  	char *_IO_save_end;	/* Pointer to end of non-current get area. */
   253  
   254  	struct _IO_marker *_markers;
   255  
   256  	struct _IO_FILE *_chain;
   257  
   258  	int _fileno;
   259  #if 0
   260  	int _blksize;
   261  #else
   262  	int _flags2;
   263  #endif
   264  	_IO_off_t _old_offset;	/* This used to be _offset but it's too small.  */
   265  
   266  #define __HAVE_COLUMN		/* temporary */
   267  	/* 1+column number of pbase(); 0 is unknown. */
   268  	unsigned short _cur_column;
   269  	signed char _vtable_offset;
   270  	char _shortbuf[1];
   271  
   272  	/*  char* _save_gptr;  char* _save_egptr; */
   273  
   274  	_IO_lock_t *_lock;
   275  #ifdef _IO_USE_OLD_IO_FILE
   276  };
   277  
   278  struct _IO_FILE_complete {
   279  	struct _IO_FILE _file;
   280  #endif
   281  #if defined _G_IO_IO_FILE_VERSION && _G_IO_IO_FILE_VERSION == 0x20001
   282  	_IO_off64_t _offset;
   283  # if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
   284  	/* Wide character stream stuff.  */
   285  	struct _IO_codecvt *_codecvt;
   286  	struct _IO_wide_data *_wide_data;
   287  	struct _IO_FILE *_freeres_list;
   288  	void *_freeres_buf;
   289  # else
   290  	void *__pad1;
   291  	void *__pad2;
   292  	void *__pad3;
   293  	void *__pad4;
   294  # endif
   295  	size_t __pad5;
   296  	int _mode;
   297  	/* Make sure we don't get into trouble again.  */
   298  	char _unused2[15 * sizeof(int) - 4 * sizeof(void *) - sizeof(size_t)];
   299  #endif
   300  };
   301  
   302  #ifndef __cplusplus
   303  typedef struct _IO_FILE _IO_FILE;
   304  #endif
   305  
   306  struct _IO_FILE_plus;
   307  
   308  extern struct _IO_FILE_plus _IO_2_1_stdin_;
   309  extern struct _IO_FILE_plus _IO_2_1_stdout_;
   310  extern struct _IO_FILE_plus _IO_2_1_stderr_;
   311  #ifndef _LIBC
   312  #define _IO_stdin ((_IO_FILE*)(&_IO_2_1_stdin_))
   313  #define _IO_stdout ((_IO_FILE*)(&_IO_2_1_stdout_))
   314  #define _IO_stderr ((_IO_FILE*)(&_IO_2_1_stderr_))
   315  #else
   316  extern _IO_FILE *_IO_stdin attribute_hidden;
   317  extern _IO_FILE *_IO_stdout attribute_hidden;
   318  extern _IO_FILE *_IO_stderr attribute_hidden;
   319  #endif
   320  
   321  /* Functions to do I/O and file management for a stream.  */
   322  
   323  /* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF.
   324     Return number of bytes read.  */
   325  typedef __ssize_t __io_read_fn(void *__cookie, char *__buf, size_t __nbytes);
   326  
   327  /* Write N bytes pointed to by BUF to COOKIE.  Write all N bytes
   328     unless there is an error.  Return number of bytes written.  If
   329     there is an error, return 0 and do not write anything.  If the file
   330     has been opened for append (__mode.__append set), then set the file
   331     pointer to the end of the file and then do the write; if not, just
   332     write at the current file pointer.  */
   333  typedef __ssize_t __io_write_fn(void *__cookie, const char *__buf, size_t __n);
   334  
   335  /* Move COOKIE's file position to *POS bytes from the
   336     beginning of the file (if W is SEEK_SET),
   337     the current position (if W is SEEK_CUR),
   338     or the end of the file (if W is SEEK_END).
   339     Set *POS to the new file position.
   340     Returns zero if successful, nonzero if not.  */
   341  typedef int __io_seek_fn(void *__cookie, _IO_off64_t * __pos, int __w);
   342  
   343  /* Close COOKIE.  */
   344  typedef int __io_close_fn(void *__cookie);
   345  
   346  #ifdef __USE_GNU
   347  /* User-visible names for the above.  */
   348  typedef __io_read_fn cookie_read_function_t;
   349  typedef __io_write_fn cookie_write_function_t;
   350  typedef __io_seek_fn cookie_seek_function_t;
   351  typedef __io_close_fn cookie_close_function_t;
   352  
   353  /* The structure with the cookie function pointers.  */
   354  typedef struct {
   355  	__io_read_fn *read;	/* Read bytes.  */
   356  	__io_write_fn *write;	/* Write bytes.  */
   357  	__io_seek_fn *seek;	/* Seek/tell file position.  */
   358  	__io_close_fn *close;	/* Close file.  */
   359  } _IO_cookie_io_functions_t;
   360  typedef _IO_cookie_io_functions_t cookie_io_functions_t;
   361  
   362  struct _IO_cookie_file;
   363  
   364  /* Initialize one of those.  */
   365  extern void _IO_cookie_init(struct _IO_cookie_file *__cfile, int __read_write, void *__cookie, _IO_cookie_io_functions_t __fns);
   366  #endif
   367  
   368  #ifdef __cplusplus
   369  extern "C" {
   370  #endif
   371  
   372  	extern int __underflow(_IO_FILE *);
   373  	extern int __uflow(_IO_FILE *);
   374  	extern int __overflow(_IO_FILE *, int);
   375  #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
   376  	extern _IO_wint_t __wunderflow(_IO_FILE *);
   377  	extern _IO_wint_t __wuflow(_IO_FILE *);
   378  	extern _IO_wint_t __woverflow(_IO_FILE *, _IO_wint_t);
   379  #endif
   380  
   381  #if  __GNUC__ >= 3
   382  # define _IO_BE(expr, res) __builtin_expect ((expr), res)
   383  #else
   384  # define _IO_BE(expr, res) (expr)
   385  #endif
   386  
   387  #define _IO_getc_unlocked(_fp) \
   388         (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) \
   389  	? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)
   390  #define _IO_peekc_unlocked(_fp) \
   391         (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) \
   392  	  && __underflow (_fp) == EOF ? EOF \
   393  	: *(unsigned char *) (_fp)->_IO_read_ptr)
   394  #define _IO_putc_unlocked(_ch, _fp) \
   395     (_IO_BE ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end, 0) \
   396      ? __overflow (_fp, (unsigned char) (_ch)) \
   397      : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
   398  
   399  #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
   400  # define _IO_getwc_unlocked(_fp) \
   401    (_IO_BE ((_fp)->_wide_data == NULL					\
   402  	   || ((_fp)->_wide_data->_IO_read_ptr				\
   403  	       >= (_fp)->_wide_data->_IO_read_end), 0)			\
   404     ? __wuflow (_fp) : (_IO_wint_t) *(_fp)->_wide_data->_IO_read_ptr++)
   405  # define _IO_putwc_unlocked(_wch, _fp) \
   406    (_IO_BE ((_fp)->_wide_data == NULL					\
   407  	   || ((_fp)->_wide_data->_IO_write_ptr				\
   408  	       >= (_fp)->_wide_data->_IO_write_end), 0)			\
   409     ? __woverflow (_fp, _wch)						\
   410     : (_IO_wint_t) (*(_fp)->_wide_data->_IO_write_ptr++ = (_wch)))
   411  #endif
   412  
   413  #define _IO_feof_unlocked(__fp) (((__fp)->_flags & _IO_EOF_SEEN) != 0)
   414  #define _IO_ferror_unlocked(__fp) (((__fp)->_flags & _IO_ERR_SEEN) != 0)
   415  
   416  	extern int _IO_getc(_IO_FILE * __fp);
   417  	extern int _IO_putc(int __c, _IO_FILE * __fp);
   418  	extern int _IO_feof(_IO_FILE * __fp) __THROW;
   419  	extern int _IO_ferror(_IO_FILE * __fp) __THROW;
   420  
   421  	extern int _IO_peekc_locked(_IO_FILE * __fp);
   422  
   423  /* This one is for Emacs. */
   424  #define _IO_PENDING_OUTPUT_COUNT(_fp)	\
   425  	((_fp)->_IO_write_ptr - (_fp)->_IO_write_base)
   426  
   427  	extern void _IO_flockfile(_IO_FILE *) __THROW;
   428  	extern void _IO_funlockfile(_IO_FILE *) __THROW;
   429  	extern int _IO_ftrylockfile(_IO_FILE *) __THROW;
   430  
   431  #define _IO_peekc(_fp) _IO_peekc_unlocked (_fp)
   432  #define _IO_flockfile(_fp) /**/
   433  #define _IO_funlockfile(_fp) /**/
   434  #define _IO_ftrylockfile(_fp) /**/
   435  #ifndef _IO_cleanup_region_start
   436  #define _IO_cleanup_region_start(_fct, _fp) /**/
   437  #endif
   438  #ifndef _IO_cleanup_region_end
   439  #define _IO_cleanup_region_end(_Doit) /**/
   440  #endif
   441  #define _IO_need_lock(_fp) \
   442    (((_fp)->_flags2 & _IO_FLAGS2_NEED_LOCK) != 0)
   443  	 extern int _IO_vfscanf(_IO_FILE * __restrict, const char *__restrict, _IO_va_list, int *__restrict);
   444  	extern int _IO_vfprintf(_IO_FILE * __restrict, const char *__restrict, _IO_va_list);
   445  	extern _IO_ssize_t _IO_padn(_IO_FILE *, int, _IO_ssize_t);
   446  	extern _IO_size_t _IO_sgetn(_IO_FILE *, void *, _IO_size_t);
   447  
   448  	extern _IO_off64_t _IO_seekoff(_IO_FILE *, _IO_off64_t, int, int);
   449  	extern _IO_off64_t _IO_seekpos(_IO_FILE *, _IO_off64_t, int);
   450  
   451  	extern void _IO_free_backup_area(_IO_FILE *) __THROW;
   452  
   453  #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
   454  	extern _IO_wint_t _IO_getwc(_IO_FILE * __fp);
   455  	extern _IO_wint_t _IO_putwc(wchar_t __wc, _IO_FILE * __fp);
   456  	extern int _IO_fwide(_IO_FILE * __fp, int __mode) __THROW;
   457  # if __GNUC__ >= 2
   458  /* While compiling glibc we have to handle compatibility with very old
   459     versions.  */
   460  #  if defined _LIBC && defined SHARED
   461  #   include <shlib-compat.h>
   462  #   if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
   463  #    define _IO_fwide_maybe_incompatible \
   464    (__builtin_expect (&_IO_stdin_used == NULL, 0))
   465  	extern const int _IO_stdin_used;
   466  	 weak_extern(_IO_stdin_used);
   467  #   endif
   468  #  endif
   469  #  ifndef _IO_fwide_maybe_incompatible
   470  #   define _IO_fwide_maybe_incompatible (0)
   471  #  endif
   472  /* A special optimized version of the function above.  It optimizes the
   473     case of initializing an unoriented byte stream.  */
   474  #  define _IO_fwide(__fp, __mode) \
   475    ({ int __result = (__mode);						      \
   476       if (__result < 0 && ! _IO_fwide_maybe_incompatible)		      \
   477         {								      \
   478  	 if ((__fp)->_mode == 0)					      \
   479  	   /* We know that all we have to do is to set the flag.  */	      \
   480  	   (__fp)->_mode = -1;						      \
   481  	 __result = (__fp)->_mode;					      \
   482         }								      \
   483       else if (__builtin_constant_p (__mode) && (__mode) == 0)		      \
   484         __result = _IO_fwide_maybe_incompatible ? -1 : (__fp)->_mode;	      \
   485       else								      \
   486         __result = _IO_fwide (__fp, __result);				      \
   487       __result; })
   488  # endif
   489  
   490  	extern int _IO_vfwscanf(_IO_FILE * __restrict, const wchar_t * __restrict, _IO_va_list, int *__restrict);
   491  	extern int _IO_vfwprintf(_IO_FILE * __restrict, const wchar_t * __restrict, _IO_va_list);
   492  	extern _IO_ssize_t _IO_wpadn(_IO_FILE *, wint_t, _IO_ssize_t);
   493  	extern void _IO_free_wbackup_area(_IO_FILE *) __THROW;
   494  #endif
   495  
   496  #ifdef __LDBL_COMPAT
   497  # include <bits/libio-ldbl.h>
   498  #endif
   499  
   500  #ifdef __cplusplus
   501  }
   502  #endif
   503  #endif				/* _BITS_LIBIO_H */