From: Karel Zak Date: Mon, 13 Apr 2015 08:29:00 +0000 (+0200) Subject: libfdisk: (dos) retain existing boot flag when resizing a partition X-Git-Tag: v2.27-rc1~279 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d156d92eb538f9dbc077a2dd181a48d8fdc65cd;p=thirdparty%2Futil-linux.git libfdisk: (dos) retain existing boot flag when resizing a partition Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1210912 Signed-off-by: Karel Zak Co-Author: awilliam@redhat.com --- diff --git a/libfdisk/src/dos.c b/libfdisk/src/dos.c index dce9829eb1..6468071ffb 100644 --- a/libfdisk/src/dos.c +++ b/libfdisk/src/dos.c @@ -1221,7 +1221,7 @@ static int add_partition(struct fdisk_context *cxt, size_t n, } } - set_partition(cxt, n, 0, start, stop, sys, pa && pa->boot == 1 ? 1 : 0); + set_partition(cxt, n, 0, start, stop, sys, fdisk_partition_is_bootable(pa)); if (n > 4) { struct pte *pe = self_pte(cxt, n); set_partition(cxt, n - 1, 1, pe->offset, stop, @@ -1963,13 +1963,15 @@ static int dos_set_partition(struct fdisk_context *cxt, size_t n, set_partition(cxt, n, 0, start, start + size - 1, pa->type ? pa->type->code : p->sys_ind, - pa->boot == 1); + FDISK_IS_UNDEF(pa->boot) ? + p->boot_ind == ACTIVE_FLAG : + fdisk_partition_is_bootable(pa)); } else { DBG(LABEL, ul_debug("DOS: keep size, modify properties")); if (pa->type) p->sys_ind = pa->type->code; if (!FDISK_IS_UNDEF(pa->boot)) - p->boot_ind = pa->boot == 1 ? ACTIVE_FLAG : 0; + p->boot_ind = fdisk_partition_is_bootable(pa) ? ACTIVE_FLAG : 0; } partition_set_changed(cxt, n, 1); diff --git a/libfdisk/src/partition.c b/libfdisk/src/partition.c index 640cd5a1dc..114cac56eb 100644 --- a/libfdisk/src/partition.c +++ b/libfdisk/src/partition.c @@ -757,8 +757,7 @@ int fdisk_partition_to_string(struct fdisk_partition *pa, } break; case FDISK_FIELD_BOOT: - if (fdisk_partition_is_bootable(pa)) - rc = asprintf(&p, "%c", pa->boot ? '*' : ' '); + p = fdisk_partition_is_bootable(pa) ? strdup("*") : NULL; break; case FDISK_FIELD_START: if (fdisk_partition_has_start(pa)) {