MXS-1464 Add config 'substitute_variables'

With this variables set to true, if $VAR is used as a value in the
configuration file, then `$VAR` will be replaced with the value of
the environment variable VAR.
This commit is contained in:
Johan Wikman
2017-10-09 12:29:52 +03:00
parent 2534c9b824
commit 1666c9f0b6
4 changed files with 52 additions and 2 deletions

View File

@ -2617,6 +2617,24 @@ void set_log_augmentation(const char* value)
static int cnf_preparser(void* data, const char* section, const char* name, const char* value)
{
MXS_CONFIG* cnf = config_get_global_options();
if (cnf->substitute_variables)
{
if (*value == '$')
{
char* env_value = getenv(value + 1);
if (!env_value)
{
MXS_ERROR("The environment variable %s, used as value for parameter %s "
"in section %s, does not exist.", value, name, section);
return 0;
}
value = env_value;
}
}
char *tmp;
/** These are read from the configuration file. These will not override
* command line parameters but will override default values. */
@ -2790,6 +2808,10 @@ static int cnf_preparser(void* data, const char* section, const char* name, cons
cnf->log_to_shm = config_truth_value((char*)value);
}
}
else if (strcmp(name, CN_SUBSTITUTE_VARIABLES) == 0)
{
cnf->substitute_variables = config_truth_value(value);
}
}
return 1;