summaryrefslogtreecommitdiff
path: root/lib/libcrypto/man/BIO_s_fd.3
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libcrypto/man/BIO_s_fd.3')
-rw-r--r--lib/libcrypto/man/BIO_s_fd.3137
1 files changed, 137 insertions, 0 deletions
diff --git a/lib/libcrypto/man/BIO_s_fd.3 b/lib/libcrypto/man/BIO_s_fd.3
new file mode 100644
index 00000000000..3d6a2a3ca92
--- /dev/null
+++ b/lib/libcrypto/man/BIO_s_fd.3
@@ -0,0 +1,137 @@
+.Dd $Mdocdate: February 16 2015 $
+.Dt BIO_S_FD 3
+.Os
+.Sh NAME
+.Nm BIO_s_fd ,
+.Nm BIO_set_fd ,
+.Nm BIO_get_fd ,
+.Nm BIO_new_fd
+.Nd file descriptor BIO
+.Sh SYNOPSIS
+.In openssl/bio.h
+.Ft BIO_METHOD *
+.Fo BIO_s_fd
+.Fa "void"
+.Fc
+.Fd #define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
+.Fd #define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c)
+.Ft BIO *
+.Fo BIO_new_fd
+.Fa "int fd"
+.Fa "int close_flag"
+.Fc
+.Sh DESCRIPTION
+.Fn BIO_s_fd
+returns the file descriptor BIO method.
+This is a wrapper around the platform's file descriptor routines such as
+.Xr read 2
+and
+.Xr write 2 .
+.Pp
+.Xr BIO_read 3
+and
+.Xr BIO_write 3
+read or write the underlying descriptor.
+.Xr BIO_puts 3
+is supported but
+.Xr BIO_gets 3
+is not.
+.Pp
+If the close flag is set,
+.Xr close 2
+is called on the underlying file descriptor when the BIO is freed.
+.Pp
+.Xr BIO_reset 3
+attempts to set the file pointer to the start of the file using
+.Fn lseek fd 0 0 .
+.Pp
+.Xr BIO_seek 3
+sets the file pointer to position
+.Fa ofs
+from start of file using
+.Fn lseek fd ofs 0 .
+.Pp
+.Xr BIO_tell 3
+returns the current file position by calling
+.Fn lseek fd 0 1 .
+.Pp
+.Fn BIO_set_fd
+sets the file descriptor of BIO
+.Fa b
+to
+.Fa fd
+and the close flag to
+.Fa c .
+.Pp
+.Fn BIO_get_fd
+places the file descriptor in
+.Fa c
+if it is not
+.Dv NULL ,
+it also returns the file descriptor.
+If
+.Fa c
+is not
+.Dv NULL ,
+it should be of type
+.Vt "int *" .
+.Pp
+.Fn BIO_new_fd
+returns a file descriptor BIO using
+.Fa fd
+and
+.Fa close_flag .
+.Sh NOTES
+The behaviour of
+.Xr BIO_read 3
+and
+.Xr BIO_write 3
+depends on the behavior of the platform's
+.Xr read 2
+and
+.Xr write 2
+calls on the descriptor.
+If the underlying file descriptor is in a non blocking mode,
+then the BIO will behave in the manner described in the
+.Xr BIO_read 3
+and
+.Xr BIO_should_retry 3
+manual pages.
+.Pp
+File descriptor BIOs should not be used for socket I/O.
+Use socket BIOs instead.
+.Sh RETURN VALUES
+.Fn BIO_s_fd
+returns the file descriptor BIO method.
+.Pp
+.Xr BIO_reset 3
+returns zero for success and -1 if an error occurred.
+.Xr BIO_seek 3
+and
+.Xr BIO_tell 3
+return the current file position or -1 if an error occurred.
+These values reflect the underlying
+.Xr lseek 2
+behaviour.
+.Pp
+.Fn BIO_set_fd
+always returns 1.
+.Pp
+.Fn BIO_get_fd
+returns the file descriptor or -1 if the BIO has not been initialized.
+.Pp
+.Fn BIO_new_fd
+returns the newly allocated BIO or
+.Dv NULL
+if an error occurred.
+.Sh EXAMPLE
+This is a file descriptor BIO version of "Hello World":
+.Bd -literal -offset indent
+BIO *out;
+out = BIO_new_fd(fileno(stdout), BIO_NOCLOSE);
+BIO_printf(out, "Hello World\en");
+BIO_free(out);
+.Ed
+.Sh SEE ALSO
+.Xr BIO_read 3 ,
+.Xr BIO_seek 3