diff options
author | Panu Matilainen <pmatilai@redhat.com> | 2014-10-28 10:01:53 +0200 |
---|---|---|
committer | Panu Matilainen <pmatilai@redhat.com> | 2016-11-02 10:41:53 +0200 |
commit | 973bdd9e709727c4cb56c4811250f9a23e0a13b6 (patch) | |
tree | 4afe694287b5dcc7bb3b35de623426ed693e2fa8 | |
parent | 767140049c1eac57c105fdfc874c2628a9089145 (diff) | |
download | rpm-973bdd9e709727c4cb56c4811250f9a23e0a13b6.tar.gz |
Generic support for skipping items inside file info iterator
(cherry picked from commit 051ca9ec7f3c386877f9c0faa77d577f891d3a59)
-rw-r--r-- | lib/rpmarchive.h | 1 | ||||
-rw-r--r-- | lib/rpmfi.c | 5 |
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); |