diff options
author | Karel Zak | 2015-06-10 12:45:53 +0200 |
---|---|---|
committer | Karel Zak | 2015-06-10 13:06:15 +0200 |
commit | 8c73e5096d4f3d7a4239f812c904010dd0b3f1cb (patch) | |
tree | d7779c9873db808591a90df24f4a786ad1125c12 | |
parent | libblkid: (nilfs2) check size for backup superblock only (diff) | |
download | kernel-qcow2-util-linux-8c73e5096d4f3d7a4239f812c904010dd0b3f1cb.tar.gz kernel-qcow2-util-linux-8c73e5096d4f3d7a4239f812c904010dd0b3f1cb.tar.xz kernel-qcow2-util-linux-8c73e5096d4f3d7a4239f812c904010dd0b3f1cb.zip |
fdisk: differentiate between +<sector> and +<size>{M,G,...}
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r-- | disk-utils/fdisk.c | 2 | ||||
-rw-r--r-- | libfdisk/src/dos.c | 9 | ||||
-rw-r--r-- | libfdisk/src/gpt.c | 7 |
3 files changed, 7 insertions, 11 deletions
diff --git a/disk-utils/fdisk.c b/disk-utils/fdisk.c index 63eacad4f..a4130afb9 100644 --- a/disk-utils/fdisk.c +++ b/disk-utils/fdisk.c @@ -311,7 +311,7 @@ static int ask_offset(struct fdisk_context *cxt, num, sig, pwr, sig ? "relative" : "absolute")); if (num >= low && num <= high) { - if (sig) + if (sig && pwr) fdisk_ask_number_set_relative(ask, 1); return fdisk_ask_number_set_result(ask, num); } diff --git a/libfdisk/src/dos.c b/libfdisk/src/dos.c index 95420ab80..52836ebf1 100644 --- a/libfdisk/src/dos.c +++ b/libfdisk/src/dos.c @@ -1197,11 +1197,10 @@ static int add_partition(struct fdisk_context *cxt, size_t n, stop = fdisk_ask_number_get_result(ask); isrel = fdisk_ask_number_is_relative(ask); - if (isrel && stop == start) { - fdisk_warnx(cxt, _("Value out of range.")); - continue; /* +0 */ - } - break; + if (stop >= start && stop <= limit) + break; + + fdisk_warnx(cxt, _("Value out of range.")); } if (fdisk_use_cylinders(cxt)) { diff --git a/libfdisk/src/gpt.c b/libfdisk/src/gpt.c index e9798bdf6..007840f60 100644 --- a/libfdisk/src/gpt.c +++ b/libfdisk/src/gpt.c @@ -2164,11 +2164,6 @@ static int gpt_add_partition( user_l = fdisk_ask_number_get_result(ask); if (fdisk_ask_number_is_relative(ask)) { - if (user_l == user_f) { - fdisk_warnx(cxt, _("Value out of range.")); - continue; /* +0 */ - } - user_l = fdisk_align_lba_in_range(cxt, user_l, user_f, dflt_l); if (user_l > user_f) user_l -= 1; @@ -2176,6 +2171,8 @@ static int gpt_add_partition( if (user_l >= user_f && user_l <= disk_l) break; + + fdisk_warnx(cxt, _("Value out of range.")); } } |