| diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile |
| index 6d69c7c..ff84d12 100644 |
| |
| |
| @@ -58,6 +58,11 @@ localyesconfig: $(obj)/streamline_config.pl $(obj)/conf |
| fi |
| $(Q)rm -f .tmp.config |
| |
| +nonint_oldconfig: $(obj)/conf |
| + $< -b $(Kconfig) |
| +loose_nonint_oldconfig: $(obj)/conf |
| + $< -B $(Kconfig) |
| + |
| # Create new linux.pot file |
| # Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files |
| # The symlink is used to repair a deficiency in arch/um |
| diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c |
| index 9960d1c..ac8d455 100644 |
| |
| |
| @@ -23,6 +23,8 @@ enum { |
| ask_all, |
| ask_new, |
| ask_silent, |
| + dont_ask, |
| + dont_ask_dont_tell, |
| set_default, |
| set_yes, |
| set_mod, |
| @@ -360,7 +362,10 @@ static void conf(struct menu *menu) |
| |
| switch (prop->type) { |
| case P_MENU: |
| - if (input_mode == ask_silent && rootEntry != menu) { |
| + if ((input_mode == ask_silent || |
| + input_mode == dont_ask || |
| + input_mode == dont_ask_dont_tell) && |
| + rootEntry != menu) { |
| check_conf(menu); |
| return; |
| } |
| @@ -406,6 +411,8 @@ conf_childs: |
| indent -= 2; |
| } |
| |
| +static int return_value; |
| + |
| static void check_conf(struct menu *menu) |
| { |
| struct symbol *sym; |
| @@ -418,12 +425,21 @@ static void check_conf(struct menu *menu) |
| if (sym && !sym_has_value(sym)) { |
| if (sym_is_changable(sym) || |
| (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { |
| + if (input_mode == dont_ask || |
| + input_mode == dont_ask_dont_tell) { |
| + if (input_mode == dont_ask && |
| + sym->name && !sym_is_choice_value(sym)) { |
| + fprintf(stderr,"CONFIG_%s\n",sym->name); |
| + ++return_value; |
| + } |
| + } else { |
| if (!conf_cnt++) |
| printf(_("*\n* Restart config...\n*\n")); |
| rootEntry = menu_get_parent_menu(menu); |
| conf(rootEntry); |
| } |
| } |
| + } |
| |
| for (child = menu->list; child; child = child->next) |
| check_conf(child); |
| @@ -439,7 +455,7 @@ int main(int ac, char **av) |
| bindtextdomain(PACKAGE, LOCALEDIR); |
| textdomain(PACKAGE); |
| |
| - while ((opt = getopt(ac, av, "osdD:nmyrh")) != -1) { |
| + while ((opt = getopt(ac, av, "osbBdD:nmyrh")) != -1) { |
| switch (opt) { |
| case 'o': |
| input_mode = ask_silent; |
| @@ -448,6 +464,12 @@ int main(int ac, char **av) |
| input_mode = ask_silent; |
| sync_kconfig = 1; |
| break; |
| + case 'b': |
| + input_mode = dont_ask; |
| + break; |
| + case 'B': |
| + input_mode = dont_ask_dont_tell; |
| + break; |
| case 'd': |
| input_mode = set_default; |
| break; |
| @@ -525,6 +547,8 @@ int main(int ac, char **av) |
| case ask_silent: |
| case ask_all: |
| case ask_new: |
| + case dont_ask: |
| + case dont_ask_dont_tell: |
| conf_read(NULL); |
| break; |
| case set_no: |
| @@ -586,12 +610,16 @@ int main(int ac, char **av) |
| conf(&rootmenu); |
| input_mode = ask_silent; |
| /* fall through */ |
| + case dont_ask: |
| + case dont_ask_dont_tell: |
| case ask_silent: |
| /* Update until a loop caused no more changes */ |
| do { |
| conf_cnt = 0; |
| check_conf(&rootmenu); |
| - } while (conf_cnt); |
| + } while (conf_cnt && |
| + (input_mode != dont_ask && |
| + input_mode != dont_ask_dont_tell)); |
| break; |
| } |
| |
| @@ -613,5 +641,5 @@ int main(int ac, char **av) |
| exit(1); |
| } |
| } |
| - return 0; |
| + return return_value; |
| } |