[git commit master] fsck: remove a few statics

Denys Vlasenko vda.linux at googlemail.com
Sun Sep 13 03:52:46 UTC 2009


commit: http://git.busybox.net/busybox/commit/?id=6683745bf78917562af843ecd17c4f3d04313a77
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
kill_all_if_got_signal                                 -      60     +60
notitle                                                1       -      -1
doall                                                  1       -      -1
cancel_requested                                       1       -      -1
num_devices                                            4       -      -4
devices                                                4       -      -4
signal_cancel                                          8       -      -8
fsck_main                                           1893    1870     -23
kill_all_if_cancel_requested                          60       -     -60
------------------------------------------------------------------------------
(add/remove: 1/7 grow/shrink: 0/1 up/down: 60/-102)           Total: -42 bytes
   text    data     bss     dec     hex filename
 824205     458    6956  831619   cb083 busybox_old
 824174     458    6948  831580   cb05c busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 e2fsprogs/fsck.c |   93 ++++++++++++++++++++++++-----------------------------
 1 files changed, 42 insertions(+), 51 deletions(-)

diff --git a/e2fsprogs/fsck.c b/e2fsprogs/fsck.c
index 3c6cafb..c4d0b03 100644
--- a/e2fsprogs/fsck.c
+++ b/e2fsprogs/fsck.c
@@ -103,9 +103,7 @@ static const char really_wanted[] ALIGN1 =
 
 #define BASE_MD "/dev/md"
 
-static char **devices;
 static char **args;
-static int num_devices;
 static int num_args;
 static int verbose;
 
@@ -116,13 +114,10 @@ static char **fs_type_list;
 static uint8_t *fs_type_flag;
 static smallint fs_type_negated;
 
-static volatile smallint cancel_requested;
-static smallint doall;
 static smallint noexecute;
 static smallint serialize;
 static smallint skip_root;
 /* static smallint like_mount; */
-static smallint notitle;
 static smallint parallel_root;
 static smallint force_all_parallel;
 
@@ -353,13 +348,13 @@ static int progress_active(void)
 /*
  * Send a signal to all outstanding fsck child processes
  */
-static void kill_all_if_cancel_requested(void)
+static void kill_all_if_got_signal(void)
 {
 	static smallint kill_sent;
 
 	struct fsck_instance *inst;
 
-	if (!cancel_requested || kill_sent)
+	if (!bb_got_signal || kill_sent)
 		return;
 
 	for (inst = instance_list; inst; inst = inst->next) {
@@ -388,7 +383,7 @@ static int wait_one(int flags)
 
 	while (1) {
 		pid = waitpid(-1, &status, flags);
-		kill_all_if_cancel_requested();
+		kill_all_if_got_signal();
 		if (pid == 0) /* flags == WNOHANG and no children exited */
 			return -1;
 		if (pid < 0) {
@@ -788,7 +783,7 @@ static int check_all(void)
 		pass_done = 1;
 
 		for (fs = filesys_info; fs; fs = fs->next) {
-			if (cancel_requested)
+			if (bb_got_signal)
 				break;
 			if (fs->flags & FLAG_DONE)
 				continue;
@@ -828,7 +823,7 @@ static int check_all(void)
 				break;
 			}
 		}
-		if (cancel_requested)
+		if (bb_got_signal)
 			break;
 		if (verbose > 1)
 			printf("--waiting-- (pass %d)\n", passno);
@@ -841,7 +836,7 @@ static int check_all(void)
 		} else
 			not_done_yet = 1;
 	}
-	kill_all_if_cancel_requested();
+	kill_all_if_got_signal();
 	status |= wait_many(FLAG_WAIT_ATLEAST_ONE);
 	return status;
 }
@@ -904,22 +899,39 @@ static void compile_fs_type(char *fs_type)
 	}
 }
 
-static void parse_args(char **argv)
+int fsck_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int fsck_main(int argc UNUSED_PARAM, char **argv)
 {
-	int i, j;
-	char *arg, *tmp;
-	char *options;
-	int optpos;
-	int opts_for_fsck = 0;
+	int i, status;
+	/*int interactive;*/
+	struct fs_info *fs;
+	const char *fstab;
+	char *tmp;
+	char **devices;
+	int num_devices;
+	smallint opts_for_fsck;
+	smallint doall;
+	smallint notitle;
 
-	/* in bss, so already zeroed
+	/* we want wait() to be interruptible */
+	signal_no_SA_RESTART_empty_mask(SIGINT, record_signo);
+	signal_no_SA_RESTART_empty_mask(SIGTERM, record_signo);
+
+	setbuf(stdout, NULL);
+
+	opts_for_fsck = doall = notitle = 0;
+	devices = NULL;
 	num_devices = 0;
+	/* in bss, so already zeroed
+	args = NULL;
 	num_args = 0;
 	instance_list = NULL;
 	*/
-
-	for (i = 1; argv[i]; i++) {
-		arg = argv[i];
+	while (*++argv) {
+		int j;
+		int optpos;
+		char *options;
+		char *arg = *argv;
 
 		/* "/dev/blk" or "/path" or "UUID=xxx" or "LABEL=xxx" */
 		if ((arg[0] == '/' && !opts_for_fsck) || strchr(arg, '=')) {
@@ -927,13 +939,13 @@ static void parse_args(char **argv)
 // "/path", "UUID=xxx" or "LABEL=xxx" into block device name
 // ("UUID=xxx"/"LABEL=xxx" can probably shifted to fsck.auto duties)
 			devices = xrealloc_vector(devices, 2, num_devices);
-			devices[num_devices++] = xstrdup(arg);
+			devices[num_devices++] = arg;
 			continue;
 		}
 
 		if (arg[0] != '-' || opts_for_fsck) {
 			args = xrealloc_vector(args, 2, num_args);
-			args[num_args++] = xstrdup(arg);
+			args[num_args++] = arg;
 			continue;
 		}
 
@@ -957,8 +969,9 @@ static void parse_args(char **argv)
 					goto next_arg;
 				}
 				/* -C n */
-				if (!argv[++i]) bb_show_usage();
-				progress_fd = xatoi_u(argv[i]);
+				if (!*++argv)
+					bb_show_usage();
+				progress_fd = xatoi_u(*argv);
 				goto next_arg;
 #endif
 			case 'V':
@@ -987,8 +1000,8 @@ static void parse_args(char **argv)
 					bb_show_usage();
 				if (arg[++j])
 					tmp = &arg[j];
-				else if (argv[++i])
-					tmp = argv[i];
+				else if (*++argv)
+					tmp = *argv;
 				else
 					bb_show_usage();
 				fstype = xstrdup(tmp);
@@ -1018,28 +1031,6 @@ static void parse_args(char **argv)
 	tmp = getenv("FSCK_MAX_INST");
 	if (tmp)
 		max_running = xatoi(tmp);
-}
-
-static void signal_cancel(int sig UNUSED_PARAM)
-{
-	cancel_requested = 1;
-}
-
-int fsck_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int fsck_main(int argc UNUSED_PARAM, char **argv)
-{
-	int i, status;
-	/*int interactive;*/
-	const char *fstab;
-	struct fs_info *fs;
-
-	/* we want wait() to be interruptible */
-	signal_no_SA_RESTART_empty_mask(SIGINT, signal_cancel);
-	signal_no_SA_RESTART_empty_mask(SIGTERM, signal_cancel);
-
-	setbuf(stdout, NULL);
-
-	parse_args(argv);
 
 	if (!notitle)
 		puts("fsck (busybox "BB_VER", "BB_BT")");
@@ -1060,8 +1051,8 @@ int fsck_main(int argc UNUSED_PARAM, char **argv)
 
 	status = 0;
 	for (i = 0; i < num_devices; i++) {
-		if (cancel_requested) {
-			kill_all_if_cancel_requested();
+		if (bb_got_signal) {
+			kill_all_if_got_signal();
 			break;
 		}
 
-- 
1.6.3.3



More information about the busybox-cvs mailing list