diff options
| author | Tony Lindgren <tony@atomide.com> | 2011-11-07 12:27:23 -0800 | 
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2011-11-07 12:27:23 -0800 | 
| commit | d30cc16c8e48368e0518f4975a78711e53e14a0f (patch) | |
| tree | 26b57f7ab5a963cc3d6c57dff6951bd930875583 /scripts/kconfig/mconf.c | |
| parent | 41eb2d813f558900884e240c2f723e36c7bd151f (diff) | |
| parent | a1bcc1dcef8451b4291ea2a1b2677cb194102952 (diff) | |
| download | olio-linux-3.10-d30cc16c8e48368e0518f4975a78711e53e14a0f.tar.xz olio-linux-3.10-d30cc16c8e48368e0518f4975a78711e53e14a0f.zip  | |
Merge branch 'fixes-modulesplit' into fixes
Diffstat (limited to 'scripts/kconfig/mconf.c')
| -rw-r--r-- | scripts/kconfig/mconf.c | 86 | 
1 files changed, 52 insertions, 34 deletions
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 820d2b6800f..19e200d9112 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c @@ -15,6 +15,7 @@  #include <stdarg.h>  #include <stdlib.h>  #include <string.h> +#include <signal.h>  #include <unistd.h>  #include <locale.h> @@ -272,6 +273,7 @@ static struct menu *current_menu;  static int child_count;  static int single_menu_mode;  static int show_all_options; +static int saved_x, saved_y;  static void conf(struct menu *menu);  static void conf_choice(struct menu *menu); @@ -792,9 +794,54 @@ static void conf_save(void)  	}  } +static int handle_exit(void) +{ +	int res; + +	dialog_clear(); +	if (conf_get_changed()) +		res = dialog_yesno(NULL, +				   _("Do you wish to save your new configuration ?\n" +				     "<ESC><ESC> to continue."), +				   6, 60); +	else +		res = -1; + +	end_dialog(saved_x, saved_y); + +	switch (res) { +	case 0: +		if (conf_write(filename)) { +			fprintf(stderr, _("\n\n" +					  "Error while writing of the configuration.\n" +					  "Your configuration changes were NOT saved." +					  "\n\n")); +			return 1; +		} +		/* fall through */ +	case -1: +		printf(_("\n\n" +			 "*** End of the configuration.\n" +			 "*** Execute 'make' to start the build or try 'make help'." +			 "\n\n")); +		res = 0; +		break; +	default: +		fprintf(stderr, _("\n\n" +				  "Your configuration changes were NOT saved." +				  "\n\n")); +	} + +	return res; +} + +static void sig_handler(int signo) +{ +	exit(handle_exit()); +} +  int main(int ac, char **av)  { -	int saved_x, saved_y;  	char *mode;  	int res; @@ -802,6 +849,8 @@ int main(int ac, char **av)  	bindtextdomain(PACKAGE, LOCALEDIR);  	textdomain(PACKAGE); +	signal(SIGINT, sig_handler); +  	conf_parse(av[1]);  	conf_read(NULL); @@ -823,40 +872,9 @@ int main(int ac, char **av)  	set_config_filename(conf_get_configname());  	do {  		conf(&rootmenu); -		dialog_clear(); -		if (conf_get_changed()) -			res = dialog_yesno(NULL, -					   _("Do you wish to save your " -					     "new configuration?\n" -					     "<ESC><ESC> to continue."), -					   6, 60); -		else -			res = -1; +		res = handle_exit();  	} while (res == KEY_ESC); -	end_dialog(saved_x, saved_y); - -	switch (res) { -	case 0: -		if (conf_write(filename)) { -			fprintf(stderr, _("\n\n" -				"Error while writing of the configuration.\n" -				"Your configuration changes were NOT saved." -				"\n\n")); -			return 1; -		} -		/* fall through */ -	case -1: -		printf(_("\n\n" -			"*** End of the configuration.\n" -			"*** Execute 'make' to start the build or try 'make help'." -			"\n\n")); -		break; -	default: -		fprintf(stderr, _("\n\n" -			"Your configuration changes were NOT saved." -			"\n\n")); -	} -	return 0; +	return res;  }  |