MCPcopy Create free account
hub / github.com/apache/httpd / urlsection

Function urlsection

server/core.c:2556–2628  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2554}
2555
2556static const char *urlsection(cmd_parms *cmd, void *mconfig, const char *arg)
2557{
2558 const char *errmsg;
2559 const char *endp = ap_strrchr_c(arg, '>');
2560 int old_overrides = cmd->override;
2561 char *old_path = cmd->path;
2562 core_dir_config *conf;
2563 ap_regex_t *r = NULL;
2564 const command_rec *thiscmd = cmd->cmd;
2565 ap_conf_vector_t *new_url_conf = ap_create_per_dir_config(cmd->pool);
2566 const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_CONTEXT);
2567 if (err != NULL) {
2568 return err;
2569 }
2570
2571 if (endp == NULL) {
2572 return unclosed_directive(cmd);
2573 }
2574
2575 arg = apr_pstrndup(cmd->temp_pool, arg, endp - arg);
2576
2577 if (!arg[0]) {
2578 return missing_container_arg(cmd);
2579 }
2580
2581 cmd->path = ap_getword_conf(cmd->pool, &arg);
2582 cmd->override = OR_ALL|ACCESS_CONF;
2583
2584 if (thiscmd->cmd_data) { /* <LocationMatch> */
2585 r = ap_pregcomp(cmd->pool, cmd->path, AP_REG_EXTENDED);
2586 if (!r) {
2587 return "Regex could not be compiled";
2588 }
2589 }
2590 else if (!strcmp(cmd->path, "~")) {
2591 cmd->path = ap_getword_conf(cmd->pool, &arg);
2592 r = ap_pregcomp(cmd->pool, cmd->path, AP_REG_EXTENDED);
2593 if (!r) {
2594 return "Regex could not be compiled";
2595 }
2596 }
2597
2598 /* initialize our config and fetch it */
2599 conf = ap_set_config_vectors(cmd->server, new_url_conf, cmd->path,
2600 &core_module, cmd->pool);
2601
2602 errmsg = ap_walk_config(cmd->directive->first_child, cmd, new_url_conf);
2603 if (errmsg != NULL)
2604 return errmsg;
2605
2606 conf->d = apr_pstrdup(cmd->pool, cmd->path); /* No mangling, please */
2607 conf->d_is_fnmatch = apr_fnmatch_test(conf->d) != 0;
2608 conf->r = r;
2609
2610 if (r) {
2611 conf->refs = apr_array_make(cmd->pool, 8, sizeof(char *));
2612 if (ap_regname(r, conf->refs, AP_REG_MATCH, 1) < 0) {
2613 return "Error processing regex captures";

Callers

nothing calls this directly

Calls 11

ap_strrchr_cFunction · 0.85
ap_create_per_dir_configFunction · 0.85
ap_check_cmd_contextFunction · 0.85
unclosed_directiveFunction · 0.85
missing_container_argFunction · 0.85
ap_getword_confFunction · 0.85
ap_pregcompFunction · 0.85
ap_set_config_vectorsFunction · 0.85
ap_walk_configFunction · 0.85
ap_regnameFunction · 0.85
ap_add_per_url_confFunction · 0.85

Tested by

no test coverage detected