diff options
author | Theodore Ts'o <tytso@mit.edu> | 2014-08-24 23:54:37 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2014-08-24 23:54:37 -0400 |
commit | ce2e295d7bccb30dfce212d7d694df41c8980e2e (patch) | |
tree | 457985b565099ea90e45e74faac62f62ecc37252 | |
parent | 9ac2930cc9abb0ddca55afead3929e6816c8f353 (diff) | |
download | e2fsprogs-ce2e295d7bccb30dfce212d7d694df41c8980e2e.tar.gz |
mke2fs: improve the error message when a non-existent file is specified
If the user does not specify the file system size, and the file does
not exist, give an error message like this:
The file /tmp/foo.img does not exist and no size was specified.
instead of this:
Creating regular file /tmp/foo.img
mke2fs: Device size reported to be zero. Invalid partition specified, or
partition table wasn't reread after running fdisk, due to
a modified partition being busy and in use. You may need to reboot
to re-read your partition table.
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r-- | misc/mke2fs.c | 2 | ||||
-rw-r--r-- | misc/util.c | 5 | ||||
-rw-r--r-- | misc/util.h | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/misc/mke2fs.c b/misc/mke2fs.c index da77e3ac..550e8868 100644 --- a/misc/mke2fs.c +++ b/misc/mke2fs.c @@ -1796,6 +1796,8 @@ profile_error: flags |= CHECK_FS_EXIST; if (!quiet) flags |= VERBOSE_CREATE; + if (fs_blocks_count == 0) + flags |= NO_SIZE; if (!check_plausibility(device_name, flags, &is_device) && !force) proceed_question(proceed_delay); diff --git a/misc/util.c b/misc/util.c index 1fcae1d5..28988306 100644 --- a/misc/util.c +++ b/misc/util.c @@ -198,6 +198,11 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev) char *fs_label = NULL; fd = ext2fs_open_file(device, fl, 0666); + if ((fd < 0) && (errno == ENOENT) && (flags & NO_SIZE)) { + fprintf(stderr, _("The file %s does not exist and no " + "size was specified.\n"), device); + exit(1); + } if ((fd < 0) && (errno == ENOENT) && (flags & CREATE_FILE)) { fl |= O_CREAT; fd = ext2fs_open_file(device, fl, 0666); diff --git a/misc/util.h b/misc/util.h index 476164bb..f3827dd4 100644 --- a/misc/util.h +++ b/misc/util.h @@ -22,6 +22,7 @@ extern char *journal_location_string; #define CREATE_FILE 0x0002 #define CHECK_FS_EXIST 0x0004 #define VERBOSE_CREATE 0x0008 +#define NO_SIZE 0x0010 #ifndef HAVE_STRCASECMP extern int strcasecmp (char *s1, char *s2); |