Whamcloud - gitweb
mke2fs, tune2fs: call proceed_question() from check_plausibility()'s caller
authorTheodore Ts'o <tytso@mit.edu>
Sat, 26 Apr 2014 17:14:32 +0000 (13:14 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 26 Apr 2014 17:14:32 +0000 (13:14 -0400)
Move the call to proceed_question() from check_plausibility() to its
caller.  This allows more fine grained control by mke2fs about when it
might want to call check_plausibility().

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
misc/mke2fs.c
misc/tune2fs.c
misc/util.c
misc/util.h

index 637ace2..3c62ede 100644 (file)
@@ -1749,8 +1749,9 @@ profile_error:
        if (optind < argc)
                usage();
 
-       if (!force)
-               check_plausibility(device_name, 0, NULL);
+       if (!check_plausibility(device_name, 0, NULL) && !force)
+               proceed_question();
+
        check_mount(device_name, force, _("filesystem"));
 
        /* Determine the size of the device (if possible) */
@@ -2781,9 +2782,9 @@ int main (int argc, char *argv[])
        if (journal_device) {
                ext2_filsys     jfs;
 
-               if (!force)
-                       check_plausibility(journal_device, CHECK_BLOCK_DEV,
-                                          NULL);
+               if (!check_plausibility(journal_device, CHECK_BLOCK_DEV,
+                                       NULL) && !force)
+                       proceed_question();
                check_mount(journal_device, force, _("journal"));
 
                retval = ext2fs_open(journal_device, EXT2_FLAG_RW|
index d61dbfb..fbf5f52 100644 (file)
@@ -673,7 +673,9 @@ static int add_journal(ext2_filsys fs)
                goto err;
        }
        if (journal_device) {
-               check_plausibility(journal_device, CHECK_BLOCK_DEV, NULL);
+               if (!check_plausibility(journal_device, CHECK_BLOCK_DEV,
+                                       NULL))
+                       proceed_question();
                check_mount(journal_device, 0, _("journal"));
 #ifdef CONFIG_TESTIO_DEBUG
                if (getenv("TEST_IO_FLAGS") || getenv("TEST_IO_BLOCK")) {
index 0c3787c..08ec761 100644 (file)
@@ -80,7 +80,10 @@ void proceed_question(void)
                exit(1);
 }
 
-void check_plausibility(const char *device, int flags, int *ret_is_dev)
+/*
+ * return 1 if the device looks plausible
+ */
+int check_plausibility(const char *device, int flags, int *ret_is_dev)
 {
        int val, is_dev = 0;
        ext2fs_struct_stat s;
@@ -107,8 +110,7 @@ void check_plausibility(const char *device, int flags, int *ret_is_dev)
 
        if ((flags & CHECK_BLOCK_DEV) && !is_dev) {
                printf(_("%s is not a block special device.\n"), device);
-               proceed_question();
-               return;
+               return 0;
        }
 
 #ifdef HAVE_LINUX_MAJOR_H
@@ -137,9 +139,10 @@ void check_plausibility(const char *device, int flags, int *ret_is_dev)
              MINOR(s.st_rdev)%16 == 0))) {
                printf(_("%s is entire device, not just one partition!\n"),
                       device);
-               proceed_question();
+               return 0;
        }
 #endif
+       return 1;
 }
 
 void check_mount(const char *device, int force, const char *type)
index 470556a..867f4b0 100644 (file)
@@ -25,8 +25,8 @@ extern int strcasecmp (char *s1, char *s2);
 #endif
 extern char *get_progname(char *argv_zero);
 extern void proceed_question(void);
-extern void check_plausibility(const char *device, int flags,
-                              int *ret_is_dev);
+extern int check_plausibility(const char *device, int flags,
+                             int *ret_is_dev);
 extern void parse_journal_opts(const char *opts);
 extern void check_mount(const char *device, int force, const char *type);
 extern unsigned int figure_journal_size(int size, ext2_filsys fs);