提交 90389160 编写于 作者: R Roman Zippel 提交者: Linus Torvalds

[PATCH] kconfig: preset config during all*config

Allow to force setting of config variables during all{no,mod,yes,random}config
to a specific value.  For that conf first checks the KCONFIG_ALLCONFIG
environment variable for a file name, otherwise it checks for
all{no,mod,yes,random}.config and all.config.  The file is a normal config
file, which presets the config variables, but they are still subject to normal
dependency checks.
Signed-off-by: NRoman Zippel <zippel@linux-m68k.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 3f23ca2b
...@@ -82,6 +82,15 @@ static void conf_askvalue(struct symbol *sym, const char *def) ...@@ -82,6 +82,15 @@ static void conf_askvalue(struct symbol *sym, const char *def)
} }
switch (input_mode) { switch (input_mode) {
case set_no:
case set_mod:
case set_yes:
case set_random:
if (sym_has_value(sym)) {
printf("%s\n", def);
return;
}
break;
case ask_new: case ask_new:
case ask_silent: case ask_silent:
if (sym_has_value(sym)) { if (sym_has_value(sym)) {
...@@ -558,6 +567,27 @@ int main(int ac, char **av) ...@@ -558,6 +567,27 @@ int main(int ac, char **av)
case ask_new: case ask_new:
conf_read(NULL); conf_read(NULL);
break; break;
case set_no:
case set_mod:
case set_yes:
case set_random:
name = getenv("KCONFIG_ALLCONFIG");
if (name && !stat(name, &tmpstat)) {
conf_read_simple(name);
break;
}
switch (input_mode) {
case set_no: name = "allno.config"; break;
case set_mod: name = "allmod.config"; break;
case set_yes: name = "allyes.config"; break;
case set_random: name = "allrandom.config"; break;
default: break;
}
if (!stat(name, &tmpstat))
conf_read_simple(name);
else if (!stat("all.config", &tmpstat))
conf_read_simple("all.config");
break;
default: default:
break; break;
} }
......
...@@ -69,15 +69,13 @@ char *conf_get_default_confname(void) ...@@ -69,15 +69,13 @@ char *conf_get_default_confname(void)
return name; return name;
} }
int conf_read(const char *name) int conf_read_simple(const char *name)
{ {
FILE *in = NULL; FILE *in = NULL;
char line[1024]; char line[1024];
char *p, *p2; char *p, *p2;
int lineno = 0; int lineno = 0;
struct symbol *sym; struct symbol *sym;
struct property *prop;
struct expr *e;
int i; int i;
if (name) { if (name) {
...@@ -232,6 +230,19 @@ int conf_read(const char *name) ...@@ -232,6 +230,19 @@ int conf_read(const char *name)
if (modules_sym) if (modules_sym)
sym_calc_value(modules_sym); sym_calc_value(modules_sym);
return 0;
}
int conf_read(const char *name)
{
struct symbol *sym;
struct property *prop;
struct expr *e;
int i;
if (conf_read_simple(name))
return 1;
for_all_symbols(i, sym) { for_all_symbols(i, sym) {
sym_calc_value(sym); sym_calc_value(sym);
if (sym_has_value(sym) && !sym_is_choice_value(sym)) { if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
/* confdata.c */ /* confdata.c */
P(conf_parse,void,(const char *name)); P(conf_parse,void,(const char *name));
P(conf_read,int,(const char *name)); P(conf_read,int,(const char *name));
P(conf_read_simple,int,(const char *name));
P(conf_write,int,(const char *name)); P(conf_write,int,(const char *name));
/* menu.c */ /* menu.c */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册