return hi;
}
-int headerNext(HeaderIterator hi, rpmtd td)
+static indexEntry nextIndex(HeaderIterator hi)
{
Header h = hi->h;
int slot;
indexEntry entry = NULL;
- int rc;
-
- assert(td != NULL);
- rpmtdReset(td);
for (slot = hi->next_index; slot < h->indexUsed; slot++) {
entry = h->index + slot;
}
hi->next_index = slot;
if (entry == NULL || slot >= h->indexUsed)
- return 0;
+ return NULL;
hi->next_index++;
+ return entry;
+}
- td->tag = entry->info.tag;
+rpmTag headerNextTag(HeaderIterator hi)
+{
+ indexEntry entry = nextIndex(hi);
+ return entry ? entry->info.tag : RPMTAG_NOT_FOUND;
+}
- rc = copyTdEntry(entry, td, HEADERGET_DEFAULT);
+int headerNext(HeaderIterator hi, rpmtd td)
+{
+ indexEntry entry = nextIndex(hi);
+ int rc = 0;
- /* XXX 1 on success */
+ rpmtdReset(td);
+ if (entry) {
+ td->tag = entry->info.tag;
+ rc = copyTdEntry(entry, td, HEADERGET_DEFAULT);
+ }
return ((rc == 1) ? 1 : 0);
}
HeaderIterator headerInitIterator(Header h);
/** \ingroup header
- * Return next tag from header.
+ * Return next tag contents from header.
* @param hi header tag iterator
* @retval td tag data container
* @return 1 on success, 0 on failure
int headerNext(HeaderIterator hi, rpmtd td);
/** \ingroup header
+ * Return next tag number from header.
+ * @param hi header tag iterator
+ * @return next tag, RPMTAG_NOT_FOUND to stop iteration
+ */
+rpmTag headerNextTag(HeaderIterator hi);
+
+/** \ingroup header
* Return name, version, release strings from header.
* @param h header
* @retval *np name pointer (or NULL)