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

Reply via email to