The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<html>
<head>
  <link rel="stylesheet" type="text/css" href="dox.css" />
  <title>libapreq2-2.12: libapreq2: include/apreq_util.h File Reference</title> 
</head>
<body>
<div id="page-header">
<p class="menu">
   <a href="http://www.apache.org/">Apache Software Foundation</a> &gt; <a href="http://httpd.apache.org">HTTP Server Project</a> &gt;
<a href="http://httpd.apache.org/apreq/">Request Library Subproject</a></p>
<p class="apache">Apache HTTP Server Request Library</p>
<img alt="" src="feather.gif" /></div>
<!-- Generated by Doxygen 1.5.2 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
    <li><a href="examples.html"><span>Examples</span></a></li>
  </ul>
</div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    <li><a href="globals.html"><span>Globals</span></a></li>
  </ul>
</div>
<h1>include/apreq_util.h File Reference</h1>Utility functions for apreq. <a href="#_details">More...</a>
<p>
<code>#include &quot;<a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/apr__file__io_8h.html">apr_file_io.h</a>&quot;</code><br>
<code>#include &quot;<a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/apr__buckets_8h.html">apr_buckets.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="apreq_8h-source.html">apreq.h</a>&quot;</code><br>

<p>
<a href="apreq__util_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#d1c7e78620dd2b0563b1c1df592e43e7">apreq_join</a> (<a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *<a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/group___a_p_r___util___m_c.html#gg1694c2a3936b5c65143864201d1e044a">p</a>, const char *sep, const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/structapr__array__header__t.html">apr_array_header_t</a> *arr, <a class="el" href="apreq_8h.html#a26db627cceece7744dacb2cf29a6328">apreq_join_t</a> mode)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg7e683e51bf1d53765dc1a05af4501ce2">apr_ssize_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#ec5bf42057db2740a0e5a0eb2e755faa">apreq_index</a> (const char *hay, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> hlen, const char *ndl, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> nlen, const <a class="el" href="apreq_8h.html#e40c148b9e3268e34981d69082b3be33">apreq_match_t</a> type)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#f8892e789ab4cfb1ebdba840029f3dfa">apreq_quote</a> (char *dest, const char *src, const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> slen)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#8499b03a42041896c5493153a42ceaea">apreq_quote_once</a> (char *dest, const char *src, const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> slen)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#74bbf602809048452bbdbe886ceef023">apreq_encode</a> (char *dest, const char *src, const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> slen)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#08e187fa5b4ab0e266d1181a9a339ad9">apreq_cp1252_to_utf8</a> (char *dest, const char *src, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> slen)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="apreq_8h.html#634446af852308ac3d8d1757bc739115">apreq_charset_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#0db5346289e60c92a1f872a83616d545">apreq_charset_divine</a> (const char *src, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> slen)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#3ba952bafd216993aa6179c54cc8f7fc">apreq_decode</a> (char *dest, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> *dlen, const char *src, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> slen)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#2b2b282bcd131600809b57e209fee55b">apreq_decodev</a> (char *dest, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> *dlen, struct iovec *v, int nelts)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static APR_INLINE char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#3dbf930c2513c2cc8c3cd0e2a2aae05a">apreq_escape</a> (<a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *<a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/group___a_p_r___util___m_c.html#gg1694c2a3936b5c65143864201d1e044a">p</a>, const char *src, const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> slen)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static APR_INLINE <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg7e683e51bf1d53765dc1a05af4501ce2">apr_ssize_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#21b07faae90ae081971ff8cc9a067610">apreq_unescape</a> (char *str)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg638a46a586b61c4bd49d60c5a1786b3d">apr_int64_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#88965cc51e12335ff18f2b88ccb6a719">apreq_atoi64f</a> (const char *s)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg638a46a586b61c4bd49d60c5a1786b3d">apr_int64_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#d72c27a9b4236dc731bb9a8abe5c142a">apreq_atoi64t</a> (const char *s)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#2f435b1e9ceae84cf8940d6932602695">apreq_brigade_fwrite</a> (<a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__file__io.html#gg804ab64a6f58ddcc3da8d9f54b6f51c2">apr_file_t</a> *f, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg3554cfd867421fa6c3b1b1e0566db570">apr_off_t</a> *wlen, <a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#16f1553486cb760816988839204d8118">apreq_file_mktemp</a> (<a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__file__io.html#gg804ab64a6f58ddcc3da8d9f54b6f51c2">apr_file_t</a> **fp, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *pool, const char *path)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static APR_INLINE <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#8b5ee377aa7737645c7f8b3490d52bc0">apreq_brigade_setaside</a> (<a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *<a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/group___a_p_r___util___m_c.html#gg1694c2a3936b5c65143864201d1e044a">p</a>)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static APR_INLINE <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#340835cf6c45fd8285ce90c8f33c8d4c">apreq_brigade_copy</a> (<a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *d, <a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *s)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static APR_INLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#7dfe93c46a753d87565115d15f47f892">apreq_brigade_move</a> (<a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *d, <a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *s, <a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket.html">apr_bucket</a> *e)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#51e7a21aeccdb0b1049235d202ff65b6">apreq_header_attribute</a> (const char *hdr, const char *name, const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> nlen, const char **val, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> *vlen)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#9bc48f8f251b9a12007a7306525af0a3">apreq_brigade_concat</a> (<a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *pool, const char *temp_dir, <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> brigade_limit, <a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *out, <a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *in)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__file__io.html#gg804ab64a6f58ddcc3da8d9f54b6f51c2">apr_file_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__util_8h.html#7a45fb1d8337ea97431133deb83354c2">apreq_brigade_spoolfile</a> (<a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb)</td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Utility functions for apreq. 
<p>
This header contains useful functions for creating new parsers, hooks or modules. It includes<p>
<ul>
<li>string &lt;-&gt; array converters</li><li>substring search functions</li><li>simple encoders &amp; decoders for urlencoded strings</li><li>simple time, date, &amp; file-size converters </li></ul>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="88965cc51e12335ff18f2b88ccb6a719"></a><!-- doxytag: member="apreq_util.h::apreq_atoi64f" ref="88965cc51e12335ff18f2b88ccb6a719" args="(const char *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg638a46a586b61c4bd49d60c5a1786b3d">apr_int64_t</a> apreq_atoi64f           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Converts file sizes (KMG) to bytes<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>file size matching m/^\d+[KMG]b?$/i</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>64-bit integer representation of s.</dd></dl>
<dl compact><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>What happens when s is malformed? Should this return an unsigned value instead? </dd></dl>

</div>
</div><p>
<a class="anchor" name="d72c27a9b4236dc731bb9a8abe5c142a"></a><!-- doxytag: member="apreq_util.h::apreq_atoi64t" ref="d72c27a9b4236dc731bb9a8abe5c142a" args="(const char *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg638a46a586b61c4bd49d60c5a1786b3d">apr_int64_t</a> apreq_atoi64t           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Converts time strings (YMDhms) to seconds<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>time string matching m/^\+?\d+[YMDhms]$/</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>64-bit integer representation of s as seconds.</dd></dl>
<dl compact><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>What happens when s is malformed? Should this return an unsigned value instead? </dd></dl>

</div>
</div><p>
<a class="anchor" name="9bc48f8f251b9a12007a7306525af0a3"></a><!-- doxytag: member="apreq_util.h::apreq_brigade_concat" ref="9bc48f8f251b9a12007a7306525af0a3" args="(apr_pool_t *pool, const char *temp_dir, apr_size_t brigade_limit, apr_bucket_brigade *out, apr_bucket_brigade *in)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apreq_brigade_concat           </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>temp_dir</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>brigade_limit</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&nbsp;</td>
          <td class="paramname"> <em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&nbsp;</td>
          <td class="paramname"> <em>in</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Concatenates the brigades, spooling large brigades into a tempfile (APREQ_SPOOL) bucket.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>Pool for creating a tempfile bucket. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>temp_dir</em>&nbsp;</td><td>Directory for tempfile creation. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>brigade_limit</em>&nbsp;</td><td>If out's length would exceed this value, the appended buckets get written to a tempfile. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</td><td>Resulting brigade. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</td><td>Brigade to append.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS. <p>
Error status code resulting from either <a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/group___a_p_r___util___bucket___brigades.html#gg7592a7a5293e32b8b581ce7d81968bc8">apr_brigade_length()</a>, <a class="el" href="apreq__util_8h.html#16f1553486cb760816988839204d8118">apreq_file_mktemp()</a>, <a class="el" href="apreq__util_8h.html#2f435b1e9ceae84cf8940d6932602695">apreq_brigade_fwrite()</a>, or <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__file__io.html#gga4a086ea900b8f8081b567a3d098723b">apr_file_seek()</a>.</dd></dl>
<dl compact><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>Flesh out these error codes, making them as explicit as possible. </dd></dl>

</div>
</div><p>
<a class="anchor" name="340835cf6c45fd8285ce90c8f33c8d4c"></a><!-- doxytag: member="apreq_util.h::apreq_brigade_copy" ref="340835cf6c45fd8285ce90c8f33c8d4c" args="(apr_bucket_brigade *d, apr_bucket_brigade *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static APR_INLINE <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apreq_brigade_copy           </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&nbsp;</td>
          <td class="paramname"> <em>s</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy a brigade.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>(destination) Copied buckets are appended to this brigade. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>(source) Brigade to copy from.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS. <p>
Error status code from an unsuccessful apr_bucket_copy().</dd></dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>s == d produces Undefined Behavior. </dd></dl>

</div>
</div><p>
<a class="anchor" name="2f435b1e9ceae84cf8940d6932602695"></a><!-- doxytag: member="apreq_util.h::apreq_brigade_fwrite" ref="2f435b1e9ceae84cf8940d6932602695" args="(apr_file_t *f, apr_off_t *wlen, apr_bucket_brigade *bb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apreq_brigade_fwrite           </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__file__io.html#gg804ab64a6f58ddcc3da8d9f54b6f51c2">apr_file_t</a> *&nbsp;</td>
          <td class="paramname"> <em>f</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg3554cfd867421fa6c3b1b1e0566db570">apr_off_t</a> *&nbsp;</td>
          <td class="paramname"> <em>wlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&nbsp;</td>
          <td class="paramname"> <em>bb</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Writes brigade to a file.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>File that gets the brigade. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>wlen</em>&nbsp;</td><td>On a successful return, wlen holds the length of the brigade, which is the amount of data written to the file. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bb</em>&nbsp;</td><td>Bucket brigade.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS. <p>
Error status code from either an unsuccessful apr_bucket_read(), or a failed <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__file__io.html#ggb3bd19a7883d15063bc6ede46160f983">apr_file_writev()</a>.</dd></dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This function leaks a bucket brigade into bb-&gt;p whenever the final bucket in bb is a spool bucket. </dd></dl>

</div>
</div><p>
<a class="anchor" name="7dfe93c46a753d87565115d15f47f892"></a><!-- doxytag: member="apreq_util.h::apreq_brigade_move" ref="7dfe93c46a753d87565115d15f47f892" args="(apr_bucket_brigade *d, apr_bucket_brigade *s, apr_bucket *e)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static APR_INLINE void apreq_brigade_move           </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket.html">apr_bucket</a> *&nbsp;</td>
          <td class="paramname"> <em>e</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Move the front of a brigade.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>(destination) Append buckets to this brigade. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>(source) Brigade to take buckets from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>e</em>&nbsp;</td><td>First bucket of s after the move. All buckets before e are appended to d.</td></tr>
  </table>
</dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This moves all buckets when e == APR_BRIGADE_SENTINEL(s). </dd></dl>

</div>
</div><p>
<a class="anchor" name="8b5ee377aa7737645c7f8b3490d52bc0"></a><!-- doxytag: member="apreq_util.h::apreq_brigade_setaside" ref="8b5ee377aa7737645c7f8b3490d52bc0" args="(apr_bucket_brigade *bb, apr_pool_t *p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static APR_INLINE <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apreq_brigade_setaside           </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&nbsp;</td>
          <td class="paramname"> <em>bb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set aside all buckets in the brigade.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bb</em>&nbsp;</td><td>Brigade. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>Setaside buckets into this pool. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS. <p>
Error status code from an unsuccessful apr_bucket_setaside(). </dd></dl>

</div>
</div><p>
<a class="anchor" name="7a45fb1d8337ea97431133deb83354c2"></a><!-- doxytag: member="apreq_util.h::apreq_brigade_spoolfile" ref="7a45fb1d8337ea97431133deb83354c2" args="(apr_bucket_brigade *bb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__file__io.html#gg804ab64a6f58ddcc3da8d9f54b6f51c2">apr_file_t</a>* apreq_brigade_spoolfile           </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" doxygen="apu.tag:http://apr.apache.org/docs/apr-util/1.3/" href="http://apr.apache.org/docs/apr-util/1.3/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&nbsp;</td>
          <td class="paramname"> <em>bb</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Determines the spool file used by the brigade. Returns NULL if the brigade is not spooled in a file (does not use an APREQ_SPOOL bucket).<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bb</em>&nbsp;</td><td>the bucket brigade </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the spool file, or NULL. </dd></dl>

</div>
</div><p>
<a class="anchor" name="0db5346289e60c92a1f872a83616d545"></a><!-- doxytag: member="apreq_util.h::apreq_charset_divine" ref="0db5346289e60c92a1f872a83616d545" args="(const char *src, apr_size_t slen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="apreq_8h.html#634446af852308ac3d8d1757bc739115">apreq_charset_t</a> apreq_charset_divine           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>slen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Heuristically determine the charset of a string.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>String to scan. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slen</em>&nbsp;</td><td>Length of string.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>APREQ_CHARSET_ASCII if the string contains only 7-bit chars; <p>
APREQ_CHARSET_UTF8 if the string is a valid utf8 byte sequence; <p>
APREQ_CHARSET_LATIN1 if the string has no control chars; <p>
APREQ_CHARSET_CP1252 if the string has control chars. </dd></dl>

</div>
</div><p>
<a class="anchor" name="08e187fa5b4ab0e266d1181a9a339ad9"></a><!-- doxytag: member="apreq_util.h::apreq_cp1252_to_utf8" ref="08e187fa5b4ab0e266d1181a9a339ad9" args="(char *dest, const char *src, apr_size_t slen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> apreq_cp1252_to_utf8           </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>slen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a string from cp1252 to utf8. Caller must ensure it is large enough to hold the encoded string and trailing '\0'.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Location of utf8-encoded result string. Caller must ensure it is large enough to hold the encoded string and trailing '\0'. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Original string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slen</em>&nbsp;</td><td>Length of original string.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>length of utf8-encoded string in dest; does not exceed 3 * slen. </dd></dl>

</div>
</div><p>
<a class="anchor" name="3ba952bafd216993aa6179c54cc8f7fc"></a><!-- doxytag: member="apreq_util.h::apreq_decode" ref="3ba952bafd216993aa6179c54cc8f7fc" args="(char *dest, apr_size_t *dlen, const char *src, apr_size_t slen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apreq_decode           </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> *&nbsp;</td>
          <td class="paramname"> <em>dlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>slen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Url-decodes a string.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Location of url-encoded result string. Caller must ensure dest is large enough to hold the encoded string and trailing null character. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dlen</em>&nbsp;</td><td>points to resultant length of url-decoded string in dest </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Original string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slen</em>&nbsp;</td><td>Length of original string.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS. <p>
APR_INCOMPLETE if the string ends in the middle of an escape sequence. <p>
<a class="el" href="apreq__error_8h.html#1ca7fd544bfb795c632bb105cfc2c0fd">APREQ_ERROR_BADSEQ</a> or <a class="el" href="apreq__error_8h.html#6b3acd6dfc132e3ea8ac310bf63aba04">APREQ_ERROR_BADCHAR</a> on malformed input.</dd></dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>In the non-success case, dlen will be set to include the last succesfully decoded value. This function decodes %uXXXX into a utf8 (wide) character, following ECMA-262 (the Javascript spec) Section B.2.1. </dd></dl>

</div>
</div><p>
<a class="anchor" name="2b2b282bcd131600809b57e209fee55b"></a><!-- doxytag: member="apreq_util.h::apreq_decodev" ref="2b2b282bcd131600809b57e209fee55b" args="(char *dest, apr_size_t *dlen, struct iovec *v, int nelts)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apreq_decodev           </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> *&nbsp;</td>
          <td class="paramname"> <em>dlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct iovec *&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nelts</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Url-decodes an iovec array.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Location of url-encoded result string. Caller must ensure dest is large enough to hold the encoded string and trailing null character. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dlen</em>&nbsp;</td><td>Resultant length of dest. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>Array of iovecs that represent the source string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nelts</em>&nbsp;</td><td>Number of iovecs in the array.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS. <p>
APR_INCOMPLETE if the iovec ends in the middle of an escape sequence. <p>
<a class="el" href="apreq__error_8h.html#1ca7fd544bfb795c632bb105cfc2c0fd">APREQ_ERROR_BADSEQ</a> or <a class="el" href="apreq__error_8h.html#6b3acd6dfc132e3ea8ac310bf63aba04">APREQ_ERROR_BADCHAR</a> on malformed input.</dd></dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>In the non-APR_SUCCESS case, dlen will be set to include the last succesfully decoded value. This function decodes %uXXXX into a utf8 (wide) character, following ECMA-262 (the Javascript spec) Section B.2.1. </dd></dl>

</div>
</div><p>
<a class="anchor" name="74bbf602809048452bbdbe886ceef023"></a><!-- doxytag: member="apreq_util.h::apreq_encode" ref="74bbf602809048452bbdbe886ceef023" args="(char *dest, const char *src, const apr_size_t slen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> apreq_encode           </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>slen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Url-encodes a string.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Location of url-encoded result string. Caller must ensure it is large enough to hold the encoded string and trailing '\0'. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Original string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slen</em>&nbsp;</td><td>Length of original string.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>length of url-encoded string in dest; does not exceed 3 * slen. </dd></dl>

</div>
</div><p>
<a class="anchor" name="3dbf930c2513c2cc8c3cd0e2a2aae05a"></a><!-- doxytag: member="apreq_util.h::apreq_escape" ref="3dbf930c2513c2cc8c3cd0e2a2aae05a" args="(apr_pool_t *p, const char *src, const apr_size_t slen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static APR_INLINE char* apreq_escape           </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>slen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns an url-encoded copy of a string.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>Pool used to allocate the return value. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Original string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slen</em>&nbsp;</td><td>Length of original string.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The url-encoded string.</dd></dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Use this function insead of apreq_encode if its caller might otherwise overflow dest. </dd></dl>

</div>
</div><p>
<a class="anchor" name="16f1553486cb760816988839204d8118"></a><!-- doxytag: member="apreq_util.h::apreq_file_mktemp" ref="16f1553486cb760816988839204d8118" args="(apr_file_t **fp, apr_pool_t *pool, const char *path)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apreq_file_mktemp           </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__file__io.html#gg804ab64a6f58ddcc3da8d9f54b6f51c2">apr_file_t</a> **&nbsp;</td>
          <td class="paramname"> <em>fp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pool</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>path</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Makes a temporary file.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fp</em>&nbsp;</td><td>Points to the temporary apr_file_t on success. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pool</em>&nbsp;</td><td>Pool to associate with the temp file. When the pool is destroyed, the temp file will be closed and deleted. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>The base directory which will contain the temp file. If param == NULL, the directory will be selected via tempnam(). See the tempnam manpage for details.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS. <p>
Error status code from unsuccessful <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__filepath.html#gg32d793a1657645c09ec8dfb4b6fae3b5">apr_filepath_merge()</a>, or a failed <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__file__io.html#gg711ead7d3112a249d75eabe39e3cba95">apr_file_mktemp()</a>. </dd></dl>

</div>
</div><p>
<a class="anchor" name="51e7a21aeccdb0b1049235d202ff65b6"></a><!-- doxytag: member="apreq_util.h::apreq_header_attribute" ref="51e7a21aeccdb0b1049235d202ff65b6" args="(const char *hdr, const char *name, const apr_size_t nlen, const char **val, apr_size_t *vlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__errno.html#gg4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apreq_header_attribute           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>hdr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>nlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&nbsp;</td>
          <td class="paramname"> <em>val</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> *&nbsp;</td>
          <td class="paramname"> <em>vlen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Search a header string for the value of a particular named attribute.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>hdr</em>&nbsp;</td><td>Header string to scan. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>Name of attribute to search for. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nlen</em>&nbsp;</td><td>Length of name. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>Location of (first) matching value. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>vlen</em>&nbsp;</td><td>Length of matching value.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>APR_SUCCESS. <p>
<a class="el" href="apreq__error_8h.html#2147d545b92cf6c96809f6b4869c813c">APREQ_ERROR_NOATTR</a> if the attribute is not found. <p>
<a class="el" href="apreq__error_8h.html#1ca7fd544bfb795c632bb105cfc2c0fd">APREQ_ERROR_BADSEQ</a> if an unpaired quote mark was detected. </dd></dl>

</div>
</div><p>
<a class="anchor" name="ec5bf42057db2740a0e5a0eb2e755faa"></a><!-- doxytag: member="apreq_util.h::apreq_index" ref="ec5bf42057db2740a0e5a0eb2e755faa" args="(const char *hay, apr_size_t hlen, const char *ndl, apr_size_t nlen, const apreq_match_t type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg7e683e51bf1d53765dc1a05af4501ce2">apr_ssize_t</a> apreq_index           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>hay</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>hlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>ndl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>nlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="apreq_8h.html#e40c148b9e3268e34981d69082b3be33">apreq_match_t</a>&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Returns offset of match string's location, or -1 if no match is found.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>hay</em>&nbsp;</td><td>Location of bytes to scan. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>hlen</em>&nbsp;</td><td>Number of bytes available for scanning. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ndl</em>&nbsp;</td><td>Search string </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nlen</em>&nbsp;</td><td>Length of search string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>Match type.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Offset of match string, or -1 if no match is found. </dd></dl>

</div>
</div><p>
<a class="anchor" name="d1c7e78620dd2b0563b1c1df592e43e7"></a><!-- doxytag: member="apreq_util.h::apreq_join" ref="d1c7e78620dd2b0563b1c1df592e43e7" args="(apr_pool_t *p, const char *sep, const apr_array_header_t *arr, apreq_join_t mode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* apreq_join           </td>
          <td>(</td>
          <td class="paramtype"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__pools.html#gg06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>sep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/structapr__array__header__t.html">apr_array_header_t</a> *&nbsp;</td>
          <td class="paramname"> <em>arr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="apreq_8h.html#a26db627cceece7744dacb2cf29a6328">apreq_join_t</a>&nbsp;</td>
          <td class="paramname"> <em>mode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Join an array of values. The result is an empty string if there are no values.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>p</em>&nbsp;</td><td>Pool to allocate return value. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sep</em>&nbsp;</td><td>String that is inserted between the joined values. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arr</em>&nbsp;</td><td>Array of <a class="el" href="structapreq__value__t.html" title="libapreq's pre-extensible string type">apreq_value_t</a> entries. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>Join type- see apreq_join_t.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Joined string, or NULL on error </dd></dl>

</div>
</div><p>
<a class="anchor" name="f8892e789ab4cfb1ebdba840029f3dfa"></a><!-- doxytag: member="apreq_util.h::apreq_quote" ref="f8892e789ab4cfb1ebdba840029f3dfa" args="(char *dest, const char *src, const apr_size_t slen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> apreq_quote           </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>slen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Places a quoted copy of src into dest. Embedded quotes are escaped with a backslash ('\').<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Location of quoted copy. Must be large enough to hold the copy and trailing null byte. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Original string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slen</em>&nbsp;</td><td>Length of original string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination string.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>length of quoted copy in dest. </dd></dl>

</div>
</div><p>
<a class="anchor" name="8499b03a42041896c5493153a42ceaea"></a><!-- doxytag: member="apreq_util.h::apreq_quote_once" ref="8499b03a42041896c5493153a42ceaea" args="(char *dest, const char *src, const apr_size_t slen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a> apreq_quote_once           </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg8a24b3f35155b04b2618e814d442709c">apr_size_t</a>&nbsp;</td>
          <td class="paramname"> <em>slen</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="apreq__util_8h.html#f8892e789ab4cfb1ebdba840029f3dfa">apreq_quote()</a> except when src begins and ends in quote marks. In that case it assumes src is quoted correctly, and just copies src to dest.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Location of quoted copy. Must be large enough to hold the copy and trailing null byte. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Original string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slen</em>&nbsp;</td><td>Length of original string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination string.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>length of quoted copy in dest. </dd></dl>

</div>
</div><p>
<a class="anchor" name="21b07faae90ae081971ff8cc9a067610"></a><!-- doxytag: member="apreq_util.h::apreq_unescape" ref="21b07faae90ae081971ff8cc9a067610" args="(char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static APR_INLINE <a class="elRef" doxygen="apr.tag:http://apr.apache.org/docs/apr/1.3/" href="http://apr.apache.org/docs/apr/1.3/group__apr__platform.html#gg7e683e51bf1d53765dc1a05af4501ce2">apr_ssize_t</a> apreq_unescape           </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>str</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
An <em>in-situ</em> url-decoder.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>The string to decode</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Length of decoded string, or &lt; 0 on error. </dd></dl>

</div>
</div><p>
<div id="footer">
<p class="apache">
Copyright &copy; 2003-2006 <a href="http://www.apache.org">The Apache Software Foundation</a>.<br/>
See <a href="apreq_license.html">LICENSE</a>.</p>
<p class="menu">
<span style="color:#aaa">page generated by <a href="http://www.doxygen.org/"><code>doxygen</code></a>
version 1.5.2 on 6 Mar 2009</span>
</p>
</div>
</body>
</html>