141502Swpaul=pod 241502Swpaul 341502Swpaul=head1 NAME 441502Swpaul 541502SwpaulBIO_s_fd, BIO_set_fd, BIO_get_fd, BIO_new_fd - file descriptor BIO 641502Swpaul 741502Swpaul=head1 SYNOPSIS 841502Swpaul 941502Swpaul #include <openssl/bio.h> 1041502Swpaul 1141502Swpaul BIO_METHOD * BIO_s_fd(void); 1241502Swpaul 1341502Swpaul #define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) 1441502Swpaul #define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c) 1541502Swpaul 1641502Swpaul BIO *BIO_new_fd(int fd, int close_flag); 1741502Swpaul 1841502Swpaul=head1 DESCRIPTION 1941502Swpaul 2041502SwpaulBIO_s_fd() returns the file descriptor BIO method. This is a wrapper 2141502Swpaulround the platforms file descriptor routines such as read() and write(). 2241502Swpaul 2341502SwpaulBIO_read() and BIO_write() read or write the underlying descriptor. 2441502SwpaulBIO_puts() is supported but BIO_gets() is not. 2541502Swpaul 2641502SwpaulIf the close flag is set then then close() is called on the underlying 2741502Swpaulfile descriptor when the BIO is freed. 2841502Swpaul 2941502SwpaulBIO_reset() attempts to change the file pointer to the start of file 3041502Swpaulusing lseek(fd, 0, 0). 3141502Swpaul 3250477SpeterBIO_seek() sets the file pointer to position B<ofs> from start of file 3341502Swpaulusing lseek(fd, ofs, 0). 3441502Swpaul 3541502SwpaulBIO_tell() returns the current file position by calling lseek(fd, 0, 1). 3641502Swpaul 3741502SwpaulBIO_set_fd() sets the file descriptor of BIO B<b> to B<fd> and the close 3841502Swpaulflag to B<c>. 3941502Swpaul 4041502SwpaulBIO_get_fd() places the file descriptor in B<c> if it is not NULL, it also 4141502Swpaulreturns the file descriptor. If B<c> is not NULL it should be of type 4241502Swpaul(int *). 4341502Swpaul 4441502SwpaulBIO_new_fd() returns a file descriptor BIO using B<fd> and B<close_flag>. 4541502Swpaul 4641502Swpaul=head1 NOTES 4741502Swpaul 4841502SwpaulThe behaviour of BIO_read() and BIO_write() depends on the behavior of the 4941502Swpaulplatforms read() and write() calls on the descriptor. If the underlying 5041502Swpaulfile descriptor is in a non blocking mode then the BIO will behave in the 5141502Swpaulmanner described in the L<BIO_read(3)|BIO_read(3)> and L<BIO_should_retry(3)|BIO_should_retry(3)> 5241502Swpaulmanual pages. 5341502Swpaul 5441502SwpaulFile descriptor BIOs should not be used for socket I/O. Use socket BIOs 5541502Swpaulinstead. 5641502Swpaul 5741502Swpaul=head1 RETURN VALUES 5841502Swpaul 5941502SwpaulBIO_s_fd() returns the file descriptor BIO method. 6041502Swpaul 6141502SwpaulBIO_reset() returns zero for success and -1 if an error occurred. 6241502SwpaulBIO_seek() and BIO_tell() return the current file position or -1 6341502Swpaulif an error occurred. These values reflect the underlying lseek() 6441502Swpaulbehaviour. 6541502Swpaul 6641502SwpaulBIO_set_fd() always returns 1. 6741502Swpaul 6841502SwpaulBIO_get_fd() returns the file descriptor or -1 if the BIO has not 6941502Swpaulbeen initialized. 7041502Swpaul 7141502SwpaulBIO_new_fd() returns the newly allocated BIO or NULL is an error 7241502Swpauloccurred. 7341502Swpaul 7441502Swpaul=head1 EXAMPLE 7541502Swpaul 7641502SwpaulThis is a file descriptor BIO version of "Hello World": 7741502Swpaul 7841502Swpaul BIO *out; 7941502Swpaul out = BIO_new_fd(fileno(stdout), BIO_NOCLOSE); 8041502Swpaul BIO_printf(out, "Hello World\n"); 8141502Swpaul BIO_free(out); 8241502Swpaul 8349610Swpaul=head1 SEE ALSO 8449610Swpaul 8549610SwpaulL<BIO_seek(3)|BIO_seek(3)>, L<BIO_tell(3)|BIO_tell(3)>, 8641502SwpaulL<BIO_reset(3)|BIO_reset(3)>, L<BIO_read(3)|BIO_read(3)>, 8751432SwpaulL<BIO_write(3)|BIO_write(3)>, L<BIO_puts(3)|BIO_puts(3)>, 8851432SwpaulL<BIO_gets(3)|BIO_gets(3)>, L<BIO_printf(3)|BIO_printf(3)>, 8951432SwpaulL<BIO_set_close(3)|BIO_set_close(3)>, L<BIO_get_close(3)|BIO_get_close(3)> 9041502Swpaul