summaryrefslogtreecommitdiffstats
path: root/disk-utils/sfdisk.c
diff options
context:
space:
mode:
authorKarel Zak2014-09-11 12:52:49 +0200
committerKarel Zak2014-10-07 14:55:31 +0200
commit0ecf3ab50467da70bafbf3f9e19301e16409b662 (patch)
treef3b79cfb608775fc6d72b694fb10e1c787af4a45 /disk-utils/sfdisk.c
parentlibfdisk: add fdisk_set_partition() (diff)
downloadkernel-qcow2-util-linux-0ecf3ab50467da70bafbf3f9e19301e16409b662.tar.gz
kernel-qcow2-util-linux-0ecf3ab50467da70bafbf3f9e19301e16409b662.tar.xz
kernel-qcow2-util-linux-0ecf3ab50467da70bafbf3f9e19301e16409b662.zip
libfdisk: (dos) implement fdisk_set_partition() backend
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'disk-utils/sfdisk.c')
-rw-r--r--disk-utils/sfdisk.c83
1 files changed, 1 insertions, 82 deletions
diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
index c845c2d8e..c9e934e88 100644
--- a/disk-utils/sfdisk.c
+++ b/disk-utils/sfdisk.c
@@ -360,87 +360,6 @@ static int command_dump(struct sfdisk *sf, int argc, char **argv)
return 0;
}
-/* appply things from @tpl template to the on-disk partition @n */
-static int sfdisk_modify_partition(struct sfdisk *sf,
- struct fdisk_partition *tpl,
- size_t n)
-{
- struct fdisk_partition *pa = NULL;
- const struct fdisk_parttype *type;
- const char *data;
- sector_t num;
- size_t new_partno = 0;
- int rc = 0;
-
- /* get the current partition */
- rc = fdisk_get_partition(sf->cxt, n, &pa);
- if (rc)
- goto done;
-
- assert(n == fdisk_partition_get_partno(pa));
-
- /* uuid */
- data = fdisk_partition_get_uuid(tpl);
- if (data) {
- rc = fdisk_partition_set_uuid(pa, data);
- if (rc)
- goto done;
- }
-
- /* name */
- data = fdisk_partition_get_name(tpl);
- if (data) {
- rc = fdisk_partition_set_name(pa, data);
- if (rc)
- goto done;
- }
-
- /* attributes
- data = fdisk_partition_get_attrs(tpl);
- if (data) {
- rc = fdisk_partition_set_attrs(pa, data);
- if (rc)
- goto done;
- }*/
-
- /* type */
- type = fdisk_partition_get_type(tpl);
- if (type) {
- rc = fdisk_partition_set_type(pa, type);
- if (rc)
- goto done;
- }
-
- /* size */
- num = fdisk_partition_get_size(tpl);
- if (num) {
- rc = fdisk_partition_set_size(pa, num);
- if (rc)
- goto done;
- }
-
- /* start */
- num = fdisk_partition_get_start(tpl);
- if (num) {
- rc = fdisk_partition_set_start(pa, num);
- if (rc)
- goto done;
- }
-
- /* drop the old partition */
- rc = fdisk_delete_partition(sf->cxt, n);
- if (rc)
- goto done;
-
- /* add a new partition */
- rc = fdisk_add_partition(sf->cxt, pa, &new_partno);
- assert(new_partno == n);
-done:
- fdisk_unref_partition(pa);
- return rc;
-}
-
-
static void sfdisk_print_partition(struct sfdisk *sf, size_t n)
{
struct fdisk_partition *pa = NULL;
@@ -685,7 +604,7 @@ static int command_fdisk(struct sfdisk *sf, int argc, char **argv)
created = !rc;
}
if (!rc && partno >= 0) { /* -N <partno>, modify partition */
- rc = sfdisk_modify_partition(sf, pa, partno);
+ rc = fdisk_set_partition(sf->cxt, partno, pa);
if (rc == 0)
rc = SFDISK_DONE_ASK;
break;