]> git.saurik.com Git - apple/libc.git/blobdiff - include/stdio.h
Libc-1272.200.26.tar.gz
[apple/libc.git] / include / stdio.h
index a9b35cd734be237914e16392da3165ef42da2a34..45357515103fcc17c0c1db5d1081230ef66f1659 100644 (file)
 #ifndef        _STDIO_H_
 #define        _STDIO_H_
 
-#include <sys/cdefs.h>
-#include <Availability.h>
-
-#include <_types.h>
-
-/* DO NOT REMOVE THIS COMMENT: fixincludes needs to see:
- * __gnuc_va_list and include <stdarg.h> */
-#include <sys/_types/_va_list.h>
-#include <sys/_types/_size_t.h>
-#include <sys/_types/_null.h>
-
-#include <sys/stdio.h>
-
-typedef __darwin_off_t         fpos_t;
-
-#define        _FSTDIO                 /* Define for new stdio with functions. */
-
-/*
- * NB: to fit things in six character monocase externals, the stdio
- * code uses the prefix `__s' for stdio objects, typically followed
- * by a three-character attempt at a mnemonic.
- */
-
-/* stdio buffers */
-struct __sbuf {
-       unsigned char   *_base;
-       int             _size;
-};
-
-/* hold a buncha junk that would grow the ABI */
-struct __sFILEX;
-
-/*
- * stdio state variables.
- *
- * The following always hold:
- *
- *     if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
- *             _lbfsize is -_bf._size, else _lbfsize is 0
- *     if _flags&__SRD, _w is 0
- *     if _flags&__SWR, _r is 0
- *
- * This ensures that the getc and putc macros (or inline functions) never
- * try to write or read from a file that is in `read' or `write' mode.
- * (Moreover, they can, and do, automatically switch from read mode to
- * write mode, and back, on "r+" and "w+" files.)
- *
- * _lbfsize is used only to make the inline line-buffered output stream
- * code as compact as possible.
- *
- * _ub, _up, and _ur are used when ungetc() pushes back more characters
- * than fit in the current _bf, or when ungetc() pushes back a character
- * that does not match the previous one in _bf.  When this happens,
- * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
- * _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
- *
- * NB: see WARNING above before changing the layout of this structure!
- */
-typedef        struct __sFILE {
-       unsigned char *_p;      /* current position in (some) buffer */
-       int     _r;             /* read space left for getc() */
-       int     _w;             /* write space left for putc() */
-       short   _flags;         /* flags, below; this FILE is free if 0 */
-       short   _file;          /* fileno, if Unix descriptor, else -1 */
-       struct  __sbuf _bf;     /* the buffer (at least 1 byte, if !NULL) */
-       int     _lbfsize;       /* 0 or -_bf._size, for inline putc */
-
-       /* operations */
-       void    *_cookie;       /* cookie passed to io functions */
-       int     (* _Nullable _close)(void *);
-       int     (* _Nullable _read) (void *, char *, int);
-       fpos_t  (* _Nullable _seek) (void *, fpos_t, int);
-       int     (* _Nullable _write)(void *, const char *, int);
-
-       /* separate buffer for long sequences of ungetc() */
-       struct  __sbuf _ub;     /* ungetc buffer */
-       struct __sFILEX *_extra; /* additions to FILE to not break ABI */
-       int     _ur;            /* saved _r when _r is counting ungetc data */
-
-       /* tricks to meet minimum requirements even when malloc() fails */
-       unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
-       unsigned char _nbuf[1]; /* guarantee a getc() buffer */
-
-       /* separate buffer for fgetln() when line crosses buffer boundary */
-       struct  __sbuf _lb;     /* buffer for fgetln() */
-
-       /* 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 (see WARNING) */
-} FILE;
+#include <_stdio.h>
 
 __BEGIN_DECLS
 extern FILE *__stdinp;