# stdio_ext

## NAME



           __fbufsize, __flbf, __fpending, __fpurge, __freadable, __freading,
           __fsetlocking, __fwritable, __fwriting, _flushlbf - interfaces to
           stdio FILE structure
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <stdio.h>**
           **#include <stdio_ext.h>**
    
           **size_t __fbufsize(FILE ***_stream_**);**
           **size_t __fpending(FILE ***_stream_**);**
           **int __flbf(FILE ***_stream_**);**
           **int __freadable(FILE ***_stream_**);**
           **int __fwritable(FILE ***_stream_**);**
           **int __freading(FILE ***_stream_**);**
           **int __fwriting(FILE ***_stream_**);**
           **int __fsetlocking(FILE ***_stream_**, int** _type_**);**
           **void _flushlbf(void);**
           **void __fpurge(FILE ***_stream_**);**
    


## DESCRIPTION



           Solaris introduced routines to allow portable access to the
           internals of the _FILE_ structure, and glibc also implemented these.
    
           The **__fbufsize**() function returns the size of the buffer currently
           used by the given stream.
    
           The **__fpending**() function returns the number of characters in the
           output buffer.  For wide-oriented streams the unit is wide
           characters.  This function is undefined on buffers in reading
           mode, or opened read-only.
    
           The **__flbf**() function returns a nonzero value if the stream is
           line-buffered, and zero otherwise.
    
           The **__freadable**() function returns a nonzero value if the stream
           allows reading, and zero otherwise.
    
           The **__fwritable**() function returns a nonzero value if the stream
           allows writing, and zero otherwise.
    
           The **__freading**() function returns a nonzero value if the stream is
           read-only, or if the last operation on the stream was a read
           operation, and zero otherwise.
    
           The **__fwriting**() function returns a nonzero value if the stream is
           write-only (or append-only), or if the last operation on the
           stream was a write operation, and zero otherwise.
    
           The **__fsetlocking**() function can be used to select the desired
           type of locking on the stream.  It returns the current type.  The
           _type_ argument can take the following three values:
    
           **FSETLOCKING_INTERNAL**
                  Perform implicit locking around every operation on the
                  given stream (except for the *_unlocked ones).  This is the
                  default.
    
           **FSETLOCKING_BYCALLER**
                  The caller will take care of the locking (possibly using
                  flockfile(3) in case there is more than one thread), and
                  the stdio routines will not do locking until the state is
                  reset to **FSETLOCKING_INTERNAL**.
    
           **FSETLOCKING_QUERY**
                  Don't change the type of locking.  (Only return it.)
    
           The **_flushlbf**() function flushes all line-buffered streams.
           (Presumably so that output to a terminal is forced out, say before
           reading keyboard input.)
    
           The **__fpurge**() function discards the contents of the stream's
           buffer.
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌──────────────────────────┬───────────────┬─────────────────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├──────────────────────────┼───────────────┼─────────────────────┤
           │ **__fbufsize**(),            │ Thread safety │ MT-Safe race:stream │
           │ **__fpending**(),            │               │                     │
           │ **__fpurge**(),              │               │                     │
           │ **__fsetlocking**()          │               │                     │
           ├──────────────────────────┼───────────────┼─────────────────────┤
           │ **__flbf**(), **__freadable**(), │ Thread safety │ MT-Safe             │
           │ **__freading**(),            │               │                     │
           │ **__fwritable**(),           │               │                     │
           │ **__fwriting**(),            │               │                     │
           │ **_flushlbf**()              │               │                     │
           └──────────────────────────┴───────────────┴─────────────────────┘
    


* * *