From: Karel Zak Date: Wed, 10 Jun 2015 10:45:53 +0000 (+0200) Subject: fdisk: differentiate between + and +{M,G,...} X-Git-Tag: v2.27-rc1~153 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c73e5096d4f3d7a4239f812c904010dd0b3f1cb;p=thirdparty%2Futil-linux.git fdisk: differentiate between + and +{M,G,...} Signed-off-by: Karel Zak --- diff --git a/disk-utils/fdisk.c b/disk-utils/fdisk.c index 63eacad4f1..a4130afb9e 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 95420ab800..52836ebf11 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 e9798bdf67..007840f602 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.")); } }