diff options
author | Karel Zak | 2014-01-22 11:52:50 +0100 |
---|---|---|
committer | Karel Zak | 2014-03-11 11:35:13 +0100 |
commit | 28b6a23caecc14623dd94a4b3adae07e1867b6c4 (patch) | |
tree | b275f876ef973e3d04e688ab14fcbe2ced416597 /libfdisk | |
parent | cfdisk: add menu action functions (diff) | |
download | kernel-qcow2-util-linux-28b6a23caecc14623dd94a4b3adae07e1867b6c4.tar.gz kernel-qcow2-util-linux-28b6a23caecc14623dd94a4b3adae07e1867b6c4.tar.xz kernel-qcow2-util-linux-28b6a23caecc14623dd94a4b3adae07e1867b6c4.zip |
libfdisk: add fdisk_table_get_partition()
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libfdisk')
-rw-r--r-- | libfdisk/src/libfdisk.h | 5 | ||||
-rw-r--r-- | libfdisk/src/table.c | 21 |
2 files changed, 26 insertions, 0 deletions
diff --git a/libfdisk/src/libfdisk.h b/libfdisk/src/libfdisk.h index f3cc0d390..8a9cc926e 100644 --- a/libfdisk/src/libfdisk.h +++ b/libfdisk/src/libfdisk.h @@ -228,6 +228,11 @@ extern int fdisk_table_next_partition( struct fdisk_table *tb, struct fdisk_iter *itr, struct fdisk_partition **pa); + +extern struct fdisk_partition *fdisk_table_get_partition( + struct fdisk_table *tb, + size_t n); + /* alignment.c */ extern int fdisk_reset_alignment(struct fdisk_context *cxt); extern int fdisk_reset_device_properties(struct fdisk_context *cxt); diff --git a/libfdisk/src/table.c b/libfdisk/src/table.c index 9a19dd39f..5d3a02c67 100644 --- a/libfdisk/src/table.c +++ b/libfdisk/src/table.c @@ -148,6 +148,27 @@ int fdisk_table_next_partition( return rc; } +struct fdisk_partition *fdisk_table_get_partition( + struct fdisk_table *tb, + size_t n) +{ + struct fdisk_partition *pa = NULL; + struct fdisk_iter itr; + + if (!tb) + return NULL; + + fdisk_reset_iter(&itr, FDISK_ITER_FORWARD); + + while (fdisk_table_next_partition(tb, &itr, &pa) == 0) { + if (n == 0) + return pa; + n--; + } + + return NULL; +} + /** * fdisk_table_add_partition * @tb: tab pointer |