From 5bb4b0928393a4534d9f76644f7b3d3c74ceb3f2 Mon Sep 17 00:00:00 2001 From: Rakesh Pandit Date: Sat, 14 Mar 2009 17:59:03 +0530 Subject: [PATCH] Cleanup: Move similar patterns in rpmcliArgIter to rpmcliArgIterHelper. --- lib/query.c | 78 +++++++++++++++++++++---------------------------------------- 1 file changed, 27 insertions(+), 51 deletions(-) diff --git a/lib/query.c b/lib/query.c index 0617584..a11d29c 100644 --- a/lib/query.c +++ b/lib/query.c @@ -558,69 +558,46 @@ int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg) return res; } -int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv) +static int rpmcliArgIterHelper(rpmts ts, QVA_t qva, rpmTag tag, ARGV_const_t argv, rpmgiFlags gFlgs) { rpmRC rpmrc = RPMRC_NOTFOUND; int ec = 0; + qva->qva_gi = rpmgiNew(ts, tag, NULL, 0); + qva->qva_rc = rpmgiSetArgs(qva->qva_gi, argv, ftsOpts, gFlgs); + + if (qva->qva_gi != NULL && (rpmgiGetFlags(qva->qva_gi) & RPMGI_TSADD)) /* Load the ts with headers. */ + while ((rpmrc = rpmgiNext(qva->qva_gi)) == RPMRC_OK) + {}; + if (rpmrc != RPMRC_NOTFOUND) { + qva->qva_gi = rpmgiFree(qva->qva_gi); + return 1; /* XXX should be no. of failures. */ + } + /* FIX: argv can be NULL, cast to pass argv array */ + ec = rpmQueryVerify(qva, ts, (tag == RPMDBI_PACKAGES)? (const char *) argv : NULL); + rpmtsEmpty(ts); + qva->qva_gi = rpmgiFree(qva->qva_gi); + return ec; +} + +int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv) +{ + int ec = 0; + switch (qva->qva_source) { case RPMQV_ALL: - qva->qva_gi = rpmgiNew(ts, RPMDBI_PACKAGES, NULL, 0); - qva->qva_rc = rpmgiSetArgs(qva->qva_gi, argv, ftsOpts, RPMGI_NONE); - - if (qva->qva_gi != NULL && (rpmgiGetFlags(qva->qva_gi) & RPMGI_TSADD)) /* Load the ts with headers. */ - while ((rpmrc = rpmgiNext(qva->qva_gi)) == RPMRC_OK) - {}; - if (rpmrc != RPMRC_NOTFOUND) - return 1; /* XXX should be no. of failures. */ - - /* FIX: argv can be NULL, cast to pass argv array */ - ec = rpmQueryVerify(qva, ts, (const char *) argv); - rpmtsEmpty(ts); + ec = rpmcliArgIterHelper(ts, qva, RPMDBI_PACKAGES, argv, RPMGI_NONE); break; case RPMQV_RPM: - qva->qva_gi = rpmgiNew(ts, RPMDBI_ARGLIST, NULL, 0); - qva->qva_rc = rpmgiSetArgs(qva->qva_gi, argv, ftsOpts, giFlags); - - if (qva->qva_gi != NULL && (rpmgiGetFlags(qva->qva_gi) & RPMGI_TSADD)) /* Load the ts with headers. */ - while ((rpmrc = rpmgiNext(qva->qva_gi)) == RPMRC_OK) - {}; - if (rpmrc != RPMRC_NOTFOUND) - return 1; /* XXX should be no. of failures. */ - - /* FIX: argv can be NULL, cast to pass argv array */ - ec = rpmQueryVerify(qva, ts, NULL); - rpmtsEmpty(ts); + ec = rpmcliArgIterHelper(ts, qva, RPMDBI_ARGLIST, argv, giFlags); break; case RPMQV_HDLIST: - qva->qva_gi = rpmgiNew(ts, RPMDBI_HDLIST, NULL, 0); - qva->qva_rc = rpmgiSetArgs(qva->qva_gi, argv, ftsOpts, giFlags); - - if (qva->qva_gi != NULL && (rpmgiGetFlags(qva->qva_gi) & RPMGI_TSADD)) /* Load the ts with headers. */ - while ((rpmrc = rpmgiNext(qva->qva_gi)) == RPMRC_OK) - {}; - if (rpmrc != RPMRC_NOTFOUND) - return 1; /* XXX should be no. of failures. */ - - /* FIX: argv can be NULL, cast to pass argv array */ - ec = rpmQueryVerify(qva, ts, NULL); - rpmtsEmpty(ts); + ec = rpmcliArgIterHelper(ts, qva, RPMDBI_HDLIST, argv, giFlags); break; case RPMQV_FTSWALK: if (ftsOpts == 0) ftsOpts = (RPMGI_COMFOLLOW | RPMGI_LOGICAL | RPMGI_NOSTAT); - qva->qva_gi = rpmgiNew(ts, RPMDBI_FTSWALK, NULL, 0); - qva->qva_rc = rpmgiSetArgs(qva->qva_gi, argv, ftsOpts, giFlags); - - if (qva->qva_gi != NULL && (rpmgiGetFlags(qva->qva_gi) & RPMGI_TSADD)) /* Load the ts with headers. */ - while ((rpmrc = rpmgiNext(qva->qva_gi)) == RPMRC_OK) - {}; - if (rpmrc != RPMRC_NOTFOUND) - return 1; /* XXX should be no. of failures. */ - - /* FIX: argv can be NULL, cast to pass argv array */ - ec = rpmQueryVerify(qva, ts, NULL); - rpmtsEmpty(ts); + ec = rpmcliArgIterHelper(ts, qva, RPMDBI_FTSWALK, argv, giFlags); break; default: qva->qva_gi = rpmgiNew(ts, RPMDBI_ARGLIST, NULL, 0); @@ -630,11 +607,10 @@ int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv) ec += rpmQueryVerify(qva, ts, rpmgiHdrPath(qva->qva_gi)); rpmtsEmpty(ts); } + qva->qva_gi = rpmgiFree(qva->qva_gi); break; } - qva->qva_gi = rpmgiFree(qva->qva_gi); - return ec; } -- 2.7.4