diff options
author | Karel Zak | 2014-09-17 12:24:33 +0200 |
---|---|---|
committer | Karel Zak | 2014-10-07 14:55:32 +0200 |
commit | 2e73a998f4e8e5a330b9539d55ff6677a0df9d65 (patch) | |
tree | d5feff6d099daa085d29755cdf053ab2ec79558b | |
parent | sfdisk: cleanup usage() and long options (diff) | |
download | kernel-qcow2-util-linux-2e73a998f4e8e5a330b9539d55ff6677a0df9d65.tar.gz kernel-qcow2-util-linux-2e73a998f4e8e5a330b9539d55ff6677a0df9d65.tar.xz kernel-qcow2-util-linux-2e73a998f4e8e5a330b9539d55ff6677a0df9d65.zip |
sfdisk: use fdisk_set_partition_type()
This is more simple than the generic fdisk_set_partition() API.
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r-- | disk-utils/sfdisk.c | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c index 3cc932855..18a646bb0 100644 --- a/disk-utils/sfdisk.c +++ b/disk-utils/sfdisk.c @@ -460,7 +460,6 @@ static int command_parttype(struct sfdisk *sf, int argc, char **argv) int rc; size_t partno, n; struct fdisk_label *lb = NULL; - struct fdisk_partition *pa = NULL; struct fdisk_parttype *type = NULL; const char *devname = NULL, *typestr = NULL; @@ -497,6 +496,7 @@ static int command_parttype(struct sfdisk *sf, int argc, char **argv) /* print partition type */ if (!typestr) { const struct fdisk_parttype *t = NULL; + struct fdisk_partition *pa = NULL; if (fdisk_get_partition(sf->cxt, partno - 1, &pa) == 0) t = fdisk_partition_get_type(pa); @@ -510,36 +510,25 @@ static int command_parttype(struct sfdisk *sf, int argc, char **argv) printf("%s\n", fdisk_parttype_get_string(t)); fdisk_unref_partition(pa); - fdisk_deassign_device(sf->cxt, 0); + fdisk_deassign_device(sf->cxt, 1); return 0; } /* parse <type> and apply yo PT */ type = fdisk_label_parse_parttype(lb, typestr); - if (!type || fdisk_parttype_is_unknown(type)) { - rc = -EINVAL; - warnx(_("failed to parse %s partition type '%s'"), + if (!type || fdisk_parttype_is_unknown(type)) + errx(EXIT_FAILURE, _("failed to parse %s partition type '%s'"), fdisk_label_get_name(lb), typestr); - goto done; - } - pa = fdisk_new_partition(); - if (!pa) - err(EXIT_FAILURE, _("failed to allocate partition")); - rc = fdisk_partition_set_type(pa, type); + else if (fdisk_set_partition_type(sf->cxt, partno - 1, type) != 0) + errx(EXIT_FAILURE, _("%s: partition %zu: failed to set partition type"), + devname, partno); - if (!rc) { - rc = fdisk_set_partition(sf->cxt, partno - 1, pa); /* apply to disklabel */ - if (rc) - warnx(_("%s: partition %zu: failed to appply type to disk label"), - devname, partno); - } -done: - fdisk_unref_partition(pa); + fdisk_free_parttype(type); if (!rc) rc = fdisk_write_disklabel(sf->cxt); if (!rc) - rc = fdisk_deassign_device(sf->cxt, 1); + rc = fdisk_deassign_device(sf->cxt, 0); return rc; } |