]>
Commit | Line | Data |
---|---|---|
02ef611e DSH |
1 | =pod |
2 | ||
3 | =head1 NAME | |
4 | ||
8eec1389 | 5 | BIO_s_fd, BIO_set_fd, BIO_get_fd, BIO_new_fd - file descriptor BIO |
02ef611e DSH |
6 | |
7 | =head1 SYNOPSIS | |
8 | ||
9 | #include <openssl/bio.h> | |
10 | ||
91da5e77 | 11 | const BIO_METHOD *BIO_s_fd(void); |
02ef611e | 12 | |
91da5e77 RS |
13 | int BIO_set_fd(BIO *b, int fd, int c); |
14 | int BIO_get_fd(BIO *b, int *c); | |
02ef611e DSH |
15 | |
16 | BIO *BIO_new_fd(int fd, int close_flag); | |
17 | ||
18 | =head1 DESCRIPTION | |
19 | ||
bace2124 | 20 | BIO_s_fd() returns the file descriptor BIO method. This is a wrapper |
02ef611e DSH |
21 | round the platforms file descriptor routines such as read() and write(). |
22 | ||
b055fceb | 23 | BIO_read_ex() and BIO_write_ex() read or write the underlying descriptor. |
e17b7128 RL |
24 | BIO_puts() is supported but BIO_gets() is not. |
25 | ||
b9b6a7e5 | 26 | If the close flag is set then close() is called on the underlying |
e17b7128 RL |
27 | file descriptor when the BIO is freed. |
28 | ||
29 | BIO_reset() attempts to change the file pointer to the start of file | |
91da5e77 | 30 | such as by using B<lseek(fd, 0, 0)>. |
e17b7128 RL |
31 | |
32 | BIO_seek() sets the file pointer to position B<ofs> from start of file | |
91da5e77 | 33 | such as by using B<lseek(fd, ofs, 0)>. |
e17b7128 | 34 | |
91da5e77 RS |
35 | BIO_tell() returns the current file position such as by calling |
36 | B<lseek(fd, 0, 1)>. | |
e17b7128 | 37 | |
02ef611e DSH |
38 | BIO_set_fd() sets the file descriptor of BIO B<b> to B<fd> and the close |
39 | flag to B<c>. | |
40 | ||
41 | BIO_get_fd() places the file descriptor in B<c> if it is not NULL, it also | |
91da5e77 | 42 | returns the file descriptor. |
02ef611e | 43 | |
1e4e5492 | 44 | BIO_new_fd() returns a file descriptor BIO using B<fd> and B<close_flag>. |
02ef611e DSH |
45 | |
46 | =head1 NOTES | |
47 | ||
b055fceb | 48 | The behaviour of BIO_read_ex() and BIO_write_ex() depends on the behavior of the |
1bc74519 | 49 | platforms read() and write() calls on the descriptor. If the underlying |
02ef611e | 50 | file descriptor is in a non blocking mode then the BIO will behave in the |
b055fceb | 51 | manner described in the L<BIO_read_ex(3)> and L<BIO_should_retry(3)> |
02ef611e DSH |
52 | manual pages. |
53 | ||
54 | File descriptor BIOs should not be used for socket I/O. Use socket BIOs | |
55 | instead. | |
56 | ||
91da5e77 RS |
57 | BIO_set_fd() and BIO_get_fd() are implemented as macros. |
58 | ||
02ef611e DSH |
59 | =head1 RETURN VALUES |
60 | ||
61 | BIO_s_fd() returns the file descriptor BIO method. | |
62 | ||
02ef611e DSH |
63 | BIO_set_fd() always returns 1. |
64 | ||
65 | BIO_get_fd() returns the file descriptor or -1 if the BIO has not | |
1e4e5492 | 66 | been initialized. |
02ef611e DSH |
67 | |
68 | BIO_new_fd() returns the newly allocated BIO or NULL is an error | |
69 | occurred. | |
70 | ||
71 | =head1 EXAMPLE | |
72 | ||
73 | This is a file descriptor BIO version of "Hello World": | |
74 | ||
75 | BIO *out; | |
700b8145 | 76 | |
02ef611e DSH |
77 | out = BIO_new_fd(fileno(stdout), BIO_NOCLOSE); |
78 | BIO_printf(out, "Hello World\n"); | |
79 | BIO_free(out); | |
80 | ||
81 | =head1 SEE ALSO | |
82 | ||
9b86974e | 83 | L<BIO_seek(3)>, L<BIO_tell(3)>, |
b055fceb MC |
84 | L<BIO_reset(3)>, L<BIO_read_ex(3)>, |
85 | L<BIO_write_ex(3)>, L<BIO_puts(3)>, | |
9b86974e RS |
86 | L<BIO_gets(3)>, L<BIO_printf(3)>, |
87 | L<BIO_set_close(3)>, L<BIO_get_close(3)> | |
99ec4fdb | 88 | |
e2f92610 RS |
89 | =head1 COPYRIGHT |
90 | ||
91 | Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. | |
92 | ||
4746f25a | 93 | Licensed under the Apache License 2.0 (the "License"). You may not use |
e2f92610 RS |
94 | this file except in compliance with the License. You can obtain a copy |
95 | in the file LICENSE in the source distribution or at | |
96 | L<https://www.openssl.org/source/license.html>. | |
97 | ||
98 | =cut |