Skip to content

Commit

Permalink
kconfig: add helper to set config symbol from environment variable
Browse files Browse the repository at this point in the history
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]>
  • Loading branch information
sravnborg committed Nov 12, 2007
1 parent 9c900a9 commit 0f855aa
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
27 changes: 27 additions & 0 deletions scripts/kconfig/confdata.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions scripts/kconfig/lkc_proto.h
Original file line number Diff line number Diff line change
@@ -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));
Expand Down

0 comments on commit 0f855aa

Please sign in to comment.