-diff -Nurp linux-2.6.22.noarch.orig/scripts/kconfig/conf.c linux-2.6.22.noarch/scripts/kconfig/conf.c
---- linux-2.6.22.noarch.orig/scripts/kconfig/conf.c 2007-10-11 20:51:33.000000000 +0200
-+++ linux-2.6.22.noarch/scripts/kconfig/conf.c 2007-10-11 20:56:30.000000000 +0200
-@@ -21,6 +21,8 @@ enum {
+diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
+index 32e8c5a..8020453 100644
+--- a/scripts/kconfig/Makefile
++++ b/scripts/kconfig/Makefile
+@@ -24,6 +24,11 @@ oldconfig: $(obj)/conf
+ silentoldconfig: $(obj)/conf
+ $< -s $(Kconfig)
+
++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 fda6313..ed33b66 100644
+--- a/scripts/kconfig/conf.c
++++ b/scripts/kconfig/conf.c
+@@ -22,6 +22,8 @@
ask_all,
ask_new,
ask_silent,
set_default,
set_yes,
set_mod,
-@@ -37,6 +39,8 @@ static struct menu *rootEntry;
+@@ -39,6 +41,8 @@
static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n");
+static int return_value = 0;
+
- static void strip(char *str)
+ static const char *get_help(struct menu *menu)
{
- char *p = str;
-@@ -103,6 +107,13 @@ static int conf_askvalue(struct symbol *
- fflush(stdout);
- fgets(line, 128, stdin);
- return 1;
-+ case dont_ask:
-+ if (!sym_has_value(sym)) {
-+ fprintf(stderr, "CONFIG_%s\n", sym->name);
-+ return_value++;
-+ }
-+ case dont_ask_dont_tell:
-+ return 1;
- case set_default:
- printf("%s\n", def);
- return 1;
-@@ -349,6 +360,11 @@ static int conf_choice(struct menu *menu
- printf("?");
- printf("]: ");
- switch (input_mode) {
-+ case dont_ask:
-+ case dont_ask_dont_tell:
-+ cnt = def;
-+ printf("%d\n", cnt);
-+ break;
- case ask_new:
- case ask_silent:
- if (!is_new) {
-@@ -485,6 +501,10 @@ static void check_conf(struct menu *menu
+ if (menu_has_help(menu))
+@@ -359,7 +363,10 @@
+
+ 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;
+ }
+@@ -417,12 +424,21 @@
+ 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);
-+ if (input_mode == dont_ask
-+ || input_mode == dont_ask_dont_tell)
-+ fprintf(stderr,"CONFIG_%s\n",sym->name);
-+ else
conf(rootEntry);
}
}
-@@ -504,6 +524,12 @@ int main(int ac, char **av)
++ }
+
+ for (child = menu->list; child; child = child->next)
+ check_conf(child);
+@@ -438,7 +454,7 @@
+ 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_new;
+ input_mode = ask_silent;
+@@ -447,6 +463,12 @@
+ input_mode = ask_silent;
+ sync_kconfig = 1;
break;
+ case 'b':
+ input_mode = dont_ask;
+ case 'B':
+ input_mode = dont_ask_dont_tell;
+ break;
- case 's':
- input_mode = ask_silent;
- valid_stdin = isatty(0) && isatty(1) && isatty(2);
-@@ -570,6 +596,8 @@ int main(int ac, char **av)
- }
+ case 'd':
+ input_mode = set_default;
+ break;
+@@ -510,6 +532,8 @@
+ case ask_silent:
case ask_all:
case ask_new:
+ case dont_ask:
conf_read(NULL);
break;
case set_no:
-@@ -616,7 +644,8 @@ int main(int ac, char **av)
- do {
- conf_cnt = 0;
- check_conf(&rootmenu);
-- } while (conf_cnt);
-+ } while (conf_cnt && (input_mode != dont_ask
-+ && input_mode != dont_ask_dont_tell));
- if (conf_write(NULL)) {
- fprintf(stderr, _("\n*** Error during writing of the kernel configuration.\n\n"));
- return 1;
-@@ -627,5 +656,5 @@ skip_check:
- return 1;
+@@ -571,12 +595,16 @@
+ 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;
}
+@@ -598,5 +626,5 @@
+ exit(1);
+ }
+ }
- return 0;
+ return return_value;
}
-diff -Nurp linux-2.6.22.noarch.orig/scripts/kconfig/Makefile linux-2.6.22.noarch/scripts/kconfig/Makefile
---- linux-2.6.22.noarch.orig/scripts/kconfig/Makefile 2007-07-09 01:32:17.000000000 +0200
-+++ linux-2.6.22.noarch/scripts/kconfig/Makefile 2007-10-11 20:52:11.000000000 +0200
-@@ -22,6 +22,11 @@ oldconfig: $(obj)/conf
- silentoldconfig: $(obj)/conf
- $< -s arch/$(ARCH)/Kconfig
-
-+nonint_oldconfig: $(obj)/conf
-+ $< -b arch/$(ARCH)/Kconfig
-+loose_nonint_oldconfig: $(obj)/conf
-+ $< -B arch/$(ARCH)/Kconfig
-+
- update-po-config: $(obj)/kxgettext
- xgettext --default-domain=linux \
- --add-comments --keyword=_ --keyword=N_ \