From 2928068a3ced58023c4e80f2b96b8b636d10b720 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 16 Apr 2015 17:40:28 +0200 Subject: [PATCH] sfdisk: accept empty partitions from dump Old sfdisk uses: dev/sdc2 : start= 0, size= 0, Id= 0 for undefined MBR partitions. Let's follow this behaviour. Reported-by: Ruediger Meier Signed-off-by: Karel Zak --- disk-utils/sfdisk.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c index 6645f5a39..f34a45adc 100644 --- a/disk-utils/sfdisk.c +++ b/disk-utils/sfdisk.c @@ -1120,6 +1120,22 @@ static char *sfdisk_fgets(struct fdisk_script *dp, } #endif +static int ignore_partition(struct fdisk_partition *pa) +{ + /* incomplete partition setting */ + if (!fdisk_partition_has_start(pa) && !fdisk_partition_start_is_default(pa)) + return 1; + if (!fdisk_partition_has_size(pa) && !fdisk_partition_end_is_default(pa)) + return 1; + + /* probably dump from old sfdisk with start=0 size=0 */ + if (fdisk_partition_has_start(pa) && fdisk_partition_get_start(pa) == 0 && + fdisk_partition_has_size(pa) && fdisk_partition_get_size(pa) == 0) + return 1; + + return 0; +} + /* * sfdisk [[-N] ] * @@ -1301,9 +1317,9 @@ static int command_fdisk(struct sfdisk *sf, int argc, char **argv) assert(pa); - if (!fdisk_partition_has_start(pa) && - !fdisk_partition_start_is_default(pa)) { - fdisk_info(sf->cxt, _("Ignoring partition %zu."), next_partno + 1); + if (ignore_partition(pa)) { + fdisk_info(sf->cxt, _("Ignoring partition.")); + next_partno++; continue; } if (!created) { /* create a new disklabel */