.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\" SUCH DAMAGE.
.\"
.\" @(#)stdio.3 8.7 (Berkeley) 4/19/94
-.\" $FreeBSD: src/lib/libc/stdio/stdio.3,v 1.24 2003/02/23 01:47:47 ru Exp $
+.\" $FreeBSD: src/lib/libc/stdio/stdio.3,v 1.30 2009/03/04 03:38:51 das Exp $
.\"
-.Dd January 10, 2003
+.Dd March 3, 2009
.Dt STDIO 3
.Os
.Sh NAME
.Vt FILE *stdin ;
.Vt FILE *stdout ;
.Vt FILE *stderr ;
+.Pp
+Note:
+The current implementation does not allow these variables
+to be evaluated at C compile/link time.
+That is, a runtime calculation must be performed, such as:
+.Bd -literal -offset indent
+#include <stdio.h>
+
+static FILE *var;
+
+int main() {
+ var = stdout;
+}
+.Ed
.Sh DESCRIPTION
The standard
.Tn I/O
.Pp
A file may be subsequently reopened, by the same or another program
execution, and its contents reclaimed or modified (if it can be repositioned
-at the start). If the main function returns to its original caller, or
+at the start).
+If the main function returns to its original caller, or
the
.Xr exit 3
function is called, all open files are closed (hence all output
-streams are flushed) before program termination. Other methods
+streams are flushed) before program termination.
+Other methods
of program termination may not close files properly and hence
-buffered output may be lost. In particular,
+buffered output may be lost.
+In particular,
.Xr _exit 2
-does not flush stdio files. Neither does an exit due to a signal.
+does not flush stdio files.
+Neither does an exit due to a signal.
Buffers are flushed by
.Xr abort 3
as required by POSIX, although previous implementations did not.
.Dv SEEK_END ,
.Dv SEEK_SET ,
.Dv TMP_MAX ,
+.Dv clearerr ,
.Dv clearerr_unlocked ,
+.Dv feof ,
.Dv feof_unlocked ,
+.Dv ferror ,
.Dv ferror_unlocked ,
+.Dv fileno ,
.Dv fileno_unlocked ,
.Dv fropen ,
.Dv fwopen ,
+.Dv getc ,
.Dv getc_unlocked ,
+.Dv getchar ,
.Dv getchar_unlocked ,
+.Dv putc ,
.Dv putc_unlocked ,
+.Dv putchar ,
.Dv putchar_unlocked ,
.Dv stderr ,
.Dv stdin
and
.Dv stdout .
Function versions of the macro functions
+.Dv clearerr ,
.Dv clearerr_unlocked ,
+.Dv feof ,
.Dv feof_unlocked ,
+.Dv ferror ,
.Dv ferror_unlocked ,
+.Dv fileno ,
.Dv fileno_unlocked ,
+.Dv getc ,
.Dv getc_unlocked ,
+.Dv getchar ,
.Dv getchar_unlocked ,
-.Dv putc_unlocked
+.Dv putc ,
+.Dv putc_unlocked ,
+.Dv putchar ,
and
.Dv putchar_unlocked
exist and will be used if the macro
definitions are explicitly removed.
+.Sh LEGACY SYNOPSIS
+The -D_NONSTD_SOURCE flag can be used
+to allow stdin, stdout, and/or stderr
+to be evaluated at compile/link time, as:
+.Bd -literal -offset indent
+#include <stdio.h>
+
+static FILE *var = stdout;
+.Ed
.Sh SEE ALSO
.Xr close 2 ,
.Xr open 2 ,
.Xr read 2 ,
-.Xr write 2
-.Sh BUGS
-The standard buffered functions do not interact well with certain other
-library and system functions, especially
-.Xr vfork 2 .
+.Xr write 2 ,
+.Xr compat 5
.Sh STANDARDS
The
.Nm
.Bl -column "Description"
.It Sy "Function Description"
.It "asprintf formatted output conversion"
+.It ""
.It "clearerr check and reset stream status"
+.It ""
.It "fclose close a stream"
.It "fdopen stream open functions"
.It "feof check and reset stream status"
.It "fwopen open a stream"
.It "fwprintf formatted wide character output conversion"
.It "fwrite binary stream input/output"
+.It ""
.It "getc get next character or word from input stream"
.It "getchar get next character or word from input stream"
+.It "getdelim get a line from a stream"
+.It "getline get a line from a stream"
.It "gets get a line from a stream"
.It "getw get next character or word from input stream"
.It "getwc get next wide character from input stream"
.It "getwchar get next wide character from input stream"
+.It ""
.It "mkdtemp create unique temporary directory"
.It "mkstemp create unique temporary file"
.It "mktemp create unique temporary file"
+.It ""
.It "perror system error messages"
.It "printf formatted output conversion"
.It "putc output a character or word to a stream"
.It "putw output a character or word to a stream"
.It "putwc output a wide character to a stream"
.It "putwchar output a wide character to a stream"
+.It ""
.It "remove remove directory entry"
.It "rewind reposition a stream"
+.It ""
.It "scanf input format conversion"
.It "setbuf stream buffering operations"
.It "setbuffer stream buffering operations"
.It "swprintf formatted wide character output conversion"
.It "sys_errlist system error messages"
.It "sys_nerr system error messages"
+.It ""
.It "tempnam temporary file routines"
.It "tmpfile temporary file routines"
.It "tmpnam temporary file routines"
+.It ""
.It "ungetc un-get character from input stream"
.It "ungetwc un-get wide character from input stream"
+.It ""
.It "vasprintf formatted output conversion"
.It "vfprintf formatted output conversion"
.It "vfscanf input format conversion"
.It "vsscanf input format conversion"
.It "vswprintf formatted wide character output conversion"
.It "vwprintf formatted wide character output conversion"
+.It ""
.It "wprintf formatted wide character output conversion"
.El
+.Sh BUGS
+The standard buffered functions do not interact well with certain other
+library and system functions, especially
+.Xr vfork 2 .