=pod

=head1 NAME

ERR_print_errors, ERR_print_errors_fp - print error messages

=head1 SYNOPSIS

 #include <openssl/err.h>

 void ERR_print_errors(BIO *bp);
 void ERR_print_errors_fp(FILE *fp);

=head1 DESCRIPTION

ERR_print_errors() is a convenience function that prints the error
strings for all errors that OpenSSL has recorded to B<bp>, thus
emptying the error queue.

ERR_print_errors_fp() is the same, except that the output goes to a
B<FILE>.


The error strings will have the following format:

 [pid]:error:[error code]:[library name]:[function name]:[reason string]:[file name]:[line]:[optional text message]

I<error code> is an 8 digit hexadecimal number. I<library name>,
I<function name> and I<reason string> are ASCII text, as is I<optional
text message> if one was set for the respective error code.

If there is no text string registered for the given error code,
the error string will contain the numeric code.

=head1 RETURN VALUES

ERR_print_errors() and ERR_print_errors_fp() return no values.

=head1 SEE ALSO

L<err(3)|err(3)>, L<ERR_error_string(3)|ERR_error_string(3)>,
L<ERR_get_error(3)|ERR_get_error(3)>,
L<ERR_load_crypto_strings(3)|ERR_load_crypto_strings(3)>,
L<SSL_load_error_strings(3)|SSL_load_error_strings(3)>

=head1 HISTORY

ERR_print_errors() and ERR_print_errors_fp()
are available in all versions of SSLeay and OpenSSL.

=cut
