Dr Andrew Scott G7VAV

My photo
 
April 2024
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12


libio.h
001: /* Copyright (C) 1991-1995,1997-2006,2007,2009,2011 Free Software Foundation, Inc.
002:    This file is part of the GNU C Library.
003:    Written by Per Bothner <bothner@cygnus.com>.
004: 
005:    The GNU C Library is free software; you can redistribute it and/or
006:    modify it under the terms of the GNU Lesser General Public
007:    License as published by the Free Software Foundation; either
008:    version 2.1 of the License, or (at your option) any later version.
009: 
010:    The GNU C Library is distributed in the hope that it will be useful,
011:    but WITHOUT ANY WARRANTY; without even the implied warranty of
012:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013:    Lesser General Public License for more details.
014: 
015:    You should have received a copy of the GNU Lesser General Public
016:    License along with the GNU C Library; if not, write to the Free
017:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
018:    02111-1307 USA.
019: 
020:    As a special exception, if you link the code in this file with
021:    files compiled with a GNU compiler to produce an executable,
022:    that does not cause the resulting executable to be covered by
023:    the GNU Lesser General Public License.  This exception does not
024:    however invalidate any other reasons why the executable file
025:    might be covered by the GNU Lesser General Public License.
026:    This exception applies to code released by its copyright holders
027:    in files containing the exception.  */
028: 
029: #ifndef _IO_STDIO_H
030: #define _IO_STDIO_H
031: 
032: #include <_G_config.h>
033: /* ALL of these should be defined in _G_config.h */
034: #define _IO_pos_t _G_fpos_t /* obsolete */
035: #define _IO_fpos_t _G_fpos_t
036: #define _IO_fpos64_t _G_fpos64_t
037: #define _IO_size_t _G_size_t
038: #define _IO_ssize_t _G_ssize_t
039: #define _IO_off_t _G_off_t
040: #define _IO_off64_t _G_off64_t
041: #define _IO_pid_t _G_pid_t
042: #define _IO_uid_t _G_uid_t
043: #define _IO_iconv_t _G_iconv_t
044: #define _IO_HAVE_SYS_WAIT _G_HAVE_SYS_WAIT
045: #define _IO_HAVE_ST_BLKSIZE _G_HAVE_ST_BLKSIZE
046: #define _IO_BUFSIZ _G_BUFSIZ
047: #define _IO_va_list _G_va_list
048: #define _IO_wint_t _G_wint_t
049: 
050: #ifdef _G_NEED_STDARG_H
051: /* This define avoids name pollution if we're using GNU stdarg.h */
052: # define __need___va_list
053: # include <stdarg.h>
054: # ifdef __GNUC_VA_LIST
055: #  undef _IO_va_list
056: #  define _IO_va_list __gnuc_va_list
057: # endif /* __GNUC_VA_LIST */
058: #endif
059: 
060: #ifndef __P
061: # if _G_HAVE_SYS_CDEFS
062: #  include <sys/cdefs.h>
063: # else
064: #  ifdef __STDC__
065: #   define __P(p) p
066: #   define __PMT(p) p
067: #  else
068: #   define __P(p) ()
069: #   define __PMT(p) ()
070: #  endif
071: # endif
072: #endif /*!__P*/
073: 
074: /* For backward compatibility */
075: #ifndef _PARAMS
076: # define _PARAMS(protos) __P(protos)
077: #endif /*!_PARAMS*/
078: 
079: #ifndef __STDC__
080: # ifndef const
081: #  define const
082: # endif
083: #endif
084: #define _IO_UNIFIED_JUMPTABLES 1
085: #ifndef _G_HAVE_PRINTF_FP
086: # define _IO_USE_DTOA 1
087: #endif
088: 
089: #ifndef EOF
090: # define EOF (-1)
091: #endif
092: #ifndef NULL
093: # if defined __GNUG__ && \
094:     (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))
095: #  define NULL (__null)
096: # else
097: #  if !defined(__cplusplus)
098: #   define NULL ((void*)0)
099: #  else
100: #   define NULL (0)
101: #  endif
102: # endif
103: #endif
104: 
105: #define _IOS_INPUT      1
106: #define _IOS_OUTPUT     2
107: #define _IOS_ATEND      4
108: #define _IOS_APPEND     8
109: #define _IOS_TRUNC      16
110: #define _IOS_NOCREATE   32
111: #define _IOS_NOREPLACE  64
112: #define _IOS_BIN        128
113: 
114: /* Magic numbers and bits for the _flags field.
115:    The magic numbers use the high-order bits of _flags;
116:    the remaining bits are available for variable flags.
117:    Note: The magic numbers must all be negative if stdio
118:    emulation is desired. */
119: 
120: #define _IO_MAGIC 0xFBAD0000 /* Magic number */
121: #define _OLD_STDIO_MAGIC 0xFABC0000 /* Emulate old stdio. */
122: #define _IO_MAGIC_MASK 0xFFFF0000
123: #define _IO_USER_BUF 1 /* User owns buffer; don't delete it on close. */
124: #define _IO_UNBUFFERED 2
125: #define _IO_NO_READS 4 /* Reading not allowed */
126: #define _IO_NO_WRITES 8 /* Writing not allowd */
127: #define _IO_EOF_SEEN 0x10
128: #define _IO_ERR_SEEN 0x20
129: #define _IO_DELETE_DONT_CLOSE 0x40 /* Don't call close(_fileno) on cleanup. */
130: #define _IO_LINKED 0x80 /* Set if linked (using _chain) to streambuf::_list_all.*/
131: #define _IO_IN_BACKUP 0x100
132: #define _IO_LINE_BUF 0x200
133: #define _IO_TIED_PUT_GET 0x400 /* Set if put and get pointer logicly tied. */
134: #define _IO_CURRENTLY_PUTTING 0x800
135: #define _IO_IS_APPENDING 0x1000
136: #define _IO_IS_FILEBUF 0x2000
137: #define _IO_BAD_SEEN 0x4000
138: #define _IO_USER_LOCK 0x8000
139: 
140: #define _IO_FLAGS2_MMAP 1
141: #define _IO_FLAGS2_NOTCANCEL 2
142: #ifdef _LIBC
143: # define _IO_FLAGS2_FORTIFY 4
144: #endif
145: #define _IO_FLAGS2_USER_WBUF 8
146: #ifdef _LIBC
147: # define _IO_FLAGS2_SCANF_STD 16
148: # define _IO_FLAGS2_NOCLOSE 32
149: # define _IO_FLAGS2_CLOEXEC 64
150: #endif
151: 
152: /* These are "formatting flags" matching the iostream fmtflags enum values. */
153: #define _IO_SKIPWS 01
154: #define _IO_LEFT 02
155: #define _IO_RIGHT 04
156: #define _IO_INTERNAL 010
157: #define _IO_DEC 020
158: #define _IO_OCT 040
159: #define _IO_HEX 0100
160: #define _IO_SHOWBASE 0200
161: #define _IO_SHOWPOINT 0400
162: #define _IO_UPPERCASE 01000
163: #define _IO_SHOWPOS 02000
164: #define _IO_SCIENTIFIC 04000
165: #define _IO_FIXED 010000
166: #define _IO_UNITBUF 020000
167: #define _IO_STDIO 040000
168: #define _IO_DONT_CLOSE 0100000
169: #define _IO_BOOLALPHA 0200000
170: 
171: 
172: struct _IO_jump_t;  struct _IO_FILE;
173: 
174: /* Handle lock.  */
175: #ifdef _IO_MTSAFE_IO
176: # if defined __GLIBC__ && __GLIBC__ >= 2
177: #  include <bits/stdio-lock.h>
178: # else
179: /*# include <comthread.h>*/
180: # endif
181: #else
182: typedef void _IO_lock_t;
183: #endif
184: 
185: 
186: /* A streammarker remembers a position in a buffer. */
187: 
188: struct _IO_marker {
189:   struct _IO_marker *_next;
190:   struct _IO_FILE *_sbuf;
191:   /* If _pos >= 0
192:  it points to _buf->Gbase()+_pos. FIXME comment */
193:   /* if _pos < 0, it points to _buf->eBptr()+_pos. FIXME comment */
194:   int _pos;
195: #if 0
196:     void set_streampos(streampos sp) { _spos = sp; }
197:     void set_offset(int offset) { _pos = offset; _spos = (streampos)(-2); }
198:   public:
199:     streammarker(streambuf *sb);
200:     ~streammarker();
201:     int saving() { return  _spos == -2; }
202:     int delta(streammarker&);
203:     int delta();
204: #endif
205: };
206: 
207: /* This is the structure from the libstdc++ codecvt class.  */
208: enum __codecvt_result
209: {
210:   __codecvt_ok,
211:   __codecvt_partial,
212:   __codecvt_error,
213:   __codecvt_noconv
214: };
215: 
216: #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
217: /* The order of the elements in the following struct must match the order
218:    of the virtual functions in the libstdc++ codecvt class.  */
219: struct _IO_codecvt
220: {
221:   void (*__codecvt_destr) (struct _IO_codecvt *);
222:   enum __codecvt_result (*__codecvt_do_out) (struct _IO_codecvt *,
223:                                              __mbstate_t *,
224:                                              const wchar_t *,
225:                                              const wchar_t *,
226:                                              const wchar_t **, char *,
227:                                              char *, char **);
228:   enum __codecvt_result (*__codecvt_do_unshift) (struct _IO_codecvt *,
229:                                                  __mbstate_t *, char *,
230:                                                  char *, char **);
231:   enum __codecvt_result (*__codecvt_do_in) (struct _IO_codecvt *,
232:                                             __mbstate_t *,
233:                                             const char *, const char *,
234:                                             const char **, wchar_t *,
235:                                             wchar_t *, wchar_t **);
236:   int (*__codecvt_do_encoding) (struct _IO_codecvt *);
237:   int (*__codecvt_do_always_noconv) (struct _IO_codecvt *);
238:   int (*__codecvt_do_length) (struct _IO_codecvt *, __mbstate_t *,
239:                               const char *, const char *, _IO_size_t);
240:   int (*__codecvt_do_max_length) (struct _IO_codecvt *);
241: 
242:   _IO_iconv_t __cd_in;
243:   _IO_iconv_t __cd_out;
244: };
245: 
246: /* Extra data for wide character streams.  */
247: struct _IO_wide_data
248: {
249:   wchar_t *_IO_read_ptr;        /* Current read pointer */
250:   wchar_t *_IO_read_end;        /* End of get area. */
251:   wchar_t *_IO_read_base;       /* Start of putback+get area. */
252:   wchar_t *_IO_write_base;      /* Start of put area. */
253:   wchar_t *_IO_write_ptr;       /* Current put pointer. */
254:   wchar_t *_IO_write_end;       /* End of put area. */
255:   wchar_t *_IO_buf_base;        /* Start of reserve area. */
256:   wchar_t *_IO_buf_end;         /* End of reserve area. */
257:   /* The following fields are used to support backing up and undo. */
258:   wchar_t *_IO_save_base;       /* Pointer to start of non-current get area. */
259:   wchar_t *_IO_backup_base;     /* Pointer to first valid character of
260:                                    backup area */
261:   wchar_t *_IO_save_end;        /* Pointer to end of non-current get area. */
262: 
263:   __mbstate_t _IO_state;
264:   __mbstate_t _IO_last_state;
265:   struct _IO_codecvt _codecvt;
266: 
267:   wchar_t _shortbuf[1];
268: 
269:   const struct _IO_jump_t *_wide_vtable;
270: };
271: #endif
272: 
273: struct _IO_FILE {
274:   int _flags;           /* High-order word is _IO_MAGIC; rest is flags. */
275: #define _IO_file_flags _flags
276: 
277:   /* The following pointers correspond to the C++ streambuf protocol. */
278:   /* Note:  Tk uses the _IO_read_ptr and _IO_read_end fields directly. */
279:   char* _IO_read_ptr;   /* Current read pointer */
280:   char* _IO_read_end;   /* End of get area. */
281:   char* _IO_read_base;  /* Start of putback+get area. */
282:   char* _IO_write_base; /* Start of put area. */
283:   char* _IO_write_ptr;  /* Current put pointer. */
284:   char* _IO_write_end;  /* End of put area. */
285:   char* _IO_buf_base;   /* Start of reserve area. */
286:   char* _IO_buf_end;    /* End of reserve area. */
287:   /* The following fields are used to support backing up and undo. */
288:   char *_IO_save_base; /* Pointer to start of non-current get area. */
289:   char *_IO_backup_base;  /* Pointer to first valid character of backup area */
290:   char *_IO_save_end; /* Pointer to end of non-current get area. */
291: 
292:   struct _IO_marker *_markers;
293: 
294:   struct _IO_FILE *_chain;
295: 
296:   int _fileno;
297: #if 0
298:   int _blksize;
299: #else
300:   int _flags2;
301: #endif
302:   _IO_off_t _old_offset; /* This used to be _offset but it's too small.  */
303: 
304: #define __HAVE_COLUMN /* temporary */
305:   /* 1+column number of pbase(); 0 is unknown. */
306:   unsigned short _cur_column;
307:   signed char _vtable_offset;
308:   char _shortbuf[1];
309: 
310:   /*  char* _save_gptr;  char* _save_egptr; */
311: 
312:   _IO_lock_t *_lock;
313: #ifdef _IO_USE_OLD_IO_FILE
314: };
315: 
316: struct _IO_FILE_complete
317: {
318:   struct _IO_FILE _file;
319: #endif
320: #if defined _G_IO_IO_FILE_VERSION && _G_IO_IO_FILE_VERSION == 0x20001
321:   _IO_off64_t _offset;
322: # if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
323:   /* Wide character stream stuff.  */
324:   struct _IO_codecvt *_codecvt;
325:   struct _IO_wide_data *_wide_data;
326:   struct _IO_FILE *_freeres_list;
327:   void *_freeres_buf;
328:   size_t _freeres_size;
329: # else
330:   void *__pad1;
331:   void *__pad2;
332:   void *__pad3;
333:   void *__pad4;
334:   size_t __pad5;
335: # endif
336:   int _mode;
337:   /* Make sure we don't get into trouble again.  */
338:   char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
339: #endif
340: };
341: 
342: #ifndef __cplusplus
343: typedef struct _IO_FILE _IO_FILE;
344: #endif
345: 
346: struct _IO_FILE_plus;
347: 
348: extern struct _IO_FILE_plus _IO_2_1_stdin_;
349: extern struct _IO_FILE_plus _IO_2_1_stdout_;
350: extern struct _IO_FILE_plus _IO_2_1_stderr_;
351: #ifndef _LIBC
352: #define _IO_stdin ((_IO_FILE*)(&_IO_2_1_stdin_))
353: #define _IO_stdout ((_IO_FILE*)(&_IO_2_1_stdout_))
354: #define _IO_stderr ((_IO_FILE*)(&_IO_2_1_stderr_))
355: #else
356: extern _IO_FILE *_IO_stdin attribute_hidden;
357: extern _IO_FILE *_IO_stdout attribute_hidden;
358: extern _IO_FILE *_IO_stderr attribute_hidden;
359: #endif
360: 
361: 
362: /* Functions to do I/O and file management for a stream.  */
363: 
364: /* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF.
365:    Return number of bytes read.  */
366: typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
367: 
368: /* Write N bytes pointed to by BUF to COOKIE.  Write all N bytes
369:    unless there is an error.  Return number of bytes written, or -1 if
370:    there is an error without writing anything.  If the file has been
371:    opened for append (__mode.__append set), then set the file pointer
372:    to the end of the file and then do the write; if not, just write at
373:    the current file pointer.  */
374: typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
375:                                  size_t __n);
376: 
377: /* Move COOKIE's file position to *POS bytes from the
378:    beginning of the file (if W is SEEK_SET),
379:    the current position (if W is SEEK_CUR),
380:    or the end of the file (if W is SEEK_END).
381:    Set *POS to the new file position.
382:    Returns zero if successful, nonzero if not.  */
383: typedef int __io_seek_fn (void *__cookie, _IO_off64_t *__pos, int __w);
384: 
385: /* Close COOKIE.  */
386: typedef int __io_close_fn (void *__cookie);
387: 
388: 
389: #ifdef _GNU_SOURCE
390: /* User-visible names for the above.  */
391: typedef __io_read_fn cookie_read_function_t;
392: typedef __io_write_fn cookie_write_function_t;
393: typedef __io_seek_fn cookie_seek_function_t;
394: typedef __io_close_fn cookie_close_function_t;
395: 
396: /* The structure with the cookie function pointers.  */
397: typedef struct
398: {
399:   __io_read_fn *read;           /* Read bytes.  */
400:   __io_write_fn *write;         /* Write bytes.  */
401:   __io_seek_fn *seek;           /* Seek/tell file position.  */
402:   __io_close_fn *close;         /* Close file.  */
403: } _IO_cookie_io_functions_t;
404: typedef _IO_cookie_io_functions_t cookie_io_functions_t;
405: 
406: struct _IO_cookie_file;
407: 
408: /* Initialize one of those.  */
409: extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
410:                              void *__cookie, _IO_cookie_io_functions_t __fns);
411: #endif
412: 
413: 
414: #ifdef __cplusplus
415: extern "C" {
416: #endif
417: 
418: extern int __underflow (_IO_FILE *);
419: extern int __uflow (_IO_FILE *);
420: extern int __overflow (_IO_FILE *, int);
421: #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
422: extern _IO_wint_t __wunderflow (_IO_FILE *);
423: extern _IO_wint_t __wuflow (_IO_FILE *);
424: extern _IO_wint_t __woverflow (_IO_FILE *, _IO_wint_t);
425: #endif
426: 
427: #if  __GNUC__ >= 3
428: # define _IO_BE(expr, res) __builtin_expect ((expr), res)
429: #else
430: # define _IO_BE(expr, res) (expr)
431: #endif
432: 
433: #define _IO_getc_unlocked(_fp) \
434:        (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) \
435:         ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)
436: #define _IO_peekc_unlocked(_fp) \
437:        (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) \
438:           && __underflow (_fp) == EOF ? EOF \
439:         : *(unsigned char *) (_fp)->_IO_read_ptr)
440: #define _IO_putc_unlocked(_ch, _fp) \
441:    (_IO_BE ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end, 0) \
442:     ? __overflow (_fp, (unsigned char) (_ch)) \
443:     : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
444: 
445: #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
446: # define _IO_getwc_unlocked(_fp) \
447:   (_IO_BE ((_fp)->_wide_data == NULL                                    \
448:            || ((_fp)->_wide_data->_IO_read_ptr                          \
449:                >= (_fp)->_wide_data->_IO_read_end), 0)                  \
450:    ? __wuflow (_fp) : (_IO_wint_t) *(_fp)->_wide_data->_IO_read_ptr++)
451: # define _IO_putwc_unlocked(_wch, _fp) \
452:   (_IO_BE ((_fp)->_wide_data == NULL                                    \
453:            || ((_fp)->_wide_data->_IO_write_ptr                         \
454:                >= (_fp)->_wide_data->_IO_write_end), 0)                 \
455:    ? __woverflow (_fp, _wch)                                            \
456:    : (_IO_wint_t) (*(_fp)->_wide_data->_IO_write_ptr++ = (_wch)))
457: #endif
458: 
459: #define _IO_feof_unlocked(__fp) (((__fp)->_flags & _IO_EOF_SEEN) != 0)
460: #define _IO_ferror_unlocked(__fp) (((__fp)->_flags & _IO_ERR_SEEN) != 0)
461: 
462: extern int _IO_getc (_IO_FILE *__fp);
463: extern int _IO_putc (int __c, _IO_FILE *__fp);
464: extern int _IO_feof (_IO_FILE *__fp) __THROW;
465: extern int _IO_ferror (_IO_FILE *__fp) __THROW;
466: 
467: extern int _IO_peekc_locked (_IO_FILE *__fp);
468: 
469: /* This one is for Emacs. */
470: #define _IO_PENDING_OUTPUT_COUNT(_fp)   \
471:         ((_fp)->_IO_write_ptr - (_fp)->_IO_write_base)
472: 
473: extern void _IO_flockfile (_IO_FILE *) __THROW;
474: extern void _IO_funlockfile (_IO_FILE *) __THROW;
475: extern int _IO_ftrylockfile (_IO_FILE *) __THROW;
476: 
477: #ifdef _IO_MTSAFE_IO
478: # define _IO_peekc(_fp) _IO_peekc_locked (_fp)
479: # define _IO_flockfile(_fp) \
480:   if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_flockfile (_fp)
481: # define _IO_funlockfile(_fp) \
482:   if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_funlockfile (_fp)
483: #else
484: # define _IO_peekc(_fp) _IO_peekc_unlocked (_fp)
485: # define _IO_flockfile(_fp) /**/
486: # define _IO_funlockfile(_fp) /**/
487: # define _IO_ftrylockfile(_fp) /**/
488: # define _IO_cleanup_region_start(_fct, _fp) /**/
489: # define _IO_cleanup_region_end(_Doit) /**/
490: #endif /* !_IO_MTSAFE_IO */
491: 
492: extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
493:                         _IO_va_list, int *__restrict);
494: extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
495:                          _IO_va_list);
496: extern _IO_ssize_t _IO_padn (_IO_FILE *, int, _IO_ssize_t);
497: extern _IO_size_t _IO_sgetn (_IO_FILE *, void *, _IO_size_t);
498: 
499: extern _IO_off64_t _IO_seekoff (_IO_FILE *, _IO_off64_t, int, int);
500: extern _IO_off64_t _IO_seekpos (_IO_FILE *, _IO_off64_t, int);
501: 
502: extern void _IO_free_backup_area (_IO_FILE *) __THROW;
503: 
504: #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
505: extern _IO_wint_t _IO_getwc (_IO_FILE *__fp);
506: extern _IO_wint_t _IO_putwc (wchar_t __wc, _IO_FILE *__fp);
507: extern int _IO_fwide (_IO_FILE *__fp, int __mode) __THROW;
508: # if __GNUC__ >= 2
509: /* While compiling glibc we have to handle compatibility with very old
510:    versions.  */
511: #  if defined _LIBC && defined SHARED
512: #   include <shlib-compat.h>
513: #   if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
514: #    define _IO_fwide_maybe_incompatible \
515:   (__builtin_expect (&_IO_stdin_used == NULL, 0))
516: extern const int _IO_stdin_used;
517: weak_extern (_IO_stdin_used);
518: #   endif
519: #  endif
520: #  ifndef _IO_fwide_maybe_incompatible
521: #   define _IO_fwide_maybe_incompatible (0)
522: #  endif
523: /* A special optimized version of the function above.  It optimizes the
524:    case of initializing an unoriented byte stream.  */
525: #  define _IO_fwide(__fp, __mode) \
526:   ({ int __result = (__mode);                                                 \
527:      if (__result < 0 && ! _IO_fwide_maybe_incompatible)                      \
528:        {                                                                      \
529:          if ((__fp)->_mode == 0)                                              \
530:            /* We know that all we have to do is to set the flag.  */          \
531:            (__fp)->_mode = -1;                                                \
532:          __result = (__fp)->_mode;                                            \
533:        }                                                                      \
534:      else if (__builtin_constant_p (__mode) && (__mode) == 0)                 \
535:        __result = _IO_fwide_maybe_incompatible ? -1 : (__fp)->_mode;          \
536:      else                                                                     \
537:        __result = _IO_fwide (__fp, __result);                                 \
538:      __result; })
539: # endif
540: 
541: extern int _IO_vfwscanf (_IO_FILE * __restrict, const wchar_t * __restrict,
542:                          _IO_va_list, int *__restrict);
543: extern int _IO_vfwprintf (_IO_FILE *__restrict, const wchar_t *__restrict,
544:                           _IO_va_list);
545: extern _IO_ssize_t _IO_wpadn (_IO_FILE *, wint_t, _IO_ssize_t);
546: extern void _IO_free_wbackup_area (_IO_FILE *) __THROW;
547: #endif
548: 
549: #ifdef __LDBL_COMPAT
550: # include <bits/libio-ldbl.h>
551: #endif
552: 
553: #ifdef __cplusplus
554: }
555: #endif
556: 
557: #endif /* _IO_STDIO_H */
558: 


for client 3.17.174.239
© Andrew Scott 2006 - 2024,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/