teach manpages about largefile's demise
[unleashed.git] / share / man / man3c / freopen.3c
blobdf0ccd70c6aadcae07881a92de1063a8e10bd409
1 .\"
2 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for
3 .\" permission to reproduce portions of its copyrighted documentation.
4 .\" Original documentation from The Open Group can be obtained online at
5 .\" http://www.opengroup.org/bookstore/.
6 .\"
7 .\" The Institute of Electrical and Electronics Engineers and The Open
8 .\" Group, have given us permission to reprint portions of their
9 .\" documentation.
10 .\"
11 .\" In the following statement, the phrase ``this text'' refers to portions
12 .\" of the system documentation.
13 .\"
14 .\" Portions of this text are reprinted and reproduced in electronic form
15 .\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition,
16 .\" Standard for Information Technology -- Portable Operating System
17 .\" Interface (POSIX), The Open Group Base Specifications Issue 6,
18 .\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics
19 .\" Engineers, Inc and The Open Group.  In the event of any discrepancy
20 .\" between these versions and the original IEEE and The Open Group
21 .\" Standard, the original IEEE and The Open Group Standard is the referee
22 .\" document.  The original Standard can be obtained online at
23 .\" http://www.opengroup.org/unix/online.html.
24 .\"
25 .\" This notice shall appear on any product containing this material.
26 .\"
27 .\" The contents of this file are subject to the terms of the
28 .\" Common Development and Distribution License (the "License").
29 .\" You may not use this file except in compliance with the License.
30 .\"
31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
32 .\" or http://www.opensolaris.org/os/licensing.
33 .\" See the License for the specific language governing permissions
34 .\" and limitations under the License.
35 .\"
36 .\" When distributing Covered Code, include this CDDL HEADER in each
37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
38 .\" If applicable, add the following below this CDDL HEADER, with the
39 .\" fields enclosed by brackets "[]" replaced with your own identifying
40 .\" information: Portions Copyright [yyyy] [name of copyright owner]
41 .\"
42 .\"
43 .\" Portions Copyright (c) 1992, X/Open Company Limited  All Rights Reserved
44 .\" Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved.
45 .\"
46 .TH FREOPEN 3C "Jul 24, 2002"
47 .SH NAME
48 freopen \- open a stream
49 .SH SYNOPSIS
50 .LP
51 .nf
52 #include <stdio.h>
54 \fBFILE *\fR\fBfreopen\fR(\fBconst char *\fR\fIfilename\fR, \fBconst char *\fR\fImode\fR, \fBFILE *\fR\fIstream\fR);
55 .fi
57 .SH DESCRIPTION
58 .LP
59 The \fBfreopen()\fR function first attempts to flush the stream and close any
60 file descriptor associated with \fIstream\fR. Failure to flush or close the
61 file successfully is ignored. The error and end-of-file indicators for the
62 stream are cleared.
63 .sp
64 .LP
65 The \fBfreopen()\fR function opens the file whose pathname is the string
66 pointed to by \fIfilename\fR and associates the stream pointed to by
67 \fIstream\fR with it. The \fImode\fR argument is used just as in
68 \fBfopen\fR(3C).
69 .sp
70 .LP
71 If \fIfilename\fR is a null pointer and the application conforms to SUSv3 (see
72 \fBstandards\fR(5)), the \fBfreopen()\fR function attempts to change the mode
73 of the stream to that specified by \fImode\fR, as though the name of the file
74 currently associated with the \fIstream\fR had been used.  The following
75 changes of mode are permitted, depending upon the access mode of the file
76 descriptor underlying the stream:
77 .RS +4
78 .TP
79 .ie t \(bu
80 .el o
81 When \fB+\fR is specified, the file descriptor mode must be \fBO_RDWR\fR.
82 .RE
83 .RS +4
84 .TP
85 .ie t \(bu
86 .el o
87 When \fBr\fR is specified, the file descriptor mode must be \fBO_RDONLY\fR or
88 \fBO_RDWR\fR.
89 .RE
90 .RS +4
91 .TP
92 .ie t \(bu
93 .el o
94 When \fBa\fR or \fBw\fR is specified, the file descriptor mode must be
95 \fBO_WRONLY\fR or \fBO_RDWR\fR.
96 .RE
97 .sp
98 .LP
99 If the filename is a null pointer and the application does not conform to
100 SUSv3, \fBfreopen()\fR returns a null pointer.
103 The original stream is closed regardless of whether the subsequent open
104 succeeds.
107 After a successful call to the \fBfreopen()\fR function, the orientation of the
108 stream is cleared, the encoding rule is cleared, and the associated
109 \fBmbstate_t\fR object is set to describe an initial conversion state.
112 The largest value that can be represented correctly in an object of type
113 \fBoff_t\fR will be established as the offset maximum in the open file
114 description.
115 .SH RETURN VALUES
117 Upon successful completion, \fBfreopen()\fR returns the value of \fIstream\fR.
118 Otherwise, a null pointer is returned and \fBerrno\fR is set to indicate the
119 error.
120 .SH ERRORS
122 The \fBfreopen()\fR function will fail if:
124 .ne 2
126 \fB\fBEACCES\fR\fR
128 .RS 16n
129 Search permission is denied on a component of the path prefix, or the file
130 exists and the permissions specified by \fImode\fR are denied, or the file does
131 not exist and write permission is denied for the parent directory of the file
132 to be created.
136 .ne 2
138 \fB\fBEBADF\fR\fR
140 .RS 16n
141 The application conforms to SUSv3, the \fIfilename\fR argument is a null
142 pointer, and either the underlying file descriptor is not valid or the mode
143 specified when the underlying file descriptor was opened does not support the
144 file access modes requested by the \fImode\fR argument.
148 .ne 2
150 \fB\fBEFAULT\fR\fR
152 .RS 16n
153 The application does not conform to SUSv3 and the \fIfilename\fR argument is a
154 null pointer.
158 .ne 2
160 \fB\fBEINTR\fR\fR
162 .RS 16n
163 A signal was caught during \fBfreopen()\fR.
167 .ne 2
169 \fB\fBEISDIR\fR\fR
171 .RS 16n
172 The named file is a directory and \fImode\fR requires write access.
176 .ne 2
178 \fB\fBELOOP\fR\fR
180 .RS 16n
181 Too many symbolic links were encountered in resolving \fIpath\fR.
185 .ne 2
187 \fB\fBEMFILE\fR\fR
189 .RS 16n
190 There are {\fBOPEN_MAX\fR} file descriptors currently open in the calling
191 process.
195 .ne 2
197 \fB\fBENAMETOOLONG\fR\fR
199 .RS 16n
200 The length of the \fIfilename\fR exceeds {\fIPATH_MAX\fR} or a pathname
201 component is longer than {\fINAME_MAX\fR}.
205 .ne 2
207 \fB\fBENFILE\fR\fR
209 .RS 16n
210 The maximum allowable number of files is currently open in the system.
214 .ne 2
216 \fB\fBENOENT\fR\fR
218 .RS 16n
219 A component of \fIfilename\fR does not name an existing file or \fIfilename\fR
220 is an empty string.
224 .ne 2
226 \fB\fBENOSPC\fR\fR
228 .RS 16n
229 The directory or file system that would contain the new file cannot be
230 expanded, the file does not exist, and it was to be created.
234 .ne 2
236 \fB\fBENOTDIR\fR\fR
238 .RS 16n
239 A component of the path prefix is not a directory.
243 .ne 2
245 \fB\fBENXIO\fR\fR
247 .RS 16n
248 The named file is a character special or block special file, and the device
249 associated with this special file does not exist.
253 .ne 2
255 \fB\fBEOVERFLOW\fR\fR
257 .RS 16n
258 The current value of the file position cannot be represented correctly in an
259 object of type \fBoff_t\fR.
263 .ne 2
265 \fB\fBEROFS\fR\fR
267 .RS 16n
268 The named file resides on a read-only file system and \fImode\fR requires write
269 access.
274 The \fBfreopen()\fR function may fail if:
276 .ne 2
278 \fB\fBEINVAL\fR\fR
280 .RS 16n
281 The value of the \fImode\fR argument is not valid.
285 .ne 2
287 \fB\fBENAMETOOLONG\fR\fR
289 .RS 16n
290 Pathname resolution of a symbolic link produced an intermediate result whose
291 length exceeds {\fIPATH_MAX\fR}.
295 .ne 2
297 \fB\fBENOMEM\fR\fR
299 .RS 16n
300 Insufficient storage space is available.
304 .ne 2
306 \fB\fBENXIO\fR\fR
308 .RS 16n
309 A request was made of a non-existent device, or the request was outside the
310 capabilities of the device.
314 .ne 2
316 \fB\fBETXTBSY\fR\fR
318 .RS 16n
319 The file is a pure procedure (shared text) file that is being executed and
320 \fImode\fR requires write access.
323 .SH USAGE
325 The \fBfreopen()\fR function is typically used to attach the preopened
326 \fIstreams\fR associated with \fBstdin\fR, \fBstdout\fR and \fBstderr\fR to
327 other files. By default \fBstderr\fR is unbuffered, but the use of
328 \fBfreopen()\fR will cause it to become buffered or line-buffered.
329 .SH ATTRIBUTES
331 See \fBattributes\fR(5) for descriptions of the following attributes:
336 box;
337 c | c
338 l | l .
339 ATTRIBUTE TYPE  ATTRIBUTE VALUE
341 Interface Stability     Standard
343 MT-Level        MT-Safe
346 .SH SEE ALSO
348 \fBfclose\fR(3C), \fBfdopen\fR(3C), \fBfopen\fR(3C), \fBstdio\fR(3C),
349 \fBattributes\fR(5), \fBstandards\fR(5)