From 635d9aa5dbcc734cabab1befeb99838630a7d9c0 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Thu, 13 Apr 2017 17:52:35 +0100 Subject: [PATCH] libblkid: add blkid_partitions_get_name() This new function can be use to enquiry what partition names libblkid is aware of. First use of this information will be in partx(8) to make bash completion to work without a magic list. Signed-off-by: Sami Kerola --- libblkid/docs/libblkid-sections.txt | 1 + libblkid/src/blkid.h.in | 1 + libblkid/src/libblkid.sym | 1 + libblkid/src/partitions/partitions.c | 16 ++++++++++++++++ 4 files changed, 19 insertions(+) diff --git a/libblkid/docs/libblkid-sections.txt b/libblkid/docs/libblkid-sections.txt index 78db25ec98..00d553ee10 100644 --- a/libblkid/docs/libblkid-sections.txt +++ b/libblkid/docs/libblkid-sections.txt @@ -86,6 +86,7 @@ blkid_probe_invert_partitions_filter blkid_probe_reset_partitions_filter blkid_known_pttype +blkid_partitions_get_name blkid_partition_get_name blkid_partition_get_flags diff --git a/libblkid/src/blkid.h.in b/libblkid/src/blkid.h.in index 06e2c1771d..e8e8fa5634 100644 --- a/libblkid/src/blkid.h.in +++ b/libblkid/src/blkid.h.in @@ -326,6 +326,7 @@ extern unsigned long blkid_topology_get_physical_sector_size(blkid_topology tp) * partitions probing */ extern int blkid_known_pttype(const char *pttype); +extern int blkid_partitions_get_name(const size_t idx, const char **name); extern int blkid_probe_enable_partitions(blkid_probe pr, int enable) __ul_attribute__((nonnull)); diff --git a/libblkid/src/libblkid.sym b/libblkid/src/libblkid.sym index cd76d6592a..164e115b57 100644 --- a/libblkid/src/libblkid.sym +++ b/libblkid/src/libblkid.sym @@ -167,4 +167,5 @@ BLKID_2.25 { BLKID_2.30 { blkid_probe_set_sectorsize; + blkid_partitions_get_name; } BLKID_2.25; diff --git a/libblkid/src/partitions/partitions.c b/libblkid/src/partitions/partitions.c index 533209761c..e2453ba8a3 100644 --- a/libblkid/src/partitions/partitions.c +++ b/libblkid/src/partitions/partitions.c @@ -886,6 +886,22 @@ int blkid_known_pttype(const char *pttype) return 0; } +/** + * blkid_partitions_get_name: + * @idx: number >= 0 + * @name: returns name of a supported partition + * + * Returns: -1 if @idx is out of range, or 0 on success. + */ +int blkid_partitions_get_name(const size_t idx, const char **name) +{ + if (idx < ARRAY_SIZE(idinfos)) { + *name = idinfos[idx]->name; + return 0; + } + return -1; +} + /** * blkid_partlist_numof_partitions: * @ls: partitions list -- 2.47.2