From 5c001f4e5cf8a98a55e2bf6222d6d6474c887816 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 15 Jun 2010 14:13:13 -0700 Subject: [PATCH] conf: can specify environment variables for substitution --- src/config.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/config.cc b/src/config.cc index 085b100e51203..5aa62f89d19bd 100644 --- a/src/config.cc +++ b/src/config.cc @@ -748,7 +748,8 @@ static bool get_var(const char *str, int pos, char *var_name, int len, int *new_ while (str[pos] && ((bracket && str[pos] != '}') || - isalnum(str[pos]))) { + isalnum(str[pos]) || + str[pos] == '_')) { var_name[out_pos] = str[pos]; out_pos ++; @@ -759,6 +760,7 @@ static bool get_var(const char *str, int pos, char *var_name, int len, int *new_ var_name[out_pos] = '\0'; + if (bracket && (str[pos] == '}')) pos++; @@ -769,6 +771,8 @@ static bool get_var(const char *str, int pos, char *var_name, int len, int *new_ static const char *var_val(char *var_name) { + const char *val; + if (strcmp(var_name, "type")==0) return g_conf.type; if (strcmp(var_name, "id")==0) @@ -778,9 +782,13 @@ static const char *var_val(char *var_name) if (strcmp(var_name, "name")==0) return g_conf.name; if (strcmp(var_name, "host")==0) - return g_conf.host; + return g_conf.host; + + val = getenv(var_name); + if (!val) + val = ""; - return ""; + return val; } #define MAX_LINE 256 -- 2.39.5