|  | =pod | 
|  |  | 
|  | =head1 NAME | 
|  |  | 
|  | ERR_GET_LIB, ERR_GET_FUNC, ERR_GET_REASON - get library, function and | 
|  | reason code | 
|  |  | 
|  | =head1 SYNOPSIS | 
|  |  | 
|  | #include <openssl/err.h> | 
|  |  | 
|  | int ERR_GET_LIB(unsigned long e); | 
|  |  | 
|  | int ERR_GET_FUNC(unsigned long e); | 
|  |  | 
|  | int ERR_GET_REASON(unsigned long e); | 
|  |  | 
|  | =head1 DESCRIPTION | 
|  |  | 
|  | The error code returned by ERR_get_error() consists of a library | 
|  | number, function code and reason code. ERR_GET_LIB(), ERR_GET_FUNC() | 
|  | and ERR_GET_REASON() can be used to extract these. | 
|  |  | 
|  | The library number and function code describe where the error | 
|  | occurred, the reason code is the information about what went wrong. | 
|  |  | 
|  | Each sub-library of OpenSSL has a unique library number; function and | 
|  | reason codes are unique within each sub-library.  Note that different | 
|  | libraries may use the same value to signal different functions and | 
|  | reasons. | 
|  |  | 
|  | B<ERR_R_...> reason codes such as B<ERR_R_MALLOC_FAILURE> are globally | 
|  | unique. However, when checking for sub-library specific reason codes, | 
|  | be sure to also compare the library number. | 
|  |  | 
|  | ERR_GET_LIB(), ERR_GET_FUNC() and ERR_GET_REASON() are macros. | 
|  |  | 
|  | =head1 RETURN VALUES | 
|  |  | 
|  | The library number, function code and reason code respectively. | 
|  |  | 
|  | =head1 SEE ALSO | 
|  |  | 
|  | L<err(3)|err(3)>, L<ERR_get_error(3)|ERR_get_error(3)> | 
|  |  | 
|  | =head1 HISTORY | 
|  |  | 
|  | ERR_GET_LIB(), ERR_GET_FUNC() and ERR_GET_REASON() are available in | 
|  | all versions of SSLeay and OpenSSL. | 
|  |  | 
|  | =cut |