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>
This commit is contained in:
parent
9c900a9c9d
commit
0f855aa64b
@ -145,6 +145,33 @@ static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
|
|||||||
return 0;
|
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)
|
int conf_read_simple(const char *name, int def)
|
||||||
{
|
{
|
||||||
FILE *in = NULL;
|
FILE *in = NULL;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
/* confdata.c */
|
/* confdata.c */
|
||||||
P(conf_parse,void,(const char *name));
|
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,int,(const char *name));
|
||||||
P(conf_read_simple,int,(const char *name, int));
|
P(conf_read_simple,int,(const char *name, int));
|
||||||
P(conf_write,int,(const char *name));
|
P(conf_write,int,(const char *name));
|
||||||
|
Loading…
Reference in New Issue
Block a user