Fix i2d_X509_AUX, update docs and add tests
[openssl.git] / doc / crypto / BIO_ctrl.pod
index 421a3ac1cbd75a8a69aa3c759d9777db9cfa14ac..722e8b8f46c9c5b202bb4283338e7411d582f2d7 100644 (file)
@@ -3,9 +3,9 @@
 =head1 NAME
 
 BIO_ctrl, BIO_callback_ctrl, BIO_ptr_ctrl, BIO_int_ctrl, BIO_reset,
 =head1 NAME
 
 BIO_ctrl, BIO_callback_ctrl, BIO_ptr_ctrl, BIO_int_ctrl, BIO_reset,
-BIO_flush, BIO_eof, BIO_set_close, BIO_get_close, BIO_pending,
-BIO_wpending, BIO_ctrl_pending, BIO_ctrl_wpending, BIO_get_info_callback,
-BIO_set_info_callback - BIO control operations
+BIO_seek, BIO_tell, BIO_flush, BIO_eof, BIO_set_close, BIO_get_close,
+BIO_pending, BIO_wpending, BIO_ctrl_pending, BIO_ctrl_wpending,
+BIO_get_info_callback, BIO_set_info_callback - BIO control operations
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
@@ -17,6 +17,8 @@ BIO_set_info_callback - BIO control operations
  long BIO_int_ctrl(BIO *bp,int cmd,long larg,int iarg);
 
  int BIO_reset(BIO *b);
  long BIO_int_ctrl(BIO *bp,int cmd,long larg,int iarg);
 
  int BIO_reset(BIO *b);
+ int BIO_seek(BIO *b, int ofs);
+ int BIO_tell(BIO *b);
  int BIO_flush(BIO *b);
  int BIO_eof(BIO *b);
  int BIO_set_close(BIO *b,long flag);
  int BIO_flush(BIO *b);
  int BIO_eof(BIO *b);
  int BIO_set_close(BIO *b,long flag);
@@ -41,8 +43,14 @@ specific to a particular type of BIO are described in the specific
 BIOs manual page as well as any special features of the standard
 calls.
 
 BIOs manual page as well as any special features of the standard
 calls.
 
-BIO_reset() typically reset a BIO to some initial state, in the case
-of file related BIOs for example it rewinds the file pointer.
+BIO_reset() typically resets a BIO to some initial state, in the case
+of file related BIOs for example it rewinds the file pointer to the
+start of the file.
+
+BIO_seek() resets a file related BIO's (that is file descriptor and
+FILE BIOs) file position pointer to B<ofs> bytes from start of file.
+
+BIO_tell() returns the current file position of a file related BIO.
 
 BIO_flush() normally writes out any internally buffered data, in some
 cases it is used to signal EOF and that no more data will be written.
 
 BIO_flush() normally writes out any internally buffered data, in some
 cases it is used to signal EOF and that no more data will be written.
@@ -65,7 +73,12 @@ macros which call BIO_ctrl().
 
 =head1 RETURN VALUES
 
 
 =head1 RETURN VALUES
 
-BIO_reset() returns 1 for success and 0 for failure.
+BIO_reset() normally returns 1 for success and 0 or -1 for failure. File
+BIOs are an exception, they return 0 for success and -1 for failure.
+
+BIO_seek() and BIO_tell() both return the current file position on success
+and -1 for failure, except file BIOs which for BIO_seek() always return 0
+for success and -1 for failure.
 
 BIO_flush() returns 1 for success and 0 or -1 for failure.
 
 
 BIO_flush() returns 1 for success and 0 or -1 for failure.
 
@@ -91,14 +104,24 @@ case of a file BIO some data may be available in the FILE structures
 internal buffers but it is not possible to determine this in a
 portably way. For other types of BIO they may not be supported.
 
 internal buffers but it is not possible to determine this in a
 portably way. For other types of BIO they may not be supported.
 
-Filter BIOs if the do not internally handle a particular BIO_ctrl()
+Filter BIOs if they do not internally handle a particular BIO_ctrl()
 operation usually pass the operation to the next BIO in the chain.
 This often means there is no need to locate the required BIO for
 a particular operation, it can be called on a chain and it will
 operation usually pass the operation to the next BIO in the chain.
 This often means there is no need to locate the required BIO for
 a particular operation, it can be called on a chain and it will
-be automatically passed to the relevant BIO.
+be automatically passed to the relevant BIO. However this can cause
+unexpected results: for example no current filter BIOs implement
+BIO_seek(), but this may still succeed if the chain ends in a FILE
+or file descriptor BIO.
+
+Source/sink BIOs return an 0 if they do not recognize the BIO_ctrl()
+operation.
+
+=head1 BUGS
 
 
-Source/sink BIOs will return an error if the do not recognize the
-BIO_ctrl() operation.
+Some of the return values are ambiguous and care should be taken. In
+particular a return value of 0 can be returned if an operation is not
+supported, if an error occurred, if EOF has not been reached and in
+the case of BIO_seek() on a file BIO for a successful operation. 
 
 =head1 SEE ALSO
 
 
 =head1 SEE ALSO