From: Karel Zak Date: Wed, 22 Jan 2014 10:52:50 +0000 (+0100) Subject: libfdisk: add fdisk_table_get_partition() X-Git-Tag: v2.25-rc1~506 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=28b6a23caecc14623dd94a4b3adae07e1867b6c4;p=thirdparty%2Futil-linux.git libfdisk: add fdisk_table_get_partition() Signed-off-by: Karel Zak --- diff --git a/libfdisk/src/libfdisk.h b/libfdisk/src/libfdisk.h index f3cc0d3901..8a9cc926ec 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 9a19dd39f6..5d3a02c679 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