<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Apache Portable Runtime Utility Library: include/apr_buckets.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.4 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> </ul> </div> <h1>include/apr_buckets.h</h1><a href="apr__buckets_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* Licensed to the Apache Software Foundation (ASF) under one or more</span> <a name="l00002"></a>00002 <span class="comment"> * contributor license agreements. See the NOTICE file distributed with</span> <a name="l00003"></a>00003 <span class="comment"> * this work for additional information regarding copyright ownership.</span> <a name="l00004"></a>00004 <span class="comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</span> <a name="l00005"></a>00005 <span class="comment"> * (the "License"); you may not use this file except in compliance with</span> <a name="l00006"></a>00006 <span class="comment"> * the License. You may obtain a copy of the License at</span> <a name="l00007"></a>00007 <span class="comment"> *</span> <a name="l00008"></a>00008 <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span> <a name="l00009"></a>00009 <span class="comment"> *</span> <a name="l00010"></a>00010 <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span> <a name="l00011"></a>00011 <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span> <a name="l00012"></a>00012 <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span> <a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span> <a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span> <a name="l00015"></a>00015 <span class="comment"> */</span> <a name="l00021"></a>00021 <span class="preprocessor">#ifndef APR_BUCKETS_H</span> <a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define APR_BUCKETS_H</span> <a name="l00023"></a>00023 <span class="preprocessor"></span> <a name="l00024"></a>00024 <span class="preprocessor">#if defined(APR_BUCKET_DEBUG) && !defined(APR_RING_DEBUG)</span> <a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#define APR_RING_DEBUG</span> <a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span> <a name="l00027"></a>00027 <span class="preprocessor"></span> <a name="l00028"></a>00028 <span class="preprocessor">#include "apu.h"</span> <a name="l00029"></a>00029 <span class="preprocessor">#include "apr_network_io.h"</span> <a name="l00030"></a>00030 <span class="preprocessor">#include "apr_file_io.h"</span> <a name="l00031"></a>00031 <span class="preprocessor">#include "apr_general.h"</span> <a name="l00032"></a>00032 <span class="preprocessor">#include "apr_mmap.h"</span> <a name="l00033"></a>00033 <span class="preprocessor">#include "apr_errno.h"</span> <a name="l00034"></a>00034 <span class="preprocessor">#include "apr_ring.h"</span> <a name="l00035"></a>00035 <span class="preprocessor">#include "apr.h"</span> <a name="l00036"></a>00036 <span class="preprocessor">#if APR_HAVE_SYS_UIO_H</span> <a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#include <sys/uio.h></span> <span class="comment">/* for struct iovec */</span> <a name="l00038"></a>00038 <span class="preprocessor">#endif</span> <a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#if APR_HAVE_STDARG_H</span> <a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#include <stdarg.h></span> <a name="l00041"></a>00041 <span class="preprocessor">#endif</span> <a name="l00042"></a>00042 <span class="preprocessor"></span> <a name="l00043"></a>00043 <span class="preprocessor">#ifdef __cplusplus</span> <a name="l00044"></a>00044 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> { <a name="l00045"></a>00045 <span class="preprocessor">#endif</span> <a name="l00046"></a>00046 <span class="preprocessor"></span> <a name="l00054"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g82bf404af30875135c65e2c13ad035e5">00054</a> <span class="preprocessor">#define APR_BUCKET_BUFF_SIZE 8000</span> <a name="l00055"></a>00055 <span class="preprocessor"></span> <a name="l00057"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g756973fb6392bd1026c3d96b4519776d">00057</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> { <a name="l00058"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gg756973fb6392bd1026c3d96b4519776d2d983f5b7fd996434e0dded171c261d8">00058</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#gg756973fb6392bd1026c3d96b4519776d2d983f5b7fd996434e0dded171c261d8">APR_BLOCK_READ</a>, <a name="l00059"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gg756973fb6392bd1026c3d96b4519776d42b97663ca71fbbf2e2af7c8192e5dd8">00059</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#gg756973fb6392bd1026c3d96b4519776d42b97663ca71fbbf2e2af7c8192e5dd8">APR_NONBLOCK_READ</a> <a name="l00060"></a>00060 } <a class="code" href="group___a_p_r___util___bucket___brigades.html#g756973fb6392bd1026c3d96b4519776d">apr_read_type_e</a>; <a name="l00061"></a>00061 <a name="l00114"></a>00114 <span class="comment">/*</span> <a name="l00115"></a>00115 <span class="comment"> * Forward declaration of the main types.</span> <a name="l00116"></a>00116 <span class="comment"> */</span> <a name="l00117"></a>00117 <a name="l00119"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g9f50254e85c7aad79ca289a0ba069025">00119</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> <a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a>; <a name="l00121"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ga17a456120961b1c5af0525f4900a457">00121</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket.html">apr_bucket</a> <a class="code" href="structapr__bucket.html">apr_bucket</a>; <a name="l00123"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">00123</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a>; <a name="l00124"></a>00124 <a name="l00126"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g4a152aaf7d851c81af73b7e84dc1a8a2">00126</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a>; <a name="l00127"></a>00127 <a name="l00131"></a><a class="code" href="structapr__bucket__type__t.html">00131</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> { <a name="l00135"></a><a class="code" href="structapr__bucket__type__t.html#c6d779be45de214c6abd2cc205c48901">00135</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structapr__bucket__type__t.html#c6d779be45de214c6abd2cc205c48901">name</a>; <a name="l00140"></a><a class="code" href="structapr__bucket__type__t.html#d4bd2ffb03cb2f5f3b3941ce20468038">00140</a> <span class="keywordtype">int</span> <a class="code" href="structapr__bucket__type__t.html#d4bd2ffb03cb2f5f3b3941ce20468038">num_func</a>; <a name="l00151"></a>00151 <span class="keyword">enum</span> { <a name="l00153"></a><a class="code" href="structapr__bucket__type__t.html#117f85e4a58c5e7d7e373705ad138f8553d3ef9d6a275fe2b72a91acea7017d5">00153</a> <a class="code" href="structapr__bucket__type__t.html#117f85e4a58c5e7d7e373705ad138f8553d3ef9d6a275fe2b72a91acea7017d5">APR_BUCKET_DATA</a> = 0, <a name="l00155"></a><a class="code" href="structapr__bucket__type__t.html#117f85e4a58c5e7d7e373705ad138f859bf38b4eb3ea41c4af230432ac7a5fb1">00155</a> <a class="code" href="structapr__bucket__type__t.html#117f85e4a58c5e7d7e373705ad138f859bf38b4eb3ea41c4af230432ac7a5fb1">APR_BUCKET_METADATA</a> = 1 <a name="l00156"></a>00156 } is_metadata; <a name="l00164"></a>00164 void (*<a class="code" href="structapr__bucket__type__t.html#a5a8ae7611ba3be480e3fd12ff3ac352">destroy</a>)(<span class="keywordtype">void</span> *data); <a name="l00165"></a>00165 <a name="l00176"></a>00176 apr_status_t (*<a class="code" href="structapr__bucket__type__t.html#8e9f3f5b2a5513691f3cea130a1aa54b">read</a>)(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <span class="keyword">const</span> <span class="keywordtype">char</span> **str, apr_size_t *len, <a name="l00177"></a>00177 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g756973fb6392bd1026c3d96b4519776d">apr_read_type_e</a> block); <a name="l00178"></a>00178 <a name="l00192"></a>00192 apr_status_t (*<a class="code" href="structapr__bucket__type__t.html#4e2015fd6e927ed55157a9b003ed5fdb">setaside</a>)(<a class="code" href="structapr__bucket.html">apr_bucket</a> *e, apr_pool_t *pool); <a name="l00193"></a>00193 <a name="l00203"></a>00203 apr_status_t (*<a class="code" href="structapr__bucket__type__t.html#f30959bc15fc60e21224d5e3c8c0a814">split</a>)(<a class="code" href="structapr__bucket.html">apr_bucket</a> *e, apr_size_t point); <a name="l00204"></a>00204 <a name="l00211"></a>00211 apr_status_t (*<a class="code" href="structapr__bucket__type__t.html#300d6b15d55a3a1f13eeec7379100c38">copy</a>)(<a class="code" href="structapr__bucket.html">apr_bucket</a> *e, <a class="code" href="structapr__bucket.html">apr_bucket</a> **c); <a name="l00212"></a>00212 <a name="l00213"></a>00213 }; <a name="l00214"></a>00214 <a name="l00224"></a><a class="code" href="structapr__bucket.html">00224</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket.html">apr_bucket</a> { <a name="l00226"></a>00226 <a class="code" href="structapr__bucket.html#b1acff965e57e067dfde80321d04dea7">APR_RING_ENTRY</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a>) link; <a name="l00228"></a><a class="code" href="structapr__bucket.html#c27fa5ce798e688ad243ebe1615937fc">00228</a> <span class="keyword">const</span> <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> *<a class="code" href="structapr__bucket.html#c27fa5ce798e688ad243ebe1615937fc">type</a>; <a name="l00234"></a><a class="code" href="structapr__bucket.html#0898dfc78d9275187189b9a745e619bf">00234</a> apr_size_t <a class="code" href="structapr__bucket.html#0898dfc78d9275187189b9a745e619bf">length</a>; <a name="l00242"></a><a class="code" href="structapr__bucket.html#4a8791b606b3ad613b8672ec94145628">00242</a> apr_off_t <a class="code" href="structapr__bucket.html#4a8791b606b3ad613b8672ec94145628">start</a>; <a name="l00244"></a><a class="code" href="structapr__bucket.html#7fc4604750889b3f762bda1a786d276a">00244</a> <span class="keywordtype">void</span> *<a class="code" href="structapr__bucket.html#7fc4604750889b3f762bda1a786d276a">data</a>; <a name="l00252"></a>00252 void (*<a class="code" href="structapr__bucket.html#c50b1c1de2b171938c33bf3ac478f359">free</a>)(<span class="keywordtype">void</span> *e); <a name="l00254"></a><a class="code" href="structapr__bucket.html#5a500b80105834621514d6c0814d0966">00254</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *<a class="code" href="structapr__bucket.html#5a500b80105834621514d6c0814d0966">list</a>; <a name="l00255"></a>00255 }; <a name="l00256"></a>00256 <a name="l00258"></a><a class="code" href="structapr__bucket__brigade.html">00258</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> { <a name="l00264"></a><a class="code" href="structapr__bucket__brigade.html#8e03b4dd531903709ae3ae8ebe9e46ee">00264</a> apr_pool_t *<a class="code" href="structapr__bucket__brigade.html#8e03b4dd531903709ae3ae8ebe9e46ee">p</a>; <a name="l00266"></a>00266 <span class="comment">/*</span> <a name="l00267"></a>00267 <span class="comment"> * The apr_bucket_list structure doesn't actually need a name tag</span> <a name="l00268"></a>00268 <span class="comment"> * because it has no existence independent of struct apr_bucket_brigade;</span> <a name="l00269"></a>00269 <span class="comment"> * the ring macros are designed so that you can leave the name tag</span> <a name="l00270"></a>00270 <span class="comment"> * argument empty in this situation but apparently the Windows compiler</span> <a name="l00271"></a>00271 <span class="comment"> * doesn't like that.</span> <a name="l00272"></a>00272 <span class="comment"> */</span> <a name="l00273"></a>00273 <a class="code" href="structapr__bucket__brigade.html#76a313afc83dd161916f3f9b83eea734">APR_RING_HEAD</a>(apr_bucket_list, <a class="code" href="structapr__bucket.html">apr_bucket</a>) list; <a name="l00275"></a><a class="code" href="structapr__bucket__brigade.html#9f58f90a088f02ebb6f935f004092aaa">00275</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *<a class="code" href="structapr__bucket__brigade.html#9f58f90a088f02ebb6f935f004092aaa">bucket_alloc</a>; <a name="l00276"></a>00276 }; <a name="l00277"></a>00277 <a name="l00278"></a>00278 <a name="l00282"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">00282</a> typedef apr_status_t (*<a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a>)(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb, <span class="keywordtype">void</span> *ctx); <a name="l00283"></a>00283 <a name="l00284"></a>00284 <span class="comment">/*</span> <a name="l00285"></a>00285 <span class="comment"> * define APR_BUCKET_DEBUG if you want your brigades to be checked for</span> <a name="l00286"></a>00286 <span class="comment"> * validity at every possible instant. this will slow your code down</span> <a name="l00287"></a>00287 <span class="comment"> * substantially but is a very useful debugging tool.</span> <a name="l00288"></a>00288 <span class="comment"> */</span> <a name="l00289"></a>00289 <span class="preprocessor">#ifdef APR_BUCKET_DEBUG</span> <a name="l00290"></a>00290 <span class="preprocessor"></span> <a name="l00291"></a>00291 <span class="preprocessor">#define APR_BRIGADE_CHECK_CONSISTENCY(b) \</span> <a name="l00292"></a>00292 <span class="preprocessor"> APR_RING_CHECK_CONSISTENCY(&(b)->list, apr_bucket, link)</span> <a name="l00293"></a>00293 <span class="preprocessor"></span> <a name="l00294"></a>00294 <span class="preprocessor">#define APR_BUCKET_CHECK_CONSISTENCY(e) \</span> <a name="l00295"></a>00295 <span class="preprocessor"> APR_RING_CHECK_ELEM_CONSISTENCY((e), apr_bucket, link)</span> <a name="l00296"></a>00296 <span class="preprocessor"></span> <a name="l00297"></a>00297 <span class="preprocessor">#else</span> <a name="l00298"></a>00298 <span class="preprocessor"></span> <a name="l00304"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ge1dfe8bf117d10e7dc5b8e0c08f0ebb2">00304</a> <span class="preprocessor">#define APR_BRIGADE_CHECK_CONSISTENCY(b)</span> <a name="l00305"></a>00305 <span class="preprocessor"></span> <a name="l00311"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gedaeb3fbe71aac408377471b8a54dc08">00311</a> <span class="preprocessor">#define APR_BUCKET_CHECK_CONSISTENCY(e)</span> <a name="l00312"></a>00312 <span class="preprocessor"></span><span class="preprocessor">#endif</span> <a name="l00313"></a>00313 <span class="preprocessor"></span> <a name="l00314"></a>00314 <a name="l00331"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g858da66dccab1e063415678bb115788a">00331</a> <span class="preprocessor">#define APR_BRIGADE_SENTINEL(b) APR_RING_SENTINEL(&(b)->list, apr_bucket, link)</span> <a name="l00332"></a>00332 <span class="preprocessor"></span> <a name="l00338"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g836f61da6cce15074eff257ce4b6fc0f">00338</a> <span class="preprocessor">#define APR_BRIGADE_EMPTY(b) APR_RING_EMPTY(&(b)->list, apr_bucket, link)</span> <a name="l00339"></a>00339 <span class="preprocessor"></span> <a name="l00345"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gb5826a11eb6ba90786a94282f806c230">00345</a> <span class="preprocessor">#define APR_BRIGADE_FIRST(b) APR_RING_FIRST(&(b)->list)</span> <a name="l00346"></a>00346 <span class="preprocessor"></span> <a name="l00351"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g40e0ef2a904aa519ca9d63288dee0b4d">00351</a> <span class="preprocessor">#define APR_BRIGADE_LAST(b) APR_RING_LAST(&(b)->list)</span> <a name="l00352"></a>00352 <span class="preprocessor"></span> <a name="l00358"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g6dc39d8757e18941a6fb069b0c18fbd3">00358</a> <span class="preprocessor">#define APR_BRIGADE_INSERT_HEAD(b, e) do { \</span> <a name="l00359"></a>00359 <span class="preprocessor"> apr_bucket *ap__b = (e); \</span> <a name="l00360"></a>00360 <span class="preprocessor"> APR_RING_INSERT_HEAD(&(b)->list, ap__b, apr_bucket, link); \</span> <a name="l00361"></a>00361 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((b)); \</span> <a name="l00362"></a>00362 <span class="preprocessor"> } while (0)</span> <a name="l00363"></a>00363 <span class="preprocessor"></span> <a name="l00369"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g5447595f8374296c5ffe208db39b2f5d">00369</a> <span class="preprocessor">#define APR_BRIGADE_INSERT_TAIL(b, e) do { \</span> <a name="l00370"></a>00370 <span class="preprocessor"> apr_bucket *ap__b = (e); \</span> <a name="l00371"></a>00371 <span class="preprocessor"> APR_RING_INSERT_TAIL(&(b)->list, ap__b, apr_bucket, link); \</span> <a name="l00372"></a>00372 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((b)); \</span> <a name="l00373"></a>00373 <span class="preprocessor"> } while (0)</span> <a name="l00374"></a>00374 <span class="preprocessor"></span> <a name="l00380"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g7cecbc89be912ce9ab24c889eb8f955b">00380</a> <span class="preprocessor">#define APR_BRIGADE_CONCAT(a, b) do { \</span> <a name="l00381"></a>00381 <span class="preprocessor"> APR_RING_CONCAT(&(a)->list, &(b)->list, apr_bucket, link); \</span> <a name="l00382"></a>00382 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((a)); \</span> <a name="l00383"></a>00383 <span class="preprocessor"> } while (0)</span> <a name="l00384"></a>00384 <span class="preprocessor"></span> <a name="l00390"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g52ba212f76507a79ccae213875150ad1">00390</a> <span class="preprocessor">#define APR_BRIGADE_PREPEND(a, b) do { \</span> <a name="l00391"></a>00391 <span class="preprocessor"> APR_RING_PREPEND(&(a)->list, &(b)->list, apr_bucket, link); \</span> <a name="l00392"></a>00392 <span class="preprocessor"> APR_BRIGADE_CHECK_CONSISTENCY((a)); \</span> <a name="l00393"></a>00393 <span class="preprocessor"> } while (0)</span> <a name="l00394"></a>00394 <span class="preprocessor"></span> <a name="l00400"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ge012adeccda754eabc42b7855bec081e">00400</a> <span class="preprocessor">#define APR_BUCKET_INSERT_BEFORE(a, b) do { \</span> <a name="l00401"></a>00401 <span class="preprocessor"> apr_bucket *ap__a = (a), *ap__b = (b); \</span> <a name="l00402"></a>00402 <span class="preprocessor"> APR_RING_INSERT_BEFORE(ap__a, ap__b, link); \</span> <a name="l00403"></a>00403 <span class="preprocessor"> APR_BUCKET_CHECK_CONSISTENCY(ap__a); \</span> <a name="l00404"></a>00404 <span class="preprocessor"> } while (0)</span> <a name="l00405"></a>00405 <span class="preprocessor"></span> <a name="l00411"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1f8114b7316d1fef1deb95abc8f02341">00411</a> <span class="preprocessor">#define APR_BUCKET_INSERT_AFTER(a, b) do { \</span> <a name="l00412"></a>00412 <span class="preprocessor"> apr_bucket *ap__a = (a), *ap__b = (b); \</span> <a name="l00413"></a>00413 <span class="preprocessor"> APR_RING_INSERT_AFTER(ap__a, ap__b, link); \</span> <a name="l00414"></a>00414 <span class="preprocessor"> APR_BUCKET_CHECK_CONSISTENCY(ap__a); \</span> <a name="l00415"></a>00415 <span class="preprocessor"> } while (0)</span> <a name="l00416"></a>00416 <span class="preprocessor"></span> <a name="l00422"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g7171f690b203d548a5b6ae0b079068d8">00422</a> <span class="preprocessor">#define APR_BUCKET_NEXT(e) APR_RING_NEXT((e), link)</span> <a name="l00423"></a>00423 <span class="preprocessor"></span> <a name="l00428"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gf229fecd4174efd4d6a9774e3048ae28">00428</a> <span class="preprocessor">#define APR_BUCKET_PREV(e) APR_RING_PREV((e), link)</span> <a name="l00429"></a>00429 <span class="preprocessor"></span> <a name="l00434"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g2c46a1b717a87b68bd98b425e0c64977">00434</a> <span class="preprocessor">#define APR_BUCKET_REMOVE(e) APR_RING_REMOVE((e), link)</span> <a name="l00435"></a>00435 <span class="preprocessor"></span> <a name="l00440"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g00c2e104125f124c3a52627863432de9">00440</a> <span class="preprocessor">#define APR_BUCKET_INIT(e) APR_RING_ELEM_INIT((e), link)</span> <a name="l00441"></a>00441 <span class="preprocessor"></span> <a name="l00448"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g506cb29cc1ec1abeb487e01b122bd4d9">00448</a> <span class="preprocessor">#define APR_BUCKET_IS_METADATA(e) ((e)->type->is_metadata)</span> <a name="l00449"></a>00449 <span class="preprocessor"></span> <a name="l00455"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g24105da0bb755a775c4b2a519d7c25f9">00455</a> <span class="preprocessor">#define APR_BUCKET_IS_FLUSH(e) ((e)->type == &apr_bucket_type_flush)</span> <a name="l00456"></a>00456 <span class="preprocessor"></span> <a name="l00461"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g89b225e1c08473766eec719b985ca0d6">00461</a> <span class="preprocessor">#define APR_BUCKET_IS_EOS(e) ((e)->type == &apr_bucket_type_eos)</span> <a name="l00462"></a>00462 <span class="preprocessor"></span> <a name="l00467"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1d54037bb6953c73d5c61f64c311d470">00467</a> <span class="preprocessor">#define APR_BUCKET_IS_FILE(e) ((e)->type == &apr_bucket_type_file)</span> <a name="l00468"></a>00468 <span class="preprocessor"></span> <a name="l00473"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g03e62d86c994d1d1cc9be3eb8b8f6ac6">00473</a> <span class="preprocessor">#define APR_BUCKET_IS_PIPE(e) ((e)->type == &apr_bucket_type_pipe)</span> <a name="l00474"></a>00474 <span class="preprocessor"></span> <a name="l00479"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g4b8315b498e4eb67efde1c83bdbe8b87">00479</a> <span class="preprocessor">#define APR_BUCKET_IS_SOCKET(e) ((e)->type == &apr_bucket_type_socket)</span> <a name="l00480"></a>00480 <span class="preprocessor"></span> <a name="l00485"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g3dee4fbd5b4e16e5188a6cfec40b6961">00485</a> <span class="preprocessor">#define APR_BUCKET_IS_HEAP(e) ((e)->type == &apr_bucket_type_heap)</span> <a name="l00486"></a>00486 <span class="preprocessor"></span> <a name="l00491"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1a7e7ac5fddbab4ce189e8d3007446ff">00491</a> <span class="preprocessor">#define APR_BUCKET_IS_TRANSIENT(e) ((e)->type == &apr_bucket_type_transient)</span> <a name="l00492"></a>00492 <span class="preprocessor"></span> <a name="l00497"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g53f1188c168acf7dcfabfa1ac5a08655">00497</a> <span class="preprocessor">#define APR_BUCKET_IS_IMMORTAL(e) ((e)->type == &apr_bucket_type_immortal)</span> <a name="l00498"></a>00498 <span class="preprocessor"></span><span class="preprocessor">#if APR_HAS_MMAP</span> <a name="l00499"></a>00499 <span class="preprocessor"></span> <a name="l00504"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1693d49aeb0287e3b171c922c6b633d2">00504</a> <span class="preprocessor">#define APR_BUCKET_IS_MMAP(e) ((e)->type == &apr_bucket_type_mmap)</span> <a name="l00505"></a>00505 <span class="preprocessor"></span><span class="preprocessor">#endif</span> <a name="l00506"></a>00506 <span class="preprocessor"></span> <a name="l00511"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gdbe80a9016da6a06ab414ba61d6625d0">00511</a> <span class="preprocessor">#define APR_BUCKET_IS_POOL(e) ((e)->type == &apr_bucket_type_pool)</span> <a name="l00512"></a>00512 <span class="preprocessor"></span> <a name="l00513"></a>00513 <span class="comment">/*</span> <a name="l00514"></a>00514 <span class="comment"> * General-purpose reference counting for the various bucket types.</span> <a name="l00515"></a>00515 <span class="comment"> *</span> <a name="l00516"></a>00516 <span class="comment"> * Any bucket type that keeps track of the resources it uses (i.e.</span> <a name="l00517"></a>00517 <span class="comment"> * most of them except for IMMORTAL, TRANSIENT, and EOS) needs to</span> <a name="l00518"></a>00518 <span class="comment"> * attach a reference count to the resource so that it can be freed</span> <a name="l00519"></a>00519 <span class="comment"> * when the last bucket that uses it goes away. Resource-sharing may</span> <a name="l00520"></a>00520 <span class="comment"> * occur because of bucket splits or buckets that refer to globally</span> <a name="l00521"></a>00521 <span class="comment"> * cached data. */</span> <a name="l00522"></a>00522 <a name="l00524"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g785fd3402961b30315975b0c87c87706">00524</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a> <a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a>; <a name="l00531"></a><a class="code" href="structapr__bucket__refcount.html">00531</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a> { <a name="l00533"></a><a class="code" href="structapr__bucket__refcount.html#75040af03e3ad3c722bccea1048e3dae">00533</a> <span class="keywordtype">int</span> refcount; <a name="l00534"></a>00534 }; <a name="l00535"></a>00535 <a name="l00536"></a>00536 <span class="comment">/* ***** Reference-counted bucket types ***** */</span> <a name="l00537"></a>00537 <a name="l00539"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gede6e77d621d0f3f7d2685d489d01283">00539</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__heap.html">apr_bucket_heap</a> <a class="code" href="structapr__bucket__heap.html">apr_bucket_heap</a>; <a name="l00543"></a><a class="code" href="structapr__bucket__heap.html">00543</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket__heap.html">apr_bucket_heap</a> { <a name="l00545"></a><a class="code" href="structapr__bucket__heap.html#b87003dea25caef69aa3b30a1948024e">00545</a> <a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a> refcount; <a name="l00549"></a><a class="code" href="structapr__bucket__heap.html#c6386e2f635c6af19075123749e1fa71">00549</a> <span class="keywordtype">char</span> *base; <a name="l00551"></a><a class="code" href="structapr__bucket__heap.html#e373dada96f2e005a6aaf80e41c4cf6d">00551</a> apr_size_t alloc_len; <a name="l00553"></a>00553 void (*free_func)(<span class="keywordtype">void</span> *data); <a name="l00554"></a>00554 }; <a name="l00555"></a>00555 <a name="l00557"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g211e00d871029de148116cd24b070aed">00557</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__pool.html">apr_bucket_pool</a> <a class="code" href="structapr__bucket__pool.html">apr_bucket_pool</a>; <a name="l00561"></a><a class="code" href="structapr__bucket__pool.html">00561</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket__pool.html">apr_bucket_pool</a> { <a name="l00573"></a><a class="code" href="structapr__bucket__pool.html#0fe0b0dedea28fb1ed0a1a0f42338225">00573</a> <a class="code" href="structapr__bucket__heap.html">apr_bucket_heap</a> heap; <a name="l00579"></a><a class="code" href="structapr__bucket__pool.html#9ee5297361ba548a20c3aa626a37c068">00579</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *base; <a name="l00586"></a><a class="code" href="structapr__bucket__pool.html#f55591a1e7f3b097e7c271683bc80968">00586</a> apr_pool_t *pool; <a name="l00590"></a><a class="code" href="structapr__bucket__pool.html#651aa0c18658342daf72ff86680bfaca">00590</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list; <a name="l00591"></a>00591 }; <a name="l00592"></a>00592 <a name="l00593"></a>00593 <span class="preprocessor">#if APR_HAS_MMAP</span> <a name="l00594"></a>00594 <span class="preprocessor"></span> <a name="l00595"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g27ede7c3a29627c7d184dc7cfbc4f767">00595</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__mmap.html">apr_bucket_mmap</a> <a class="code" href="structapr__bucket__mmap.html">apr_bucket_mmap</a>; <a name="l00599"></a><a class="code" href="structapr__bucket__mmap.html">00599</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket__mmap.html">apr_bucket_mmap</a> { <a name="l00601"></a><a class="code" href="structapr__bucket__mmap.html#99f201622002479f4f84ea10598a013c">00601</a> <a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a> refcount; <a name="l00603"></a><a class="code" href="structapr__bucket__mmap.html#66e9385752aaacb7fef7e96db62f1920">00603</a> apr_mmap_t *mmap; <a name="l00604"></a>00604 }; <a name="l00605"></a>00605 <span class="preprocessor">#endif</span> <a name="l00606"></a>00606 <span class="preprocessor"></span> <a name="l00608"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g1a786f7edac4d7a2c212f0fe74457b3d">00608</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structapr__bucket__file.html">apr_bucket_file</a> <a class="code" href="structapr__bucket__file.html">apr_bucket_file</a>; <a name="l00612"></a><a class="code" href="structapr__bucket__file.html">00612</a> <span class="keyword">struct </span><a class="code" href="structapr__bucket__file.html">apr_bucket_file</a> { <a name="l00614"></a><a class="code" href="structapr__bucket__file.html#b0c123f34b85a07b601dc9794f8eed09">00614</a> <a class="code" href="structapr__bucket__refcount.html">apr_bucket_refcount</a> refcount; <a name="l00616"></a><a class="code" href="structapr__bucket__file.html#a43154c0bc9d41ba4b0762c906de432f">00616</a> apr_file_t *fd; <a name="l00619"></a><a class="code" href="structapr__bucket__file.html#61b5603482215f6c9ace7b26fa12b884">00619</a> apr_pool_t *readpool; <a name="l00620"></a>00620 <span class="preprocessor">#if APR_HAS_MMAP</span> <a name="l00621"></a>00621 <span class="preprocessor"></span> <a name="l00623"></a><a class="code" href="structapr__bucket__file.html#7812a8d6e6f10d0095569f04d3423e83">00623</a> <span class="keywordtype">int</span> can_mmap; <a name="l00624"></a>00624 <span class="preprocessor">#endif </span><span class="comment">/* APR_HAS_MMAP */</span> <a name="l00625"></a>00625 }; <a name="l00626"></a>00626 <a name="l00628"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g3c0929c971f94de4521fb0fea6fd3209">00628</a> <span class="keyword">typedef</span> <span class="keyword">union </span><a class="code" href="unionapr__bucket__structs.html">apr_bucket_structs</a> <a class="code" href="unionapr__bucket__structs.html">apr_bucket_structs</a>; <a name="l00633"></a><a class="code" href="unionapr__bucket__structs.html">00633</a> <span class="keyword">union </span><a class="code" href="unionapr__bucket__structs.html">apr_bucket_structs</a> { <a name="l00634"></a><a class="code" href="unionapr__bucket__structs.html#840c42a20727de2e4534ca05f1f6c990">00634</a> <a class="code" href="structapr__bucket.html">apr_bucket</a> b; <a name="l00635"></a><a class="code" href="unionapr__bucket__structs.html#5335dc82d8250e511a9c55e5fea97141">00635</a> <a class="code" href="structapr__bucket__heap.html">apr_bucket_heap</a> heap; <a name="l00636"></a><a class="code" href="unionapr__bucket__structs.html#b926fe2af7c1780c03bf1669766db4a1">00636</a> <a class="code" href="structapr__bucket__pool.html">apr_bucket_pool</a> pool; <a name="l00637"></a>00637 <span class="preprocessor">#if APR_HAS_MMAP</span> <a name="l00638"></a><a class="code" href="unionapr__bucket__structs.html#627c4ca697f06bbf4226c8c2acd93cbc">00638</a> <span class="preprocessor"></span> <a class="code" href="structapr__bucket__mmap.html">apr_bucket_mmap</a> mmap; <a name="l00639"></a>00639 <span class="preprocessor">#endif</span> <a name="l00640"></a><a class="code" href="unionapr__bucket__structs.html#b339255acdf750133759a0d67b3f2e30">00640</a> <span class="preprocessor"></span> <a class="code" href="structapr__bucket__file.html">apr_bucket_file</a> file; <a name="l00641"></a>00641 }; <a name="l00642"></a>00642 <a name="l00648"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ge3ccf4c383c9e7fea28354cc8e029626">00648</a> <span class="preprocessor">#define APR_BUCKET_ALLOC_SIZE APR_ALIGN_DEFAULT(2*sizeof(apr_bucket_structs))</span> <a name="l00649"></a>00649 <span class="preprocessor"></span> <a name="l00650"></a>00650 <span class="comment">/* ***** Bucket Brigade Functions ***** */</span> <a name="l00658"></a>00658 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#geb422371006699c68f0ed3b496cc12a2">apr_brigade_create</a>(apr_pool_t *<a class="code" href="structapr__bucket__brigade.html#8e03b4dd531903709ae3ae8ebe9e46ee">p</a>, <a name="l00659"></a>00659 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l00660"></a>00660 <a name="l00666"></a>00666 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2eba1e262dece0d4444ddd25ae7b250a">apr_brigade_destroy</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b); <a name="l00667"></a>00667 <a name="l00679"></a>00679 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gfd6a8378a15e8b42a57a5923a03de7f2">apr_brigade_cleanup</a>(<span class="keywordtype">void</span> *data); <a name="l00680"></a>00680 <a name="l00690"></a>00690 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcaf2929f951920a464e170baf2b4c345">apr_brigade_split</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00691"></a>00691 <a class="code" href="structapr__bucket.html">apr_bucket</a> *e); <a name="l00692"></a>00692 <a name="l00705"></a>00705 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g4b2f22ba70ac9f65788014c61d4f5b76">apr_brigade_partition</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00706"></a>00706 apr_off_t point, <a name="l00707"></a>00707 <a class="code" href="structapr__bucket.html">apr_bucket</a> **after_point); <a name="l00708"></a>00708 <a name="l00716"></a>00716 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g65075839e31fd85e2c80717f4e9e0461">apr_brigade_length</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb, <a name="l00717"></a>00717 <span class="keywordtype">int</span> read_all, <a name="l00718"></a>00718 apr_off_t *length); <a name="l00719"></a>00719 <a name="l00727"></a>00727 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g301aeb943e68ef4b99c1ae6a18dcf78e">apr_brigade_flatten</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb, <a name="l00728"></a>00728 <span class="keywordtype">char</span> *c, <a name="l00729"></a>00729 apr_size_t *len); <a name="l00730"></a>00730 <a name="l00738"></a>00738 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga5da970af09d1a87e020db054f2d1c94">apr_brigade_pflatten</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb, <a name="l00739"></a>00739 <span class="keywordtype">char</span> **c, <a name="l00740"></a>00740 apr_size_t *len, <a name="l00741"></a>00741 apr_pool_t *pool); <a name="l00742"></a>00742 <a name="l00751"></a>00751 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g257dece60dbdc910bc09e1fc0d7db622">apr_brigade_split_line</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bbOut, <a name="l00752"></a>00752 <a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bbIn, <a name="l00753"></a>00753 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g756973fb6392bd1026c3d96b4519776d">apr_read_type_e</a> block, <a name="l00754"></a>00754 apr_off_t maxbytes); <a name="l00755"></a>00755 <a name="l00765"></a>00765 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g904bdc4a9a9c800d2d2b20b4ddefa6f7">apr_brigade_to_iovec</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00766"></a>00766 struct iovec *vec, <span class="keywordtype">int</span> *nvec); <a name="l00767"></a>00767 <a name="l00776"></a>00776 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g382871c1aec5cf9fbbcf19d67cff6b43">apr_brigade_vputstrs</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00777"></a>00777 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <a name="l00778"></a>00778 <span class="keywordtype">void</span> *ctx, <a name="l00779"></a>00779 va_list va); <a name="l00780"></a>00780 <a name="l00790"></a>00790 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g7242dae50995fc1a9174476ca3053d99">apr_brigade_write</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00791"></a>00791 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <span class="keywordtype">void</span> *ctx, <a name="l00792"></a>00792 const <span class="keywordtype">char</span> *str, apr_size_t nbyte); <a name="l00793"></a>00793 <a name="l00803"></a>00803 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gfc116a4359b717cd3a78a19ddf169486">apr_brigade_writev</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00804"></a>00804 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <a name="l00805"></a>00805 <span class="keywordtype">void</span> *ctx, <a name="l00806"></a>00806 const struct iovec *vec, <a name="l00807"></a>00807 apr_size_t nvec); <a name="l00808"></a>00808 <a name="l00817"></a>00817 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2d1fed26db94e3006223098737a06f5a">apr_brigade_puts</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb, <a name="l00818"></a>00818 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <span class="keywordtype">void</span> *ctx, <a name="l00819"></a>00819 const <span class="keywordtype">char</span> *str); <a name="l00820"></a>00820 <a name="l00829"></a>00829 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g362999cb255297fd0fd433f03236302d">apr_brigade_putc</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00830"></a>00830 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <span class="keywordtype">void</span> *ctx, <a name="l00831"></a>00831 const <span class="keywordtype">char</span> c); <a name="l00832"></a>00832 <a name="l00841"></a>00841 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g1f27949d92196cbf150b7d6256cbf4b7">apr_brigade_putstrs</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00842"></a>00842 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <a name="l00843"></a>00843 <span class="keywordtype">void</span> *ctx, ...); <a name="l00844"></a>00844 <a name="l00855"></a>00855 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g4120ba3834c545db3b9229d858e33b47">apr_brigade_printf</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00856"></a>00856 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <a name="l00857"></a>00857 <span class="keywordtype">void</span> *ctx, <a name="l00858"></a>00858 const <span class="keywordtype">char</span> *fmt, ...) <a name="l00859"></a>00859 __attribute__((format(printf,4,5))); <a name="l00860"></a>00860 <a name="l00871"></a>00871 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9e1af8c10946264e1bb37a3f56e4bfd8">apr_brigade_vprintf</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *b, <a name="l00872"></a>00872 <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcdf6dc9d4c81c64834e5e509281f7f16">apr_brigade_flush</a> flush, <a name="l00873"></a>00873 <span class="keywordtype">void</span> *ctx, <a name="l00874"></a>00874 const <span class="keywordtype">char</span> *fmt, va_list va); <a name="l00875"></a>00875 <a name="l00888"></a>00888 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g7c4981f7050333a181e440e753c20555">apr_brigade_insert_file</a>(<a class="code" href="structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb, <a name="l00889"></a>00889 apr_file_t *f, <a name="l00890"></a>00890 apr_off_t start, <a name="l00891"></a>00891 apr_off_t len, <a name="l00892"></a>00892 apr_pool_t *p); <a name="l00893"></a>00893 <a name="l00894"></a>00894 <a name="l00895"></a>00895 <a name="l00896"></a>00896 <span class="comment">/* ***** Bucket freelist functions ***** */</span> <a name="l00910"></a>00910 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2d96fa729a17a86dc5221958e8c13c96">apr_bucket_alloc_create</a>(apr_pool_t *p); <a name="l00911"></a>00911 <a name="l00920"></a>00920 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g252642139099350d0b987889d5c0868c">apr_bucket_alloc_create_ex</a>(apr_allocator_t *allocator); <a name="l00921"></a>00921 <a name="l00926"></a>00926 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<span class="keywordtype">void</span>) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gf5eb58cc232851c8449ba1d98d049a0a">apr_bucket_alloc_destroy</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l00927"></a>00927 <a name="l00933"></a>00933 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<span class="keywordtype">void</span> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#ge47c2235a3740432f4a0990fccfe4102">apr_bucket_alloc</a>(apr_size_t size, <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l00934"></a>00934 <a name="l00939"></a>00939 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<span class="keywordtype">void</span>) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g951beb3a8249648214e130ab06275a3a">apr_bucket_free</a>(<span class="keywordtype">void</span> *block); <a name="l00940"></a>00940 <a name="l00941"></a>00941 <a name="l00942"></a>00942 <span class="comment">/* ***** Bucket Functions ***** */</span> <a name="l00949"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gfc0dae1e90a798284ed777a0c9e90ec6">00949</a> <span class="preprocessor">#define apr_bucket_destroy(e) do { \</span> <a name="l00950"></a>00950 <span class="preprocessor"> (e)->type->destroy((e)->data); \</span> <a name="l00951"></a>00951 <span class="preprocessor"> (e)->free(e); \</span> <a name="l00952"></a>00952 <span class="preprocessor"> } while (0)</span> <a name="l00953"></a>00953 <span class="preprocessor"></span> <a name="l00965"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g8925c02a7f95e8c1c3986294d4678797">00965</a> <span class="preprocessor">#define apr_bucket_delete(e) do { \</span> <a name="l00966"></a>00966 <span class="preprocessor"> APR_BUCKET_REMOVE(e); \</span> <a name="l00967"></a>00967 <span class="preprocessor"> apr_bucket_destroy(e); \</span> <a name="l00968"></a>00968 <span class="preprocessor"> } while (0)</span> <a name="l00969"></a>00969 <span class="preprocessor"></span> <a name="l00977"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#ge44ae938c6c60e148430fdb098dcf28f">00977</a> <span class="preprocessor">#define apr_bucket_read(e,str,len,block) (e)->type->read(e, str, len, block)</span> <a name="l00978"></a>00978 <span class="preprocessor"></span> <a name="l00985"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gb00941ffd472982693eb415a964de7af">00985</a> <span class="preprocessor">#define apr_bucket_setaside(e,p) (e)->type->setaside(e,p)</span> <a name="l00986"></a>00986 <span class="preprocessor"></span> <a name="l00992"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#g5bb8827a8dd1baa6ac32682e13e9d8c2">00992</a> <span class="preprocessor">#define apr_bucket_split(e,point) (e)->type->split(e, point)</span> <a name="l00993"></a>00993 <span class="preprocessor"></span> <a name="l00999"></a><a class="code" href="group___a_p_r___util___bucket___brigades.html#gb33cc08b7f064d06397f312e427279c3">00999</a> <span class="preprocessor">#define apr_bucket_copy(e,c) (e)->type->copy(e, c)</span> <a name="l01000"></a>01000 <span class="preprocessor"></span> <a name="l01001"></a>01001 <span class="comment">/* Bucket type handling */</span> <a name="l01002"></a>01002 <a name="l01012"></a>01012 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#ge6135b83d9f7bd7e1b60dbc761a3ca5f">apr_bucket_setaside_noop</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *data, <a name="l01013"></a>01013 apr_pool_t *pool); <a name="l01014"></a>01014 <a name="l01022"></a>01022 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gde52b057161f657a6b298d9c6a78b339">apr_bucket_setaside_notimpl</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *data, <a name="l01023"></a>01023 apr_pool_t *pool); <a name="l01024"></a>01024 <a name="l01032"></a>01032 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g305766ff39440711da93e72f5b348a3a">apr_bucket_split_notimpl</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *data, <a name="l01033"></a>01033 apr_size_t point); <a name="l01034"></a>01034 <a name="l01042"></a>01042 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g5fc17c10cee2abf02557669f6f507e89">apr_bucket_copy_notimpl</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *e, <a name="l01043"></a>01043 <a class="code" href="structapr__bucket.html">apr_bucket</a> **c); <a name="l01044"></a>01044 <a name="l01054"></a>01054 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(<span class="keywordtype">void</span>) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g09221bea9541ca2340a4e8b5e1e7ac56">apr_bucket_destroy_noop</a>(<span class="keywordtype">void</span> *data); <a name="l01055"></a>01055 <a name="l01062"></a>01062 <span class="comment">/* There is no apr_bucket_read_notimpl, because it is a required function</span> <a name="l01063"></a>01063 <span class="comment"> */</span> <a name="l01064"></a>01064 <a name="l01065"></a>01065 <a name="l01066"></a>01066 <span class="comment">/* All of the bucket types implemented by the core */</span> <a name="l01071"></a>01071 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> extern const <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#gecc113cfcc7751dfe70876437a2f51d7">apr_bucket_type_flush</a>; <a name="l01077"></a>01077 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> extern const <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g829cac9b4843b85a902ddd64dffbfb12">apr_bucket_type_eos</a>; <a name="l01081"></a>01081 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> extern const <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g5f17aa7e616179411a06475ec09626e9">apr_bucket_type_file</a>; <a name="l01086"></a>01086 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> extern const <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2c5608267ed7b860657f5a1c89c2f40d">apr_bucket_type_heap</a>; <a name="l01087"></a>01087 <span class="preprocessor">#if APR_HAS_MMAP</span> <a name="l01088"></a>01088 <span class="preprocessor"></span> <a name="l01091"></a>01091 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g63f9ce8e4d6e796921aad14a218a3b23">apr_bucket_type_mmap</a>; <a name="l01092"></a>01092 <span class="preprocessor">#endif</span> <a name="l01093"></a>01093 <span class="preprocessor"></span> <a name="l01098"></a>01098 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g87bace819fdbf07c12497a8289b3567b">apr_bucket_type_pool</a>; <a name="l01102"></a>01102 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g334a875abb2908364a40abbfa80c401f">apr_bucket_type_pipe</a>; <a name="l01108"></a>01108 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g391ac24b2c85969e8efa504588b364bb">apr_bucket_type_immortal</a>; <a name="l01114"></a>01114 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#g1692ced61c1966e67adc05ec2a69ce9b">apr_bucket_type_transient</a>; <a name="l01118"></a>01118 <a class="code" href="group___a_p_r___util.html#g7009cc3d445c4b2f93c80990230d7b3f">APU_DECLARE_DATA</a> <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structapr__bucket__type__t.html">apr_bucket_type_t</a> <a class="code" href="group___a_p_r___util___bucket___brigades.html#ga6d9978cc10895bdf0a4686728822a84">apr_bucket_type_socket</a>; <a name="l01119"></a>01119 <a name="l01120"></a>01120 <a name="l01121"></a>01121 <span class="comment">/* ***** Simple buckets ***** */</span> <a name="l01122"></a>01122 <a name="l01134"></a>01134 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9fd8c7d9e42dd04b8f153072655e875c">apr_bucket_simple_split</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <a name="l01135"></a>01135 apr_size_t point); <a name="l01136"></a>01136 <a name="l01147"></a>01147 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g123c95e832734f92e6f1139b6a68cfa6">apr_bucket_simple_copy</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *a, <a name="l01148"></a>01148 <a class="code" href="structapr__bucket.html">apr_bucket</a> **b); <a name="l01149"></a>01149 <a name="l01150"></a>01150 <a name="l01151"></a>01151 <span class="comment">/* ***** Shared, reference-counted buckets ***** */</span> <a name="l01152"></a>01152 <a name="l01167"></a>01167 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g562251ac5776e88f7384158b85e74be8">apr_bucket_shared_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <span class="keywordtype">void</span> *data, <a name="l01168"></a>01168 apr_off_t start, <a name="l01169"></a>01169 apr_size_t length); <a name="l01170"></a>01170 <a name="l01179"></a>01179 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<span class="keywordtype">int</span>) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g43c7dc7e3eb961a91bbc0b69a47e503c">apr_bucket_shared_destroy</a>(<span class="keywordtype">void</span> *data); <a name="l01180"></a>01180 <a name="l01192"></a>01192 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g871e54ba20487a2085a73a673ffa4110">apr_bucket_shared_split</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <a name="l01193"></a>01193 apr_size_t point); <a name="l01194"></a>01194 <a name="l01204"></a>01204 <a class="code" href="group___a_p_r___util.html#g03b160043a3b3a93e975085361683ff0">APU_DECLARE_NONSTD</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2e9a035d340ef6b4279b178eff614670">apr_bucket_shared_copy</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *a, <a name="l01205"></a>01205 <a class="code" href="structapr__bucket.html">apr_bucket</a> **b); <a name="l01206"></a>01206 <a name="l01207"></a>01207 <a name="l01208"></a>01208 <span class="comment">/* ***** Functions to Create Buckets of varying types ***** */</span> <a name="l01209"></a>01209 <span class="comment">/*</span> <a name="l01210"></a>01210 <span class="comment"> * Each bucket type foo has two initialization functions:</span> <a name="l01211"></a>01211 <span class="comment"> * apr_bucket_foo_make which sets up some already-allocated memory as a</span> <a name="l01212"></a>01212 <span class="comment"> * bucket of type foo; and apr_bucket_foo_create which allocates memory</span> <a name="l01213"></a>01213 <span class="comment"> * for the bucket, calls apr_bucket_make_foo, and initializes the</span> <a name="l01214"></a>01214 <span class="comment"> * bucket's list pointers. The apr_bucket_foo_make functions are used</span> <a name="l01215"></a>01215 <span class="comment"> * inside the bucket code to change the type of buckets in place;</span> <a name="l01216"></a>01216 <span class="comment"> * other code should call apr_bucket_foo_create. All the initialization</span> <a name="l01217"></a>01217 <span class="comment"> * functions change nothing if they fail.</span> <a name="l01218"></a>01218 <span class="comment"> */</span> <a name="l01219"></a>01219 <a name="l01226"></a>01226 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gac308b459ecdab87e94b12adad1b8760">apr_bucket_eos_create</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01227"></a>01227 <a name="l01235"></a>01235 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g06312ba339cb0ec1844b698d30e754c4">apr_bucket_eos_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b); <a name="l01236"></a>01236 <a name="l01244"></a>01244 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g48347f3f7d5738cdb61fe35c25c09666">apr_bucket_flush_create</a>(<a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01245"></a>01245 <a name="l01253"></a>01253 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gee543b95249a320a27ae9bb03e2c4f23">apr_bucket_flush_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b); <a name="l01254"></a>01254 <a name="l01262"></a>01262 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gd81543da24b144c0e100dd1e6d843adb">apr_bucket_immortal_create</a>(const <span class="keywordtype">char</span> *buf, <a name="l01263"></a>01263 apr_size_t nbyte, <a name="l01264"></a>01264 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01265"></a>01265 <a name="l01273"></a>01273 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g33b21eb55cad9d28b5cdd40ad4181774">apr_bucket_immortal_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <a name="l01274"></a>01274 const <span class="keywordtype">char</span> *buf, <a name="l01275"></a>01275 apr_size_t nbyte); <a name="l01276"></a>01276 <a name="l01284"></a>01284 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g554f2d87c718f30a9259d52c6f81a405">apr_bucket_transient_create</a>(const <span class="keywordtype">char</span> *buf, <a name="l01285"></a>01285 apr_size_t nbyte, <a name="l01286"></a>01286 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01287"></a>01287 <a name="l01295"></a>01295 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g7e1f9a0ae64781ff4430d08c25e6e831">apr_bucket_transient_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <a name="l01296"></a>01296 const <span class="keywordtype">char</span> *buf, <a name="l01297"></a>01297 apr_size_t nbyte); <a name="l01298"></a>01298 <a name="l01313"></a>01313 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gdde6843cfe311a60d290adc1d6635cac">apr_bucket_heap_create</a>(const <span class="keywordtype">char</span> *buf, <a name="l01314"></a>01314 apr_size_t nbyte, <a name="l01315"></a>01315 <span class="keywordtype">void</span> (*free_func)(<span class="keywordtype">void</span> *data), <a name="l01316"></a>01316 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01326"></a>01326 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g71de285204d21507420068f05b12a541">apr_bucket_heap_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, const <span class="keywordtype">char</span> *buf, <a name="l01327"></a>01327 apr_size_t nbyte, <a name="l01328"></a>01328 <span class="keywordtype">void</span> (*free_func)(<span class="keywordtype">void</span> *data)); <a name="l01329"></a>01329 <a name="l01339"></a>01339 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g154ea763ee9de4ccb8692b9e3b60ebb2">apr_bucket_pool_create</a>(const <span class="keywordtype">char</span> *buf, <a name="l01340"></a>01340 apr_size_t length, <a name="l01341"></a>01341 apr_pool_t *pool, <a name="l01342"></a>01342 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01343"></a>01343 <a name="l01352"></a>01352 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g01197c5b2cda6382354628cecdeae145">apr_bucket_pool_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, const <span class="keywordtype">char</span> *buf, <a name="l01353"></a>01353 apr_size_t length, <a name="l01354"></a>01354 apr_pool_t *pool); <a name="l01355"></a>01355 <a name="l01356"></a>01356 <span class="preprocessor">#if APR_HAS_MMAP</span> <a name="l01357"></a>01357 <span class="preprocessor"></span> <a name="l01366"></a>01366 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gee338c7d218ce1fbbf8c1aefedcc0632">apr_bucket_mmap_create</a>(apr_mmap_t *mm, <a name="l01367"></a>01367 apr_off_t start, <a name="l01368"></a>01368 apr_size_t length, <a name="l01369"></a>01369 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01370"></a>01370 <a name="l01380"></a>01380 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gb561ac92d1811e5a2589783536e64a1a">apr_bucket_mmap_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, apr_mmap_t *mm, <a name="l01381"></a>01381 apr_off_t start, <a name="l01382"></a>01382 apr_size_t length); <a name="l01383"></a>01383 <span class="preprocessor">#endif</span> <a name="l01384"></a>01384 <span class="preprocessor"></span> <a name="l01391"></a>01391 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcd9f08b40eb2204cd93b42e58338aeb2">apr_bucket_socket_create</a>(apr_socket_t *thissock, <a name="l01392"></a>01392 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01399"></a>01399 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g2fffd4c4701ad55c6df27cdee0c47200">apr_bucket_socket_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <a name="l01400"></a>01400 apr_socket_t *thissock); <a name="l01401"></a>01401 <a name="l01408"></a>01408 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gb9ea07d5f9246e06c1bb3e76ee90cd71">apr_bucket_pipe_create</a>(apr_file_t *thispipe, <a name="l01409"></a>01409 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01410"></a>01410 <a name="l01417"></a>01417 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#ge7b4daa1318226beda4bf0eead2f5582">apr_bucket_pipe_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <a name="l01418"></a>01418 apr_file_t *thispipe); <a name="l01419"></a>01419 <a name="l01430"></a>01430 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#g421f96e8e9387a9c27fe010ebdee0202">apr_bucket_file_create</a>(apr_file_t *fd, <a name="l01431"></a>01431 apr_off_t offset, <a name="l01432"></a>01432 apr_size_t len, <a name="l01433"></a>01433 apr_pool_t *p, <a name="l01434"></a>01434 <a class="code" href="group___a_p_r___util___bucket___brigades.html#g9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *list); <a name="l01435"></a>01435 <a name="l01446"></a>01446 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gcb716dea400092f2f8c84a3f0f6d3a10">apr_bucket_file_make</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, apr_file_t *fd, <a name="l01447"></a>01447 apr_off_t offset, <a name="l01448"></a>01448 apr_size_t len, apr_pool_t *p); <a name="l01449"></a>01449 <a name="l01456"></a>01456 <a class="code" href="group___a_p_r___util.html#g408498ed57031391c19bf360cc61733a">APU_DECLARE</a>(apr_status_t) <a class="code" href="group___a_p_r___util___bucket___brigades.html#gb18ee46f66634c35ad79b6a74559cbb8">apr_bucket_file_enable_mmap</a>(<a class="code" href="structapr__bucket.html">apr_bucket</a> *b, <a name="l01457"></a>01457 <span class="keywordtype">int</span> enabled); <a name="l01458"></a>01458 <a name="l01460"></a>01460 <span class="preprocessor">#ifdef __cplusplus</span> <a name="l01461"></a>01461 <span class="preprocessor"></span>} <a name="l01462"></a>01462 <span class="preprocessor">#endif</span> <a name="l01463"></a>01463 <span class="preprocessor"></span> <a name="l01464"></a>01464 <span class="preprocessor">#endif </span><span class="comment">/* !APR_BUCKETS_H */</span> </pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Thu Jan 24 02:22:55 2008 for Apache Portable Runtime Utility Library by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.4 </small></address> </body> </html>