From bb90a6e3552a1d0227304b6990c8b6b3178e2f9f Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Sat, 10 Nov 2007 20:40:05 +0100 Subject: [PATCH] --- yaml --- r: 73803 b: refs/heads/master c: 0f855aa64b3f63d35a891510cf7db932a435c116 h: refs/heads/master i: 73801: 7e8eb99cfc4f8ae06073f6ef7b8f180cc2081b69 73799: ace7d2af2a488944d6dc1a2d7e2cce4e500374d5 v: v3 --- [refs] | 2 +- trunk/scripts/kconfig/confdata.c | 27 +++++++++++++++++++++++++++ trunk/scripts/kconfig/lkc_proto.h | 1 + 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c6130343d0ce..763ac9c22f0c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9c900a9c9d9351e55ab6a84e12e3a52c474c7c8b +refs/heads/master: 0f855aa64b3f63d35a891510cf7db932a435c116 diff --git a/trunk/scripts/kconfig/confdata.c b/trunk/scripts/kconfig/confdata.c index e0f402f3b75d..e4fa3f302541 100644 --- a/trunk/scripts/kconfig/confdata.c +++ b/trunk/scripts/kconfig/confdata.c @@ -145,6 +145,33 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) return 0; } +/* Read an environment variable and assign the value to the symbol */ +int conf_set_env_sym(const char *env, const char *symname, int def) +{ + struct symbol *sym; + char *p; + int def_flags; + + p = getenv(env); + if (p) { + char warning[200]; + sprintf(warning, "Environment variable (%s = \"%s\")", env, p); + conf_filename = warning; + def_flags = SYMBOL_DEF << def; + if (def == S_DEF_USER) { + sym = sym_find(symname); + if (!sym) + return 1; + } else { + sym = sym_lookup(symname, 0); + if (sym->type == S_UNKNOWN) + sym->type = S_OTHER; + } + conf_set_sym_val(sym, def, def_flags, p); + } + return 0; +} + int conf_read_simple(const char *name, int def) { FILE *in = NULL; diff --git a/trunk/scripts/kconfig/lkc_proto.h b/trunk/scripts/kconfig/lkc_proto.h index 4d09f6ddefe3..dca294e90cc3 100644 --- a/trunk/scripts/kconfig/lkc_proto.h +++ b/trunk/scripts/kconfig/lkc_proto.h @@ -1,6 +1,7 @@ /* confdata.c */ P(conf_parse,void,(const char *name)); +P(conf_set_env_sym,int,(const char *envname, const char *symname, int def)); P(conf_read,int,(const char *name)); P(conf_read_simple,int,(const char *name, int)); P(conf_write,int,(const char *name));