From 97b6c385898342958624c17c441c65d474cb7fcd Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Fri, 19 Mar 2010 16:30:55 +0200 Subject: [PATCH] One helluva complicated way to pass our own arg back to us --- lib/poptQV.c | 3 --- lib/query.c | 9 ++------- lib/rpmgi.c | 29 ++++------------------------- lib/rpmgi.h | 8 -------- 4 files changed, 6 insertions(+), 43 deletions(-) diff --git a/lib/poptQV.c b/lib/poptQV.c index a3d4b4d..9fa3b13 100644 --- a/lib/poptQV.c +++ b/lib/poptQV.c @@ -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 }; diff --git a/lib/query.c b/lib/query.c index d1b9636..91a5ac5 100644 --- a/lib/query.c +++ b/lib/query.c @@ -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; } diff --git a/lib/rpmgi.c b/lib/rpmgi.c index 19c3211..12ddb43 100644 --- a/lib/rpmgi.c +++ b/lib/rpmgi.c @@ -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); diff --git a/lib/rpmgi.h b/lib/rpmgi.h index 5e188ab..29456ae 100644 --- a/lib/rpmgi.h +++ b/lib/rpmgi.h @@ -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 -- 2.7.4