From a2156379641e48fbad88d1088eb06d7bfa78927c Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Fri, 19 Mar 2010 19:04:07 +0200 Subject: [PATCH] Pass args and flags to rpmgi constructor already, lose rpmgiSetArgs() - tags and the like to constructor make no sense anymore, rpmgi does nothing but walk manifests and files from argv - simplifies things further... --- lib/query.c | 17 +++-------------- lib/rpmgi.c | 24 +++++++----------------- lib/rpmgi.h | 18 +++--------------- 3 files changed, 13 insertions(+), 46 deletions(-) diff --git a/lib/query.c b/lib/query.c index d3f92b2..9cf2708 100644 --- a/lib/query.c +++ b/lib/query.c @@ -531,19 +531,6 @@ int rpmQueryVerify(QVA_t qva, rpmts ts, const char * arg) return res; } -static int rpmcliArgIterHelper(rpmts ts, QVA_t qva, rpmTag tag, ARGV_const_t argv, rpmgiFlags gFlgs) -{ - int ec = 0; - - qva->qva_gi = rpmgiNew(ts, tag, NULL, 0); - rpmgiSetArgs(qva->qva_gi, argv, gFlgs); - - /* FIX: argv can be NULL, cast to pass argv array */ - ec = rpmQueryVerify(qva, ts, (tag == RPMDBI_PACKAGES)? (const char *) argv : NULL); - qva->qva_gi = rpmgiFree(qva->qva_gi); - return ec; -} - /* * Apply extra query filters. By default patterns applied to package * name, others can be specified with = @@ -596,7 +583,9 @@ int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv) } break; case RPMQV_RPM: - ec = rpmcliArgIterHelper(ts, qva, RPMDBI_ARGLIST, argv, giFlags); + qva->qva_gi = rpmgiNew(ts, giFlags, argv); + ec = rpmQueryVerify(qva, ts, NULL); + qva->qva_gi = rpmgiFree(qva->qva_gi); break; default: for (ARGV_const_t arg = argv; arg && *arg; arg++) diff --git a/lib/rpmgi.c b/lib/rpmgi.c index d015de2..92a356d 100644 --- a/lib/rpmgi.c +++ b/lib/rpmgi.c @@ -162,12 +162,10 @@ static rpmRC rpmgiLoadReadHeader(rpmgi gi) * Append globbed arg list to iterator. * @param gi generalized iterator * @param argv arg list to be globbed (or NULL) - * @returns RPMRC_OK on success */ -static rpmRC rpmgiGlobArgv(rpmgi gi, ARGV_const_t argv) +static void rpmgiGlobArgv(rpmgi gi, ARGV_const_t argv) { const char * arg; - rpmRC rpmrc = RPMRC_OK; int ac = 0; int xx; @@ -176,11 +174,10 @@ static rpmRC rpmgiGlobArgv(rpmgi gi, ARGV_const_t argv) if (argv != NULL) { while (argv[ac] != NULL) ac++; -/* XXX argv is not NULL */ xx = argvAppend(&gi->argv, argv); } gi->argc = ac; - return rpmrc; + return; } if (argv != NULL) @@ -195,7 +192,7 @@ static rpmRC rpmgiGlobArgv(rpmgi gi, ARGV_const_t argv) t = _free(t); ac = 0; } - return rpmrc; + return; } rpmgi rpmgiFree(rpmgi gi) @@ -212,23 +209,22 @@ rpmgi rpmgiFree(rpmgi gi) return NULL; } -rpmgi rpmgiNew(rpmts ts, rpmTag tag, const void * keyp, size_t keylen) +rpmgi rpmgiNew(rpmts ts, rpmgiFlags flags, ARGV_const_t argv) { rpmgi gi = xcalloc(1, sizeof(*gi)); - if (gi == NULL) - return NULL; - gi->ts = rpmtsLink(ts, __FUNCTION__); - gi->flags = 0; + gi->flags = flags; gi->active = 0; gi->i = -1; gi->errors = 0; gi->h = NULL; + gi->flags = flags; gi->argv = argvNew(); gi->argc = 0; + rpmgiGlobArgv(gi, argv); return gi; } @@ -274,12 +270,6 @@ Header rpmgiHeader(rpmgi gi) return (gi != NULL ? gi->h : NULL); } -rpmRC rpmgiSetArgs(rpmgi gi, ARGV_const_t argv, rpmgiFlags flags) -{ - gi->flags = flags; - return rpmgiGlobArgv(gi, argv); -} - int rpmgiNumErrors(rpmgi gi) { return (gi != NULL ? gi->errors : -1); diff --git a/lib/rpmgi.h b/lib/rpmgi.h index 29456ae..f2bf286 100644 --- a/lib/rpmgi.h +++ b/lib/rpmgi.h @@ -36,13 +36,11 @@ rpmgi rpmgiFree(rpmgi gi); /** \ingroup rpmgi * Return a generalized iterator. * @param ts transaction set - * @param tag rpm tag - * @param keyp key data (NULL for sequential access) - * @param keylen key data length (0 will use strlen(keyp)) + * @param flags iterator flags + * @param argv arg list * @return new iterator */ -rpmgi rpmgiNew(rpmts ts, rpmTag tag, const void * keyp, - size_t keylen); +rpmgi rpmgiNew(rpmts ts, rpmgiFlags flags, ARGV_const_t argv); /** \ingroup rpmgi * Perform next iteration step. @@ -59,16 +57,6 @@ rpmRC rpmgiNext(rpmgi gi); Header rpmgiHeader(rpmgi gi); /** \ingroup rpmgi - * Load iterator args. - * @param gi generalized iterator - * @param argv arg list - * @param flags iterator flags - * @return RPMRC_OK on success - */ -rpmRC rpmgiSetArgs(rpmgi gi, ARGV_const_t argv, rpmgiFlags flags); - - -/** \ingroup rpmgi * Return number of errors (file not found etc) encountered during iteration * @param gi generalized iterator * @return number of errors -- 2.7.4