Add rpmdbExtendIterator to do repeated searches
authorFlorian Festi <ffesti@redhat.com>
Sun, 9 Nov 2008 16:54:47 +0000 (17:54 +0100)
committerFlorian Festi <ffesti@redhat.com>
Mon, 24 Nov 2008 13:03:16 +0000 (14:03 +0100)
lib/rpmdb.c
lib/rpmdb_internal.h

index f1fd8d1..5065f6e 100644 (file)
@@ -2335,6 +2335,21 @@ rpmdbMatchIterator rpmdbInitIterator(rpmdb db, rpmTag rpmtag,
     return mi;
 }
 
+/** \ingroup rpmdb
+ * Return database iterator.
+ * @param mi           rpm database iterator
+ * @param keyp         key data (NULL for sequential access)
+ * @param keylen       key data length (0 will use strlen(keyp))
+ * @return             0 on success
+ */
+int rpmdbExtendIterator(rpmdbMatchIterator mi,
+                       const void * keyp, size_t keylen)
+{
+    mi->mi_key.data = (void *) keyp;
+    mi->mi_key.size = keylen ? keylen : strlen(keyp);
+    return rpmdbGrowIterator(mi, 0);
+}
+
 /*
  * Convert current tag data to db key
  * @param tagdata      Tag data container
index 7ca5e0d..010a28d 100644 (file)
@@ -661,6 +661,16 @@ unsigned int dbiIndexRecordOffset(dbiIndexSet set, int recno);
 RPM_GNUC_INTERNAL
 unsigned int dbiIndexRecordFileNumber(dbiIndexSet set, int recno);
 
+/** \ingroup rpmdb
+ * Return database iterator.
+ * @param mi           rpm database iterator
+ * @param keyp         key data (NULL for sequential access)
+ * @param keylen       key data length (0 will use strlen(keyp))
+ * @return             0 on success
+ */
+int rpmdbExtendIterator(rpmdbMatchIterator mi,
+                       const void * keyp, size_t keylen);
+
 #ifndef __APPLE__
 /**
  *  * Mergesort, same arguments as qsort(2).