RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: rpm                              Date:   08-Nov-2007 18:14:56
  Branch: HEAD                             Handle: 2007110817145600

  Modified files:
    rpm                     CHANGES
    rpm/lib                 psm.c rpmchecksig.c
    rpm/rpmdb               hdrNVR.c hdrinline.h

  Log:
    - add header{Init,Next,Free}Extension almost everywhere.

  Summary:
    Revision    Changes     Path
    1.1775      +1  -0      rpm/CHANGES
    2.256       +2  -2      rpm/lib/psm.c
    1.167       +27 -31     rpm/lib/rpmchecksig.c
    1.25        +4  -4      rpm/rpmdb/hdrNVR.c
    1.27        +38 -0      rpm/rpmdb/hdrinline.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1774 -r1.1775 CHANGES
  --- rpm/CHANGES       8 Nov 2007 16:20:11 -0000       1.1774
  +++ rpm/CHANGES       8 Nov 2007 17:14:56 -0000       1.1775
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: add header{Init,Next,Free}Extension almost everywhere.
       - jbj: add headerRemoveExtension everywhere.
       - jbj: finish converting to headerAddExtension() everywhere.
       - jbj: change names of header tag integer types: s/INT32/UINT32/ etc.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/psm.c
  ============================================================================
  $ cvs diff -u -r2.255 -r2.256 psm.c
  --- rpm/lib/psm.c     8 Nov 2007 15:15:39 -0000       2.255
  +++ rpm/lib/psm.c     8 Nov 2007 17:14:56 -0000       2.256
  @@ -1867,8 +1867,8 @@
                        /* XXX this is headerCopy w/o headerReload() */
                        psm->oh = headerNew();
   
  -                     for (hi = headerInitIterator(oh);
  -                          headerNextIterator(hi, &he->tag, &he->t, &he->p, 
&he->c);
  +                     for (hi = headerInitExtension(oh);
  +                          headerNextExtension(hi, he, 0);
                             he->p.ptr = headerFreeData(he->p.ptr, he->t))
                        {
                            if (he->tag == RPMTAG_ARCHIVESIZE)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.166 -r1.167 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c     8 Nov 2007 16:20:12 -0000       1.166
  +++ rpm/lib/rpmchecksig.c     8 Nov 2007 17:14:56 -0000       1.167
  @@ -279,8 +279,8 @@
            }
   
            oh = headerCopyLoad(he->p.ptr);
  -         for (hi = headerInitIterator(oh);
  -             headerNextIterator(hi, &ohe->tag, &ohe->t, &ohe->p, &ohe->c);
  +         for (hi = headerInitExtension(oh);
  +             headerNextExtension(hi, ohe, 0);
                ohe->p.ptr = headerFreeData(ohe->p.ptr, ohe->t))
            {
                if (ohe->p.ptr) {
  @@ -845,17 +845,14 @@
   {
       HGE_t hge = (HGE_t)headerGetExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
  +    HE_t she = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       int res2, res3;
       char result[1024];
       char buf[8192], * b;
       char missingKeys[7164], * m;
       char untrustedKeys[7164], * u;
  -    uint32_t sigtag;
  -    rpmTagType sigtype;
  -    const void * sig;
       pgpDig dig;
       pgpDigParams sigp;
  -    uint32_t siglen;
       Header sigh = NULL;
       HeaderIterator hi = NULL;
       const char * msg = NULL;
  @@ -906,26 +903,26 @@
   }
   
        /* Grab a hint of what needs doing to avoid duplication. */
  -     sigtag = 0;
  -     if (sigtag == 0 && !nosignatures) {
  +     she->tag = 0;
  +     if (she->tag == 0 && !nosignatures) {
            if (headerIsEntry(sigh, RPMSIGTAG_DSA))
  -             sigtag = RPMSIGTAG_DSA;
  +             she->tag = RPMSIGTAG_DSA;
            else if (headerIsEntry(sigh, RPMSIGTAG_RSA))
  -             sigtag = RPMSIGTAG_RSA;
  +             she->tag = RPMSIGTAG_RSA;
   #if defined(SUPPORT_RPMV3_VERIFY_DSA)
            else if (headerIsEntry(sigh, RPMSIGTAG_GPG))
  -             sigtag = RPMSIGTAG_GPG;
  +             she->tag = RPMSIGTAG_GPG;
   #endif
   #if defined(SUPPORT_RPMV3_VERIFY_RSA)
            else if (headerIsEntry(sigh, RPMSIGTAG_PGP))
  -             sigtag = RPMSIGTAG_PGP;
  +             she->tag = RPMSIGTAG_PGP;
   #endif
        }
  -     if (sigtag == 0 && !nodigests) {
  +     if (she->tag == 0 && !nodigests) {
            if (headerIsEntry(sigh, RPMSIGTAG_MD5))
  -             sigtag = RPMSIGTAG_MD5;
  +             she->tag = RPMSIGTAG_MD5;
            else if (headerIsEntry(sigh, RPMSIGTAG_SHA1))
  -             sigtag = RPMSIGTAG_SHA1;        /* XXX never happens */
  +             she->tag = RPMSIGTAG_SHA1;      /* XXX never happens */
        }
   
        dig = rpmtsDig(ts);
  @@ -933,13 +930,13 @@
        sigp = pgpGetSignature(dig);
   
        /* XXX RSA needs the hash_algo, so decode early. */
  -     if (sigtag == RPMSIGTAG_RSA
  +     if (she->tag == RPMSIGTAG_RSA
   #if defined(SUPPORT_RPMV3_VERIFY_RSA)
  -      || sigtag == RPMSIGTAG_PGP
  -      || sigtag == RPMSIGTAG_PGP5
  +      || she->tag == RPMSIGTAG_PGP
  +      || she->tag == RPMSIGTAG_PGP5
   #endif
        ) {
  -         he->tag = sigtag;
  +         he->tag = she->tag;
            xx = hge(sigh, he, 0);
            xx = pgpPrtPkts(he->p.ptr, he->c, dig, 0);
            he->p.ptr = _free(he->p.ptr);
  @@ -978,22 +975,21 @@
        b += strlen(b);
   
        if (sigh != NULL)
  -     for (hi = headerInitIterator(sigh);
  -         headerNextIterator(hi, &sigtag, &sigtype, &sig, &siglen) != 0;
  +     for (hi = headerInitExtension(sigh);
  +         headerNextExtension(hi, she, 0) != 0;
            /[EMAIL PROTECTED]@*/ xx = pgpSetSig(rpmtsDig(ts), 0, 0, NULL, 0) 
/[EMAIL PROTECTED]@*/)
        {
   
  -         if (sig == NULL) /* XXX can't happen */
  -             continue;
  +assert(she->p.ptr != NULL);
   
  -         /* Clean up parameters from previous sigtag. */
  +         /* Clean up parameters from previous she->tag. */
            pgpCleanDig(dig);
   
   /[EMAIL PROTECTED]@*/
  -         xx = pgpSetSig(rpmtsDig(ts), sigtag, sigtype, sig, siglen);
  +         xx = pgpSetSig(rpmtsDig(ts), she->tag, she->t, she->p.ptr, she->c);
   /[EMAIL PROTECTED]@*/
   
  -         switch (sigtag) {
  +         switch (she->tag) {
            case RPMSIGTAG_RSA:
            case RPMSIGTAG_DSA:
   #if defined(SUPPORT_RPMV3_VERIFY_DSA)
  @@ -1005,7 +1001,7 @@
   #endif
                if (nosignatures)
                     continue;
  -             xx = pgpPrtPkts(sig, siglen, dig,
  +             xx = pgpPrtPkts(she->p.ptr, she->c, dig,
                        (_print_pkts & rpmIsDebug()));
   
                if (sigp->version != 3 && sigp->version != 4) {
  @@ -1020,7 +1016,7 @@
                if (nodigests)
                     continue;
                /* XXX Don't bother with header sha1 if header dsa. */
  -             if (!nosignatures && sigtag == RPMSIGTAG_DSA)
  +             if (!nosignatures && she->tag == RPMSIGTAG_DSA)
                    continue;
                /[EMAIL PROTECTED]@*/ break;
   #if defined(SUPPORT_RPMV3_BROKEN)
  @@ -1035,7 +1031,7 @@
                 * Don't bother with md5 if pgp, as RSA/MD5 is more reliable
                 * than the -- now unsupported -- legacy md5 breakage.
                 */
  -             if (!nosignatures && sigtag == RPMSIGTAG_PGP)
  +             if (!nosignatures && she->tag == RPMSIGTAG_PGP)
                    continue;
   #endif
                /[EMAIL PROTECTED]@*/ break;
  @@ -1055,7 +1051,7 @@
   #if defined(SUPPORT_RPMV3_VERIFY_RSA) || defined(SUPPORT_RPMV3_VERIFY_DSA)
                    char *tempKey;
   #endif
  -                 switch (sigtag) {
  +                 switch (she->tag) {
                    case RPMSIGTAG_SIZE:
                        b = stpcpy(b, "SIZE ");
                        res2 = 1;
  @@ -1146,7 +1142,7 @@
                    b = stpcpy(b, "    ");
                    b = stpcpy(b, result);
                } else {
  -                 switch (sigtag) {
  +                 switch (she->tag) {
                    case RPMSIGTAG_SIZE:
                        b = stpcpy(b, "size ");
                        /[EMAIL PROTECTED]@*/ break;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrNVR.c
  ============================================================================
  $ cvs diff -u -r1.24 -r1.25 hdrNVR.c
  --- rpm/rpmdb/hdrNVR.c        8 Nov 2007 15:15:40 -0000       1.24
  +++ rpm/rpmdb/hdrNVR.c        8 Nov 2007 17:14:56 -0000       1.25
  @@ -231,8 +231,8 @@
       if (h == NULL || sigh == NULL)
        return;
   
  -    for (hi = headerInitIterator(sigh);
  -        headerNextIterator(hi, &he->tag, &he->t, &he->p, &he->c);
  +    for (hi = headerInitExtension(sigh);
  +        headerNextExtension(hi, he, 0);
           he->p.ptr = hfd(he->p.ptr, he->t))
       {
        /* XXX Translate legacy signature tag values. */
  @@ -320,8 +320,8 @@
       HeaderIterator hi;
       int xx;
   
  -    for (hi = headerInitIterator(h);
  -        headerNextIterator(hi, &he->tag, &he->t, &he->p, &he->c);
  +    for (hi = headerInitExtension(h);
  +        headerNextExtension(hi, he, 0);
           he->p.ptr = hfd(he->p.ptr, he->t))
       {
        /* XXX Translate legacy signature tag values. */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrinline.h
  ============================================================================
  $ cvs diff -u -r1.26 -r1.27 hdrinline.h
  --- rpm/rpmdb/hdrinline.h     8 Nov 2007 16:20:13 -0000       1.26
  +++ rpm/rpmdb/hdrinline.h     8 Nov 2007 17:14:56 -0000       1.27
  @@ -308,6 +308,44 @@
   }
   
   /** \ingroup header
  + * Destroy header tag container iterator.
  + * @param hi         header tag container iterator
  + * @return           NULL always
  + */
  +/[EMAIL PROTECTED]@*/ static inline
  +HeaderIterator headerFreeExtension(/[EMAIL PROTECTED]@*/ HeaderIterator hi)
  +     /[EMAIL PROTECTED] hi @*/
  +{
  +    return hdrVec->hdrfreeiter(hi);
  +}
  +
  +/** \ingroup header
  + * Create header tag iterator.
  + * @param h          header
  + * @return           header tag iterator
  + */
  +/[EMAIL PROTECTED]@*/ static inline
  +HeaderIterator headerInitExtension(Header h)
  +     /[EMAIL PROTECTED] h */
  +{
  +    return hdrVec->hdrinititer(h);
  +}
  +
  +/** \ingroup header
  + * Return next tag from header.
  + * @param hi         header tag iterator
  + * @param he         tag container
  + * @param flags              (unused)
  + * @return           1 on success, 0 on failure
  + */
  +/[EMAIL PROTECTED]@*/ static inline
  +int headerNextExtension(HeaderIterator hi, HE_t he, unsigned int flags)
  +     /[EMAIL PROTECTED] hi, he @*/
  +{
  +    return hdrVec->hdrnextiter(hi, &he->tag, &he->t, &he->p, &he->c);
  +}
  +
  +/** \ingroup header
    * Retrieve tag value.
    * Will never return RPM_I18NSTRING_TYPE! RPM_STRING_TYPE elements with
    * RPM_I18NSTRING_TYPE equivalent entries are translated (if HEADER_I18NTABLE
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to