Whamcloud - gitweb
mke2fs: do not warn about a pre-existing partition table when using a non-zero offset
[tools/e2fsprogs.git] / lib / support / plausible.c
index fafdcca..bbed2a7 100644 (file)
@@ -43,6 +43,17 @@ static const char *(*dl_magic_file)(magic_t, const char *);
 static int (*dl_magic_load)(magic_t, const char *);
 static void (*dl_magic_close)(magic_t);
 
+/*
+ * NO_CHECK functionality was only added in file 4.20.
+ * Older systems like RHEL 5.x still have file 4.17
+ */
+#ifndef MAGIC_NO_CHECK_COMPRESS
+#define MAGIC_NO_CHECK_COMPRESS 0x0001000
+#endif
+#ifndef MAGIC_NO_CHECK_ELF
+#define MAGIC_NO_CHECK_ELF 0x0010000
+#endif
+
 #ifdef HAVE_DLOPEN
 #include <dlfcn.h>
 
@@ -90,23 +101,24 @@ static void print_ext2_info(const char *device)
        ext2_filsys             fs;
        errcode_t               retval;
        time_t                  tm;
-       char                    buf[80];
 
        retval = ext2fs_open2(device, 0, EXT2_FLAG_64BITS, 0, 0,
-                             unix_io_manager, &fs);
+#ifdef _WIN64
+                             windows_io_manager,
+#else
+                             unix_io_manager,
+#endif
+                  &fs);
        if (retval)
                return;
        sb = fs->super;
 
        if (sb->s_mtime) {
                tm = sb->s_mtime;
-               if (sb->s_last_mounted[0]) {
-                       memset(buf, 0, sizeof(buf));
-                       strncpy(buf, sb->s_last_mounted,
-                               sizeof(sb->s_last_mounted));
-                       printf(_("\tlast mounted on %s on %s"), buf,
-                              ctime(&tm));
-               } else
+               if (sb->s_last_mounted[0])
+                       printf(_("\tlast mounted on %.*s on %s"),
+                              EXT2_LEN_STR(sb->s_last_mounted), ctime(&tm));
+               else
                        printf(_("\tlast mounted on %s"), ctime(&tm));
        } else if (sb->s_mkfs_time) {
                tm = sb->s_mkfs_time;
@@ -235,8 +247,8 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev)
 
        if (fs_type) {
                if (fs_label)
-                       printf(_("%s contains a %s file system "
-                                "labelled '%s'\n"), device, fs_type, fs_label);
+                       printf(_("%s contains a %s file system labelled '%s'\n"),
+                              device, fs_type, fs_label);
                else
                        printf(_("%s contains a %s file system\n"), device,
                               fs_type);
@@ -248,7 +260,9 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev)
        }
 
 #ifdef HAVE_MAGIC_H
-       if ((flags & CHECK_FS_EXIST) && magic_library_available()) {
+       if ((flags & CHECK_FS_EXIST) &&
+           !getenv("E2FSPROGS_LIBMAGIC_SUPPRESS") &&
+           magic_library_available()) {
                const char *msg;
                magic_t mag;
                int has_magic = 0;
@@ -268,11 +282,11 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev)
                return !has_magic;
        }
 #endif
-
-       ret = check_partition_table(device);
-       if (ret >= 0)
-               return ret;
-
+       if (flags & CHECK_FS_EXIST) {
+               ret = check_partition_table(device);
+               if (ret >= 0)
+                       return ret;
+       }
        return 1;
 }