From: Panu Matilainen Date: Fri, 26 Mar 2010 06:50:30 +0000 (+0200) Subject: Add a saner rpmps iteration interface X-Git-Tag: rpm-4.9.0-beta1~783 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=96e07f34e48b33f0d1f4c9be9ed33fdddf0bd0cd;p=platform%2Fupstream%2Frpm.git Add a saner rpmps iteration interface - simply return the actual problem objects from the iterator instead of "index" which is not usable for anything outside rpmps.c - implement rpmpsNexIterator() on top of the new rpmpsiNext() as backwards compatibility for now --- diff --git a/lib/rpmps.c b/lib/rpmps.c index 46e4a08..980add8 100644 --- a/lib/rpmps.c +++ b/lib/rpmps.c @@ -69,18 +69,23 @@ rpmpsi rpmpsFreeIterator(rpmpsi psi) return NULL; } -int rpmpsNextIterator(rpmpsi psi) +rpmProblem rpmpsiNext(rpmpsi psi) { - int i = -1; - - if (psi != NULL && ++psi->ix >= 0) { - if (psi->ix < rpmpsNumProblems(psi->ps)) { - i = psi->ix; + rpmProblem p = NULL; + if (psi != NULL && psi->ps != NULL && ++psi->ix >= 0) { + rpmps ps = psi->ps; + if (psi->ix < ps->numProblems) { + p = ps->probs[psi->ix]; } else { psi->ix = -1; - } + } } - return i; + return p; +} + +int rpmpsNextIterator(rpmpsi psi) +{ + return (rpmpsiNext(psi) != NULL) ? psi->ix : -1; } rpmProblem rpmpsGetProblem(rpmpsi psi) diff --git a/lib/rpmps.h b/lib/rpmps.h index 526b24a..4fc8875 100644 --- a/lib/rpmps.h +++ b/lib/rpmps.h @@ -55,6 +55,13 @@ rpmpsi rpmpsInitIterator(rpmps ps); rpmpsi rpmpsFreeIterator(rpmpsi psi); /** \ingroup rpmps + * Return next problem from iterator + * @param psi problem set iterator + * @return next problem (weak ref), NULL on termination + */ +rpmProblem rpmpsiNext(rpmpsi psi); + +/** \ingroup rpmps * Return next problem set iterator index * @param psi problem set iterator * @return iterator index, -1 on termination