Merge from vendor branch OPENSSH:
[dragonfly.git] / secure / lib / libcrypto / man / BIO_s_file.3
1 .\" Automatically generated by Pod::Man version 1.15
2 .\" Wed Feb 19 16:42:45 2003
3 .\"
4 .\" Standard preamble:
5 .\" ======================================================================
6 .de Sh \" Subsection heading
7 .br
8 .if t .Sp
9 .ne 5
10 .PP
11 \fB\\$1\fR
12 .PP
13 ..
14 .de Sp \" Vertical space (when we can't use .PP)
15 .if t .sp .5v
16 .if n .sp
17 ..
18 .de Ip \" List item
19 .br
20 .ie \\n(.$>=3 .ne \\$3
21 .el .ne 3
22 .IP "\\$1" \\$2
23 ..
24 .de Vb \" Begin verbatim text
25 .ft CW
26 .nf
27 .ne \\$1
28 ..
29 .de Ve \" End verbatim text
30 .ft R
31
32 .fi
33 ..
34 .\" Set up some character translations and predefined strings.  \*(-- will
35 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
36 .\" double quote, and \*(R" will give a right double quote.  | will give a
37 .\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used
38 .\" to do unbreakable dashes and therefore won't be available.  \*(C` and
39 .\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
40 .tr \(*W-|\(bv\*(Tr
41 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
42 .ie n \{\
43 .    ds -- \(*W-
44 .    ds PI pi
45 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
46 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
47 .    ds L" ""
48 .    ds R" ""
49 .    ds C` ""
50 .    ds C' ""
51 'br\}
52 .el\{\
53 .    ds -- \|\(em\|
54 .    ds PI \(*p
55 .    ds L" ``
56 .    ds R" ''
57 'br\}
58 .\"
59 .\" If the F register is turned on, we'll generate index entries on stderr
60 .\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
61 .\" index entries marked with X<> in POD.  Of course, you'll have to process
62 .\" the output yourself in some meaningful fashion.
63 .if \nF \{\
64 .    de IX
65 .    tm Index:\\$1\t\\n%\t"\\$2"
66 ..
67 .    nr % 0
68 .    rr F
69 .\}
70 .\"
71 .\" For nroff, turn off justification.  Always turn off hyphenation; it
72 .\" makes way too many mistakes in technical documents.
73 .hy 0
74 .if n .na
75 .\"
76 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
77 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
78 .bd B 3
79 .    \" fudge factors for nroff and troff
80 .if n \{\
81 .    ds #H 0
82 .    ds #V .8m
83 .    ds #F .3m
84 .    ds #[ \f1
85 .    ds #] \fP
86 .\}
87 .if t \{\
88 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
89 .    ds #V .6m
90 .    ds #F 0
91 .    ds #[ \&
92 .    ds #] \&
93 .\}
94 .    \" simple accents for nroff and troff
95 .if n \{\
96 .    ds ' \&
97 .    ds ` \&
98 .    ds ^ \&
99 .    ds , \&
100 .    ds ~ ~
101 .    ds /
102 .\}
103 .if t \{\
104 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
105 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
106 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
107 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
108 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
109 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
110 .\}
111 .    \" troff and (daisy-wheel) nroff accents
112 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
113 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
114 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
115 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
116 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
117 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
118 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
119 .ds ae a\h'-(\w'a'u*4/10)'e
120 .ds Ae A\h'-(\w'A'u*4/10)'E
121 .    \" corrections for vroff
122 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
123 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
124 .    \" for low resolution devices (crt and lpr)
125 .if \n(.H>23 .if \n(.V>19 \
126 \{\
127 .    ds : e
128 .    ds 8 ss
129 .    ds o a
130 .    ds d- d\h'-1'\(ga
131 .    ds D- D\h'-1'\(hy
132 .    ds th \o'bp'
133 .    ds Th \o'LP'
134 .    ds ae ae
135 .    ds Ae AE
136 .\}
137 .rm #[ #] #H #V #F C
138 .\" ======================================================================
139 .\"
140 .IX Title "BIO_s_file 3"
141 .TH BIO_s_file 3 "0.9.7a" "2003-02-19" "OpenSSL"
142 .UC
143 .SH "NAME"
144 BIO_s_file, BIO_new_file, BIO_new_fp, BIO_set_fp, BIO_get_fp,
145 BIO_read_filename, BIO_write_filename, BIO_append_filename,
146 BIO_rw_filename \- \s-1FILE\s0 bio
147 .SH "SYNOPSIS"
148 .IX Header "SYNOPSIS"
149 .Vb 1
150 \& #include <openssl/bio.h>
151 .Ve
152 .Vb 3
153 \& BIO_METHOD *   BIO_s_file(void);
154 \& BIO *BIO_new_file(const char *filename, const char *mode);
155 \& BIO *BIO_new_fp(FILE *stream, int flags);
156 .Ve
157 .Vb 2
158 \& BIO_set_fp(BIO *b,FILE *fp, int flags);
159 \& BIO_get_fp(BIO *b,FILE **fpp);
160 .Ve
161 .Vb 4
162 \& int BIO_read_filename(BIO *b, char *name)
163 \& int BIO_write_filename(BIO *b, char *name)
164 \& int BIO_append_filename(BIO *b, char *name)
165 \& int BIO_rw_filename(BIO *b, char *name)
166 .Ve
167 .SH "DESCRIPTION"
168 .IX Header "DESCRIPTION"
169 \&\fIBIO_s_file()\fR returns the \s-1BIO\s0 file method. As its name implies it
170 is a wrapper round the stdio \s-1FILE\s0 structure and it is a
171 source/sink \s-1BIO\s0.
172 .PP
173 Calls to \fIBIO_read()\fR and \fIBIO_write()\fR read and write data to the
174 underlying stream. \fIBIO_gets()\fR and \fIBIO_puts()\fR are supported on file BIOs.
175 .PP
176 \&\fIBIO_flush()\fR on a file \s-1BIO\s0 calls the \fIfflush()\fR function on the wrapped
177 stream.
178 .PP
179 \&\fIBIO_reset()\fR attempts to change the file pointer to the start of file
180 using fseek(stream, 0, 0).
181 .PP
182 \&\fIBIO_seek()\fR sets the file pointer to position \fBofs\fR from start of file
183 using fseek(stream, ofs, 0).
184 .PP
185 \&\fIBIO_eof()\fR calls \fIfeof()\fR.
186 .PP
187 Setting the \s-1BIO_CLOSE\s0 flag calls \fIfclose()\fR on the stream when the \s-1BIO\s0
188 is freed.
189 .PP
190 \&\fIBIO_new_file()\fR creates a new file \s-1BIO\s0 with mode \fBmode\fR the meaning
191 of \fBmode\fR is the same as the stdio function \fIfopen()\fR. The \s-1BIO_CLOSE\s0
192 flag is set on the returned \s-1BIO\s0.
193 .PP
194 \&\fIBIO_new_fp()\fR creates a file \s-1BIO\s0 wrapping \fBstream\fR. Flags can be:
195 \&\s-1BIO_CLOSE\s0, \s-1BIO_NOCLOSE\s0 (the close flag) \s-1BIO_FP_TEXT\s0 (sets the underlying
196 stream to text mode, default is binary: this only has any effect under
197 Win32).
198 .PP
199 \&\fIBIO_set_fp()\fR set the fp of a file \s-1BIO\s0 to \fBfp\fR. \fBflags\fR has the same
200 meaning as in \fIBIO_new_fp()\fR, it is a macro.
201 .PP
202 \&\fIBIO_get_fp()\fR retrieves the fp of a file \s-1BIO\s0, it is a macro.
203 .PP
204 \&\fIBIO_seek()\fR is a macro that sets the position pointer to \fBoffset\fR bytes
205 from the start of file.
206 .PP
207 \&\fIBIO_tell()\fR returns the value of the position pointer.
208 .PP
209 \&\fIBIO_read_filename()\fR, \fIBIO_write_filename()\fR, \fIBIO_append_filename()\fR and
210 \&\fIBIO_rw_filename()\fR set the file \s-1BIO\s0 \fBb\fR to use file \fBname\fR for
211 reading, writing, append or read write respectively.
212 .SH "NOTES"
213 .IX Header "NOTES"
214 When wrapping stdout, stdin or stderr the underlying stream should not
215 normally be closed so the \s-1BIO_NOCLOSE\s0 flag should be set.
216 .PP
217 Because the file \s-1BIO\s0 calls the underlying stdio functions any quirks
218 in stdio behaviour will be mirrored by the corresponding \s-1BIO\s0.
219 .SH "EXAMPLES"
220 .IX Header "EXAMPLES"
221 File \s-1BIO\s0 \*(L"hello world\*(R":
222 .PP
223 .Vb 3
224 \& BIO *bio_out;
225 \& bio_out = BIO_new_fp(stdout, BIO_NOCLOSE);
226 \& BIO_printf(bio_out, "Hello World\en");
227 .Ve
228 Alternative technique:
229 .PP
230 .Vb 5
231 \& BIO *bio_out;
232 \& bio_out = BIO_new(BIO_s_file());
233 \& if(bio_out == NULL) /* Error ... */
234 \& if(!BIO_set_fp(bio_out, stdout, BIO_NOCLOSE)) /* Error ... */
235 \& BIO_printf(bio_out, "Hello World\en");
236 .Ve
237 Write to a file:
238 .PP
239 .Vb 5
240 \& BIO *out;
241 \& out = BIO_new_file("filename.txt", "w");
242 \& if(!out) /* Error occurred */
243 \& BIO_printf(out, "Hello World\en");
244 \& BIO_free(out);
245 .Ve
246 Alternative technique:
247 .PP
248 .Vb 6
249 \& BIO *out;
250 \& out = BIO_new(BIO_s_file());
251 \& if(out == NULL) /* Error ... */
252 \& if(!BIO_write_filename(out, "filename.txt")) /* Error ... */
253 \& BIO_printf(out, "Hello World\en");
254 \& BIO_free(out);
255 .Ve
256 .SH "RETURN VALUES"
257 .IX Header "RETURN VALUES"
258 \&\fIBIO_s_file()\fR returns the file \s-1BIO\s0 method.
259 .PP
260 \&\fIBIO_new_file()\fR and \fIBIO_new_fp()\fR return a file \s-1BIO\s0 or \s-1NULL\s0 if an error
261 occurred.
262 .PP
263 \&\fIBIO_set_fp()\fR and \fIBIO_get_fp()\fR return 1 for success or 0 for failure
264 (although the current implementation never return 0).
265 .PP
266 \&\fIBIO_seek()\fR returns the same value as the underlying \fIfseek()\fR function:
267 0 for success or \-1 for failure.
268 .PP
269 \&\fIBIO_tell()\fR returns the current file position.
270 .PP
271 \&\fIBIO_read_filename()\fR, \fIBIO_write_filename()\fR,  \fIBIO_append_filename()\fR and
272 \&\fIBIO_rw_filename()\fR return 1 for success or 0 for failure.
273 .SH "BUGS"
274 .IX Header "BUGS"
275 \&\fIBIO_reset()\fR and \fIBIO_seek()\fR are implemented using \fIfseek()\fR on the underlying
276 stream. The return value for \fIfseek()\fR is 0 for success or \-1 if an error
277 occurred this differs from other types of \s-1BIO\s0 which will typically return
278 1 for success and a non positive value if an error occurred.
279 .SH "SEE ALSO"
280 .IX Header "SEE ALSO"
281 BIO_seek(3), BIO_tell(3),
282 BIO_reset(3), BIO_flush(3),
283 BIO_read(3),
284 BIO_write(3), BIO_puts(3),
285 BIO_gets(3), BIO_printf(3),
286 BIO_set_close(3), BIO_get_close(3)