| .\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>. |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .TH STDIO_EXT 3 2015-03-02 "" "Linux Programmer's Manual" |
| .SH NAME |
| __fbufsize, __flbf, __fpending, __fpurge, __freadable, |
| __freading, __fsetlocking, __fwritable, __fwriting, _flushlbf \- |
| interfaces to stdio FILE structure |
| .SH SYNOPSIS |
| .B #include <stdio.h> |
| .br |
| .B #include <stdio_ext.h> |
| .sp |
| .BI "size_t __fbufsize(FILE *" stream ); |
| .br |
| .BI "size_t __fpending(FILE *" stream ); |
| .br |
| .BI "int __flbf(FILE *" stream ); |
| .br |
| .BI "int __freadable(FILE *" stream ); |
| .br |
| .BI "int __fwritable(FILE *" stream ); |
| .br |
| .BI "int __freading(FILE *" stream ); |
| .br |
| .BI "int __fwriting(FILE *" stream ); |
| .br |
| .BI "int __fsetlocking(FILE *" stream ", int " type ); |
| .br |
| .B "void _flushlbf(void);" |
| .br |
| .BI "void __fpurge(FILE *" stream ); |
| .SH DESCRIPTION |
| Solaris introduced routines to allow portable access to the |
| internals of the |
| .I FILE |
| structure, and glibc also implemented these. |
| .LP |
| The |
| .BR __fbufsize () |
| function returns the size of the buffer currently used |
| by the given stream. |
| .LP |
| The |
| .BR __fpending () |
| function returns the number of bytes 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. |
| .LP |
| The |
| .BR __flbf () |
| function returns a nonzero value if the stream is line-buffered, |
| and zero otherwise. |
| .LP |
| The |
| .BR __freadable () |
| function returns a nonzero value if the stream allows reading, |
| and zero otherwise. |
| .LP |
| The |
| .BR __fwritable () |
| function returns a nonzero value if the stream allows writing, |
| and zero otherwise. |
| .LP |
| The |
| .BR __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. |
| .LP |
| The |
| .BR __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. |
| .LP |
| The |
| .BR __fsetlocking () |
| function can be used to select the desired type of locking on the stream. |
| It returns the current type. |
| The |
| .I type |
| argument can take the following three values: |
| .TP |
| .B FSETLOCKING_INTERNAL |
| Perform implicit locking around every operation on the given stream |
| (except for the *_unlocked ones). |
| This is the default. |
| .TP |
| .B FSETLOCKING_BYCALLER |
| The caller will take care of the locking (possibly using |
| .BR flockfile (3) |
| in case there is more than one thread), and the stdio routines |
| will not do locking until the state is reset to |
| .BR FSETLOCKING_INTERNAL . |
| .TP |
| .B FSETLOCKING_QUERY |
| Don't change the type of locking. |
| (Only return it.) |
| .LP |
| The |
| .BR _flushlbf () |
| function flushes all line-buffered streams. |
| (Presumably so that |
| output to a terminal is forced out, say before reading keyboard input.) |
| .LP |
| The |
| .BR __fpurge () |
| function discards the contents of the stream's buffer. |
| .SH ATTRIBUTES |
| For an explanation of the terms used in this section, see |
| .BR attributes (7). |
| .TS |
| allbox; |
| lbw28 lb lb |
| l l l. |
| Interface Attribute Value |
| T{ |
| .BR __fbufsize (), |
| .BR __fpending (), |
| .br |
| .BR __fpurge (), |
| .BR __fsetlocking () |
| T} Thread safety MT-Safe race:stream |
| T{ |
| .BR __flbf (), |
| .BR __freadable (), |
| .br |
| .BR __freading (), |
| .BR __fwritable (), |
| .br |
| .BR __fwriting (), |
| .BR _flushlbf () |
| T} Thread safety MT-Safe |
| .TE |
| .SH SEE ALSO |
| .BR flockfile (3), |
| .BR fpurge (3) |