Deleted Added
full compact
BIO_s_mem.3 (206048) BIO_s_mem.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
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
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 "BIO_s_mem 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
71. ds #] \fP
72.\}
73.if t \{\
74. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75. ds #V .6m
76. ds #F 0
77. ds #[ \&
78. ds #] \&
79.\}
80. \" simple accents for nroff and troff
81.if n \{\
82. ds ' \&
83. ds ` \&
84. ds ^ \&
85. ds , \&
86. ds ~ ~
87. ds /
88.\}
89.if t \{\
90. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96.\}
97. \" troff and (daisy-wheel) nroff accents
98.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105.ds ae a\h'-(\w'a'u*4/10)'e
106.ds Ae A\h'-(\w'A'u*4/10)'E
107. \" corrections for vroff
108.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110. \" for low resolution devices (crt and lpr)
111.if \n(.H>23 .if \n(.V>19 \
112\{\
113. ds : e
114. ds 8 ss
115. ds o a
116. ds d- d\h'-1'\(ga
117. ds D- D\h'-1'\(hy
118. ds th \o'bp'
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 "BIO_s_mem 3"
132.TH BIO_s_mem 3 "2010-03-24" "0.9.8n" "OpenSSL"
127.TH BIO_s_mem 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"
134BIO_s_mem, BIO_set_mem_eof_return, BIO_get_mem_data, BIO_set_mem_buf,
135BIO_get_mem_ptr, BIO_new_mem_buf \- memory BIO
136.SH "SYNOPSIS"
137.IX Header "SYNOPSIS"
138.Vb 1
139\& #include <openssl/bio.h>
132.SH "NAME"
133BIO_s_mem, BIO_set_mem_eof_return, BIO_get_mem_data, BIO_set_mem_buf,
134BIO_get_mem_ptr, BIO_new_mem_buf \- memory BIO
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 1
138\& #include <openssl/bio.h>
140.Ve
141.PP
142.Vb 1
139\&
143\& BIO_METHOD * BIO_s_mem(void);
140\& BIO_METHOD * BIO_s_mem(void);
144.Ve
145.PP
146.Vb 4
141\&
147\& BIO_set_mem_eof_return(BIO *b,int v)
148\& long BIO_get_mem_data(BIO *b, char **pp)
149\& BIO_set_mem_buf(BIO *b,BUF_MEM *bm,int c)
150\& BIO_get_mem_ptr(BIO *b,BUF_MEM **pp)
142\& BIO_set_mem_eof_return(BIO *b,int v)
143\& long BIO_get_mem_data(BIO *b, char **pp)
144\& BIO_set_mem_buf(BIO *b,BUF_MEM *bm,int c)
145\& BIO_get_mem_ptr(BIO *b,BUF_MEM **pp)
151.Ve
152.PP
153.Vb 1
146\&
154\& BIO *BIO_new_mem_buf(void *buf, int len);
155.Ve
156.SH "DESCRIPTION"
157.IX Header "DESCRIPTION"
147\& BIO *BIO_new_mem_buf(void *buf, int len);
148.Ve
149.SH "DESCRIPTION"
150.IX Header "DESCRIPTION"
158\&\fIBIO_s_mem()\fR return the memory \s-1BIO\s0 method function.
151\&\fIBIO_s_mem()\fR return the memory \s-1BIO\s0 method function.
159.PP
160A memory \s-1BIO\s0 is a source/sink \s-1BIO\s0 which uses memory for its I/O. Data
161written to a memory \s-1BIO\s0 is stored in a \s-1BUF_MEM\s0 structure which is extended
162as appropriate to accommodate the stored data.
163.PP
164Any data written to a memory \s-1BIO\s0 can be recalled by reading from it.
165Unless the memory \s-1BIO\s0 is read only any data read from it is deleted from
166the \s-1BIO\s0.
167.PP
168Memory BIOs support \fIBIO_gets()\fR and \fIBIO_puts()\fR.
169.PP
170If the \s-1BIO_CLOSE\s0 flag is set when a memory \s-1BIO\s0 is freed then the underlying
171\&\s-1BUF_MEM\s0 structure is also freed.
172.PP
173Calling \fIBIO_reset()\fR on a read write memory \s-1BIO\s0 clears any data in it. On a
174read only \s-1BIO\s0 it restores the \s-1BIO\s0 to its original state and the read only
175data can be read again.
176.PP
177\&\fIBIO_eof()\fR is true if no data is in the \s-1BIO\s0.
178.PP
179\&\fIBIO_ctrl_pending()\fR returns the number of bytes currently stored.
180.PP
181\&\fIBIO_set_mem_eof_return()\fR sets the behaviour of memory \s-1BIO\s0 \fBb\fR when it is
182empty. If the \fBv\fR is zero then an empty memory \s-1BIO\s0 will return \s-1EOF\s0 (that is
183it will return zero and BIO_should_retry(b) will be false. If \fBv\fR is non
184zero then it will return \fBv\fR when it is empty and it will set the read retry
185flag (that is BIO_read_retry(b) is true). To avoid ambiguity with a normal
186positive return value \fBv\fR should be set to a negative value, typically \-1.
187.PP
188\&\fIBIO_get_mem_data()\fR sets \fBpp\fR to a pointer to the start of the memory BIOs data
189and returns the total amount of data available. It is implemented as a macro.
190.PP
191\&\fIBIO_set_mem_buf()\fR sets the internal \s-1BUF_MEM\s0 structure to \fBbm\fR and sets the
192close flag to \fBc\fR, that is \fBc\fR should be either \s-1BIO_CLOSE\s0 or \s-1BIO_NOCLOSE\s0.
193It is a macro.
194.PP
195\&\fIBIO_get_mem_ptr()\fR places the underlying \s-1BUF_MEM\s0 structure in \fBpp\fR. It is
196a macro.
197.PP
198\&\fIBIO_new_mem_buf()\fR creates a memory \s-1BIO\s0 using \fBlen\fR bytes of data at \fBbuf\fR,
199if \fBlen\fR is \-1 then the \fBbuf\fR is assumed to be null terminated and its
200length is determined by \fBstrlen\fR. The \s-1BIO\s0 is set to a read only state and
201as a result cannot be written to. This is useful when some data needs to be
202made available from a static area of memory in the form of a \s-1BIO\s0. The
203supplied data is read directly from the supplied buffer: it is \fBnot\fR copied
204first, so the supplied area of memory must be unchanged until the \s-1BIO\s0 is freed.
205.SH "NOTES"
206.IX Header "NOTES"
207Writes to memory BIOs will always succeed if memory is available: that is
208their size can grow indefinitely.
209.PP
210Every read from a read write memory \s-1BIO\s0 will remove the data just read with
211an internal copy operation, if a \s-1BIO\s0 contains a lots of data and it is
212read in small chunks the operation can be very slow. The use of a read only
213memory \s-1BIO\s0 avoids this problem. If the \s-1BIO\s0 must be read write then adding
214a buffering \s-1BIO\s0 to the chain will speed up the process.
215.SH "BUGS"
216.IX Header "BUGS"
217There should be an option to set the maximum size of a memory \s-1BIO\s0.
218.PP
219There should be a way to \*(L"rewind\*(R" a read write \s-1BIO\s0 without destroying
220its contents.
221.PP
222The copying operation should not occur after every small read of a large \s-1BIO\s0
223to improve efficiency.
224.SH "EXAMPLE"
225.IX Header "EXAMPLE"
226Create a memory \s-1BIO\s0 and write some data to it:
227.PP
228.Vb 2
229\& BIO *mem = BIO_new(BIO_s_mem());
230\& BIO_puts(mem, "Hello World\en");
231.Ve
232.PP
233Create a read only memory \s-1BIO:\s0
234.PP
235.Vb 3
236\& char data[] = "Hello World";
237\& BIO *mem;
152.PP
153A memory \s-1BIO\s0 is a source/sink \s-1BIO\s0 which uses memory for its I/O. Data
154written to a memory \s-1BIO\s0 is stored in a \s-1BUF_MEM\s0 structure which is extended
155as appropriate to accommodate the stored data.
156.PP
157Any data written to a memory \s-1BIO\s0 can be recalled by reading from it.
158Unless the memory \s-1BIO\s0 is read only any data read from it is deleted from
159the \s-1BIO\s0.
160.PP
161Memory BIOs support \fIBIO_gets()\fR and \fIBIO_puts()\fR.
162.PP
163If the \s-1BIO_CLOSE\s0 flag is set when a memory \s-1BIO\s0 is freed then the underlying
164\&\s-1BUF_MEM\s0 structure is also freed.
165.PP
166Calling \fIBIO_reset()\fR on a read write memory \s-1BIO\s0 clears any data in it. On a
167read only \s-1BIO\s0 it restores the \s-1BIO\s0 to its original state and the read only
168data can be read again.
169.PP
170\&\fIBIO_eof()\fR is true if no data is in the \s-1BIO\s0.
171.PP
172\&\fIBIO_ctrl_pending()\fR returns the number of bytes currently stored.
173.PP
174\&\fIBIO_set_mem_eof_return()\fR sets the behaviour of memory \s-1BIO\s0 \fBb\fR when it is
175empty. If the \fBv\fR is zero then an empty memory \s-1BIO\s0 will return \s-1EOF\s0 (that is
176it will return zero and BIO_should_retry(b) will be false. If \fBv\fR is non
177zero then it will return \fBv\fR when it is empty and it will set the read retry
178flag (that is BIO_read_retry(b) is true). To avoid ambiguity with a normal
179positive return value \fBv\fR should be set to a negative value, typically \-1.
180.PP
181\&\fIBIO_get_mem_data()\fR sets \fBpp\fR to a pointer to the start of the memory BIOs data
182and returns the total amount of data available. It is implemented as a macro.
183.PP
184\&\fIBIO_set_mem_buf()\fR sets the internal \s-1BUF_MEM\s0 structure to \fBbm\fR and sets the
185close flag to \fBc\fR, that is \fBc\fR should be either \s-1BIO_CLOSE\s0 or \s-1BIO_NOCLOSE\s0.
186It is a macro.
187.PP
188\&\fIBIO_get_mem_ptr()\fR places the underlying \s-1BUF_MEM\s0 structure in \fBpp\fR. It is
189a macro.
190.PP
191\&\fIBIO_new_mem_buf()\fR creates a memory \s-1BIO\s0 using \fBlen\fR bytes of data at \fBbuf\fR,
192if \fBlen\fR is \-1 then the \fBbuf\fR is assumed to be null terminated and its
193length is determined by \fBstrlen\fR. The \s-1BIO\s0 is set to a read only state and
194as a result cannot be written to. This is useful when some data needs to be
195made available from a static area of memory in the form of a \s-1BIO\s0. The
196supplied data is read directly from the supplied buffer: it is \fBnot\fR copied
197first, so the supplied area of memory must be unchanged until the \s-1BIO\s0 is freed.
198.SH "NOTES"
199.IX Header "NOTES"
200Writes to memory BIOs will always succeed if memory is available: that is
201their size can grow indefinitely.
202.PP
203Every read from a read write memory \s-1BIO\s0 will remove the data just read with
204an internal copy operation, if a \s-1BIO\s0 contains a lots of data and it is
205read in small chunks the operation can be very slow. The use of a read only
206memory \s-1BIO\s0 avoids this problem. If the \s-1BIO\s0 must be read write then adding
207a buffering \s-1BIO\s0 to the chain will speed up the process.
208.SH "BUGS"
209.IX Header "BUGS"
210There should be an option to set the maximum size of a memory \s-1BIO\s0.
211.PP
212There should be a way to \*(L"rewind\*(R" a read write \s-1BIO\s0 without destroying
213its contents.
214.PP
215The copying operation should not occur after every small read of a large \s-1BIO\s0
216to improve efficiency.
217.SH "EXAMPLE"
218.IX Header "EXAMPLE"
219Create a memory \s-1BIO\s0 and write some data to it:
220.PP
221.Vb 2
222\& BIO *mem = BIO_new(BIO_s_mem());
223\& BIO_puts(mem, "Hello World\en");
224.Ve
225.PP
226Create a read only memory \s-1BIO:\s0
227.PP
228.Vb 3
229\& char data[] = "Hello World";
230\& BIO *mem;
238\& mem = BIO_new_mem_buf(data, -1);
231\& mem = BIO_new_mem_buf(data, \-1);
239.Ve
240.PP
241Extract the \s-1BUF_MEM\s0 structure from a memory \s-1BIO\s0 and then free up the \s-1BIO:\s0
242.PP
243.Vb 4
244\& BUF_MEM *bptr;
245\& BIO_get_mem_ptr(mem, &bptr);
246\& BIO_set_close(mem, BIO_NOCLOSE); /* So BIO_free() leaves BUF_MEM alone */
247\& BIO_free(mem);
248.Ve
249.SH "SEE ALSO"
250.IX Header "SEE ALSO"
251\&\s-1TBA\s0
232.Ve
233.PP
234Extract the \s-1BUF_MEM\s0 structure from a memory \s-1BIO\s0 and then free up the \s-1BIO:\s0
235.PP
236.Vb 4
237\& BUF_MEM *bptr;
238\& BIO_get_mem_ptr(mem, &bptr);
239\& BIO_set_close(mem, BIO_NOCLOSE); /* So BIO_free() leaves BUF_MEM alone */
240\& BIO_free(mem);
241.Ve
242.SH "SEE ALSO"
243.IX Header "SEE ALSO"
244\&\s-1TBA\s0