One helluva complicated way to pass our own arg back to us
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 19 Mar 2010 14:30:55 +0000 (16:30 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 19 Mar 2010 14:55:49 +0000 (16:55 +0200)
lib/poptQV.c
lib/query.c
lib/rpmgi.c
lib/rpmgi.h

index a3d4b4d..9fa3b13 100644 (file)
@@ -122,9 +122,6 @@ struct poptOption rpmQVSourcePoptTable[] = {
        N_("do not glob arguments"), NULL},
  { "nomanifest", '\0', POPT_BIT_SET, &giFlags, RPMGI_NOMANIFEST,
        N_("do not process non-package files as manifests"), NULL},
- { "noheader", '\0', POPT_BIT_SET|POPT_ARGFLAG_DOC_HIDDEN, &giFlags, RPMGI_NOHEADER,
-       N_("do not read headers"), NULL},
-
 
    POPT_TABLEEND
 };
index d1b9636..91a5ac5 100644 (file)
@@ -553,13 +553,8 @@ int rpmcliArgIter(rpmts ts, QVA_t qva, ARGV_const_t argv)
        ec = rpmcliArgIterHelper(ts, qva, RPMDBI_ARGLIST, argv, giFlags);
        break;
     default:
-       qva->qva_gi = rpmgiNew(ts, RPMDBI_ARGLIST, NULL, 0);
-       rpmgiSetArgs(qva->qva_gi, argv, 
-               (giFlags | (RPMGI_NOGLOB|RPMGI_NOHEADER)));
-       while (rpmgiNext(qva->qva_gi) == RPMRC_OK) {
-           ec += rpmQueryVerify(qva, ts, rpmgiHdrPath(qva->qva_gi));
-       }
-       qva->qva_gi = rpmgiFree(qva->qva_gi);
+       for (ARGV_const_t arg = argv; arg && *arg; arg++)
+           ec += rpmQueryVerify(qva, ts, *arg);
        break;
     }
 
index 19c3211..12ddb43 100644 (file)
@@ -35,7 +35,6 @@ struct rpmgi_s {
     int active;                        /*!< Iterator is active? */
     int i;                     /*!< Element index. */
     int errors;
-    char * hdrPath;            /*!< Path to current iterator header. */
     Header h;                  /*!< Current iterator header. */
 
     rpmdbMatchIterator mi;
@@ -132,14 +131,9 @@ static rpmRC rpmgiLoadReadHeader(rpmgi gi)
 
     if (gi->argv != NULL && gi->argv[gi->i] != NULL)
     do {
-       char * fn;      /* XXX gi->hdrPath? */
-
-       fn = gi->argv[gi->i];
-       if (!(gi->flags & RPMGI_NOHEADER)) {
-           h = rpmgiReadHeader(gi, fn);
-           if (h != NULL)
-               rpmrc = RPMRC_OK;
-       } else
+       char * fn = gi->argv[gi->i];
+       h = rpmgiReadHeader(gi, fn);
+       if (h != NULL)
            rpmrc = RPMRC_OK;
 
        if (rpmrc == RPMRC_OK || gi->flags & RPMGI_NOMANIFEST)
@@ -267,7 +261,6 @@ rpmgi rpmgiFree(rpmgi gi)
     if (gi == NULL)
        return NULL;
 
-    gi->hdrPath = _free(gi->hdrPath);
     gi->h = headerFree(gi->h);
 
     gi->argv = argvFree(gi->argv);
@@ -296,7 +289,6 @@ rpmgi rpmgiNew(rpmts ts, rpmTag tag, const void * keyp, size_t keylen)
     gi->active = 0;
     gi->i = -1;
     gi->errors = 0;
-    gi->hdrPath = NULL;
     gi->h = NULL;
 
     gi->mi = NULL;
@@ -308,7 +300,6 @@ rpmgi rpmgiNew(rpmts ts, rpmTag tag, const void * keyp, size_t keylen)
 
 rpmRC rpmgiNext(rpmgi gi)
 {
-    char hnum[32];
     rpmRC rpmrc = RPMRC_NOTFOUND;
 
     if (gi == NULL)
@@ -316,8 +307,6 @@ rpmRC rpmgiNext(rpmgi gi)
 
     /* Free header from previous iteration. */
     gi->h = headerFree(gi->h);
-    gi->hdrPath = _free(gi->hdrPath);
-    hnum[0] = '\0';
 
     if (++gi->i >= 0)
     switch (gi->tag) {
@@ -332,10 +321,7 @@ rpmRC rpmgiNext(rpmgi gi)
        if (gi->mi != NULL) {   /* XXX unnecessary */
            Header h = rpmdbNextIterator(gi->mi);
            if (h != NULL) {
-               if (!(gi->flags & RPMGI_NOHEADER))
-                   gi->h = headerLink(h);
-               sprintf(hnum, "%u", rpmdbGetIteratorOffset(gi->mi));
-               gi->hdrPath = rpmExpand("rpmdb h# ", hnum, NULL);
+               gi->h = headerLink(h);
                rpmrc = RPMRC_OK;
                /* XXX header reference held by iterator, so no headerFree */
            } else
@@ -365,7 +351,6 @@ fprintf(stderr, "*** gi %p\t%p[%d]: %s\n", gi, gi->argv, gi->i, gi->argv[gi->i])
        if (rpmrc != RPMRC_OK)  /* XXX check this */
            goto enditer;
 
-       gi->hdrPath = xstrdup(gi->argv[gi->i]);
        break;
     }
 
@@ -374,17 +359,11 @@ fprintf(stderr, "*** gi %p\t%p[%d]: %s\n", gi, gi->argv, gi->i, gi->argv[gi->i])
 enditer:
     gi->mi = rpmdbFreeIterator(gi->mi);
     gi->h = headerFree(gi->h);
-    gi->hdrPath = _free(gi->hdrPath);
     gi->i = -1;
     gi->active = 0;
     return rpmrc;
 }
 
-const char * rpmgiHdrPath(rpmgi gi)
-{
-    return (gi != NULL ? gi->hdrPath : NULL);
-}
-
 Header rpmgiHeader(rpmgi gi)
 {
     return (gi != NULL ? gi->h : NULL);
index 5e188ab..29456ae 100644 (file)
@@ -22,7 +22,6 @@ typedef enum rpmgiFlags_e {
     RPMGI_NONE         = 0,
     RPMGI_NOGLOB       = (1 << 2),
     RPMGI_NOMANIFEST   = (1 << 3),
-    RPMGI_NOHEADER     = (1 << 4)
 } rpmgiFlags;
 
 extern rpmgiFlags giFlags;
@@ -53,13 +52,6 @@ rpmgi rpmgiNew(rpmts ts, rpmTag tag, const void * keyp,
 rpmRC rpmgiNext(rpmgi gi);
 
 /** \ingroup rpmgi
- * Return current header path.
- * @param gi           generalized iterator
- * @returns            header path
- */
-const char * rpmgiHdrPath(rpmgi gi);
-
-/** \ingroup rpmgi
  * Return current iteration header.
  * @param gi           generalized iterator
  * @returns            header