fsck: remove a few statics
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@googlemail.com>
This commit is contained in:
parent
c541a8955d
commit
6683745bf7
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user