| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-15 04:24:56 +08:00
										 |  |  | BIO_s_fd, BIO_set_fd, BIO_get_fd, BIO_new_fd - file descriptor BIO | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/bio.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-09 00:55:45 +08:00
										 |  |  |  const BIO_METHOD *BIO_s_fd(void); | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-09 00:55:45 +08:00
										 |  |  |  int BIO_set_fd(BIO *b, int fd, int c); | 
					
						
							|  |  |  |  int BIO_get_fd(BIO *b, int *c); | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |  BIO *BIO_new_fd(int fd, int close_flag); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-14 20:44:34 +08:00
										 |  |  | BIO_s_fd() returns the file descriptor BIO method. This is a wrapper | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | round the platforms file descriptor routines such as read() and write(). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-20 16:56:18 +08:00
										 |  |  | BIO_read_ex() and BIO_write_ex() read or write the underlying descriptor. | 
					
						
							| 
									
										
										
										
											2000-09-18 03:20:17 +08:00
										 |  |  | BIO_puts() is supported but BIO_gets() is not. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-20 23:51:06 +08:00
										 |  |  | If the close flag is set then close() is called on the underlying | 
					
						
							| 
									
										
										
										
											2000-09-18 03:20:17 +08:00
										 |  |  | file descriptor when the BIO is freed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | BIO_reset() attempts to change the file pointer to the start of file | 
					
						
							| 
									
										
										
										
											2016-07-09 00:55:45 +08:00
										 |  |  | such as by using B<lseek(fd, 0, 0)>. | 
					
						
							| 
									
										
										
										
											2000-09-18 03:20:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | BIO_seek() sets the file pointer to position B<ofs> from start of file | 
					
						
							| 
									
										
										
										
											2016-07-09 00:55:45 +08:00
										 |  |  | such as by using B<lseek(fd, ofs, 0)>. | 
					
						
							| 
									
										
										
										
											2000-09-18 03:20:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-09 00:55:45 +08:00
										 |  |  | BIO_tell() returns the current file position such as by calling | 
					
						
							|  |  |  | B<lseek(fd, 0, 1)>. | 
					
						
							| 
									
										
										
										
											2000-09-18 03:20:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | BIO_set_fd() sets the file descriptor of BIO B<b> to B<fd> and the close | 
					
						
							|  |  |  | flag to B<c>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | BIO_get_fd() places the file descriptor in B<c> if it is not NULL, it also | 
					
						
							| 
									
										
										
										
											2016-07-09 00:55:45 +08:00
										 |  |  | returns the file descriptor. | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-16 23:39:28 +08:00
										 |  |  | BIO_new_fd() returns a file descriptor BIO using B<fd> and B<close_flag>. | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 NOTES | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-20 16:56:18 +08:00
										 |  |  | The behaviour of BIO_read_ex() and BIO_write_ex() depends on the behavior of the | 
					
						
							| 
									
										
										
										
											2016-05-20 20:11:46 +08:00
										 |  |  | platforms read() and write() calls on the descriptor. If the underlying | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | file descriptor is in a non blocking mode then the BIO will behave in the | 
					
						
							| 
									
										
										
										
											2016-10-20 16:56:18 +08:00
										 |  |  | manner described in the L<BIO_read_ex(3)> and L<BIO_should_retry(3)> | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | manual pages. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | File descriptor BIOs should not be used for socket I/O. Use socket BIOs | 
					
						
							|  |  |  | instead. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-09 00:55:45 +08:00
										 |  |  | BIO_set_fd() and BIO_get_fd() are implemented as macros. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | =head1 RETURN VALUES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | BIO_s_fd() returns the file descriptor BIO method. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | BIO_set_fd() always returns 1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | BIO_get_fd() returns the file descriptor or -1 if the BIO has not | 
					
						
							| 
									
										
										
										
											2000-09-16 23:39:28 +08:00
										 |  |  | been initialized. | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | BIO_new_fd() returns the newly allocated BIO or NULL is an error | 
					
						
							|  |  |  | occurred. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-16 02:26:08 +08:00
										 |  |  | =head1 EXAMPLES | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | This is a file descriptor BIO version of "Hello World": | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  BIO *out; | 
					
						
							| 
									
										
										
										
											2016-07-29 03:15:52 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-14 01:27:42 +08:00
										 |  |  |  out = BIO_new_fd(fileno(stdout), BIO_NOCLOSE); | 
					
						
							|  |  |  |  BIO_printf(out, "Hello World\n"); | 
					
						
							|  |  |  |  BIO_free(out); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<BIO_seek(3)>, L<BIO_tell(3)>, | 
					
						
							| 
									
										
										
										
											2016-10-20 16:56:18 +08:00
										 |  |  | L<BIO_reset(3)>, L<BIO_read_ex(3)>, | 
					
						
							|  |  |  | L<BIO_write_ex(3)>, L<BIO_puts(3)>, | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<BIO_gets(3)>, L<BIO_printf(3)>, | 
					
						
							|  |  |  | L<BIO_set_close(3)>, L<BIO_get_close(3)> | 
					
						
							| 
									
										
										
										
											2016-05-18 22:16:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-06 21:04:44 +08:00
										 |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |