err.3 (206048) | err.3 (215698) |
---|---|
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.37 | 1.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) |
2.\" 3.\" Standard preamble: 4.\" ======================================================================== | 2.\" 3.\" Standard preamble: 4.\" ======================================================================== |
5.de Sh \" Subsection heading 6.br 7.if t .Sp 8.ne 5 9.PP 10\fB\\$1\fR 11.PP 12.. | |
13.de Sp \" Vertical space (when we can't use .PP) 14.if t .sp .5v 15.if n .sp 16.. 17.de Vb \" Begin verbatim text 18.ft CW 19.nf 20.ne \\$1 21.. 22.de Ve \" End verbatim text 23.ft R 24.fi 25.. 26.\" Set up some character translations and predefined strings. \*(-- will 27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left | 5.de Sp \" Vertical space (when we can't use .PP) 6.if t .sp .5v 7.if n .sp 8.. 9.de Vb \" Begin verbatim text 10.ft CW 11.nf 12.ne \\$1 13.. 14.de Ve \" End verbatim text 15.ft R 16.fi 17.. 18.\" Set up some character translations and predefined strings. \*(-- will 19.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left |
28.\" double quote, and \*(R" will give a right double quote. | will give a 29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to 30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' 31.\" expand to `' in nroff, nothing in troff, for use with C<>. 32.tr \(*W-|\(bv\*(Tr | 20.\" double quote, and \*(R" will give a right double quote. \*(C+ will 21.\" give a nicer C++. Capital omega is used to do unbreakable dashes and 22.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, 23.\" nothing in troff, for use with C<>. 24.tr \(*W- |
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' 34.ie n \{\ 35. ds -- \(*W- 36. ds PI pi 37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch 38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch 39. ds L" "" 40. ds R" "" 41. ds C` "" 42. ds C' "" 43'br\} 44.el\{\ 45. ds -- \|\(em\| 46. ds PI \(*p 47. ds L" `` 48. ds R" '' 49'br\} 50.\" | 25.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' 26.ie n \{\ 27. ds -- \(*W- 28. ds PI pi 29. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch 30. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch 31. ds L" "" 32. ds R" "" 33. ds C` "" 34. ds C' "" 35'br\} 36.el\{\ 37. ds -- \|\(em\| 38. ds PI \(*p 39. ds L" `` 40. ds R" '' 41'br\} 42.\" |
43.\" Escape single quotes in literal strings from groff's Unicode transform. 44.ie \n(.g .ds Aq \(aq 45.el .ds Aq ' 46.\" |
|
51.\" If the F register is turned on, we'll generate index entries on stderr for | 47.\" If the F register is turned on, we'll generate index entries on stderr for |
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index | 48.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index |
53.\" entries marked with X<> in POD. Of course, you'll have to process the 54.\" output yourself in some meaningful fashion. | 49.\" entries marked with X<> in POD. Of course, you'll have to process the 50.\" output yourself in some meaningful fashion. |
55.if \nF \{\ | 51.ie \nF \{\ |
56. de IX 57. tm Index:\\$1\t\\n%\t"\\$2" 58.. 59. nr % 0 60. rr F 61.\} | 52. de IX 53. tm Index:\\$1\t\\n%\t"\\$2" 54.. 55. nr % 0 56. rr F 57.\} |
58.el \{\ 59. de IX 60.. 61.\} |
|
62.\" | 62.\" |
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes 64.\" way too many mistakes in technical documents. 65.hy 0 66.if n .na 67.\" | |
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). 69.\" Fear. Run. Save yourself. No user-serviceable parts. 70. \" fudge factors for nroff and troff 71.if n \{\ 72. ds #H 0 73. ds #V .8m 74. ds #F .3m 75. ds #[ \f1 --- 48 unchanged lines hidden (view full) --- 124. ds Th \o'LP' 125. ds ae ae 126. ds Ae AE 127.\} 128.rm #[ #] #H #V #F C 129.\" ======================================================================== 130.\" 131.IX Title "err 3" | 63.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). 64.\" Fear. Run. Save yourself. No user-serviceable parts. 65. \" fudge factors for nroff and troff 66.if n \{\ 67. ds #H 0 68. ds #V .8m 69. ds #F .3m 70. ds #[ \f1 --- 48 unchanged lines hidden (view full) --- 119. ds Th \o'LP' 120. ds ae ae 121. ds Ae AE 122.\} 123.rm #[ #] #H #V #F C 124.\" ======================================================================== 125.\" 126.IX Title "err 3" |
132.TH err 3 "2010-03-24" "0.9.8n" "OpenSSL" | 127.TH err 3 "2010-11-16" "0.9.8p" "OpenSSL" 128.\" For nroff, turn off justification. Always turn off hyphenation; it makes 129.\" way too many mistakes in technical documents. 130.if n .ad l 131.nh |
133.SH "NAME" 134err \- error codes 135.SH "SYNOPSIS" 136.IX Header "SYNOPSIS" 137.Vb 1 138\& #include <openssl/err.h> | 132.SH "NAME" 133err \- error codes 134.SH "SYNOPSIS" 135.IX Header "SYNOPSIS" 136.Vb 1 137\& #include <openssl/err.h> |
139.Ve 140.PP 141.Vb 8 | 138\& |
142\& unsigned long ERR_get_error(void); 143\& unsigned long ERR_peek_error(void); 144\& unsigned long ERR_get_error_line(const char **file, int *line); 145\& unsigned long ERR_peek_error_line(const char **file, int *line); 146\& unsigned long ERR_get_error_line_data(const char **file, int *line, 147\& const char **data, int *flags); 148\& unsigned long ERR_peek_error_line_data(const char **file, int *line, 149\& const char **data, int *flags); | 139\& unsigned long ERR_get_error(void); 140\& unsigned long ERR_peek_error(void); 141\& unsigned long ERR_get_error_line(const char **file, int *line); 142\& unsigned long ERR_peek_error_line(const char **file, int *line); 143\& unsigned long ERR_get_error_line_data(const char **file, int *line, 144\& const char **data, int *flags); 145\& unsigned long ERR_peek_error_line_data(const char **file, int *line, 146\& const char **data, int *flags); |
150.Ve 151.PP 152.Vb 3 | 147\& |
153\& int ERR_GET_LIB(unsigned long e); 154\& int ERR_GET_FUNC(unsigned long e); 155\& int ERR_GET_REASON(unsigned long e); | 148\& int ERR_GET_LIB(unsigned long e); 149\& int ERR_GET_FUNC(unsigned long e); 150\& int ERR_GET_REASON(unsigned long e); |
156.Ve 157.PP 158.Vb 1 | 151\& |
159\& void ERR_clear_error(void); | 152\& void ERR_clear_error(void); |
160.Ve 161.PP 162.Vb 4 | 153\& |
163\& char *ERR_error_string(unsigned long e, char *buf); 164\& const char *ERR_lib_error_string(unsigned long e); 165\& const char *ERR_func_error_string(unsigned long e); 166\& const char *ERR_reason_error_string(unsigned long e); | 154\& char *ERR_error_string(unsigned long e, char *buf); 155\& const char *ERR_lib_error_string(unsigned long e); 156\& const char *ERR_func_error_string(unsigned long e); 157\& const char *ERR_reason_error_string(unsigned long e); |
167.Ve 168.PP 169.Vb 2 | 158\& |
170\& void ERR_print_errors(BIO *bp); 171\& void ERR_print_errors_fp(FILE *fp); | 159\& void ERR_print_errors(BIO *bp); 160\& void ERR_print_errors_fp(FILE *fp); |
172.Ve 173.PP 174.Vb 2 | 161\& |
175\& void ERR_load_crypto_strings(void); 176\& void ERR_free_strings(void); | 162\& void ERR_load_crypto_strings(void); 163\& void ERR_free_strings(void); |
177.Ve 178.PP 179.Vb 1 | 164\& |
180\& void ERR_remove_state(unsigned long pid); | 165\& void ERR_remove_state(unsigned long pid); |
181.Ve 182.PP 183.Vb 3 | 166\& |
184\& void ERR_put_error(int lib, int func, int reason, const char *file, 185\& int line); 186\& void ERR_add_error_data(int num, ...); | 167\& void ERR_put_error(int lib, int func, int reason, const char *file, 168\& int line); 169\& void ERR_add_error_data(int num, ...); |
187.Ve 188.PP 189.Vb 3 | 170\& |
190\& void ERR_load_strings(int lib,ERR_STRING_DATA str[]); 191\& unsigned long ERR_PACK(int lib, int func, int reason); 192\& int ERR_get_next_error_library(void); 193.Ve 194.SH "DESCRIPTION" 195.IX Header "DESCRIPTION" 196When a call to the OpenSSL library fails, this is usually signalled 197by the return value, and an error code is stored in an error queue --- 15 unchanged lines hidden (view full) --- 213avoid memory leaks when threads are terminated. 214.SH "ADDING NEW ERROR CODES TO OPENSSL" 215.IX Header "ADDING NEW ERROR CODES TO OPENSSL" 216See \fIERR_put_error\fR\|(3) if you want to record error codes in the 217OpenSSL error system from within your application. 218.PP 219The remainder of this section is of interest only if you want to add 220new error codes to OpenSSL or add error codes from external libraries. | 171\& void ERR_load_strings(int lib,ERR_STRING_DATA str[]); 172\& unsigned long ERR_PACK(int lib, int func, int reason); 173\& int ERR_get_next_error_library(void); 174.Ve 175.SH "DESCRIPTION" 176.IX Header "DESCRIPTION" 177When a call to the OpenSSL library fails, this is usually signalled 178by the return value, and an error code is stored in an error queue --- 15 unchanged lines hidden (view full) --- 194avoid memory leaks when threads are terminated. 195.SH "ADDING NEW ERROR CODES TO OPENSSL" 196.IX Header "ADDING NEW ERROR CODES TO OPENSSL" 197See \fIERR_put_error\fR\|(3) if you want to record error codes in the 198OpenSSL error system from within your application. 199.PP 200The remainder of this section is of interest only if you want to add 201new error codes to OpenSSL or add error codes from external libraries. |
221.Sh "Reporting errors" | 202.SS "Reporting errors" |
222.IX Subsection "Reporting errors" 223Each sub-library has a specific macro \fIXXXerr()\fR that is used to report 224errors. Its first argument is a function code \fB\s-1XXX_F_\s0...\fR, the second 225argument is a reason code \fB\s-1XXX_R_\s0...\fR. Function codes are derived 226from the function names; reason codes consist of textual error 227descriptions. For example, the function \fIssl23_read()\fR reports a 228\&\*(L"handshake failure\*(R" as follows: 229.PP --- 7 unchanged lines hidden (view full) --- 237for an appropriate function name, if none is found it just uses 238the capitalized form such as \*(L"\s-1SSL23_READ\s0\*(R" in the above example. 239.PP 240The trailing section of a reason code (after the \*(L"_R_\*(R") is translated 241into lower case and underscores changed to spaces. 242.PP 243When you are using new function or reason codes, run \fBmake errors\fR. 244The necessary \fB#define\fRs will then automatically be added to the | 203.IX Subsection "Reporting errors" 204Each sub-library has a specific macro \fIXXXerr()\fR that is used to report 205errors. Its first argument is a function code \fB\s-1XXX_F_\s0...\fR, the second 206argument is a reason code \fB\s-1XXX_R_\s0...\fR. Function codes are derived 207from the function names; reason codes consist of textual error 208descriptions. For example, the function \fIssl23_read()\fR reports a 209\&\*(L"handshake failure\*(R" as follows: 210.PP --- 7 unchanged lines hidden (view full) --- 218for an appropriate function name, if none is found it just uses 219the capitalized form such as \*(L"\s-1SSL23_READ\s0\*(R" in the above example. 220.PP 221The trailing section of a reason code (after the \*(L"_R_\*(R") is translated 222into lower case and underscores changed to spaces. 223.PP 224When you are using new function or reason codes, run \fBmake errors\fR. 225The necessary \fB#define\fRs will then automatically be added to the |
245sub\-library's header file. | 226sub-library's header file. |
246.PP 247Although a library will normally report errors using its own specific 248XXXerr macro, another library's macro can be used. This is normally 249only done when a library wants to include \s-1ASN1\s0 code which must use 250the \fIASN1err()\fR macro. | 227.PP 228Although a library will normally report errors using its own specific 229XXXerr macro, another library's macro can be used. This is normally 230only done when a library wants to include \s-1ASN1\s0 code which must use 231the \fIASN1err()\fR macro. |
251.Sh "Adding new libraries" | 232.SS "Adding new libraries" |
252.IX Subsection "Adding new libraries" 253When adding a new sub-library to OpenSSL, assign it a library number 254\&\fB\s-1ERR_LIB_XXX\s0\fR, define a macro \fIXXXerr()\fR (both in \fBerr.h\fR), add its 255name to \fBERR_str_libraries[]\fR (in \fBcrypto/err/err.c\fR), and add 256\&\f(CW\*(C`ERR_load_XXX_strings()\*(C'\fR to the \fIERR_load_crypto_strings()\fR function 257(in \fBcrypto/err/err_all.c\fR). Finally, add an entry 258.PP 259.Vb 1 --- 5 unchanged lines hidden (view full) --- 265add all error codes used in the library to \fBxxx.h\fR. 266.PP 267Additionally the library include file must have a certain form. 268Typically it will initially look like this: 269.PP 270.Vb 2 271\& #ifndef HEADER_XXX_H 272\& #define HEADER_XXX_H | 233.IX Subsection "Adding new libraries" 234When adding a new sub-library to OpenSSL, assign it a library number 235\&\fB\s-1ERR_LIB_XXX\s0\fR, define a macro \fIXXXerr()\fR (both in \fBerr.h\fR), add its 236name to \fBERR_str_libraries[]\fR (in \fBcrypto/err/err.c\fR), and add 237\&\f(CW\*(C`ERR_load_XXX_strings()\*(C'\fR to the \fIERR_load_crypto_strings()\fR function 238(in \fBcrypto/err/err_all.c\fR). Finally, add an entry 239.PP 240.Vb 1 --- 5 unchanged lines hidden (view full) --- 246add all error codes used in the library to \fBxxx.h\fR. 247.PP 248Additionally the library include file must have a certain form. 249Typically it will initially look like this: 250.PP 251.Vb 2 252\& #ifndef HEADER_XXX_H 253\& #define HEADER_XXX_H |
273.Ve 274.PP 275.Vb 3 276\& #ifdef __cplusplus | 254\& 255\& #ifdef _\|_cplusplus |
277\& extern "C" { 278\& #endif | 256\& extern "C" { 257\& #endif |
279.Ve 280.PP 281.Vb 1 | 258\& |
282\& /* Include files */ | 259\& /* Include files */ |
283.Ve 284.PP 285.Vb 2 | 260\& |
286\& #include <openssl/bio.h> 287\& #include <openssl/x509.h> | 261\& #include <openssl/bio.h> 262\& #include <openssl/x509.h> |
288.Ve 289.PP 290.Vb 1 | 263\& |
291\& /* Macros, structures and function prototypes */ | 264\& /* Macros, structures and function prototypes */ |
292.Ve 293.PP 294.Vb 1 | 265\& 266\& |
295\& /* BEGIN ERROR CODES */ 296.Ve 297.PP 298The \fB\s-1BEGIN\s0 \s-1ERROR\s0 \s-1CODES\s0\fR sequence is used by the error code 299generation script as the point to place new error codes, any text 300after this point will be overwritten when \fBmake errors\fR is run. 301The closing #endif etc will be automatically added by the script. 302.PP --- 39 unchanged lines hidden --- | 267\& /* BEGIN ERROR CODES */ 268.Ve 269.PP 270The \fB\s-1BEGIN\s0 \s-1ERROR\s0 \s-1CODES\s0\fR sequence is used by the error code 271generation script as the point to place new error codes, any text 272after this point will be overwritten when \fBmake errors\fR is run. 273The closing #endif etc will be automatically added by the script. 274.PP --- 39 unchanged lines hidden --- |