87#define APR_WANT_STRFUNC
122module AP_MODULE_DECLARE_DATA setenvif_module;
165#define ICASE_MAGIC ((void *)(&setenvif_module))
166#define SEI_MAGIC_HEIRLOOM "setenvif-phase-flag"
244 }
while ((*
dst++ = *
src++));
266 else if (*
var ==
'!') {
275 return apr_pstrcat(
cmd->pool,
"Missing envariable expression for ",
315 for (
i = 0;
i <
sconf->conditionals->nelts; ++
i) {
326 i =
sconf->conditionals->nelts - 1;
330 || entries[
i].icase != icase
343 " pattern could not be compiled.",
NULL);
352 " regex could not be compiled.",
NULL);
389 "Header name regex could not be "
393 new->pnamereg =
NULL;
450 return apr_psprintf(
cmd->pool,
"Could not parse expression \"%s\": %s",
469 "A header-name, regex and a list of variables."),
471 "a header-name, regex and a list of variables."),
473 "an expression and a list of variables."),
475 "A browser regex and a list of variables."),
478 "A browser regex and a list of variables."),
515 for (
i = 0;
i <
sconf->conditionals->nelts; ++
i) {
526 switch (
b->special_type) {
596 if (*(elts[j].
val) ==
'!') {
610 if (!
b->pattern && (
val || !
b->expr)) {
619 "Regular expression replacement "
620 "failed for '%s', value too long?",
Symbol export macros and hook functions.
APR-UTIL string matching routines.
apr_array_append(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)
APR Standard Headers Support.
#define ap_get_module_config(v, m)
void ap_hook_header_parser(ap_HOOK_header_parser_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define AP_DECLARE_MODULE(foo)
#define AP_INIT_RAW_ARGS(directive, func, mconfig, where, help)
#define ap_set_module_config(v, m, val)
void ap_hook_post_read_request(ap_HOOK_post_read_request_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
apr_bucket apr_bucket_brigade * a
#define apr_strmatch(pattern, s, slen)
#define ap_expr_parse_cmd(cmd, expr, flags, err, lookup_fn)
int ap_expr_exec_re(request_rec *r, const ap_expr_info_t *expr, apr_size_t nmatch, ap_regmatch_t *pmatch, const char **source, const char **err)
#define HTTP_INTERNAL_SERVER_ERROR
#define STANDARD20_MODULE_STUFF
char * ap_getword(apr_pool_t *p, const char **line, char stop)
char * ap_pregsub(apr_pool_t *p, const char *input, const char *source, apr_size_t nmatch, ap_regmatch_t pmatch[])
ap_regex_t * ap_pregcomp(apr_pool_t *p, const char *pattern, int cflags)
char * ap_getword_conf(apr_pool_t *p, const char **line)
int strcasecmp(const char *a, const char *b)
#define apr_pcalloc(p, size)
const apr_array_header_t * arr
apr_int32_t apr_int32_t apr_int32_t err
const char const char *const * args
const char * ap_get_useragent_host(request_rec *req, int type, int *str_is_ip)
static const char * add_envvars(cmd_parms *cmd, const char *args, sei_entry *new)
static const char * add_setenvif_core(cmd_parms *cmd, void *mconfig, char *fname, const char *args)
#define SEI_MAGIC_HEIRLOOM
static int is_header_regex(apr_pool_t *p, const char *name)
static void * create_setenvif_config(apr_pool_t *p)
@ SPECIAL_REQUEST_PROTOCOL
static const char * add_setenvifexpr(cmd_parms *cmd, void *mconfig, const char *args)
static void * merge_setenvif_config(apr_pool_t *p, void *basev, void *overridesv)
static const char * add_browser(cmd_parms *cmd, void *mconfig, const char *args)
static ap_regex_t * is_header_regex_regex
static const char * non_regex_pattern(apr_pool_t *p, const char *s)
static void register_hooks(apr_pool_t *p)
static void * create_setenvif_config_dir(apr_pool_t *p, char *dummy)
static const char * add_setenvif(cmd_parms *cmd, void *mconfig, const char *args)
static const command_rec setenvif_module_cmds[]
static int match_headers(request_rec *r)
static void * create_setenvif_config_svr(apr_pool_t *p, server_rec *dummy)
A structure that represents the current request.
struct ap_conf_vector_t * request_config
apr_table_t * subprocess_env
struct ap_conf_vector_t * per_dir_config
apr_array_header_t * conditionals
const apr_strmatch_pattern * pattern
enum special special_type
A structure to store information for each virtual server.
struct ap_conf_vector_t * module_config