Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0f855aa64b3f63d35a891510cf7db932a435c116 Commit: 0f855aa64b3f63d35a891510cf7db932a435c116 Parent: 9c900a9c9d9351e55ab6a84e12e3a52c474c7c8b Author: Sam Ravnborg <[EMAIL PROTECTED]> AuthorDate: Sat Nov 10 20:40:05 2007 +0100 Committer: Sam Ravnborg <[EMAIL PROTECTED]> CommitDate: Mon Nov 12 21:02:20 2007 +0100
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 <[EMAIL PROTECTED]> Cc: Roman Zippel <[EMAIL PROTECTED]> --- scripts/kconfig/confdata.c | 27 +++++++++++++++++++++++++++ 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 e0f402f..e4fa3f3 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) 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/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h index 4d09f6d..dca294e 100644 --- a/scripts/kconfig/lkc_proto.h +++ b/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)); - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html