diff options
author | Davidlohr Bueso | 2012-07-24 09:34:22 +0200 |
---|---|---|
committer | Karel Zak | 2012-07-24 09:34:22 +0200 |
commit | 0f639e54dfca37879545fc2e0efa8a509ca87b72 (patch) | |
tree | 85ee1ca1237c6ef790ce222db0ecf1a148ab9882 /fdisks/fdiskdoslabel.c | |
parent | fdisk: API: add write to label operations (diff) | |
download | kernel-qcow2-util-linux-0f639e54dfca37879545fc2e0efa8a509ca87b72.tar.gz kernel-qcow2-util-linux-0f639e54dfca37879545fc2e0efa8a509ca87b72.tar.xz kernel-qcow2-util-linux-0f639e54dfca37879545fc2e0efa8a509ca87b72.zip |
fdisk: API: add new partition to label operations
Signed-off-by: Karel Zak <kzak@redhat.com>
Signed-off-by: Davidlohr Bueso <dave@gnu.org>
Diffstat (limited to 'fdisks/fdiskdoslabel.c')
-rw-r--r-- | fdisks/fdiskdoslabel.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/fdisks/fdiskdoslabel.c b/fdisks/fdiskdoslabel.c index 398e5e040..fde31a7a8 100644 --- a/fdisks/fdiskdoslabel.c +++ b/fdisks/fdiskdoslabel.c @@ -481,7 +481,7 @@ static sector_t align_lba_in_range(struct fdisk_context *cxt, return lba; } -void dos_add_partition(struct fdisk_context *cxt, int n, int sys) +static void add_partition(struct fdisk_context *cxt, int n, int sys) { char mesg[256]; /* 48 does not suffice in Japanese */ int i, read = 0; @@ -640,17 +640,22 @@ static void add_logical(struct fdisk_context *cxt) partitions++; } printf(_("Adding logical partition %d\n"), partitions); - dos_add_partition(cxt, partitions - 1, LINUX_NATIVE); + add_partition(cxt, partitions - 1, LINUX_NATIVE); } /* * Ask the user for new partition type information (logical, extended). - * This function calls the actual partition adding logic - dos_add_partition. + * This function calls the actual partition adding logic - add_partition. + * + * API callback. */ -void dos_new_partition(struct fdisk_context *cxt) +static void dos_add_partition(struct fdisk_context *cxt, int partnum, int parttype) { int i, free_primary = 0; + /* default */ + parttype = LINUX_NATIVE; + for (i = 0; i < 4; i++) free_primary += !ptes[i].part_table->sys_ind; @@ -669,7 +674,7 @@ void dos_new_partition(struct fdisk_context *cxt) } else if (partitions >= MAXIMUM_PARTS) { printf(_("All logical partitions are in use\n")); printf(_("Adding a primary partition\n")); - dos_add_partition(cxt, get_partition(cxt, 0, 4), LINUX_NATIVE); + add_partition(cxt, get_partition(cxt, 0, 4), parttype); } else { char c, dflt, line[LINE_LENGTH]; @@ -691,7 +696,7 @@ void dos_new_partition(struct fdisk_context *cxt) if (c == 'p') { int i = get_nonexisting_partition(cxt, 0, 4); if (i >= 0) - dos_add_partition(cxt, i, LINUX_NATIVE); + add_partition(cxt, i, parttype); return; } else if (c == 'l' && extended_offset) { add_logical(cxt); @@ -699,7 +704,7 @@ void dos_new_partition(struct fdisk_context *cxt) } else if (c == 'e' && !extended_offset) { int i = get_nonexisting_partition(cxt, 0, 4); if (i >= 0) - dos_add_partition(cxt, i, EXTENDED); + add_partition(cxt, i, EXTENDED); return; } else printf(_("Invalid partition type `%c'\n"), c); @@ -752,5 +757,6 @@ const struct fdisk_label dos_label = .name = "dos", .probe = dos_probe_label, .write = dos_write_disklabel, + .part_add = dos_add_partition, .part_delete = dos_delete_partition, }; |