From: Karel Zak Date: Tue, 21 Apr 2015 12:35:18 +0000 (+0200) Subject: libfdisk: add fdisk_table_get_partition_by_partno() X-Git-Tag: v2.26.2~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fcdae490111b59e6deef74e84a9116639a3ce3ec;p=thirdparty%2Futil-linux.git libfdisk: add fdisk_table_get_partition_by_partno() Signed-off-by: Karel Zak --- diff --git a/libfdisk/docs/libfdisk-sections.txt b/libfdisk/docs/libfdisk-sections.txt index 2d5cd92fb7..4eee46f356 100644 --- a/libfdisk/docs/libfdisk-sections.txt +++ b/libfdisk/docs/libfdisk-sections.txt @@ -265,6 +265,7 @@ fdisk_reset_table fdisk_table_add_partition fdisk_table_get_nents fdisk_table_get_partition +fdisk_table_get_partition_by_partno fdisk_table_is_empty fdisk_table_next_partition fdisk_table_remove_partition diff --git a/libfdisk/src/libfdisk.h.in b/libfdisk/src/libfdisk.h.in index 78c0728116..2b8c0538d6 100644 --- a/libfdisk/src/libfdisk.h.in +++ b/libfdisk/src/libfdisk.h.in @@ -361,7 +361,6 @@ int fdisk_partition_cmp_partno(struct fdisk_partition *a, struct fdisk_partition *b); int fdisk_partition_partno_follow_default(struct fdisk_partition *pa, int enable); - extern int fdisk_partition_set_type(struct fdisk_partition *pa, struct fdisk_parttype *type); extern struct fdisk_parttype *fdisk_partition_get_type(struct fdisk_partition *pa); extern int fdisk_partition_set_name(struct fdisk_partition *pa, const char *name); @@ -415,6 +414,10 @@ extern int fdisk_table_next_partition( extern struct fdisk_partition *fdisk_table_get_partition( struct fdisk_table *tb, size_t n); +extern struct fdisk_partition *fdisk_table_get_partition_by_partno( + struct fdisk_table *tb, + size_t partno); + extern int fdisk_apply_table(struct fdisk_context *cxt, struct fdisk_table *tb); /* alignment.c */ diff --git a/libfdisk/src/libfdisk.sym b/libfdisk/src/libfdisk.sym index 9f720ffcab..52cdc1427c 100644 --- a/libfdisk/src/libfdisk.sym +++ b/libfdisk/src/libfdisk.sym @@ -243,4 +243,5 @@ local: FDISK_2.27 { fdisk_enable_bootbits_protection; fdisk_has_protected_bootbits; + fdisk_table_get_partition_by_partno; } FDISK_2.26; diff --git a/libfdisk/src/table.c b/libfdisk/src/table.c index ae6e7daab7..ea47951c14 100644 --- a/libfdisk/src/table.c +++ b/libfdisk/src/table.c @@ -158,6 +158,13 @@ int fdisk_table_next_partition( return rc; } +/** + * fdisk_table_get_partition: + * @tb: tab pointer + * @n: number of entry in table + * + * Returns: n-th entry from table or NULL + */ struct fdisk_partition *fdisk_table_get_partition( struct fdisk_table *tb, size_t n) @@ -179,6 +186,33 @@ struct fdisk_partition *fdisk_table_get_partition( return NULL; } +/** + * fdisk_table_get_partition_by_partno: + * @tb: tab pointer + * @partno: partition number + * + * Returns: partition with @partno or NULL. + */ +struct fdisk_partition *fdisk_table_get_partition_by_partno( + struct fdisk_table *tb, + size_t partno) +{ + 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 (pa->partno == partno) + return pa; + } + + return NULL; +} + /** * fdisk_table_add_partition * @tb: tab pointer