summaryrefslogtreecommitdiff
path: root/static/netbsd/man3/fopen.3
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man3/fopen.3')
-rw-r--r--static/netbsd/man3/fopen.3326
1 files changed, 326 insertions, 0 deletions
diff --git a/static/netbsd/man3/fopen.3 b/static/netbsd/man3/fopen.3
new file mode 100644
index 00000000..71fd3cf2
--- /dev/null
+++ b/static/netbsd/man3/fopen.3
@@ -0,0 +1,326 @@
+.\" $NetBSD: fopen.3,v 1.36 2019/09/02 00:32:55 sevan Exp $
+.\"
+.\" Copyright (c) 1990, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Chris Torek and the American National Standards Committee X3,
+.\" on Information Processing Systems.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 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. 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.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" @(#)fopen.3 8.1 (Berkeley) 6/4/93
+.\"
+.Dd September 2, 2019
+.Dt FOPEN 3
+.Os
+.Sh NAME
+.Nm fopen ,
+.Nm fdopen ,
+.Nm freopen
+.Nd stream open functions
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.In stdio.h
+.Ft FILE *
+.Fn fopen "const char * restrict path" "const char * restrict mode"
+.Ft FILE *
+.Fn fdopen "int fildes" "const char *mode"
+.Ft FILE *
+.Fn freopen "const char * restrict path" "const char * restrict mode" "FILE * restrict stream"
+.Sh DESCRIPTION
+The
+.Fn fopen
+function
+opens the file whose name is the string pointed to by
+.Fa path
+and associates a stream with it.
+.Pp
+The argument
+.Fa mode
+points to a string beginning with one of the following
+sequences, which may be followed by additional modifiers
+as indicated below:
+.Bl -tag -width 4n
+.It Dq Li a
+Append; open an existing or new file for writing in append mode.
+The file is created if it does not exist.
+.It Dq Li a+
+Open for reading and writing in append mode.
+The file is created if it does not exist.
+.It Dq Li r
+Read; open an existing file for reading.
+.It Dq Li r+
+Open an existing file for reading and writing.
+.It Dq Li w
+Write; open an empty file for writing.
+Truncate an existing file to zero length or create a new file.
+.It Dq Li w+
+Open an empty file for reading and writing.
+Truncate file to zero length or create file.
+.El
+.Pp
+After one of those, the
+.Fa mode
+string can also include one or more of the following modifier letters:
+.Bl -tag -width 4n
+.It Sq b
+The letter
+.Sq b
+may appear either as a last character or as a character between the
+characters in any of the two-character strings described above.
+This is strictly for compatibility with
+.St -ansiC ,
+where it means open in
+.Dq binary
+mode which is identical to text mode here,
+so has no effect; the
+.Sq b
+is ignored.
+.It Sq e
+The letter
+.Sq e
+in the mode string sets the close-on-exec
+.Pq Dv O_CLOEXEC
+flag of the file descriptor, which means that it will not be available
+after an
+.Xr exec 3
+system call.
+This is a non
+.St -ansiC
+extension.
+.It Sq f
+The letter
+.Sq f
+in the mode string restricts
+.Fn fopen
+to regular files; if the file opened is not a regular file,
+.Fn fopen
+will close it, and fail.
+This is a non
+.St -ansiC
+extension.
+.It Sq l
+The letter
+.Sq l
+in the mode string turns the don't-follow-symlinks
+.Pq Dv O_NOFOLLOW
+flag of the file descriptor, which means that if the last path component
+is a symbolic link, it will not be followed.
+This is a non
+.St -ansiC
+extension.
+.It Sq x
+The letter
+.Sq x
+in the mode turns on exclusive open mode to the file
+.Pq Dv O_EXCL
+which means that the file will not be created if it already exists.
+In that case
+.Fn fopen
+will fail.
+.El
+.Pp
+Any created files will have mode
+.Pf \*q Dv S_IRUSR
+\&|
+.Dv S_IWUSR
+\&|
+.Dv S_IRGRP
+\&|
+.Dv S_IWGRP
+\&|
+.Dv S_IROTH
+\&|
+.Dv S_IWOTH Ns \*q
+.Pq Li 0666 ,
+as modified by the process'
+.Xr umask 2
+value.
+.Pp
+Opening a file with append mode causes all subsequent writes to it
+to be forced to the then current end of file, regardless of intervening
+repositioning of the stream.
+.Pp
+The
+.Fn fopen
+and
+.Fn freopen
+functions initially position the stream at the start of the file
+unless the file is opened with append mode,
+in which case the stream is initially positioned at the end of the file.
+.\" PR 6072 claims this paragraph is not correct.
+.\" .Pp
+.\" Reads and writes may be intermixed on read/write streams in any order,
+.\" and do not require an intermediate seek as in previous versions of
+.\" .Em stdio .
+.\" This is not portable to other systems, however;
+.\" .Tn ANSI C
+.\" requires that
+.\" a file positioning function intervene between output and input, unless
+.\" an input operation encounters end-of-file.
+.Pp
+The
+.Fn fdopen
+function associates a stream with the existing file descriptor,
+.Fa fildes .
+The
+.Fa mode
+of the stream must be compatible with the mode of the file descriptor.
+The stream is positioned at the file offset of the file descriptor.
+.Pp
+The
+.Fn freopen
+function
+opens the file whose name is the string pointed to by
+.Fa path
+and associates the stream pointed to by
+.Fa stream
+with it.
+The original stream (if it exists) is closed.
+The
+.Fa mode
+argument is used just as in the
+.Fn fopen
+function.
+The primary use of the
+.Fn freopen
+function
+is to change the file associated with a
+standard text stream
+.Pf ( Em stderr ,
+.Em stdin ,
+or
+.Em stdout ) .
+.Pp
+Input and output against the opened stream will be fully buffered, unless
+it refers to an interactive terminal device, or a different kind of buffering
+is specified in the environment.
+See
+.Xr setvbuf 3
+for additional details.
+.Sh RETURN VALUES
+Upon successful completion
+.Fn fopen ,
+.Fn fdopen
+and
+.Fn freopen
+return a FILE pointer.
+Otherwise,
+.Dv NULL
+is returned and the global variable
+.Va errno
+is set to indicate the error.
+.Sh ERRORS
+The functions may fail if:
+.Bl -tag -width Er
+.It Bq Er EFTYPE
+The file is not a regular file and the character ``f'' is specified
+in the mode.
+.It Bq Er EINVAL
+The specified
+.Fa mode
+was invalid.
+.El
+.Pp
+The
+.Fn fopen ,
+.Fn fdopen
+and
+.Fn freopen
+functions
+may also fail and set
+.Va errno
+for any of the errors specified for the routine
+.Xr malloc 3 .
+.Pp
+The
+.Fn fopen
+function
+may also fail and set
+.Va errno
+for any of the errors specified for the routine
+.Xr open 2 .
+.Pp
+The
+.Fn fdopen
+function
+may also fail and set
+.Va errno
+for any of the errors specified for the routine
+.Xr fcntl 2 .
+.Pp
+The
+.Fn freopen
+function
+may also fail and set
+.Va errno
+for any of the errors specified for the routines
+.Xr open 2 ,
+.Xr fclose 3
+and
+.Xr fflush 3 .
+.Sh SEE ALSO
+.Xr open 2 ,
+.Xr fclose 3 ,
+.Xr fileno 3 ,
+.Xr fseek 3 ,
+.Xr funopen 3
+.Sh STANDARDS
+The
+.Fn fopen
+and
+.Fn freopen
+functions conform to
+.St -ansiC .
+All three functions are specified in
+.St -p1003.1-2008 .
+.Sh HISTORY
+An
+.Fn fopen
+function appeared in
+.At v1 .
+.Sh CAVEATS
+Proper code using
+.Fn fdopen
+with error checking should
+.Xr close 2
+.Fa fildes
+in case of failure, and
+.Xr fclose 3
+the resulting FILE * in case of success.
+.Bd -literal
+ FILE *file;
+ int fd;
+
+ if ((file = fdopen(fd, "r")) != NULL) {
+ /* perform operations on the FILE * */
+ fclose(file);
+ } else {
+ /* failure, report the error */
+ close(fd);
+ }
+.Ed