__sFILE Struct Reference

#include <stdapis/stdio.h>

struct __sFILE
Public Attributes
struct __sbuf_bf
int _blksize
int(*_close
void *_cookie
struct _reent *_data
struct __sFILEX *_extra
short_file
short_flags
struct __sbuf_lb
int _lbfsize
unsigned char_nbuf
int _offset
unsigned char *_p
int _r
int(*_read
_fpos_t(*_seek
struct __sbuf_ub
unsigned char_ubuf
unsigned char *_up
int _ur
int _w
int(*_write

Detailed Description

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.

Member Attribute Documentation

_bf

struct __sbuf_bf

_blksize

int _blksize

_close

int(*_close

_cookie

void *_cookie

_data

struct _reent *_data

_extra

struct __sFILEX *_extra

_file

short_file

_flags

short_flags

_lb

struct __sbuf_lb

_lbfsize

int _lbfsize

_nbuf

unsigned char_nbuf

_offset

int _offset

_p

unsigned char *_p

_r

int _r

_read

int(*_read

_seek

_fpos_t(*_seek

_ub

struct __sbuf_ub

_ubuf

unsigned char_ubuf

_up

unsigned char *_up

_ur

int _ur

_w

int _w

_write

int(*_write