[PATCH] a few small mconf improvements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I just took a look at scripts/kconfig/mconf.c and found a few tiny things 
that I feel could be improved. So below is a patch for those.

The patch makes the following changes : 

 - use EXIT_SUCCESS/EXIT_FAILURE in place of 0/1.

 - rename main() arguments from "ac"/"av" to the more common "argc"/"argv".

 - when unlinking lxdialog.scrltmp, the return value of unlink() is not 
   checked. The patch adds a check of the return value and bails out if 
   unlink() fails for any reason other than ENOENT.

 - if the sscanf() call in conf() fails and stat==0 && type=='t', then 
   we'll end up dereferencing a NULL 'sym' in sym_is_choice(). The patch 
   adds a NULL check of 'sym' to that path and bails out with a big fat 
   error message if that should ever happen (better than just crashing 
   IMHO).

 - change the type if the 'i' variable in conf() from 'int' to 
   'unsigned int' to avoid a "comparison between signed and unsigned" 
   warning if building with gcc -W. Given the use of 'i', 'unsigned' is 
   also the logical type to use.

Please consider for inclusion.


Signed-off-by: Jesper Juhl <[email protected]>
---

 scripts/kconfig/mconf.c |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

--- linux-2.6.17-rc3-git12-orig/scripts/kconfig/mconf.c	2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.17-rc3-git12/scripts/kconfig/mconf.c	2006-05-07 17:34:47.000000000 +0200
@@ -311,7 +311,7 @@ static void init_wsize(void)
 	if (rows < 19 || cols < 80) {
 		fprintf(stderr, N_("Your display is too small to run Menuconfig!\n"));
 		fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n"));
-		exit(1);
+		exit(EXIT_FAILURE);
 	}
 
 	rows -= 4;
@@ -505,7 +505,7 @@ static int exec_conf(void)
 	}
 	if (WIFSIGNALED(stat)) {
 		printf("\finterrupted(%d)\n", WTERMSIG(stat));
-		exit(1);
+		exit(EXIT_FAILURE);
 	}
 #if 0
 	printf("\fexit state: %d\nexit data: '%s'\n", WEXITSTATUS(stat), input_buf);
@@ -514,7 +514,7 @@ static int exec_conf(void)
 	sigpending(&sset);
 	if (sigismember(&sset, SIGINT)) {
 		printf("\finterrupted\n");
-		exit(1);
+		exit(EXIT_FAILURE);
 	}
 	sigprocmask(SIG_SETMASK, &osset, NULL);
 
@@ -718,9 +718,14 @@ static void conf(struct menu *menu)
 	const char *prompt = menu_get_prompt(menu);
 	struct symbol *sym;
 	char active_entry[40];
-	int stat, type, i;
+	int stat, type;
+	unsigned int i;
 
-	unlink("lxdialog.scrltmp");
+	if (unlink("lxdialog.scrltmp") == -1 && errno != ENOENT) {
+		fprintf(stderr, "mconf error, unable to unlink "
+			"lxdialog.scrltmp : %s\n", strerror(errno));
+		exit(EXIT_FAILURE);
+	}
 	active_entry[0] = 0;
 	while (1) {
 		cprint_init();
@@ -777,6 +782,12 @@ static void conf(struct menu *menu)
 					conf(submenu);
 				break;
 			case 't':
+				if (!sym) {
+					fprintf(stderr, "mconf error: "
+						"expected a symbol, got NULL."
+						" Something's badly broken\n");
+					exit(EXIT_FAILURE);
+				}
 				if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
 					conf_choice(submenu);
 				else if (submenu->prompt->type == P_MENU)
@@ -1038,7 +1049,7 @@ static void conf_cleanup(void)
 	unlink("lxdialog.scrltmp");
 }
 
-int main(int ac, char **av)
+int main(int argc, char **argv)
 {
 	struct symbol *sym;
 	char *mode;
@@ -1048,7 +1059,7 @@ int main(int ac, char **av)
 	bindtextdomain(PACKAGE, LOCALEDIR);
 	textdomain(PACKAGE);
 
-	conf_parse(av[1]);
+	conf_parse(argv[1]);
 	conf_read(NULL);
 
 	sym = sym_lookup("KERNELVERSION", 0);
@@ -1094,5 +1105,5 @@ int main(int ac, char **av)
 			"\n\n"));
 	}
 
-	return 0;
+	return EXIT_SUCCESS;
 }


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux