Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
2 * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
22 #ifndef _SYS_STDIO_T_H_
23 #define _SYS_STDIO_T_H_
36 unsigned char * _base;
41 We need fpos_t for the following, but it doesn't have a leading "_",
42 so we use _fpos_t instead.
47 typedef long _fpos_t; /* XXX must match off_t in <sys/types.h> */
48 /* (and must be `long' for now) */
51 Stdio state variables.
53 The following always hold:
55 if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
56 _lbfsize is -_bf._size, else _lbfsize is 0
57 if _flags&__SRD, _w is 0
58 if _flags&__SWR, _r is 0
60 This ensures that the getc and putc macros (or inline functions) never
61 try to write or read from a file that is in `read' or `write' mode.
62 (Moreover, they can, and do, automatically switch from read mode to
63 write mode, and back, on "r+" and "w+" files.)
65 _lbfsize is used only to make the inline line-buffered output stream
66 code as compact as possible.
68 _ub, _up, and _ur are used when ungetc() pushes back more characters
69 than fit in the current _bf, or when ungetc() pushes back a character
70 that does not match the previous one in _bf. When this happens,
71 _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
72 _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
77 unsigned char *_p; /* current position in (some) buffer */
78 int _r; /* read space left for getc() */
79 int _w; /* write space left for putc() */
80 short _flags; /* flags, below; this FILE is free if 0 */
81 short _file; /* fileno, if Unix descriptor, else -1 */
82 struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */
83 int _lbfsize; /* 0 or -_bf._size, for inline putc */
86 void * _cookie; /* cookie passed to io functions */
88 int (*_read) (void * _cookie, char *_buf, int _n);
89 int (*_write)(void * _cookie, const char *_buf, int _n);
90 _fpos_t (*_seek) (void * _cookie, _fpos_t _offset, int _whence);
91 int (*_close)(void * _cookie);
93 /* separate buffer for long sequences of ungetc() */
94 struct __sbuf _ub; /* ungetc buffer */
95 unsigned char * _up; /* saved _p when _p is doing ungetc data */
96 int _ur; /* saved _r when _r is counting ungetc data */
98 /* tricks to meet minimum requirements even when malloc() fails */
99 unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
100 unsigned char _nbuf[1]; /* guarantee a getc() buffer */
102 /* separate buffer for fgetline() when line crosses buffer boundary */
103 struct __sbuf _lb; /* buffer for fgetline() */
105 /* Unix stdio files get aligned to block boundaries on fseek() */
106 int _blksize; /* stat.st_blksize (may be != _bf._size) */
107 int _offset; /* current lseek offset */
109 struct _reent * _data; /* pointer back to re-entrancy context block */
116 #endif /* _SYS_STDIO_T_H_ */