]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: add blkid_partlist_get_partition_by_partno()
authorKarel Zak <kzak@redhat.com>
Wed, 15 Jan 2014 09:52:16 +0000 (10:52 +0100)
committerKarel Zak <kzak@redhat.com>
Wed, 15 Jan 2014 09:52:16 +0000 (10:52 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
libblkid/docs/libblkid-sections.txt
libblkid/src/blkid.h.in
libblkid/src/blkid.sym
libblkid/src/partitions/partitions.c

index 69723459e6dfad6255b0be42fa84da4fa855f555..53cf84b7845b75d2afb9c1cd2c9ce7b0da66f37b 100644 (file)
@@ -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
index c140fc6b2ce438211d26b90ac8acb99b37925020..b10c28630a365b1181acc26658eb66838ae09795 100644 (file)
@@ -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);
index 7d3b71d2e5afe11ec03f5763c2593eb5fc195203..80cb4d487a9eb354237a1b934972f56a7ed58f0a 100644 (file)
@@ -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;
index f7d6c45331c0f5716986c10075aa698f9f7e52b1..f83b868cc4fe1a6739ae1d7c6b8b5bba6e981bce 100644 (file)
@@ -901,6 +901,35 @@ blkid_partition blkid_partlist_get_partition(blkid_partlist ls, int n)
        return &ls->parts[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
@@ -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)