Pass args and flags to rpmgi constructor already, lose rpmgiSetArgs()
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 19 Mar 2010 17:04:07 +0000 (19:04 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 19 Mar 2010 17:04:07 +0000 (19:04 +0200)
- 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
lib/rpmgi.c
lib/rpmgi.h

index d3f92b2..9cf2708 100644 (file)
@@ -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 <tagname>=<pattern>
@@ -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++)
index d015de2..92a356d 100644 (file)
@@ -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);
index 29456ae..f2bf286 100644 (file)
@@ -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