Blame doc/man3/BIO_ctrl.pod

Packit Service 084de1
=pod
Packit Service 084de1
Packit Service 084de1
=head1 NAME
Packit Service 084de1
Packit Service 084de1
BIO_ctrl, BIO_callback_ctrl, BIO_ptr_ctrl, BIO_int_ctrl, BIO_reset,
Packit Service 084de1
BIO_seek, BIO_tell, BIO_flush, BIO_eof, BIO_set_close, BIO_get_close,
Packit Service 084de1
BIO_pending, BIO_wpending, BIO_ctrl_pending, BIO_ctrl_wpending,
Packit Service 084de1
BIO_get_info_callback, BIO_set_info_callback, BIO_info_cb
Packit Service 084de1
- BIO control operations
Packit Service 084de1
Packit Service 084de1
=head1 SYNOPSIS
Packit Service 084de1
Packit Service 084de1
 #include <openssl/bio.h>
Packit Service 084de1
Packit Service 084de1
 typedef int BIO_info_cb(BIO *b, int state, int res);
Packit Service 084de1
Packit Service 084de1
 long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
Packit Service 084de1
 long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *cb);
Packit Service 084de1
 char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
Packit Service 084de1
 long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
Packit Service 084de1
Packit Service 084de1
 int BIO_reset(BIO *b);
Packit Service 084de1
 int BIO_seek(BIO *b, int ofs);
Packit Service 084de1
 int BIO_tell(BIO *b);
Packit Service 084de1
 int BIO_flush(BIO *b);
Packit Service 084de1
 int BIO_eof(BIO *b);
Packit Service 084de1
 int BIO_set_close(BIO *b, long flag);
Packit Service 084de1
 int BIO_get_close(BIO *b);
Packit Service 084de1
 int BIO_pending(BIO *b);
Packit Service 084de1
 int BIO_wpending(BIO *b);
Packit Service 084de1
 size_t BIO_ctrl_pending(BIO *b);
Packit Service 084de1
 size_t BIO_ctrl_wpending(BIO *b);
Packit Service 084de1
Packit Service 084de1
 int BIO_get_info_callback(BIO *b, BIO_info_cb **cbp);
Packit Service 084de1
 int BIO_set_info_callback(BIO *b, BIO_info_cb *cb);
Packit Service 084de1
Packit Service 084de1
=head1 DESCRIPTION
Packit Service 084de1
Packit Service 084de1
BIO_ctrl(), BIO_callback_ctrl(), BIO_ptr_ctrl() and BIO_int_ctrl()
Packit Service 084de1
are BIO "control" operations taking arguments of various types.
Packit Service 084de1
These functions are not normally called directly, various macros
Packit Service 084de1
are used instead. The standard macros are described below, macros
Packit Service 084de1
specific to a particular type of BIO are described in the specific
Packit Service 084de1
BIOs manual page as well as any special features of the standard
Packit Service 084de1
calls.
Packit Service 084de1
Packit Service 084de1
BIO_reset() typically resets a BIO to some initial state, in the case
Packit Service 084de1
of file related BIOs for example it rewinds the file pointer to the
Packit Service 084de1
start of the file.
Packit Service 084de1
Packit Service 084de1
BIO_seek() resets a file related BIO's (that is file descriptor and
Packit Service 084de1
FILE BIOs) file position pointer to B<ofs> bytes from start of file.
Packit Service 084de1
Packit Service 084de1
BIO_tell() returns the current file position of a file related BIO.
Packit Service 084de1
Packit Service 084de1
BIO_flush() normally writes out any internally buffered data, in some
Packit Service 084de1
cases it is used to signal EOF and that no more data will be written.
Packit Service 084de1
Packit Service 084de1
BIO_eof() returns 1 if the BIO has read EOF, the precise meaning of
Packit Service 084de1
"EOF" varies according to the BIO type.
Packit Service 084de1
Packit Service 084de1
BIO_set_close() sets the BIO B close flag to B<flag>. B<flag> can
Packit Service 084de1
take the value BIO_CLOSE or BIO_NOCLOSE. Typically BIO_CLOSE is used
Packit Service 084de1
in a source/sink BIO to indicate that the underlying I/O stream should
Packit Service 084de1
be closed when the BIO is freed.
Packit Service 084de1
Packit Service 084de1
BIO_get_close() returns the BIOs close flag.
Packit Service 084de1
Packit Service 084de1
BIO_pending(), BIO_ctrl_pending(), BIO_wpending() and BIO_ctrl_wpending()
Packit Service 084de1
return the number of pending characters in the BIOs read and write buffers.
Packit Service 084de1
Not all BIOs support these calls. BIO_ctrl_pending() and BIO_ctrl_wpending()
Packit Service 084de1
return a size_t type and are functions, BIO_pending() and BIO_wpending() are
Packit Service 084de1
macros which call BIO_ctrl().
Packit Service 084de1
Packit Service 084de1
=head1 RETURN VALUES
Packit Service 084de1
Packit Service 084de1
BIO_reset() normally returns 1 for success and 0 or -1 for failure. File
Packit Service 084de1
BIOs are an exception, they return 0 for success and -1 for failure.
Packit Service 084de1
Packit Service 084de1
BIO_seek() and BIO_tell() both return the current file position on success
Packit Service 084de1
and -1 for failure, except file BIOs which for BIO_seek() always return 0
Packit Service 084de1
for success and -1 for failure.
Packit Service 084de1
Packit Service 084de1
BIO_flush() returns 1 for success and 0 or -1 for failure.
Packit Service 084de1
Packit Service 084de1
BIO_eof() returns 1 if EOF has been reached 0 otherwise.
Packit Service 084de1
Packit Service 084de1
BIO_set_close() always returns 1.
Packit Service 084de1
Packit Service 084de1
BIO_get_close() returns the close flag value: BIO_CLOSE or BIO_NOCLOSE.
Packit Service 084de1
Packit Service 084de1
BIO_pending(), BIO_ctrl_pending(), BIO_wpending() and BIO_ctrl_wpending()
Packit Service 084de1
return the amount of pending data.
Packit Service 084de1
Packit Service 084de1
=head1 NOTES
Packit Service 084de1
Packit Service 084de1
BIO_flush(), because it can write data may return 0 or -1 indicating
Packit Service 084de1
that the call should be retried later in a similar manner to BIO_write_ex().
Packit Service 084de1
The BIO_should_retry() call should be used and appropriate action taken
Packit Service 084de1
is the call fails.
Packit Service 084de1
Packit Service 084de1
The return values of BIO_pending() and BIO_wpending() may not reliably
Packit Service 084de1
determine the amount of pending data in all cases. For example in the
Packit Service 084de1
case of a file BIO some data may be available in the FILE structures
Packit Service 084de1
internal buffers but it is not possible to determine this in a
Packit Service 084de1
portably way. For other types of BIO they may not be supported.
Packit Service 084de1
Packit Service 084de1
Filter BIOs if they do not internally handle a particular BIO_ctrl()
Packit Service 084de1
operation usually pass the operation to the next BIO in the chain.
Packit Service 084de1
This often means there is no need to locate the required BIO for
Packit Service 084de1
a particular operation, it can be called on a chain and it will
Packit Service 084de1
be automatically passed to the relevant BIO. However this can cause
Packit Service 084de1
unexpected results: for example no current filter BIOs implement
Packit Service 084de1
BIO_seek(), but this may still succeed if the chain ends in a FILE
Packit Service 084de1
or file descriptor BIO.
Packit Service 084de1
Packit Service 084de1
Source/sink BIOs return an 0 if they do not recognize the BIO_ctrl()
Packit Service 084de1
operation.
Packit Service 084de1
Packit Service 084de1
=head1 BUGS
Packit Service 084de1
Packit Service 084de1
Some of the return values are ambiguous and care should be taken. In
Packit Service 084de1
particular a return value of 0 can be returned if an operation is not
Packit Service 084de1
supported, if an error occurred, if EOF has not been reached and in
Packit Service 084de1
the case of BIO_seek() on a file BIO for a successful operation.
Packit Service 084de1
Packit Service 084de1
=head1 COPYRIGHT
Packit Service 084de1
Packit Service 084de1
Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
Packit Service 084de1
Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
in the file LICENSE in the source distribution or at
Packit Service 084de1
L<https://www.openssl.org/source/license.html>.
Packit Service 084de1
Packit Service 084de1
=cut