blob: 5adcfb1be4af7cb1c34516354c937d77d123ac14 [file] [log] [blame]
<!-- HTML header for doxygen 1.9.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libapreq2-2.17: include/apreq_parser.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="customdoxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr style="height: 56px;">
<!--
<td id="projectlogo"><img alt="Logo" src="feather.png"/></td>
-->
<!--
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">libapreq2
< !--BEGIN PROJECT_NUMBER-- >&#160;<span id="projectnumber">2.17</span>< !--END PROJECT_NUMBER-- >
</div>
< !--BEGIN PROJECT_BRIEF-- ><div id="projectbrief"></div>< !--END PROJECT_BRIEF-- >
</td>
-->
<td>
<div id="page-header">
<p class="menu">
<a href="https://www.apache.org/">Apache Software Foundation</a> &gt;
<a href="https://httpd.apache.org">HTTP Server Project</a> &gt;
<a href="https://httpd.apache.org/apreq/">Request Library Subproject</a>
</p>
<p class="apache">Apache HTTP Server Request Library - 2.17</p>
<img alt="" src="feather.png" />
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">apreq_parser.h File Reference<div class="ingroups"><a class="el" href="group__libapreq2.html">Apache Request Library</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Request body parser API.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="apreq__param_8h_source.html">apreq_param.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for apreq_parser.h:</div>
<div class="dyncontent">
<div class="center"><img src="apreq__parser_8h__incl.png" border="0" usemap="#ainclude_2apreq__parser_8h" alt=""/></div>
<map name="ainclude_2apreq__parser_8h" id="ainclude_2apreq__parser_8h">
<area shape="rect" title="Request body parser API." alt="" coords="85,5,255,32"/>
<area shape="rect" href="apreq__param_8h.html" title="Request parsing and parameter API." alt="" coords="110,80,230,107"/>
<area shape="rect" href="apreq_8h.html" title="Main header file..." alt="" coords="77,155,148,181"/>
<area shape="rect" target="_parent" href="http://apr.apache.org/docs/apr-util/1.6/apr__buckets_8h.html.html" title=" " alt="" coords="173,155,285,181"/>
<area shape="rect" target="_parent" href="http://apr.apache.org/docs/apr/1.7/apr__tables_8h.html.html" title=" " alt="" coords="5,229,108,256"/>
<area shape="rect" title=" " alt="" coords="133,229,207,256"/>
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="apreq__parser_8h__dep__incl.png" border="0" usemap="#ainclude_2apreq__parser_8hdep" alt=""/></div>
<map name="ainclude_2apreq__parser_8hdep" id="ainclude_2apreq__parser_8hdep">
<area shape="rect" title="Request body parser API." alt="" coords="97,5,266,32"/>
<area shape="rect" href="apreq__module_8h.html" title="Module API." alt="" coords="92,80,271,107"/>
<area shape="rect" href="apreq__module__apache_8h_source.html" title=" " alt="" coords="5,155,168,196"/>
<area shape="rect" href="apreq__module__apache2_8h_source.html" title=" " alt="" coords="192,155,363,196"/>
</map>
</div>
</div>
<p><a href="apreq__parser_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structapreq__hook__t.html">apreq_hook_t</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structapreq__parser__t.html">apreq_parser_t</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structapreq__hook__find__param__ctx__t.html">apreq_hook_find_param_ctx_t</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:af39d2adfdd09c2fe0c8c6a3c1ea1437e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#af39d2adfdd09c2fe0c8c6a3c1ea1437e">APREQ_PARSER_ARGS</a></td></tr>
<tr class="separator:af39d2adfdd09c2fe0c8c6a3c1ea1437e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61c8b1c319752bde3cc35e98247707bf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a61c8b1c319752bde3cc35e98247707bf">APREQ_HOOK_ARGS</a></td></tr>
<tr class="separator:a61c8b1c319752bde3cc35e98247707bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a855c07ea7fc9e240c8620d29eea4a019"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a855c07ea7fc9e240c8620d29eea4a019">APREQ_DECLARE_PARSER</a>(f)</td></tr>
<tr class="separator:a855c07ea7fc9e240c8620d29eea4a019"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abaa196498d8cf959e07b4c84d5264f7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#abaa196498d8cf959e07b4c84d5264f7f">APREQ_DECLARE_HOOK</a>(f)</td></tr>
<tr class="separator:abaa196498d8cf959e07b4c84d5264f7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a2c35885676cec315fc7dea19a6d1d870"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structapreq__hook__t.html">apreq_hook_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a2c35885676cec315fc7dea19a6d1d870">apreq_hook_t</a></td></tr>
<tr class="separator:a2c35885676cec315fc7dea19a6d1d870"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade5e15a40b9e1ec626ee56c494c7cdbb"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structapreq__parser__t.html">apreq_parser_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#ade5e15a40b9e1ec626ee56c494c7cdbb">apreq_parser_t</a></td></tr>
<tr class="separator:ade5e15a40b9e1ec626ee56c494c7cdbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affb8f3ab5b29a4e09f3aa3bde8630118"><td class="memItemLeft" align="right" valign="top">typedef <a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#affb8f3ab5b29a4e09f3aa3bde8630118">apreq_parser_function_t</a>) (<a class="el" href="apreq__parser_8h.html#af39d2adfdd09c2fe0c8c6a3c1ea1437e">APREQ_PARSER_ARGS</a>)</td></tr>
<tr class="separator:affb8f3ab5b29a4e09f3aa3bde8630118"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ff78d9001f60363061d0608b52afbe0"><td class="memItemLeft" align="right" valign="top">typedef <a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a6ff78d9001f60363061d0608b52afbe0">apreq_hook_function_t</a>) (<a class="el" href="apreq__parser_8h.html#a61c8b1c319752bde3cc35e98247707bf">APREQ_HOOK_ARGS</a>)</td></tr>
<tr class="separator:a6ff78d9001f60363061d0608b52afbe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9e03fd28359c5a82771a25d806c2165"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structapreq__hook__find__param__ctx__t.html">apreq_hook_find_param_ctx_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#ab9e03fd28359c5a82771a25d806c2165">apreq_hook_find_param_ctx_t</a></td></tr>
<tr class="separator:ab9e03fd28359c5a82771a25d806c2165"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a3c00aa3a31daba2c06110d5fc8edf1fe"><td class="memItemLeft" align="right" valign="top">static APR_INLINE <a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a3c00aa3a31daba2c06110d5fc8edf1fe">apreq_parser_run</a> (struct <a class="el" href="structapreq__parser__t.html">apreq_parser_t</a> *psr, <a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__tables.html#gad7ea82d6608a4a633fc3775694ab71e4">apr_table_t</a> *t, <a class="elRef" href="http://apr.apache.org/docs/apr-util/1.6/structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb)</td></tr>
<tr class="separator:a3c00aa3a31daba2c06110d5fc8edf1fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14d03a414fc4a0663af55fbb1f532bab"><td class="memItemLeft" align="right" valign="top">static APR_INLINE <a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a14d03a414fc4a0663af55fbb1f532bab">apreq_hook_run</a> (struct <a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> *h, <a class="el" href="structapreq__param__t.html">apreq_param_t</a> *param, <a class="elRef" href="http://apr.apache.org/docs/apr-util/1.6/structapr__bucket__brigade.html">apr_bucket_brigade</a> *bb)</td></tr>
<tr class="separator:a14d03a414fc4a0663af55fbb1f532bab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fd1ffe554941172fce54217c35f9db3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a6fd1ffe554941172fce54217c35f9db3">APREQ_DECLARE_PARSER</a> (apreq_parse_headers)</td></tr>
<tr class="separator:a6fd1ffe554941172fce54217c35f9db3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec4b20f646ea57ad84d6a3391c548838"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#aec4b20f646ea57ad84d6a3391c548838">APREQ_DECLARE_PARSER</a> (apreq_parse_urlencoded)</td></tr>
<tr class="separator:aec4b20f646ea57ad84d6a3391c548838"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bb6d9580fcbaf11cef33072ed3b14cb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a3bb6d9580fcbaf11cef33072ed3b14cb">APREQ_DECLARE_PARSER</a> (apreq_parse_multipart)</td></tr>
<tr class="separator:a3bb6d9580fcbaf11cef33072ed3b14cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2833122bb6995f056a96df80a9f5a45f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a2833122bb6995f056a96df80a9f5a45f">APREQ_DECLARE_PARSER</a> (apreq_parse_generic)</td></tr>
<tr class="separator:a2833122bb6995f056a96df80a9f5a45f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adda61d873abf1c0ed1857bda405baa49"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#adda61d873abf1c0ed1857bda405baa49">APREQ_DECLARE_HOOK</a> (apreq_hook_apr_xml_parser)</td></tr>
<tr class="separator:adda61d873abf1c0ed1857bda405baa49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a562191171c5df0a83360435d0fe1a667"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structapreq__parser__t.html">apreq_parser_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a562191171c5df0a83360435d0fe1a667">apreq_parser_make</a> (<a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, <a class="elRef" href="http://apr.apache.org/docs/apr-util/1.6/group___a_p_r___util___bucket___brigades.html#ga9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *ba, const char *content_type, <a class="el" href="apreq__parser_8h.html#affb8f3ab5b29a4e09f3aa3bde8630118">apreq_parser_function_t</a> pfn, apr_size_t brigade_limit, const char *temp_dir, <a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> *hook, void *ctx)</td></tr>
<tr class="separator:a562191171c5df0a83360435d0fe1a667"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cf15457eea6991b36f47f6139ab163c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a3cf15457eea6991b36f47f6139ab163c">apreq_hook_make</a> (<a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *pool, <a class="el" href="apreq__parser_8h.html#a6ff78d9001f60363061d0608b52afbe0">apreq_hook_function_t</a> hook, <a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> *next, void *ctx)</td></tr>
<tr class="separator:a3cf15457eea6991b36f47f6139ab163c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97972c08b20917465b745c8b8eec95ed"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a97972c08b20917465b745c8b8eec95ed">apreq_parser_add_hook</a> (<a class="el" href="structapreq__parser__t.html">apreq_parser_t</a> *p, <a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> *h)</td></tr>
<tr class="separator:a97972c08b20917465b745c8b8eec95ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73013ecad087f14075d319a4a983dd82"><td class="memItemLeft" align="right" valign="top"><a class="el" href="apreq__parser_8h.html#affb8f3ab5b29a4e09f3aa3bde8630118">apreq_parser_function_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a73013ecad087f14075d319a4a983dd82">apreq_parser</a> (const char *enctype)</td></tr>
<tr class="separator:a73013ecad087f14075d319a4a983dd82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a595f05be3d241a5b339fd6ef948bfbc8"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a595f05be3d241a5b339fd6ef948bfbc8">apreq_register_parser</a> (const char *enctype, <a class="el" href="apreq__parser_8h.html#affb8f3ab5b29a4e09f3aa3bde8630118">apreq_parser_function_t</a> pfn)</td></tr>
<tr class="separator:a595f05be3d241a5b339fd6ef948bfbc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a162c74d59738663d7cb2109ee0b87c0a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a162c74d59738663d7cb2109ee0b87c0a">APREQ_DECLARE_HOOK</a> (apreq_hook_disable_uploads)</td></tr>
<tr class="separator:a162c74d59738663d7cb2109ee0b87c0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad169b0ac7b7b1a66d3df3ae66c96a16c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#ad169b0ac7b7b1a66d3df3ae66c96a16c">APREQ_DECLARE_HOOK</a> (apreq_hook_discard_brigade)</td></tr>
<tr class="separator:ad169b0ac7b7b1a66d3df3ae66c96a16c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5deeed0646b3d61cafe4eb5b6e40b16c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apreq__parser_8h.html#a5deeed0646b3d61cafe4eb5b6e40b16c">APREQ_DECLARE_HOOK</a> (apreq_hook_find_param)</td></tr>
<tr class="separator:a5deeed0646b3d61cafe4eb5b6e40b16c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Request body parser API. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="abaa196498d8cf959e07b4c84d5264f7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abaa196498d8cf959e07b4c84d5264f7f">&#9670;&nbsp;</a></span>APREQ_DECLARE_HOOK</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APREQ_DECLARE_HOOK</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">f</td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <a class="code" href="apreq_8h.html#a8a1e7333187fdbc476473ac72d2ff38b">APREQ_DECLARE_NONSTD</a>(<a class="codeRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>) \</div>
<div class="line"> f (<a class="code" href="apreq__parser_8h.html#a61c8b1c319752bde3cc35e98247707bf">APREQ_HOOK_ARGS</a>)</div>
<div class="ttc" id="aapreq_8h_html_a8a1e7333187fdbc476473ac72d2ff38b"><div class="ttname"><a href="apreq_8h.html#a8a1e7333187fdbc476473ac72d2ff38b">APREQ_DECLARE_NONSTD</a></div><div class="ttdeci">#define APREQ_DECLARE_NONSTD(d)</div><div class="ttdef"><b>Definition:</b> apreq.h:60</div></div>
<div class="ttc" id="aapreq__parser_8h_html_a61c8b1c319752bde3cc35e98247707bf"><div class="ttname"><a href="apreq__parser_8h.html#a61c8b1c319752bde3cc35e98247707bf">APREQ_HOOK_ARGS</a></div><div class="ttdeci">#define APREQ_HOOK_ARGS</div><div class="ttdef"><b>Definition:</b> apreq_parser.h:52</div></div>
<div class="ttc" id="agroup__apr__errno_html_gaf76ee4543247e9fb3f3546203e590a6c"><div class="ttname"><a href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a></div><div class="ttdeci">int apr_status_t</div></div>
</div><!-- fragment --><p>Declares an API hook. </p>
</div>
</div>
<a id="a855c07ea7fc9e240c8620d29eea4a019"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a855c07ea7fc9e240c8620d29eea4a019">&#9670;&nbsp;</a></span>APREQ_DECLARE_PARSER</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APREQ_DECLARE_PARSER</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">f</td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <a class="code" href="apreq_8h.html#a8a1e7333187fdbc476473ac72d2ff38b">APREQ_DECLARE_NONSTD</a>(<a class="codeRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>) \</div>
<div class="line"> f (<a class="code" href="apreq__parser_8h.html#af39d2adfdd09c2fe0c8c6a3c1ea1437e">APREQ_PARSER_ARGS</a>)</div>
<div class="ttc" id="aapreq__parser_8h_html_af39d2adfdd09c2fe0c8c6a3c1ea1437e"><div class="ttname"><a href="apreq__parser_8h.html#af39d2adfdd09c2fe0c8c6a3c1ea1437e">APREQ_PARSER_ARGS</a></div><div class="ttdeci">#define APREQ_PARSER_ARGS</div><div class="ttdef"><b>Definition:</b> apreq_parser.h:47</div></div>
</div><!-- fragment --><p>Declares a API parser. </p>
</div>
</div>
<a id="a61c8b1c319752bde3cc35e98247707bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a61c8b1c319752bde3cc35e98247707bf">&#9670;&nbsp;</a></span>APREQ_HOOK_ARGS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APREQ_HOOK_ARGS</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <a class="code" href="structapreq__hook__t.html">apreq_hook_t</a> *hook, \</div>
<div class="line"> apreq_param_t *param, \</div>
<div class="line"> apr_bucket_brigade *bb</div>
<div class="ttc" id="astructapreq__hook__t_html"><div class="ttname"><a href="structapreq__hook__t.html">apreq_hook_t</a></div><div class="ttdef"><b>Definition:</b> apreq_parser.h:83</div></div>
</div><!-- fragment --><p>Hook arguments </p>
</div>
</div>
<a id="af39d2adfdd09c2fe0c8c6a3c1ea1437e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af39d2adfdd09c2fe0c8c6a3c1ea1437e">&#9670;&nbsp;</a></span>APREQ_PARSER_ARGS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define APREQ_PARSER_ARGS</td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> <a class="code" href="structapreq__parser__t.html">apreq_parser_t</a> *parser, \</div>
<div class="line"> apr_table_t *t, \</div>
<div class="line"> apr_bucket_brigade *bb</div>
<div class="ttc" id="astructapreq__parser__t_html"><div class="ttname"><a href="structapreq__parser__t.html">apreq_parser_t</a></div><div class="ttdef"><b>Definition:</b> apreq_parser.h:93</div></div>
</div><!-- fragment --><p>Parser arguments. </p>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ab9e03fd28359c5a82771a25d806c2165"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9e03fd28359c5a82771a25d806c2165">&#9670;&nbsp;</a></span>apreq_hook_find_param_ctx_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structapreq__hook__find__param__ctx__t.html">apreq_hook_find_param_ctx_t</a> <a class="el" href="structapreq__hook__find__param__ctx__t.html">apreq_hook_find_param_ctx_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Context struct for the apreq_hook_find_param hook. </p>
</div>
</div>
<a id="a6ff78d9001f60363061d0608b52afbe0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ff78d9001f60363061d0608b52afbe0">&#9670;&nbsp;</a></span>apreq_hook_function_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>(* apreq_hook_function_t) (<a class="el" href="apreq__parser_8h.html#a61c8b1c319752bde3cc35e98247707bf">APREQ_HOOK_ARGS</a>)</td>
</tr>
</table>
</div><div class="memdoc">
<p>The callback function of a hook. See <a class="el" href="structapreq__hook__t.html">apreq_hook_t</a>. </p>
</div>
</div>
<a id="a2c35885676cec315fc7dea19a6d1d870"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c35885676cec315fc7dea19a6d1d870">&#9670;&nbsp;</a></span>apreq_hook_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> <a class="el" href="structapreq__hook__t.html">apreq_hook_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>A hook is called by the parser whenever data arrives in a file upload parameter of the request body. You may associate any number of hooks with a parser instance with <a class="el" href="apreq__parser_8h.html#a97972c08b20917465b745c8b8eec95ed">apreq_parser_add_hook()</a>. </p>
</div>
</div>
<a id="affb8f3ab5b29a4e09f3aa3bde8630118"></a>
<h2 class="memtitle"><span class="permalink"><a href="#affb8f3ab5b29a4e09f3aa3bde8630118">&#9670;&nbsp;</a></span>apreq_parser_function_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef <a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a>(* apreq_parser_function_t) (<a class="el" href="apreq__parser_8h.html#af39d2adfdd09c2fe0c8c6a3c1ea1437e">APREQ_PARSER_ARGS</a>)</td>
</tr>
</table>
</div><div class="memdoc">
<p>The callback function implementing a request body parser. </p>
</div>
</div>
<a id="ade5e15a40b9e1ec626ee56c494c7cdbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade5e15a40b9e1ec626ee56c494c7cdbb">&#9670;&nbsp;</a></span>apreq_parser_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structapreq__parser__t.html">apreq_parser_t</a> <a class="el" href="structapreq__parser__t.html">apreq_parser_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>A request body parser instance. </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="adda61d873abf1c0ed1857bda405baa49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adda61d873abf1c0ed1857bda405baa49">&#9670;&nbsp;</a></span>APREQ_DECLARE_HOOK() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">APREQ_DECLARE_HOOK </td>
<td>(</td>
<td class="paramtype">apreq_hook_apr_xml_parser&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>apr_xml_parser hook. It will parse until EOS appears. The parsed document isn't available until parsing has completed successfully. The hook's ctx pointer may be cast as (<a class="elRef" href="http://apr.apache.org/docs/apr-util/1.6/structapr__xml__doc.html">apr_xml_doc</a> **) to retrieve the parsed document. </p>
</div>
</div>
<a id="a162c74d59738663d7cb2109ee0b87c0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a162c74d59738663d7cb2109ee0b87c0a">&#9670;&nbsp;</a></span>APREQ_DECLARE_HOOK() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">APREQ_DECLARE_HOOK </td>
<td>(</td>
<td class="paramtype">apreq_hook_disable_uploads&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns APREQ_ERROR_GENERAL. Effectively disables mfd parser if a file-upload field is present. </p>
</div>
</div>
<a id="ad169b0ac7b7b1a66d3df3ae66c96a16c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad169b0ac7b7b1a66d3df3ae66c96a16c">&#9670;&nbsp;</a></span>APREQ_DECLARE_HOOK() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">APREQ_DECLARE_HOOK </td>
<td>(</td>
<td class="paramtype">apreq_hook_discard_brigade&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Calls apr_brigade_cleanup on the incoming brigade after passing the brigade to any subsequent hooks. </p>
</div>
</div>
<a id="a5deeed0646b3d61cafe4eb5b6e40b16c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5deeed0646b3d61cafe4eb5b6e40b16c">&#9670;&nbsp;</a></span>APREQ_DECLARE_HOOK() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">APREQ_DECLARE_HOOK </td>
<td>(</td>
<td class="paramtype">apreq_hook_find_param&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Special purpose utility for locating a parameter during parsing. The hook's ctx should be initialized to an <a class="el" href="structapreq__hook__find__param__ctx__t.html">apreq_hook_find_param_ctx_t</a> *, with the name attribute set to the sought parameter name, the param attribute set to NULL, and the prev attribute set to the address of the previous hook. The param attribute will be reassigned to the first param found, and once that happens this hook is immediately removed from the chain.</p>
<dl class="section remark"><dt>Remarks</dt><dd>When used, this should always be the first hook invoked, so add it manually with ctx-&gt;prev = &amp;parser-&gt;hook instead of using apreq_parser_add_hook. </dd></dl>
</div>
</div>
<a id="a2833122bb6995f056a96df80a9f5a45f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2833122bb6995f056a96df80a9f5a45f">&#9670;&nbsp;</a></span>APREQ_DECLARE_PARSER() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">APREQ_DECLARE_PARSER </td>
<td>(</td>
<td class="paramtype">apreq_parse_generic&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generic parser. No table entries will be added to the req-&gt;body table by this parser. The parser creates a dummy <a class="el" href="structapreq__param__t.html">apreq_param_t</a> to pass to any configured hooks. If no hooks are configured, the dummy param's bb slot will contain a copy of the request body. It can be retrieved by casting the parser's ctx pointer to (<a class="el" href="structapreq__param__t.html">apreq_param_t</a> **). </p>
</div>
</div>
<a id="a6fd1ffe554941172fce54217c35f9db3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fd1ffe554941172fce54217c35f9db3">&#9670;&nbsp;</a></span>APREQ_DECLARE_PARSER() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">APREQ_DECLARE_PARSER </td>
<td>(</td>
<td class="paramtype">apreq_parse_headers&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>RFC 822 Header parser. It will reject all data after the first CRLF CRLF sequence (an empty line). See <a class="el" href="apreq__parser_8h.html#a3c00aa3a31daba2c06110d5fc8edf1fe">apreq_parser_run()</a> for more info on rejected data. </p>
</div>
</div>
<a id="a3bb6d9580fcbaf11cef33072ed3b14cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3bb6d9580fcbaf11cef33072ed3b14cb">&#9670;&nbsp;</a></span>APREQ_DECLARE_PARSER() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">APREQ_DECLARE_PARSER </td>
<td>(</td>
<td class="paramtype">apreq_parse_multipart&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>RFC 2388 multipart/form-data (and XForms 1.0 multipart/related) parser. It will reject any buckets representing preamble and postamble text (this is normal behavior, not an error condition). See <a class="el" href="apreq__parser_8h.html#a3c00aa3a31daba2c06110d5fc8edf1fe">apreq_parser_run()</a> for more info on rejected data. </p>
</div>
</div>
<a id="aec4b20f646ea57ad84d6a3391c548838"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec4b20f646ea57ad84d6a3391c548838">&#9670;&nbsp;</a></span>APREQ_DECLARE_PARSER() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">APREQ_DECLARE_PARSER </td>
<td>(</td>
<td class="paramtype">apreq_parse_urlencoded&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>RFC 2396 application/x-www-form-urlencoded parser. </p>
</div>
</div>
<a id="a3cf15457eea6991b36f47f6139ab163c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cf15457eea6991b36f47f6139ab163c">&#9670;&nbsp;</a></span>apreq_hook_make()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structapreq__hook__t.html">apreq_hook_t</a>* apreq_hook_make </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&#160;</td>
<td class="paramname"><em>pool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="apreq__parser_8h.html#a6ff78d9001f60363061d0608b52afbe0">apreq_hook_function_t</a>&#160;</td>
<td class="paramname"><em>hook</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> *&#160;</td>
<td class="paramname"><em>next</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>ctx</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct a hook.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pool</td><td>used to allocate the hook. </td></tr>
<tr><td class="paramname">hook</td><td>The hook function. </td></tr>
<tr><td class="paramname">next</td><td>List of other hooks for this hook to call on. </td></tr>
<tr><td class="paramname">ctx</td><td>Hook's internal scratch pad. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>New hook. </dd></dl>
</div>
</div>
<a id="a14d03a414fc4a0663af55fbb1f532bab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14d03a414fc4a0663af55fbb1f532bab">&#9670;&nbsp;</a></span>apreq_hook_run()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static APR_INLINE <a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apreq_hook_run </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> *&#160;</td>
<td class="paramname"><em>h</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapreq__param__t.html">apreq_param_t</a> *&#160;</td>
<td class="paramname"><em>param</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://apr.apache.org/docs/apr-util/1.6/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&#160;</td>
<td class="paramname"><em>bb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Run the hook with the current parameter and the incoming bucket brigade. The hook may modify the brigade if necessary. Once all hooks have completed, the contents of the brigade will be added to the parameter's bb attribute. </p><dl class="section return"><dt>Returns</dt><dd>APR_SUCCESS on success. All other values represent errors. </dd></dl>
</div>
</div>
<a id="a73013ecad087f14075d319a4a983dd82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73013ecad087f14075d319a4a983dd82">&#9670;&nbsp;</a></span>apreq_parser()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="apreq__parser_8h.html#affb8f3ab5b29a4e09f3aa3bde8630118">apreq_parser_function_t</a> apreq_parser </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>enctype</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fetch the default parser function associated with the given MIME type. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">enctype</td><td>The desired enctype (can also be a full "Content-Type" header). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The parser function, or NULL if the enctype is unrecognized. </dd></dl>
</div>
</div>
<a id="a97972c08b20917465b745c8b8eec95ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97972c08b20917465b745c8b8eec95ed">&#9670;&nbsp;</a></span>apreq_parser_add_hook()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apreq_parser_add_hook </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structapreq__parser__t.html">apreq_parser_t</a> *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> *&#160;</td>
<td class="paramname"><em>h</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Add a new hook to the end of the parser's hook list.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Parser. </td></tr>
<tr><td class="paramname">h</td><td>Hook to append. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a562191171c5df0a83360435d0fe1a667"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a562191171c5df0a83360435d0fe1a667">&#9670;&nbsp;</a></span>apreq_parser_make()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structapreq__parser__t.html">apreq_parser_t</a>* apreq_parser_make </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__pools.html#gaf137f28edcf9a086cd6bc36c20d7cdfb">apr_pool_t</a> *&#160;</td>
<td class="paramname"><em>pool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://apr.apache.org/docs/apr-util/1.6/group___a_p_r___util___bucket___brigades.html#ga9a30babfeb6e290db124d8f9b69e49e4">apr_bucket_alloc_t</a> *&#160;</td>
<td class="paramname"><em>ba</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>content_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="apreq__parser_8h.html#affb8f3ab5b29a4e09f3aa3bde8630118">apreq_parser_function_t</a>&#160;</td>
<td class="paramname"><em>pfn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">apr_size_t&#160;</td>
<td class="paramname"><em>brigade_limit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>temp_dir</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structapreq__hook__t.html">apreq_hook_t</a> *&#160;</td>
<td class="paramname"><em>hook</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>ctx</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Construct a parser.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pool</td><td>Pool used to allocate the parser. </td></tr>
<tr><td class="paramname">ba</td><td>bucket allocator used to create bucket brigades </td></tr>
<tr><td class="paramname">content_type</td><td>Content-type that this parser can deal with. </td></tr>
<tr><td class="paramname">pfn</td><td>The parser function. </td></tr>
<tr><td class="paramname">brigade_limit</td><td>the maximum in-memory bytes a brigade may use </td></tr>
<tr><td class="paramname">temp_dir</td><td>the directory used by the parser for temporary files </td></tr>
<tr><td class="paramname">hook</td><td>Hooks to associate this parser with. </td></tr>
<tr><td class="paramname">ctx</td><td>Parser's internal scratch pad. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>New parser. </dd></dl>
</div>
</div>
<a id="a3c00aa3a31daba2c06110d5fc8edf1fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c00aa3a31daba2c06110d5fc8edf1fe">&#9670;&nbsp;</a></span>apreq_parser_run()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static APR_INLINE <a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apreq_parser_run </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structapreq__parser__t.html">apreq_parser_t</a> *&#160;</td>
<td class="paramname"><em>psr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__tables.html#gad7ea82d6608a4a633fc3775694ab71e4">apr_table_t</a> *&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" href="http://apr.apache.org/docs/apr-util/1.6/structapr__bucket__brigade.html">apr_bucket_brigade</a> *&#160;</td>
<td class="paramname"><em>bb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Parse the incoming brigade into a table. Parsers normally consume all the buckets of the brigade during parsing. However parsers may leave "rejected" data in the brigade, even during a successful parse, so callers may need to clean up the brigade themselves (in particular, rejected buckets should not be passed back to the parser again). </p><dl class="section remark"><dt>Remarks</dt><dd>bb == NULL is valid: the parser should return its public status: APR_INCOMPLETE, APR_SUCCESS, or an error code. </dd></dl>
</div>
</div>
<a id="a595f05be3d241a5b339fd6ef948bfbc8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a595f05be3d241a5b339fd6ef948bfbc8">&#9670;&nbsp;</a></span>apreq_register_parser()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://apr.apache.org/docs/apr/1.7/group__apr__errno.html#gaf76ee4543247e9fb3f3546203e590a6c">apr_status_t</a> apreq_register_parser </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>enctype</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="apreq__parser_8h.html#affb8f3ab5b29a4e09f3aa3bde8630118">apreq_parser_function_t</a>&#160;</td>
<td class="paramname"><em>pfn</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Register a new parsing function with a MIME enctype. Registered parsers are added to <a class="el" href="apreq__parser_8h.html#a73013ecad087f14075d319a4a983dd82">apreq_parser()</a>'s internal lookup table.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">enctype</td><td>The MIME type. </td></tr>
<tr><td class="paramname">pfn</td><td>The function to use during parsing. Setting parser == NULL will remove an existing parser.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>APR_SUCCESS or error. </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.9.1-->
<!-- start footer part -->
<hr class="footer"/>
<table class="footer">
<td>
<address class="footer_left"><small>
Copyright &copy; 2003-2022 <a href="https://www.apache.org">The Apache Software Foundation</a>.<br/>
See <a href="apreq_license.html">LICENSE</a>.
</small></address>
</td>
<td>
<address class="footer"><small>
Generated on Sat Sep 3 2022 17:23:06 for libapreq2 by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</td>
</table>
</body>
</html>