summaryrefslogtreecommitdiffstats
path: root/fdisks/fdiskdoslabel.c
diff options
context:
space:
mode:
authorKarel Zak2012-09-26 14:14:54 +0200
committerKarel Zak2012-09-27 13:38:13 +0200
commited470672bbbfeb160008cecb28c2a443e755d289 (patch)
tree4ad124f5ac82f45fd1944e2d3f0bb81cea77de90 /fdisks/fdiskdoslabel.c
parentfdisk: add fdisk_set_partition_type() (diff)
downloadkernel-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.c23
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);