summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2015-06-10 12:45:53 +0200
committerKarel Zak2015-06-10 13:06:15 +0200
commit8c73e5096d4f3d7a4239f812c904010dd0b3f1cb (patch)
treed7779c9873db808591a90df24f4a786ad1125c12
parentlibblkid: (nilfs2) check size for backup superblock only (diff)
downloadkernel-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.c2
-rw-r--r--libfdisk/src/dos.c9
-rw-r--r--libfdisk/src/gpt.c7
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."));
}
}