diff options
author | Karel Zak | 2013-01-21 17:10:23 +0100 |
---|---|---|
committer | Karel Zak | 2013-03-11 12:47:31 +0100 |
commit | 47b8e7c00207dfcb34de66f1f9458268d4a90f9d (patch) | |
tree | a2f5cf0f894bdcfab9934ed200204f46721d9d2e /libfdisk | |
parent | libfdisk: cleanup fdisk_get_partition_type() returns (diff) | |
download | kernel-qcow2-util-linux-47b8e7c00207dfcb34de66f1f9458268d4a90f9d.tar.gz kernel-qcow2-util-linux-47b8e7c00207dfcb34de66f1f9458268d4a90f9d.tar.xz kernel-qcow2-util-linux-47b8e7c00207dfcb34de66f1f9458268d4a90f9d.zip |
libfdisk: add part_get_status operation
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libfdisk')
-rw-r--r-- | libfdisk/src/fdiskP.h | 5 | ||||
-rw-r--r-- | libfdisk/src/label.c | 19 | ||||
-rw-r--r-- | libfdisk/src/libfdisk.h | 6 |
3 files changed, 30 insertions, 0 deletions
diff --git a/libfdisk/src/fdiskP.h b/libfdisk/src/fdiskP.h index 8f9905d81..3a5ab4a7e 100644 --- a/libfdisk/src/fdiskP.h +++ b/libfdisk/src/fdiskP.h @@ -145,6 +145,11 @@ struct fdisk_label_operations { int (*part_set_type)(struct fdisk_context *cxt, struct fdisk_label *lb, int partnum, struct fdisk_parttype *t); + + /* returns FDISK_PARTSTAT_* flags */ + int (*part_get_status)(struct fdisk_context *cxt, struct fdisk_label *lb, + int partnum, int *status); + /* refresh alignment setting */ int (*reset_alignment)(struct fdisk_context *cxt, struct fdisk_label *lb); diff --git a/libfdisk/src/label.c b/libfdisk/src/label.c index 502df69b4..4716b94a6 100644 --- a/libfdisk/src/label.c +++ b/libfdisk/src/label.c @@ -229,6 +229,25 @@ size_t fdisk_get_nparttypes(struct fdisk_context *cxt) return cxt->label->nparttypes; } +/** + * fdisk_partition_is_used: + * @cxt: fdisk context + * @partnum: partition number + * @status: returns FDISK_PARTSTAT_* flags + * + * Returns 0 on success, otherwise, a corresponding error. + */ +int fdisk_partition_get_status(struct fdisk_context *cxt, int partnum, int *status) +{ + if (!cxt || !cxt->label) + return -EINVAL; + if (!cxt->label->op->part_get_status) + return -ENOSYS; + + return cxt->label->op->part_get_status(cxt, cxt->label, partnum, status); +} + + /* * Resets the current used label driver to initial state */ diff --git a/libfdisk/src/libfdisk.h b/libfdisk/src/libfdisk.h index 379fb4d47..967d21e9a 100644 --- a/libfdisk/src/libfdisk.h +++ b/libfdisk/src/libfdisk.h @@ -43,6 +43,11 @@ enum fdisk_labeltype { FDISK_DISKLABEL_ANY = -1 }; +enum { + FDISK_PARTSTAT_NONE, + FDISK_PARTSTAT_USED /* partition used */ +}; + /* init.c */ extern void fdisk_init_debug(int mask); @@ -90,6 +95,7 @@ extern int fdisk_set_partition_type(struct fdisk_context *cxt, int partnum, extern void fdisk_label_set_changed(struct fdisk_label *lb, int changed); extern int fdisk_label_is_changed(struct fdisk_label *lb); +extern int fdisk_partition_get_status(struct fdisk_context *cxt, int partnum, int *status); /* alignment.c */ extern int fdisk_reset_alignment(struct fdisk_context *cxt); |