1 --- old/modules/mappers/mod_vhost_alias.c 2006-07-24 13:07:15.000000000 +0100
2 +++ new/modules/mappers/mod_vhost_alias.c 2006-07-24 13:09:21.000000000 +0100
4 * both written by James Grinter <jrg@blodwen.demon.co.uk>.
10 #include "apr_strings.h"
11 #include "apr_hooks.h"
14 mva_mode_e doc_root_mode;
15 mva_mode_e cgi_root_mode;
19 static void *mva_create_server_config(apr_pool_t *p, server_rec *s)
21 conf->cgi_root = NULL;
22 conf->doc_root_mode = VHOST_ALIAS_UNSET;
23 conf->cgi_root_mode = VHOST_ALIAS_UNSET;
24 + conf->set_doc_root = 0;
29 conf->cgi_root_mode = child->cgi_root_mode;
30 conf->cgi_root = child->cgi_root;
33 + conf->set_doc_root = child->set_doc_root;
42 +static const char *vhost_set_docroot(cmd_parms *cmd, void *dummy,
46 + conf = (mva_sconf_t *) ap_get_module_config(cmd->server->module_config,
47 + &vhost_alias_module);
48 + conf->set_doc_root = (strcasecmp(str, "yes") == 0 ||
49 + strcasecmp(str, "on") == 0) ? 1 : 0;
53 static const command_rec mva_commands[] =
55 AP_INIT_TAKE1("VirtualScriptAlias", vhost_alias_set,
57 AP_INIT_TAKE1("VirtualDocumentRootIP", vhost_alias_set,
58 &vhost_alias_set_doc_root_ip, RSRC_CONF,
59 "how to create the DocumentRoot based on the host"),
60 + AP_INIT_TAKE1("SetVirtualDocumentRoot", vhost_set_docroot,
62 + "set DOCUMENT_ROOT to parsed document root"),
70 -static void vhost_alias_interpolate(request_rec *r, const char *name,
71 - const char *map, const char *uri)
72 +static void vhost_alias_interpolate(request_rec *r, mva_sconf_t *conf,
73 + const char *name, const char *map,
77 enum { MAXDOTS = 19 };
80 r->filename = apr_pstrcat(r->pool, buf, uri, NULL);
83 + if (conf->set_doc_root) {
84 + request_rec *top = (r->main)?r->main:r;
85 + core_server_config *core = (core_server_config *) ap_get_module_config(r->server->module_config, &core_module);
87 + core->ap_document_root = apr_pstrdup(top->pool, buf);
91 static int mva_translate(request_rec *r)
93 * canonical_path buffer.
95 r->canonical_filename = "";
96 - vhost_alias_interpolate(r, name, map, uri);
97 + vhost_alias_interpolate(r, conf, name, map, uri);
100 /* see is_scriptaliased() in mod_cgi */