From 69b4090f81c06f12bfd4a9003020f540aebb6442 Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Sun, 9 Nov 2008 17:54:47 +0100 Subject: [PATCH] Add rpmdbExtendIterator to do repeated searches --- lib/rpmdb.c | 15 +++++++++++++++ lib/rpmdb_internal.h | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/lib/rpmdb.c b/lib/rpmdb.c index f1fd8d1..5065f6e 100644 --- a/lib/rpmdb.c +++ b/lib/rpmdb.c @@ -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 diff --git a/lib/rpmdb_internal.h b/lib/rpmdb_internal.h index 7ca5e0d..010a28d 100644 --- a/lib/rpmdb_internal.h +++ b/lib/rpmdb_internal.h @@ -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). -- 2.7.4