The patch titled kconfig: new function "bool conf_get_changed(void)" has been added to the -mm tree. Its filename is kconfig-new-function-bool-conf_get_changedvoid.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: kconfig: new function "bool conf_get_changed(void)" From: Karsten Wiese <annabellesgarden@xxxxxxxx> Returns sym_change_count to reflect the .config's change state. All read only accesses of sym_change_count are replaced by calls to conf_get_changed() . mconfig.c is manipulated to ask for saving only when conf_get_changed() returned true. Signed-off-by: Karsten Wiese <fzu@xxxxxxxxxxxxxxxxxxxxx> Cc: Sam Ravnborg <sam@xxxxxxxxxxxx> Cc: Roman Zippel <zippel@xxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- scripts/kconfig/conf.c | 2 +- scripts/kconfig/confdata.c | 7 ++++++- scripts/kconfig/lkc_proto.h | 1 + scripts/kconfig/mconf.c | 21 ++++++++++++++------- scripts/kconfig/qconf.cc | 2 +- 5 files changed, 23 insertions(+), 10 deletions(-) diff -puN scripts/kconfig/conf.c~kconfig-new-function-bool-conf_get_changedvoid scripts/kconfig/conf.c --- a/scripts/kconfig/conf.c~kconfig-new-function-bool-conf_get_changedvoid +++ a/scripts/kconfig/conf.c @@ -600,7 +600,7 @@ int main(int ac, char **av) input_mode = ask_silent; valid_stdin = 1; } - } else if (sym_change_count) { + } else if (conf_get_changed()) { name = getenv("KCONFIG_NOSILENTUPDATE"); if (name && *name) { fprintf(stderr, _("\n*** Kernel configuration requires explicit update.\n\n")); diff -puN scripts/kconfig/confdata.c~kconfig-new-function-bool-conf_get_changedvoid scripts/kconfig/confdata.c --- a/scripts/kconfig/confdata.c~kconfig-new-function-bool-conf_get_changedvoid +++ a/scripts/kconfig/confdata.c @@ -432,7 +432,7 @@ int conf_write(const char *name) use_timestamp ? "# " : "", use_timestamp ? ctime(&now) : ""); - if (!sym_change_count) + if (!conf_get_changed()) sym_clear_all_valid(); menu = rootmenu.list; @@ -765,3 +765,8 @@ int conf_write_autoconf(void) return 0; } + +bool conf_get_changed(void) +{ + return sym_change_count; +} diff -puN scripts/kconfig/lkc_proto.h~kconfig-new-function-bool-conf_get_changedvoid scripts/kconfig/lkc_proto.h --- a/scripts/kconfig/lkc_proto.h~kconfig-new-function-bool-conf_get_changedvoid +++ a/scripts/kconfig/lkc_proto.h @@ -5,6 +5,7 @@ P(conf_read,int,(const char *name)); P(conf_read_simple,int,(const char *name, int)); P(conf_write,int,(const char *name)); P(conf_write_autoconf,int,(void)); +P(conf_get_changed,bool,(void)); /* menu.c */ P(rootmenu,struct menu,); diff -puN scripts/kconfig/mconf.c~kconfig-new-function-bool-conf_get_changedvoid scripts/kconfig/mconf.c --- a/scripts/kconfig/mconf.c~kconfig-new-function-bool-conf_get_changedvoid +++ a/scripts/kconfig/mconf.c @@ -890,14 +890,19 @@ int main(int ac, char **av) do { conf(&rootmenu); dialog_clear(); - res = dialog_yesno(NULL, - _("Do you wish to save your " - "new kernel configuration?\n" - "<ESC><ESC> to continue."), - 6, 60); + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your " + "new kernel configuration?\n" + "<ESC><ESC> to continue."), + 6, 60); + else + res = -1; } while (res == KEY_ESC); end_dialog(); - if (res == 0) { + + switch (res) { + case 0: if (conf_write(NULL)) { fprintf(stderr, _("\n\n" "Error during writing of the kernel configuration.\n" @@ -905,11 +910,13 @@ int main(int ac, char **av) "\n\n")); return 1; } + case -1: printf(_("\n\n" "*** End of Linux kernel configuration.\n" "*** Execute 'make' to build the kernel or try 'make help'." "\n\n")); - } else { + break; + default: fprintf(stderr, _("\n\n" "Your kernel configuration changes were NOT saved." "\n\n")); diff -puN scripts/kconfig/qconf.cc~kconfig-new-function-bool-conf_get_changedvoid scripts/kconfig/qconf.cc --- a/scripts/kconfig/qconf.cc~kconfig-new-function-bool-conf_get_changedvoid +++ a/scripts/kconfig/qconf.cc @@ -1584,7 +1584,7 @@ void ConfigMainWindow::showFullView(void */ void ConfigMainWindow::closeEvent(QCloseEvent* e) { - if (!sym_change_count) { + if (!conf_get_changed()) { e->accept(); return; } _ Patches currently in -mm which might be from annabellesgarden@xxxxxxxx are kconfig-new-function-bool-conf_get_changedvoid.patch kconfig-make-sym_change_count-static-let-it-be-altered-by-2-functions-only.patch kconfig-add-void-conf_set_changed_callbackvoid-fnvoid-use-it-in-qconfcc.patch kconfig-set-gconfs-save-widgets-sensitivity-according-to-configs-changed-state.patch remove-quirk_via_abnormal_poweroff.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html