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