diff options
author | Karel Zak | 2012-09-26 14:14:54 +0200 |
---|---|---|
committer | Karel Zak | 2012-09-27 13:38:13 +0200 |
commit | ed470672bbbfeb160008cecb28c2a443e755d289 (patch) | |
tree | 4ad124f5ac82f45fd1944e2d3f0bb81cea77de90 /fdisks/fdiskdoslabel.c | |
parent | fdisk: add fdisk_set_partition_type() (diff) | |
download | kernel-qcow2-util-linux-ed470672bbbfeb160008cecb28c2a443e755d289.tar.gz kernel-qcow2-util-linux-ed470672bbbfeb160008cecb28c2a443e755d289.tar.xz kernel-qcow2-util-linux-ed470672bbbfeb160008cecb28c2a443e755d289.zip |
fdisk: use fdisk_parttype in add_partition
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'fdisks/fdiskdoslabel.c')
-rw-r--r-- | fdisks/fdiskdoslabel.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/fdisks/fdiskdoslabel.c b/fdisks/fdiskdoslabel.c index d391126ec..2436af533 100644 --- a/fdisks/fdiskdoslabel.c +++ b/fdisks/fdiskdoslabel.c @@ -487,15 +487,17 @@ static sector_t align_lba_in_range(struct fdisk_context *cxt, return lba; } -static void add_partition(struct fdisk_context *cxt, int n, int sys) +static void add_partition(struct fdisk_context *cxt, int n, struct fdisk_parttype *t) { char mesg[256]; /* 48 does not suffice in Japanese */ - int i, read = 0; + int i, sys, read = 0; struct partition *p = ptes[n].part_table; struct partition *q = ptes[ext_index].part_table; sector_t start, stop = 0, limit, temp, first[partitions], last[partitions]; + sys = t ? t->type : LINUX_NATIVE; + if (p && p->sys_ind) { printf(_("Partition %d is already defined. Delete " "it before re-adding it.\n"), n + 1); @@ -646,7 +648,7 @@ static void add_logical(struct fdisk_context *cxt) partitions++; } printf(_("Adding logical partition %d\n"), partitions); - add_partition(cxt, partitions - 1, LINUX_NATIVE); + add_partition(cxt, partitions - 1, NULL); } static int dos_verify_disklabel(struct fdisk_context *cxt) @@ -722,13 +724,10 @@ static int dos_verify_disklabel(struct fdisk_context *cxt) static void dos_add_partition( struct fdisk_context *cxt, int partnum __attribute__ ((__unused__)), - int parttype) + struct fdisk_parttype *t) { int i, free_primary = 0; - /* default */ - parttype = LINUX_NATIVE; - for (i = 0; i < 4; i++) free_primary += !ptes[i].part_table->sys_ind; @@ -747,7 +746,7 @@ static void dos_add_partition( } else if (partitions >= MAXIMUM_PARTS) { printf(_("All logical partitions are in use\n")); printf(_("Adding a primary partition\n")); - add_partition(cxt, get_partition(cxt, 0, 4), parttype); + add_partition(cxt, get_partition(cxt, 0, 4), t); } else { char c, dflt, line[LINE_LENGTH]; @@ -769,15 +768,17 @@ static void dos_add_partition( if (c == 'p') { int i = get_nonexisting_partition(cxt, 0, 4); if (i >= 0) - add_partition(cxt, i, parttype); + add_partition(cxt, i, t); return; } else if (c == 'l' && extended_offset) { add_logical(cxt); return; } else if (c == 'e' && !extended_offset) { int i = get_nonexisting_partition(cxt, 0, 4); - if (i >= 0) - add_partition(cxt, i, EXTENDED); + if (i >= 0) { + t = fdisk_get_parttype_from_code(cxt, EXTENDED); + add_partition(cxt, i, t); + } return; } else printf(_("Invalid partition type `%c'\n"), c); |