mod_perl
view release on metacpan or search on metacpan
src/modules/perl/modperl_cmd.c view on Meta::CPAN
{
MP_dSCFG(parms->server);
modperl_config_dir_t *dcfg = (modperl_config_dir_t *)mconfig;
MP_PERL_CONTEXT_DECLARE;
MP_CHECK_SERVER_OR_HTACCESS_CONTEXT;
if (modperl_is_running() &&
modperl_init_vhost(parms->server, parms->pool, NULL) != OK)
{
return "init mod_perl vhost failed";
}
if (modperl_is_running()) {
char *error = NULL;
MP_TRACE_d(MP_FUNC, "load PerlRequire %s", arg);
MP_PERL_CONTEXT_STORE_OVERRIDE(scfg->mip->parent->perl);
if (!modperl_require_file(aTHX_ arg, FALSE)) {
error = SvPVX(ERRSV);
}
else {
modperl_env_sync_srv_env_hash2table(aTHX_ parms->pool, scfg);
modperl_env_sync_dir_env_hash2table(aTHX_ parms->pool, dcfg);
}
MP_PERL_CONTEXT_RESTORE;
return error;
}
else {
MP_TRACE_d(MP_FUNC, "push PerlRequire %s", arg);
*(const char **)apr_array_push(scfg->PerlRequire) = arg;
return NULL;
}
}
MP_CMD_SRV_DECLARE(config_requires)
{
/* we must init earlier than normal */
modperl_run();
/* PerlConfigFile is only different from PerlRequires by forcing
* an immediate init.
*/
return modperl_cmd_requires(parms, mconfig, arg);
}
MP_CMD_SRV_DECLARE(post_config_requires)
{
apr_pool_t *p = parms->temp_pool;
modperl_config_dir_t *dcfg = (modperl_config_dir_t *)mconfig;
MP_dSCFG(parms->server);
modperl_require_file_t *require = apr_pcalloc(p, sizeof(*require));
MP_TRACE_d(MP_FUNC, "push PerlPostConfigRequire for %s", arg);
require->file = arg;
require->dcfg = dcfg;
*(modperl_require_file_t **)
apr_array_push(scfg->PerlPostConfigRequire) = require;
return NULL;
}
static void modperl_cmd_addvar_func(apr_table_t *configvars,
apr_table_t *setvars,
const char *key, const char *val)
{
apr_table_addn(configvars, key, val);
}
/* Conceptually, setvar is { unsetvar; addvar; } */
static void modperl_cmd_setvar_func(apr_table_t *configvars,
apr_table_t *setvars,
const char * key, const char *val)
{
apr_table_setn(setvars, key, val);
apr_table_setn(configvars, key, val);
}
static const char *modperl_cmd_modvar(modperl_var_modify_t varfunc,
cmd_parms *parms,
modperl_config_dir_t *dcfg,
const char *arg1, const char *arg2)
{
varfunc(dcfg->configvars, dcfg->setvars, arg1, arg2);
MP_TRACE_d(MP_FUNC, "%s DIR: arg1 = %s, arg2 = %s",
parms->cmd->name, arg1, arg2);
/* make available via Apache2->server->dir_config */
if (!parms->path) {
MP_dSCFG(parms->server);
varfunc(scfg->configvars, scfg->setvars, arg1, arg2);
MP_TRACE_d(MP_FUNC, "%s SRV: arg1 = %s, arg2 = %s",
parms->cmd->name, arg1, arg2);
}
return NULL;
}
MP_CMD_SRV_DECLARE2(add_var)
{
modperl_config_dir_t *dcfg = (modperl_config_dir_t *)mconfig;
return modperl_cmd_modvar(modperl_cmd_addvar_func, parms, dcfg, arg1, arg2);
}
MP_CMD_SRV_DECLARE2(set_var)
{
modperl_config_dir_t *dcfg = (modperl_config_dir_t *)mconfig;
return modperl_cmd_modvar(modperl_cmd_setvar_func, parms, dcfg, arg1, arg2);
}
MP_CMD_SRV_DECLARE2(set_env)
{
MP_dSCFG(parms->server);
modperl_config_dir_t *dcfg = (modperl_config_dir_t *)mconfig;
( run in 0.719 second using v1.01-cache-2.11-cpan-39bf76dae61 )