summaryrefslogtreecommitdiffstats
path: root/libfdisk
diff options
context:
space:
mode:
authorKarel Zak2015-01-20 14:10:08 +0100
committerKarel Zak2015-01-20 14:20:47 +0100
commitce9f568c25cc444a8796c599f2539864ab666d5f (patch)
tree541e928dd4c1d3e5a05e3decacbfde90cebde21a /libfdisk
parentlibfdisk: (docs) fix typo (diff)
downloadkernel-qcow2-util-linux-ce9f568c25cc444a8796c599f2539864ab666d5f.tar.gz
kernel-qcow2-util-linux-ce9f568c25cc444a8796c599f2539864ab666d5f.tar.xz
kernel-qcow2-util-linux-ce9f568c25cc444a8796c599f2539864ab666d5f.zip
libfdisk: accept Start offset in {B,M,G..}iB in sfdisk scripts
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libfdisk')
-rw-r--r--libfdisk/src/script.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/libfdisk/src/script.c b/libfdisk/src/script.c
index c75494a2e..684c01401 100644
--- a/libfdisk/src/script.c
+++ b/libfdisk/src/script.c
@@ -641,9 +641,12 @@ static int parse_script_line(struct fdisk_script *dp, char *s)
p = (char *) skip_blank(p);
if (!strncasecmp(p, "start=", 6)) {
+ int pow = 0;
p += 6;
- rc = next_number(&p, &num, NULL);
+ rc = next_number(&p, &num, &pow);
if (!rc) {
+ if (pow) /* specified as <num><suffix> */
+ num /= dp->cxt->sector_size;
fdisk_partition_set_start(pa, num);
fdisk_partition_start_follow_default(pa, 0);
}
@@ -800,9 +803,13 @@ static int parse_commas_line(struct fdisk_script *dp, char *s)
if (*p == ',' || *p == ';')
fdisk_partition_start_follow_default(pa, 1);
else {
- rc = next_number(&p, &num, NULL);
- if (!rc)
+ int pow = 0;
+ rc = next_number(&p, &num, &pow);
+ if (!rc) {
+ if (pow) /* specified as <num><suffix> */
+ num /= dp->cxt->sector_size;
fdisk_partition_set_start(pa, num);
+ }
fdisk_partition_start_follow_default(pa, 0);
}
break;