[Rpm-maint] [PATCH] Cleanup: Move similar repeating code in rpmcliArgIter to rpmcliArgIterHelper.

Rakesh Pandit rakesh.pandit at gmail.com
Fri Mar 13 03:04:46 UTC 2009


Just that I had been looking at usage of rpmgi in query.c did some cleanup.

Attached.

Patch: http://rakesh.fedorapeople.org/rpm/0003--Cleanup-Move-similar-repeating-code-in-rpmcliArgI.patch

-- 
rakesh

>From 23ef956a28fe60c8702ec24693527c64d425a599 Mon Sep 17 00:00:00 2001
From: Rakesh Pandit <rakesh at fedoraproject.org>
Date: Fri, 13 Mar 2009 08:26:52 +0530
Subject: [PATCH] - Cleanup: Move similar repeating code in
rpmcliArgIter to rpmcliArgIterHelper.

---
 lib/query.c |   61 +++++++++++++++++-----------------------------------------
 1 files changed, 18 insertions(+), 43 deletions(-)

diff --git a/lib/query.c b/lib/query.c
index abe0e53..d9daafd 100644
--- a/lib/query.c
+++ b/lib/query.c
@@ -567,15 +567,13 @@ 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 rpmcliArgInit(rpmts ts, QVA_t qva, rpmTag tag,
ARGV_const_t argv, rpmgiFlags gFlgs)
 {
-    rpmRC rpmrc = RPMRC_NOTFOUND;
-    int ec = 0;
+	rpmRC rpmrc = RPMRC_NOTFOUND;
+	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);
+	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)
@@ -586,50 +584,27 @@ int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv)
 	/* FIX: argv can be NULL, cast to pass argv array */
 	ec = rpmQueryVerify(qva, ts, (const char *) argv);
 	rpmtsEmpty(ts);
+	return ec;
+}
+
+int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv)
+{
+    int ec = 0;
+
+    switch (qva->qva_source) {
+    case RPMQV_ALL:
+	ec = rpmcliArgInit(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 = rpmcliArgInit(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 = rpmcliArgInit(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 = rpmcliArgInit(ts, qva, RPMDBI_FTSWALK, argv, giFlags);
 	break;
     default:
 	qva->qva_gi = rpmgiNew(ts, RPMDBI_ARGLIST, NULL, 0);
-- 
1.6.0.6


More information about the Rpm-maint mailing list