summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2014-10-28 10:01:53 +0200
committerPanu Matilainen <pmatilai@redhat.com>2016-11-02 10:41:53 +0200
commit973bdd9e709727c4cb56c4811250f9a23e0a13b6 (patch)
tree4afe694287b5dcc7bb3b35de623426ed693e2fa8
parent767140049c1eac57c105fdfc874c2628a9089145 (diff)
downloadrpm-973bdd9e709727c4cb56c4811250f9a23e0a13b6.tar.gz
Generic support for skipping items inside file info iterator
(cherry picked from commit 051ca9ec7f3c386877f9c0faa77d577f891d3a59)
-rw-r--r--lib/rpmarchive.h1
-rw-r--r--lib/rpmfi.c5
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/rpmarchive.h b/lib/rpmarchive.h
index fab2d5846..85079ca10 100644
--- a/lib/rpmarchive.h
+++ b/lib/rpmarchive.h
@@ -23,6 +23,7 @@ enum rpmfilesErrorCodes {
RPMERR_ENOENT = -10,
RPMERR_ENOTEMPTY = -11,
RPMERR_FILE_SIZE = -12,
+ RPMERR_ITER_SKIP = -13,
RPMERR_OPEN_FAILED = -32768,
RPMERR_CHMOD_FAILED = -32769,
diff --git a/lib/rpmfi.c b/lib/rpmfi.c
index 384a6c91c..aa4790365 100644
--- a/lib/rpmfi.c
+++ b/lib/rpmfi.c
@@ -821,7 +821,10 @@ int rpmfiNext(rpmfi fi)
{
int next = -1;
if (fi != NULL) {
- next = fi->next(fi);
+ do {
+ next = fi->next(fi);
+ } while (next == RPMERR_ITER_SKIP);
+
if (next >= 0 && next < rpmfilesFC(fi->files)) {
fi->i = next;
fi->j = rpmfilesDI(fi->files, fi->i);