summaryrefslogtreecommitdiff
path: root/include/apreq_parser.h
diff options
context:
space:
mode:
authorPhilip M. Gollucci <pgollucci@apache.org>2011-11-10 21:34:29 +0000
committerPhilip M. Gollucci <pgollucci@apache.org>2011-11-10 21:34:29 +0000
commitab9323a911e5d43577b0ce6573cf5f5410457030 (patch)
tree75aff716221f751240d45c2dc54cc85a9bec7d97 /include/apreq_parser.h
parent1c0a9e7dcdf9f940dffad924d46a141e2d8e61e4 (diff)
downloadhttpd-ab9323a911e5d43577b0ce6573cf5f5410457030.tar.gz
relocate the .h files to play nice with the srclib setup
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1200570 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'include/apreq_parser.h')
-rw-r--r--include/apreq_parser.h300
1 files changed, 0 insertions, 300 deletions
diff --git a/include/apreq_parser.h b/include/apreq_parser.h
deleted file mode 100644
index 1c9c36ce23..0000000000
--- a/include/apreq_parser.h
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
-** Licensed to the Apache Software Foundation (ASF) under one or more
-** contributor license agreements. See the NOTICE file distributed with
-** this work for additional information regarding copyright ownership.
-** The ASF licenses this file to You under the Apache License, Version 2.0
-** (the "License"); you may not use this file except in compliance with
-** the License. You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
-
-#ifndef APREQ_PARSERS_H
-#define APREQ_PARSERS_H
-/* These structs are defined below */
-
-#include "apreq_param.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * @file apreq_parser.h
- * @brief Request body parser API
- * @ingroup libapreq2
- */
-
-/**
- * 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 apreq_parser_add_hook().
- */
-typedef struct apreq_hook_t apreq_hook_t;
-
-/**
- * A request body parser instance.
- */
-typedef struct apreq_parser_t apreq_parser_t;
-
-/** Parser arguments. */
-#define APREQ_PARSER_ARGS apreq_parser_t *parser, \
- apr_table_t *t, \
- apr_bucket_brigade *bb
-
-/** Hook arguments */
-#define APREQ_HOOK_ARGS apreq_hook_t *hook, \
- apreq_param_t *param, \
- apr_bucket_brigade *bb
-
-/**
- * The callback function implementing a request body parser.
- */
-typedef apr_status_t (*apreq_parser_function_t)(APREQ_PARSER_ARGS);
-
-/**
- * The callback function of a hook. See apreq_hook_t.
- */
-typedef apr_status_t (*apreq_hook_function_t)(APREQ_HOOK_ARGS);
-
-/**
- * Declares a API parser.
- */
-#define APREQ_DECLARE_PARSER(f) APREQ_DECLARE_NONSTD(apr_status_t) \
- (f) (APREQ_PARSER_ARGS)
-
-/**
- * Declares an API hook.
- */
-#define APREQ_DECLARE_HOOK(f) APREQ_DECLARE_NONSTD(apr_status_t) \
- (f) (APREQ_HOOK_ARGS)
-
-/**
- * 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 apreq_parser_add_hook().
- */
-struct apreq_hook_t {
- apreq_hook_function_t hook; /**< the hook function */
- apreq_hook_t *next; /**< next item in the linked list */
- apr_pool_t *pool; /**< pool which allocated this hook */
- void *ctx; /**< a user defined pointer passed to the hook function */
-};
-
-/**
- * A request body parser instance.
- */
-struct apreq_parser_t {
- /** the function which parses chunks of body data */
- apreq_parser_function_t parser;
- /** the Content-Type request header */
- const char *content_type;
- /** a pool which outlasts the bucket_alloc. */
- apr_pool_t *pool;
- /** bucket allocator used to create bucket brigades */
- apr_bucket_alloc_t *bucket_alloc;
- /** the maximum in-memory bytes a brigade may use */
- apr_size_t brigade_limit;
- /** the directory for generating temporary files */
- const char *temp_dir;
- /** linked list of hooks */
- apreq_hook_t *hook;
- /** internal context pointer used by the parser function */
- void *ctx;
-};
-
-
-/**
- * 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).
- * @remark bb == NULL is valid: the parser should return its
- * public status: APR_INCOMPLETE, APR_SUCCESS, or an error code.
- */
-static APR_INLINE
-apr_status_t apreq_parser_run(struct apreq_parser_t *psr, apr_table_t *t,
- apr_bucket_brigade *bb)
-{
- return psr->parser(psr, t, bb);
-}
-
-/**
- * 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.
- * @return APR_SUCCESS on success. All other values represent errors.
- */
-static APR_INLINE
-apr_status_t apreq_hook_run(struct apreq_hook_t *h, apreq_param_t *param,
- apr_bucket_brigade *bb)
-{
- return h->hook(h, param, bb);
-}
-
-
-/**
- * RFC 822 Header parser. It will reject all data
- * after the first CRLF CRLF sequence (an empty line).
- * See apreq_parser_run() for more info on rejected data.
- */
-APREQ_DECLARE_PARSER(apreq_parse_headers);
-
-/**
- * RFC 2396 application/x-www-form-urlencoded parser.
- */
-APREQ_DECLARE_PARSER(apreq_parse_urlencoded);
-
-/**
- * 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 apreq_parser_run() for more info on rejected data.
- */
-APREQ_DECLARE_PARSER(apreq_parse_multipart);
-
-/**
- * Generic parser. No table entries will be added to
- * the req->body table by this parser. The parser creates
- * a dummy apreq_param_t 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 (apreq_param_t **).
- */
-APREQ_DECLARE_PARSER(apreq_parse_generic);
-
-/**
- * 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 (apr_xml_doc **) to retrieve the
- * parsed document.
- */
-APREQ_DECLARE_HOOK(apreq_hook_apr_xml_parser);
-
-/**
- * Construct a parser.
- *
- * @param pool Pool used to allocate the parser.
- * @param ba bucket allocator used to create bucket brigades
- * @param content_type Content-type that this parser can deal with.
- * @param pfn The parser function.
- * @param brigade_limit the maximum in-memory bytes a brigade may use
- * @param temp_dir the directory used by the parser for temporary files
- * @param hook Hooks to associate this parser with.
- * @param ctx Parser's internal scratch pad.
- * @return New parser.
- */
-APREQ_DECLARE(apreq_parser_t *) apreq_parser_make(apr_pool_t *pool,
- apr_bucket_alloc_t *ba,
- const char *content_type,
- apreq_parser_function_t pfn,
- apr_size_t brigade_limit,
- const char *temp_dir,
- apreq_hook_t *hook,
- void *ctx);
-
-/**
- * Construct a hook.
- *
- * @param pool used to allocate the hook.
- * @param hook The hook function.
- * @param next List of other hooks for this hook to call on.
- * @param ctx Hook's internal scratch pad.
- * @return New hook.
- */
-APREQ_DECLARE(apreq_hook_t *) apreq_hook_make(apr_pool_t *pool,
- apreq_hook_function_t hook,
- apreq_hook_t *next,
- void *ctx);
-
-
-/**
- * Add a new hook to the end of the parser's hook list.
- *
- * @param p Parser.
- * @param h Hook to append.
- */
-APREQ_DECLARE(apr_status_t) apreq_parser_add_hook(apreq_parser_t *p,
- apreq_hook_t *h);
-
-
-/**
- * Fetch the default parser function associated with the given MIME type.
- * @param enctype The desired enctype (can also be a full "Content-Type"
- * header).
- * @return The parser function, or NULL if the enctype is unrecognized.
- */
-APREQ_DECLARE(apreq_parser_function_t)apreq_parser(const char *enctype);
-
-
-/**
- * Register a new parsing function with a MIME enctype.
- * Registered parsers are added to apreq_parser()'s
- * internal lookup table.
- *
- * @param enctype The MIME type.
- * @param pfn The function to use during parsing. Setting
- * parser == NULL will remove an existing parser.
- *
- * @return APR_SUCCESS or error.
- */
-
-APREQ_DECLARE(apr_status_t) apreq_register_parser(const char *enctype,
- apreq_parser_function_t pfn);
-
-
-/**
- * Returns APREQ_ERROR_GENERAL. Effectively disables mfd parser
- * if a file-upload field is present.
- *
- */
-APREQ_DECLARE_HOOK(apreq_hook_disable_uploads);
-
-/**
- * Calls apr_brigade_cleanup on the incoming brigade
- * after passing the brigade to any subsequent hooks.
- */
-APREQ_DECLARE_HOOK(apreq_hook_discard_brigade);
-
-/**
- * Context struct for the apreq_hook_find_param hook.
- */
-typedef struct apreq_hook_find_param_ctx_t {
- const char *name;
- apreq_param_t *param;
- apreq_hook_t *prev;
-} apreq_hook_find_param_ctx_t;
-
-
-/**
- * Special purpose utility for locating a parameter
- * during parsing. The hook's ctx shoud be initialized
- * to an apreq_hook_find_param_ctx_t *, 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.
- *
- * @remarks When used, this should always be the first hook
- * invoked, so add it manually with ctx->prev = &parser->hook
- * instead of using apreq_parser_add_hook.
- */
-APREQ_DECLARE_HOOK(apreq_hook_find_param);
-
-
-#ifdef __cplusplus
-}
-
-#endif
-#endif /* APREQ_PARSERS_H */