1*2175Sjp161948=pod 2*2175Sjp161948 3*2175Sjp161948=head1 NAME 4*2175Sjp161948 5*2175Sjp161948BIO_s_fd, BIO_set_fd, BIO_get_fd, BIO_new_fd - file descriptor BIO 6*2175Sjp161948 7*2175Sjp161948=head1 SYNOPSIS 8*2175Sjp161948 9*2175Sjp161948 #include <openssl/bio.h> 10*2175Sjp161948 11*2175Sjp161948 BIO_METHOD * BIO_s_fd(void); 12*2175Sjp161948 13*2175Sjp161948 #define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) 14*2175Sjp161948 #define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c) 15*2175Sjp161948 16*2175Sjp161948 BIO *BIO_new_fd(int fd, int close_flag); 17*2175Sjp161948 18*2175Sjp161948=head1 DESCRIPTION 19*2175Sjp161948 20*2175Sjp161948BIO_s_fd() returns the file descriptor BIO method. This is a wrapper 21*2175Sjp161948round the platforms file descriptor routines such as read() and write(). 22*2175Sjp161948 23*2175Sjp161948BIO_read() and BIO_write() read or write the underlying descriptor. 24*2175Sjp161948BIO_puts() is supported but BIO_gets() is not. 25*2175Sjp161948 26*2175Sjp161948If the close flag is set then then close() is called on the underlying 27*2175Sjp161948file descriptor when the BIO is freed. 28*2175Sjp161948 29*2175Sjp161948BIO_reset() attempts to change the file pointer to the start of file 30*2175Sjp161948using lseek(fd, 0, 0). 31*2175Sjp161948 32*2175Sjp161948BIO_seek() sets the file pointer to position B<ofs> from start of file 33*2175Sjp161948using lseek(fd, ofs, 0). 34*2175Sjp161948 35*2175Sjp161948BIO_tell() returns the current file position by calling lseek(fd, 0, 1). 36*2175Sjp161948 37*2175Sjp161948BIO_set_fd() sets the file descriptor of BIO B<b> to B<fd> and the close 38*2175Sjp161948flag to B<c>. 39*2175Sjp161948 40*2175Sjp161948BIO_get_fd() places the file descriptor in B<c> if it is not NULL, it also 41*2175Sjp161948returns the file descriptor. If B<c> is not NULL it should be of type 42*2175Sjp161948(int *). 43*2175Sjp161948 44*2175Sjp161948BIO_new_fd() returns a file descriptor BIO using B<fd> and B<close_flag>. 45*2175Sjp161948 46*2175Sjp161948=head1 NOTES 47*2175Sjp161948 48*2175Sjp161948The behaviour of BIO_read() and BIO_write() depends on the behavior of the 49*2175Sjp161948platforms read() and write() calls on the descriptor. If the underlying 50*2175Sjp161948file descriptor is in a non blocking mode then the BIO will behave in the 51*2175Sjp161948manner described in the L<BIO_read(3)|BIO_read(3)> and L<BIO_should_retry(3)|BIO_should_retry(3)> 52*2175Sjp161948manual pages. 53*2175Sjp161948 54*2175Sjp161948File descriptor BIOs should not be used for socket I/O. Use socket BIOs 55*2175Sjp161948instead. 56*2175Sjp161948 57*2175Sjp161948=head1 RETURN VALUES 58*2175Sjp161948 59*2175Sjp161948BIO_s_fd() returns the file descriptor BIO method. 60*2175Sjp161948 61*2175Sjp161948BIO_reset() returns zero for success and -1 if an error occurred. 62*2175Sjp161948BIO_seek() and BIO_tell() return the current file position or -1 63*2175Sjp161948is an error occurred. These values reflect the underlying lseek() 64*2175Sjp161948behaviour. 65*2175Sjp161948 66*2175Sjp161948BIO_set_fd() always returns 1. 67*2175Sjp161948 68*2175Sjp161948BIO_get_fd() returns the file descriptor or -1 if the BIO has not 69*2175Sjp161948been initialized. 70*2175Sjp161948 71*2175Sjp161948BIO_new_fd() returns the newly allocated BIO or NULL is an error 72*2175Sjp161948occurred. 73*2175Sjp161948 74*2175Sjp161948=head1 EXAMPLE 75*2175Sjp161948 76*2175Sjp161948This is a file descriptor BIO version of "Hello World": 77*2175Sjp161948 78*2175Sjp161948 BIO *out; 79*2175Sjp161948 out = BIO_new_fd(fileno(stdout), BIO_NOCLOSE); 80*2175Sjp161948 BIO_printf(out, "Hello World\n"); 81*2175Sjp161948 BIO_free(out); 82*2175Sjp161948 83*2175Sjp161948=head1 SEE ALSO 84*2175Sjp161948 85*2175Sjp161948L<BIO_seek(3)|BIO_seek(3)>, L<BIO_tell(3)|BIO_tell(3)>, 86*2175Sjp161948L<BIO_reset(3)|BIO_reset(3)>, L<BIO_read(3)|BIO_read(3)>, 87*2175Sjp161948L<BIO_write(3)|BIO_write(3)>, L<BIO_puts(3)|BIO_puts(3)>, 88*2175Sjp161948L<BIO_gets(3)|BIO_gets(3)>, L<BIO_printf(3)|BIO_printf(3)>, 89*2175Sjp161948L<BIO_set_close(3)|BIO_set_close(3)>, L<BIO_get_close(3)|BIO_get_close(3)> 90