diff options
author | Karel Zak | 2014-01-15 10:52:16 +0100 |
---|---|---|
committer | Karel Zak | 2014-01-15 10:52:16 +0100 |
commit | a3ebe0eca3350ec42533ea54eeb8d6c53ae27eae (patch) | |
tree | 03e9539ee6f145c800bd985d3223e123641625a9 /libblkid | |
parent | lib/sysfs: fix scanf format string [coverity scan] (diff) | |
download | kernel-qcow2-util-linux-a3ebe0eca3350ec42533ea54eeb8d6c53ae27eae.tar.gz kernel-qcow2-util-linux-a3ebe0eca3350ec42533ea54eeb8d6c53ae27eae.tar.xz kernel-qcow2-util-linux-a3ebe0eca3350ec42533ea54eeb8d6c53ae27eae.zip |
libblkid: add blkid_partlist_get_partition_by_partno()
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libblkid')
-rw-r--r-- | libblkid/docs/libblkid-sections.txt | 1 | ||||
-rw-r--r-- | libblkid/src/blkid.h.in | 2 | ||||
-rw-r--r-- | libblkid/src/blkid.sym | 7 | ||||
-rw-r--r-- | libblkid/src/partitions/partitions.c | 30 |
4 files changed, 40 insertions, 0 deletions
diff --git a/libblkid/docs/libblkid-sections.txt b/libblkid/docs/libblkid-sections.txt index 69723459e..53cf84b78 100644 --- a/libblkid/docs/libblkid-sections.txt +++ b/libblkid/docs/libblkid-sections.txt @@ -100,6 +100,7 @@ blkid_partition_is_logical blkid_partition_is_primary <SUBSECTION> blkid_partlist_get_partition +blkid_partlist_get_partition_by_partno blkid_partlist_numof_partitions blkid_partlist_devno_to_partition blkid_partlist_get_table diff --git a/libblkid/src/blkid.h.in b/libblkid/src/blkid.h.in index c140fc6b2..b10c28630 100644 --- a/libblkid/src/blkid.h.in +++ b/libblkid/src/blkid.h.in @@ -327,7 +327,9 @@ extern blkid_partlist blkid_probe_get_partitions(blkid_probe pr); extern int blkid_partlist_numof_partitions(blkid_partlist ls); extern blkid_parttable blkid_partlist_get_table(blkid_partlist ls); extern blkid_partition blkid_partlist_get_partition(blkid_partlist ls, int n); +extern blkid_partition blkid_partlist_get_partition_by_partno(blkid_partlist ls, int n); extern blkid_partition blkid_partlist_devno_to_partition(blkid_partlist ls, dev_t devno); +extern blkid_partition blkid_partlist_get_partition_by_partno(blkid_partlist ls, int n); extern blkid_parttable blkid_partition_get_table(blkid_partition par); extern const char *blkid_partition_get_name(blkid_partition par); diff --git a/libblkid/src/blkid.sym b/libblkid/src/blkid.sym index 7d3b71d2e..80cb4d487 100644 --- a/libblkid/src/blkid.sym +++ b/libblkid/src/blkid.sym @@ -155,3 +155,10 @@ global: blkid_parttable_get_id; blkid_init_debug; } BLKID_2.21; + +/* + * symbols since util-linux 2.25 + */ +BLKID_2.25 { + blkid_partlist_get_partition_by_partno; +} BLKID_2.23; diff --git a/libblkid/src/partitions/partitions.c b/libblkid/src/partitions/partitions.c index f7d6c4533..f83b868cc 100644 --- a/libblkid/src/partitions/partitions.c +++ b/libblkid/src/partitions/partitions.c @@ -902,6 +902,35 @@ blkid_partition blkid_partlist_get_partition(blkid_partlist ls, int n) } /** + * blkid_partlist_get_partition_by_partno + * @ls: partitions list + * @n: the partition number (e.g. 'N' from sda'N') + * + * This does not assume any order of the input blkid_partlist. And correctly + * handles "out of order" partition tables. partition N is located after + * partition N+1 on the disk. + * + * Returns: partition object or NULL in case or error. + */ +blkid_partition blkid_partlist_get_partition_by_partno(blkid_partlist ls, int n) +{ + int i, nparts; + blkid_partition par; + + if (!ls) + return NULL; + + nparts = blkid_partlist_numof_partitions(ls); + for (i = 0; i < nparts; i++) { + par = blkid_partlist_get_partition(ls, i); + if (n == blkid_partition_get_partno(par)) + return par; + } + return NULL; +} + + +/** * blkid_partlist_devno_to_partition: * @ls: partitions list * @devno: requested partition @@ -1001,6 +1030,7 @@ blkid_partition blkid_partlist_devno_to_partition(blkid_partlist ls, dev_t devno return NULL; } + int blkid_parttable_set_uuid(blkid_parttable tab, const unsigned char *id) { if (!tab) |