summaryrefslogtreecommitdiffstats
path: root/man3/stdio_ext.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/stdio_ext.3')
-rw-r--r--man3/stdio_ext.3123
1 files changed, 123 insertions, 0 deletions
diff --git a/man3/stdio_ext.3 b/man3/stdio_ext.3
new file mode 100644
index 000000000..d8cb85de6
--- /dev/null
+++ b/man3/stdio_ext.3
@@ -0,0 +1,123 @@
+.\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>.
+.\"
+.\" 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.
+.\"
+.TH STDIO_EXT 3 2001-12-16 "" "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
+.BI "void _flushlbf(void);
+.br
+.BI "void __fpurge(FILE *" stream );
+.SH DESCRIPTION
+Solaris introduced routines to allow portable access to the
+internals of the FILE structure, and glibc also implemented these.
+.LP
+The
+.B __fbufsize()
+function returns the size of the buffer currently used
+by the given stream.
+.LP
+The
+.B __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
+.B __flbf()
+function returns a nonzero value if the stream is line-buffered,
+and zero otherwise.
+.LP
+The
+.B __freadable()
+function returns a nonzero value if the stream allows reading,
+and zero otherwise.
+.LP
+The
+.B __fwritable()
+function returns a nonzero value if the stream allows writing,
+and zero otherwise.
+.LP
+The
+.B __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
+.B __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
+.B __fsetlocking()
+function can be used to select the desired type of locking on the stream.
+It returns the current type. The
+.I type
+parameter 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 FSETLOCKING_INTERNAL.
+.TP
+.B FSETLOCKING_QUERY
+Don't change the type of locking. (Only return it.)
+.LP
+The
+.B _flushlbf()
+function flushes all line-buffered streams. (Presumably so that
+output to a terminal is forced out, say before reading keyboard input.)
+.LP
+The
+.B __fpurge()
+function discards the contents of the stream's buffer.
+.SH "SEE ALSO"
+.BR flockfile (3),
+.BR fpurge (3)