summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2014-09-17 12:24:33 +0200
committerKarel Zak2014-10-07 14:55:32 +0200
commit2e73a998f4e8e5a330b9539d55ff6677a0df9d65 (patch)
treed5feff6d099daa085d29755cdf053ab2ec79558b
parentsfdisk: cleanup usage() and long options (diff)
downloadkernel-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.c29
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;
}