Sync usage with man page.
[netbsd-mini2440.git] / crypto / external / bsd / openssl / lib / libcrypto / man / BIO_set_callback.3
blobdb2f15e71c4ae9d81513a069050ff0470543c958
1 .\"     $NetBSD: libcrypto.pl,v 1.3 2007/11/27 22:16:03 christos Exp $
2 .\"
3 .\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
4 .\"
5 .\" Standard preamble:
6 .\" ========================================================================
7 .de Sh \" Subsection heading
8 .br
9 .if t .Sp
10 .ne 5
11 .PP
12 \fB\\$1\fR
13 .PP
15 .de Sp \" Vertical space (when we can't use .PP)
16 .if t .sp .5v
17 .if n .sp
19 .de Vb \" Begin verbatim text
20 .ft CW
21 .nf
22 .ne \\$1
24 .de Ve \" End verbatim text
25 .ft R
26 .fi
28 .\" Set up some character translations and predefined strings.  \*(-- will
29 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
30 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
31 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
32 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
33 .\" nothing in troff, for use with C<>.
34 .tr \(*W-
35 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
36 .ie n \{\
37 .    ds -- \(*W-
38 .    ds PI pi
39 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
40 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
41 .    ds L" ""
42 .    ds R" ""
43 .    ds C` ""
44 .    ds C' ""
45 'br\}
46 .el\{\
47 .    ds -- \|\(em\|
48 .    ds PI \(*p
49 .    ds L" ``
50 .    ds R" ''
51 'br\}
52 .\"
53 .\" Escape single quotes in literal strings from groff's Unicode transform.
54 .ie \n(.g .ds Aq \(aq
55 .el       .ds Aq '
56 .\"
57 .\" If the F register is turned on, we'll generate index entries on stderr for
58 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
59 .\" entries marked with X<> in POD.  Of course, you'll have to process the
60 .\" output yourself in some meaningful fashion.
61 .ie \nF \{\
62 .    de IX
63 .    tm Index:\\$1\t\\n%\t"\\$2"
65 .    nr % 0
66 .    rr F
67 .\}
68 .el \{\
69 .    de IX
71 .\}
72 .\"
73 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
74 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
75 .    \" fudge factors for nroff and troff
76 .if n \{\
77 .    ds #H 0
78 .    ds #V .8m
79 .    ds #F .3m
80 .    ds #[ \f1
81 .    ds #] \fP
82 .\}
83 .if t \{\
84 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
85 .    ds #V .6m
86 .    ds #F 0
87 .    ds #[ \&
88 .    ds #] \&
89 .\}
90 .    \" simple accents for nroff and troff
91 .if n \{\
92 .    ds ' \&
93 .    ds ` \&
94 .    ds ^ \&
95 .    ds , \&
96 .    ds ~ ~
97 .    ds /
98 .\}
99 .if t \{\
100 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
101 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
102 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
103 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
104 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
105 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
107 .    \" troff and (daisy-wheel) nroff accents
108 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
109 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
110 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
111 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
112 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
113 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
114 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
115 .ds ae a\h'-(\w'a'u*4/10)'e
116 .ds Ae A\h'-(\w'A'u*4/10)'E
117 .    \" corrections for vroff
118 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
119 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
120 .    \" for low resolution devices (crt and lpr)
121 .if \n(.H>23 .if \n(.V>19 \
123 .    ds : e
124 .    ds 8 ss
125 .    ds o a
126 .    ds d- d\h'-1'\(ga
127 .    ds D- D\h'-1'\(hy
128 .    ds th \o'bp'
129 .    ds Th \o'LP'
130 .    ds ae ae
131 .    ds Ae AE
133 .rm #[ #] #H #V #F C
134 .\" ========================================================================
136 .IX Title "BIO_set_callback 3"
137 .TH BIO_set_callback 3 "2006-12-06" "1.1.0-dev" "OpenSSL"
138 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
139 .\" way too many mistakes in technical documents.
140 .if n .ad l
142 .SH "NAME"
143 BIO_set_callback, BIO_get_callback, BIO_set_callback_arg, BIO_get_callback_arg,
144 BIO_debug_callback \- BIO callback functions
145 .SH "LIBRARY"
146 libcrypto, -lcrypto
147 .SH "SYNOPSIS"
148 .IX Header "SYNOPSIS"
149 .Vb 1
150 \& #include <openssl/bio.h>
152 \& #define BIO_set_callback(b,cb)         ((b)\->callback=(cb))
153 \& #define BIO_get_callback(b)            ((b)\->callback)
154 \& #define BIO_set_callback_arg(b,arg)    ((b)\->cb_arg=(char *)(arg))
155 \& #define BIO_get_callback_arg(b)                ((b)\->cb_arg)
157 \& long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi,
158 \&        long argl,long ret);
160 \& typedef long (*callback)(BIO *b, int oper, const char *argp,
161 \&                        int argi, long argl, long retvalue);
163 .SH "DESCRIPTION"
164 .IX Header "DESCRIPTION"
165 \&\fIBIO_set_callback()\fR and \fIBIO_get_callback()\fR set and retrieve the \s-1BIO\s0 callback,
166 they are both macros. The callback is called during most high level \s-1BIO\s0
167 operations. It can be used for debugging purposes to trace operations on
168 a \s-1BIO\s0 or to modify its operation.
170 \&\fIBIO_set_callback_arg()\fR and \fIBIO_get_callback_arg()\fR are macros which can be
171 used to set and retrieve an argument for use in the callback.
173 \&\fIBIO_debug_callback()\fR is a standard debugging callback which prints
174 out information relating to each \s-1BIO\s0 operation. If the callback
175 argument is set if is interpreted as a \s-1BIO\s0 to send the information
176 to, otherwise stderr is used.
178 \&\fIcallback()\fR is the callback function itself. The meaning of each
179 argument is described below.
181 The \s-1BIO\s0 the callback is attached to is passed in \fBb\fR.
183 \&\fBoper\fR is set to the operation being performed. For some operations
184 the callback is called twice, once before and once after the actual
185 operation, the latter case has \fBoper\fR or'ed with \s-1BIO_CB_RETURN\s0.
187 The meaning of the arguments \fBargp\fR, \fBargi\fR and \fBargl\fR depends on
188 the value of \fBoper\fR, that is the operation being performed.
190 \&\fBretvalue\fR is the return value that would be returned to the
191 application if no callback were present. The actual value returned
192 is the return value of the callback itself. In the case of callbacks
193 called before the actual \s-1BIO\s0 operation 1 is placed in retvalue, if
194 the return value is not positive it will be immediately returned to
195 the application and the \s-1BIO\s0 operation will not be performed.
197 The callback should normally simply return \fBretvalue\fR when it has
198 finished processing, unless if specifically wishes to modify the
199 value returned to the application.
200 .SH "CALLBACK OPERATIONS"
201 .IX Header "CALLBACK OPERATIONS"
202 .IP "\fBBIO_free(b)\fR" 4
203 .IX Item "BIO_free(b)"
204 callback(b, \s-1BIO_CB_FREE\s0, \s-1NULL\s0, 0L, 0L, 1L) is called before the
205 free operation.
206 .IP "\fBBIO_read(b, out, outl)\fR" 4
207 .IX Item "BIO_read(b, out, outl)"
208 callback(b, \s-1BIO_CB_READ\s0, out, outl, 0L, 1L) is called before
209 the read and callback(b, BIO_CB_READ|BIO_CB_RETURN, out, outl, 0L, retvalue)
210 after.
211 .IP "\fBBIO_write(b, in, inl)\fR" 4
212 .IX Item "BIO_write(b, in, inl)"
213 callback(b, \s-1BIO_CB_WRITE\s0, in, inl, 0L, 1L) is called before
214 the write and callback(b, BIO_CB_WRITE|BIO_CB_RETURN, in, inl, 0L, retvalue)
215 after.
216 .IP "\fBBIO_gets(b, out, outl)\fR" 4
217 .IX Item "BIO_gets(b, out, outl)"
218 callback(b, \s-1BIO_CB_GETS\s0, out, outl, 0L, 1L) is called before
219 the operation and callback(b, BIO_CB_GETS|BIO_CB_RETURN, out, outl, 0L, retvalue)
220 after.
221 .IP "\fBBIO_puts(b, in)\fR" 4
222 .IX Item "BIO_puts(b, in)"
223 callback(b, \s-1BIO_CB_WRITE\s0, in, 0, 0L, 1L) is called before
224 the operation and callback(b, BIO_CB_WRITE|BIO_CB_RETURN, in, 0, 0L, retvalue)
225 after.
226 .IP "\fBBIO_ctrl(\s-1BIO\s0 *b, int cmd, long larg, void *parg)\fR" 4
227 .IX Item "BIO_ctrl(BIO *b, int cmd, long larg, void *parg)"
228 callback(b,BIO_CB_CTRL,parg,cmd,larg,1L) is called before the call and
229 callback(b,BIO_CB_CTRL|BIO_CB_RETURN,parg,cmd, larg,ret) after.
230 .SH "EXAMPLE"
231 .IX Header "EXAMPLE"
232 The \fIBIO_debug_callback()\fR function is a good example, its source is
233 in crypto/bio/bio_cb.c
234 .SH "SEE ALSO"
235 .IX Header "SEE ALSO"
236 \&\s-1TBA\s0