ben 99/04/10 14:51:06
Modified: src CHANGES src/modules/standard mod_env.c Log: Make env directives per-directory instead of per-server. Revision Changes Path 1.1306 +3 -0 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1305 retrieving revision 1.1306 diff -u -r1.1305 -r1.1306 --- CHANGES 1999/04/10 15:08:43 1.1305 +++ CHANGES 1999/04/10 21:51:01 1.1306 @@ -1,5 +1,8 @@ Changes with Apache 1.3.7 + *) Make {Set,Unset,Pass}Env per-directory instead of per-server. + [Ben Laurie] + *) Correct an apparent typo: on the Windows and MPE platforms, the htpasswd utility was limiting passwords to only 8 characters. [Ken Coar] 1.29 +23 -27 apache-1.3/src/modules/standard/mod_env.c Index: mod_env.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_env.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- mod_env.c 1999/03/22 23:38:21 1.28 +++ mod_env.c 1999/04/10 21:51:06 1.29 @@ -105,26 +105,26 @@ table *vars; char *unsetenv; int vars_present; -} env_server_config_rec; +} env_dir_config_rec; module MODULE_VAR_EXPORT env_module; -static void *create_env_server_config(pool *p, server_rec *dummy) +static void *create_env_dir_config(pool *p, char *dummy) { - env_server_config_rec *new = - (env_server_config_rec *) ap_palloc(p, sizeof(env_server_config_rec)); + env_dir_config_rec *new = + (env_dir_config_rec *) ap_palloc(p, sizeof(env_dir_config_rec)); new->vars = ap_make_table(p, 50); new->unsetenv = ""; new->vars_present = 0; return (void *) new; } -static void *merge_env_server_configs(pool *p, void *basev, void *addv) +static void *merge_env_dir_configs(pool *p, void *basev, void *addv) { - env_server_config_rec *base = (env_server_config_rec *) basev; - env_server_config_rec *add = (env_server_config_rec *) addv; - env_server_config_rec *new = - (env_server_config_rec *) ap_palloc(p, sizeof(env_server_config_rec)); + env_dir_config_rec *base = (env_dir_config_rec *) basev; + env_dir_config_rec *add = (env_dir_config_rec *) addv; + env_dir_config_rec *new = + (env_dir_config_rec *) ap_palloc(p, sizeof(env_dir_config_rec)); table *new_table; table_entry *elts; @@ -166,11 +166,10 @@ return new; } -static const char *add_env_module_vars_passed(cmd_parms *cmd, char *struct_ptr, +static const char *add_env_module_vars_passed(cmd_parms *cmd, + env_dir_config_rec *sconf, const char *arg) { - env_server_config_rec *sconf = - ap_get_module_config(cmd->server->module_config, &env_module); table *vars = sconf->vars; char *env_var; char *name_ptr; @@ -186,11 +185,10 @@ return NULL; } -static const char *add_env_module_vars_set(cmd_parms *cmd, char *struct_ptr, +static const char *add_env_module_vars_set(cmd_parms *cmd, + env_dir_config_rec *sconf, const char *arg) { - env_server_config_rec *sconf = - ap_get_module_config(cmd->server->module_config, &env_module); table *vars = sconf->vars; char *name, *value; @@ -212,11 +210,10 @@ return NULL; } -static const char *add_env_module_vars_unset(cmd_parms *cmd, char *struct_ptr, +static const char *add_env_module_vars_unset(cmd_parms *cmd, + env_dir_config_rec *sconf, char *arg) { - env_server_config_rec *sconf = - ap_get_module_config(cmd->server->module_config, &env_module); sconf->unsetenv = sconf->unsetenv ? ap_pstrcat(cmd->pool, sconf->unsetenv, " ", arg, NULL) : arg; @@ -226,19 +223,18 @@ static const command_rec env_module_cmds[] = { {"PassEnv", add_env_module_vars_passed, NULL, - RSRC_CONF, RAW_ARGS, "a list of environment variables to pass to CGI."}, + OR_FILEINFO, RAW_ARGS, "a list of environment variables to pass to CGI."}, {"SetEnv", add_env_module_vars_set, NULL, - RSRC_CONF, RAW_ARGS, "an environment variable name and a value to pass to CGI."}, + OR_FILEINFO, RAW_ARGS, "an environment variable name and a value to pass to CGI."}, {"UnsetEnv", add_env_module_vars_unset, NULL, - RSRC_CONF, RAW_ARGS, "a list of variables to remove from the CGI environment."}, + OR_FILEINFO, RAW_ARGS, "a list of variables to remove from the CGI environment."}, {NULL}, }; static int fixup_env_module(request_rec *r) { table *e = r->subprocess_env; - server_rec *s = r->server; - env_server_config_rec *sconf = ap_get_module_config(s->module_config, + env_dir_config_rec *sconf = ap_get_module_config(r->per_dir_config, &env_module); table *vars = sconf->vars; @@ -254,10 +250,10 @@ { STANDARD_MODULE_STUFF, NULL, /* initializer */ - NULL, /* dir config creater */ - NULL, /* dir merger --- default is to override */ - create_env_server_config, /* server config */ - merge_env_server_configs, /* merge server configs */ + create_env_dir_config, /* dir config creater */ + merge_env_dir_configs, /* dir merger --- default is to override */ + NULL, /* server config */ + NULL, /* merge server configs */ env_module_cmds, /* command table */ NULL, /* handlers */ NULL, /* filename translation */