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

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


2009/3/13 Rakesh Pandit <rakesh.pandit at gmail.com>:
> Just that I had been looking at usage of rpmgi in query.c did some cleanup.
>

Sorry posted the old one ... latest one:
Patch: http://rakesh.fedorapeople.org/rpm/0003--Cleanup-Move-similar-patterns-in-rpmcliArgIter-to.patch

>From 41ceaac05e8e7ea4e5dfd4b9377d27c3ace75113 Mon Sep 17 00:00:00 2001
From: Rakesh Pandit <rakesh at fedoraproject.org>
Date: Fri, 13 Mar 2009 00:15:37 +0530
Subject: [PATCH] - Cleanup: Move similar patterns in rpmcliArgIter to
rpmcliArgIterHelper.

---
 lib/query.c |   63 +++++++++++++++++-----------------------------------------
 1 files changed, 19 insertions(+), 44 deletions(-)

diff --git a/lib/query.c b/lib/query.c
index abe0e53..f663d5a 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 rpmcliArgIterHelper(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)
@@ -584,52 +582,29 @@ int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv)
 	    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);
+	ec = rpmQueryVerify(qva, ts, (tag == RPMDBI_PACKAGES)? (const char
*) argv : NULL);
 	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 = 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);
-- 
1.6.0.6


More information about the Rpm-maint mailing list