diff options
| author | Sam Ravnborg <sam@ravnborg.org> | 2007-11-10 14:40:05 -0500 |
|---|---|---|
| committer | Sam Ravnborg <sam@ravnborg.org> | 2007-11-12 15:02:20 -0500 |
| commit | 0f855aa64b3f63d35a891510cf7db932a435c116 (patch) | |
| tree | e3e8ad4bf17598ac3c6aeb6c5fed81fc1096b615 /scripts | |
| parent | 9c900a9c9d9351e55ab6a84e12e3a52c474c7c8b (diff) | |
kconfig: add helper to set config symbol from environment variable
Add conf_set_env_sym() that can set an already defined symbol
based on the value of an environment variable.
Unknown symbols are silently ignored.
A warning is printed if the value of the environment variable
is unexpected.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/kconfig/confdata.c | 27 | ||||
| -rw-r--r-- | scripts/kconfig/lkc_proto.h | 1 |
2 files changed, 28 insertions, 0 deletions
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index e0f402f3b7..e4fa3f3025 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c | |||
| @@ -145,6 +145,33 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) | |||
| 145 | return 0; | 145 | return 0; |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | /* Read an environment variable and assign the value to the symbol */ | ||
| 149 | int conf_set_env_sym(const char *env, const char *symname, int def) | ||
| 150 | { | ||
| 151 | struct symbol *sym; | ||
| 152 | char *p; | ||
| 153 | int def_flags; | ||
| 154 | |||
| 155 | p = getenv(env); | ||
| 156 | if (p) { | ||
| 157 | char warning[200]; | ||
| 158 | sprintf(warning, "Environment variable (%s = \"%s\")", env, p); | ||
| 159 | conf_filename = warning; | ||
| 160 | def_flags = SYMBOL_DEF << def; | ||
| 161 | if (def == S_DEF_USER) { | ||
| 162 | sym = sym_find(symname); | ||
| 163 | if (!sym) | ||
| 164 | return 1; | ||
| 165 | } else { | ||
| 166 | sym = sym_lookup(symname, 0); | ||
| 167 | if (sym->type == S_UNKNOWN) | ||
| 168 | sym->type = S_OTHER; | ||
| 169 | } | ||
| 170 | conf_set_sym_val(sym, def, def_flags, p); | ||
| 171 | } | ||
| 172 | return 0; | ||
| 173 | } | ||
| 174 | |||
| 148 | int conf_read_simple(const char *name, int def) | 175 | int conf_read_simple(const char *name, int def) |
| 149 | { | 176 | { |
| 150 | FILE *in = NULL; | 177 | FILE *in = NULL; |
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h index 4d09f6ddef..dca294e90c 100644 --- a/scripts/kconfig/lkc_proto.h +++ b/scripts/kconfig/lkc_proto.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | 1 | ||
| 2 | /* confdata.c */ | 2 | /* confdata.c */ |
| 3 | P(conf_parse,void,(const char *name)); | 3 | P(conf_parse,void,(const char *name)); |
| 4 | P(conf_set_env_sym,int,(const char *envname, const char *symname, int def)); | ||
| 4 | P(conf_read,int,(const char *name)); | 5 | P(conf_read,int,(const char *name)); |
| 5 | P(conf_read_simple,int,(const char *name, int)); | 6 | P(conf_read_simple,int,(const char *name, int)); |
| 6 | P(conf_write,int,(const char *name)); | 7 | P(conf_write,int,(const char *name)); |
