RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/build/ files.c parsePreamble.c rpm/lib/ ps...

From: Jeff Johnson <jbj@rpm5.org>
Date: Mon 22 Oct 2007 - 04:48:42 CEST
Message-Id: <20071022024842.78EC134846A@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   22-Oct-2007 04:48:42
  Branch: HEAD                             Handle: 2007102203484002

  Modified files:
    rpm                     CHANGES
    rpm/build               files.c parsePreamble.c
    rpm/lib                 psm.c rpmchecksig.c rpmfc.c rpmfi.c
    rpm/rpmdb               hdrNVR.c hdrinline.h header.h rpmdb.c

  Log:
    - jbj: drill headerAddExtension everywhere.

  Summary:
    Revision    Changes     Path
    1.1754      +1  -0      rpm/CHANGES
    1.279       +5  -5      rpm/build/files.c
    2.140       +14 -14     rpm/build/parsePreamble.c
    2.253       +22 -34     rpm/lib/psm.c
    1.163       +27 -40     rpm/lib/rpmchecksig.c
    1.30        +13 -25     rpm/lib/rpmfc.c
    2.94        +8  -8      rpm/lib/rpmfi.c
    1.22        +49 -53     rpm/rpmdb/hdrNVR.c
    1.24        +24 -0      rpm/rpmdb/hdrinline.h
    1.55        +6  -14     rpm/rpmdb/header.h
    1.195       +4  -4      rpm/rpmdb/rpmdb.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1753 -r1.1754 CHANGES
  --- rpm/CHANGES	22 Oct 2007 02:45:38 -0000	1.1753
  +++ rpm/CHANGES	22 Oct 2007 02:48:40 -0000	1.1754
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: drill headerAddExtension everywhere.
       - jbj: header.c: insturment headerGet{Entry,Extension} switch, debug goop.
       - jbj: rpmchecksig.c: wrap headerAddEntry. headerAddOrAppend next ...
       - jbj: rpmfc.c: wrap headerAddEntry.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/files.c
  ============================================================================
  $ cvs diff -u -r1.278 -r1.279 files.c
  --- rpm/build/files.c	21 Oct 2007 23:22:54 -0000	1.278
  +++ rpm/build/files.c	22 Oct 2007 02:48:40 -0000	1.279
  @@ -1166,8 +1166,8 @@
   static void compressFilelist(Header h)
   	/*@modifies h @*/
   {
  -    HGE_t hge = (HGE_t)headerGetExtension;
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HGE_t hge = headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HRE_t hre = (HRE_t)headerRemoveEntry;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char ** fileNames;
  @@ -1251,17 +1251,17 @@
   	he->t = RPM_INT32_TYPE;
   	he->p.i32p = dirIndexes;
   	he->c = count;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(h, he, 0);
   	he->tag = RPMTAG_BASENAMES;
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = baseNames;
   	he->c = count;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(h, he, 0);
   	he->tag = RPMTAG_DIRNAMES;
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = dirNames;
   	he->c = dirIndex + 1;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(h, he, 0);
       }
   
       fileNames = _free(fileNames);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parsePreamble.c
  ============================================================================
  $ cvs diff -u -r2.139 -r2.140 parsePreamble.c
  --- rpm/build/parsePreamble.c	21 Oct 2007 23:22:54 -0000	2.139
  +++ rpm/build/parsePreamble.c	22 Oct 2007 02:48:40 -0000	2.140
  @@ -337,7 +337,7 @@
   	/*@globals rpmGlobalMacroContext, h_errno @*/
   	/*@modifies h, rpmGlobalMacroContext @*/
   {
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       struct optionalTag *ot;
       int xx;
  @@ -351,7 +351,7 @@
   		he->t = RPM_STRING_TYPE;
   		he->p.str = val;
   		he->c = 1;
  -		xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +		xx = hae(h, he, 0);
   	    }
   	    val = _free(val);
   /*@=boundsread@*/
  @@ -366,7 +366,7 @@
   	/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
   	/*@modifies rpmGlobalMacroContext, fileSystem, internalState  @*/
   {
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char *fn, *Lurlfn = NULL;
       struct Source *sp;
  @@ -431,13 +431,13 @@
   	he->t = RPM_BIN_TYPE;
   	he->p.i8p = icon;
   	he->c = nb;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(h, he, 0);
       } else if (!strncmp(icon, "/* XPM", sizeof("/* XPM")-1)) {
   	he->tag = RPMTAG_XPM;
   	he->t = RPM_BIN_TYPE;
   	he->p.i8p = icon;
   	he->c = nb;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(h, he, 0);
       } else {
   	rpmlog(RPMLOG_ERR, _("Unknown icon type: %s\n"), fn);
   	goto exit;
  @@ -513,8 +513,8 @@
   		pkg->header, pkg->autoProv, pkg->autoReq, pkg->icon,
   		rpmGlobalMacroContext, fileSystem, internalState @*/
   {
  -    HGE_t hge = (HGE_t)headerGetExtension;
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HGE_t hge = headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       char * field = spec->line;
       char * end;
  @@ -579,7 +579,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = field;
   	he->c = 1;
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(pkg->header, he, 0);
   	break;
       case RPMTAG_GROUP:
       case RPMTAG_SUMMARY:
  @@ -594,7 +594,7 @@
   	    he->t = RPM_STRING_TYPE;
   	    he->p.str = field;
   	    he->c = 1;
  -	    xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  +	    xx = hae(pkg->header, he, 0);
   	} else if (!(noLang && strcmp(lang, RPMBUILD_DEFAULT_LANG))) {
   	    (void) headerAddI18NString(pkg->header, tag, field, lang);
   	}
  @@ -670,7 +670,7 @@
   	he->t = RPM_INT32_TYPE;
   	he->p.i32p = &num;
   	he->c = 1;
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(pkg->header, he, 0);
   	break;
       case RPMTAG_AUTOREQPROV:
   	pkg->autoReq = parseYesNo(field);
  @@ -777,7 +777,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = field;
   	he->c = 1;
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(pkg->header, he, 0);
   	break;
       }
   
  @@ -963,8 +963,8 @@
   /* XXX should return rpmParseState, but RPMRC_FAIL forces int return. */
   int parsePreamble(Spec spec, int initialPackage)
   {
  -    HGE_t hge = (HGE_t)headerGetExtension;
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HGE_t hge = headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       rpmParseState nextPart;
       int rc, xx;
  @@ -1005,7 +1005,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = NVR;
   	he->c = 1;
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(pkg->header, he, 0);
       }
   
       if ((rc = readLine(spec, STRIP_TRAILINGSPACE | STRIP_COMMENTS)) > 0) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/psm.c
  ============================================================================
  $ cvs diff -u -r2.252 -r2.253 psm.c
  --- rpm/lib/psm.c	22 Oct 2007 00:31:13 -0000	2.252
  +++ rpm/lib/psm.c	22 Oct 2007 02:48:41 -0000	2.253
  @@ -1369,15 +1369,14 @@
   static int hCopyTag(Header sh, Header th, rpmTag tag)
   	/*@modifies th @*/
   {
  -    HGE_t hge = (HGE_t)headerGetExtension;
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HGE_t hge = headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       int xx = 1;
   
       he->tag = tag;
       if (hge(sh, he, 0) && he->c > 0)
  -	xx = hae(th, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(th, he, 0);
       he->p.ptr = _free(he->p.ptr);
       return 0;
   }
  @@ -1391,7 +1390,7 @@
   static int hSaveBlinks(Header h, const struct rpmChainLink_s * blink)
   	/*@modifies h @*/
   {
  -    HAE_t hae = (HAE_t) headerAddEntry;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
   /*@observer@*/
       static const char * chain_end = RPMTE_CHAIN_END;
  @@ -1409,8 +1408,7 @@
   	he->p.argv = &chain_end;
   	he->c = 1;
       }
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
       
       he->tag = RPMTAG_BLINKPKGID;
       he->t = RPM_STRING_ARRAY_TYPE;
  @@ -1422,8 +1420,7 @@
   	he->p.argv = &chain_end;
   	he->c = 1;
       }
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
   
       he->tag = RPMTAG_BLINKHDRID;
       he->t = RPM_STRING_ARRAY_TYPE;
  @@ -1435,8 +1432,7 @@
   	he->p.argv = &chain_end;
   	he->c = 1;
       }
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
   
       return 0;
   }
  @@ -1450,7 +1446,7 @@
   static int hSaveFlinks(Header h, const struct rpmChainLink_s * flink)
   	/*@modifies h @*/
   {
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
   #ifdef	NOTYET
       /*@observer@*/
  @@ -1473,8 +1469,7 @@
   	he->c = 1;
       }
   #endif
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
   
       he->tag = RPMTAG_FLINKPKGID;
       he->t = RPM_STRING_ARRAY_TYPE;
  @@ -1489,8 +1484,7 @@
   	he->c = 1;
       }
   #endif
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
   
       he->tag = RPMTAG_FLINKHDRID;
       he->t = RPM_STRING_ARRAY_TYPE;
  @@ -1505,8 +1499,7 @@
   	he->c = 1;
       }
   #endif
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
   
       return 0;
   }
  @@ -1521,7 +1514,7 @@
   static int populateInstallHeader(const rpmts ts, const rpmte te, rpmfi fi)
   	/*@modifies fi @*/
   {
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       uint_32 tscolor = rpmtsColor(ts);
       uint_32 tecolor = rpmteColor(te);
  @@ -1535,23 +1528,20 @@
   	he->t = RPM_CHAR_TYPE;
   	he->p.i8p = fi->fstates;
   	he->c = fc;
  -	xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(fi->h, he, 0);
       }
  -assert(xx);
   
       he->tag = RPMTAG_INSTALLTIME;
       he->t = RPM_INT32_TYPE;
       he->p.i32p = &installTime;
       he->c = 1;
  -    xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(fi->h, he, 0);
   
       he->tag = RPMTAG_INSTALLCOLOR;
       he->t = RPM_INT32_TYPE;
       he->p.ui32p = &tscolor;
       he->c = 1;
  -    xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(fi->h, he, 0);
   
       /* XXX FIXME: add preferred color at install. */
   
  @@ -1559,8 +1549,7 @@
       he->t = RPM_INT32_TYPE;
       he->p.ui32p = &tecolor;
       he->c = 1;
  -    xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(fi->h, he, 0);
   
       /* Add the header's origin (i.e. URL) */
       he->tag = RPMTAG_PACKAGEORIGIN;
  @@ -1568,8 +1557,7 @@
       he->p.str = headerGetOrigin(fi->h);
       he->c = 1;
       if (he->p.str != NULL)
  -	xx = hae(fi->h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(fi->h, he, 0);
   
       /* XXX Don't clobber forward/backward upgrade chain on rollbacks */
       if (rpmtsType(ts) != RPMTRANS_TYPE_ROLLBACK)
  @@ -1609,8 +1597,8 @@
   /*@-nullpass@*/ /* FIX: testing null annotation for fi->h */
   rpmRC rpmpsmStage(rpmpsm psm, pkgStage stage)
   {
  -    HGE_t hge = (HGE_t)headerGetExtension;
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HGE_t hge = headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const rpmts ts = psm->ts;
       uint_32 tscolor = rpmtsColor(ts);
  @@ -1885,7 +1873,7 @@
   			{
   			    if (he->tag == RPMTAG_ARCHIVESIZE)
   				noArchiveSize = 1;
  -			    xx = hae(psm->oh, he->tag, he->t, he->p.ptr, he->c);
  +			    xx = hae(psm->oh, he, 0);
   			}
   			hi = headerFreeIterator(hi);
   
  @@ -1948,7 +1936,7 @@
   		he->t = RPM_INT32_TYPE;
   		he->p.i32p = &tid;
   		he->c = 1;
  -		xx = hae(psm->oh, he->tag, he->t, he->p.ptr, he->c);
  +		xx = hae(psm->oh, he, 0);
   
   		/* Add original header's origin (i.e. URL) */
   		if (origin != NULL) {
  @@ -1956,7 +1944,7 @@
   		    he->t = RPM_STRING_TYPE;
   		    he->p.str = origin;
   		    he->c = 1;
  -		    xx = hae(psm->oh, he->tag, he->t, he->p.ptr, he->c);
  +		    xx = hae(psm->oh, he, 0);
   		    origin = _free(origin);
   		}
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.162 -r1.163 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c	22 Oct 2007 01:59:31 -0000	1.162
  +++ rpm/lib/rpmchecksig.c	22 Oct 2007 02:48:41 -0000	1.163
  @@ -177,8 +177,8 @@
           /*@modifies ts, rpmGlobalMacroContext,
                   fileSystem, internalState @*/
   {
  -    HGE_t hge = (HGE_t)headerGetExtension;
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HGE_t hge = headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       rpmgi gi = NULL;
       FD_t fd = NULL;
  @@ -283,8 +283,7 @@
   		ohe->p.ptr = headerFreeData(ohe->p.ptr, ohe->t))
   	    {
   		if (ohe->p.ptr) {
  -		    xx = hae(nh, ohe->tag, ohe->t, ohe->p.ptr, ohe->c);
  -assert(xx);
  +		    xx = hae(nh, ohe, 0);
   		}
   	    }
   	    hi = headerFreeIterator(hi);
  @@ -456,7 +455,7 @@
   
   rpmRC rpmcliImportPubkey(const rpmts ts, const unsigned char * pkt, ssize_t pktlen)
   {
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       static unsigned char zeros[] =
   	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  @@ -524,13 +523,14 @@
       /* Build pubkey header. */
       h = headerNew();
   
  +    he->append = 1;
  +
       he->tag = RPMTAG_PUBKEYS;
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &enc;
       he->c = 1;
  -    he->append = 1;
  -    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
  +
       he->append = 0;
   
       d = headerSprintf(h, afmt, rpmTagTable, rpmHeaderFormats, NULL);
  @@ -541,39 +541,31 @@
       he->c = 1;
       he->tag = RPMTAG_NAME;
       he->p.str = "gpg-pubkey";
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_VERSION;
       he->p.str = v+8;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_RELEASE;
       he->p.str = r;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_DESCRIPTION;
       he->p.str = d;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_GROUP;
       he->p.str = group;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_LICENSE;
       he->p.str = license;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_SUMMARY;
       he->p.str = u;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
   
       he->tag = RPMTAG_SIZE;
       he->t = RPM_INT32_TYPE;
       he->p.i32p = &zero;
       he->c = 1;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
   
       he->append = 1;
   
  @@ -581,33 +573,33 @@
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &u;
       he->c = 1;
  -    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_PROVIDEVERSION;
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &evr;
       he->c = 1;
  -    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_PROVIDEFLAGS;
       he->t = RPM_INT32_TYPE;
       he->p.i32p = &pflags;
       he->c = 1;
  -    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    xx = hae(h, he, 0);
   
       he->tag = RPMTAG_PROVIDENAME;
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &n;
       he->c = 1;
  -    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_PROVIDEVERSION;
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &evr;
       he->c = 1;
  -    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    xx = hae(h, he, 0);
       he->tag = RPMTAG_PROVIDEFLAGS;
       he->t = RPM_INT32_TYPE;
       he->p.i32p = &pflags;
       he->c = 1;
  -    xx = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    xx = hae(h, he, 0);
   
       he->append = 0;
   
  @@ -615,30 +607,26 @@
       he->t = RPM_STRING_TYPE;
       he->p.str = RPMVERSION;
       he->c = 1;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
   
       /* XXX W2DO: tag value inheirited from parent? */
       he->tag = RPMTAG_BUILDHOST;
       he->t = RPM_STRING_TYPE;
       he->p.str = buildhost;
       he->c = 1;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
       {   int_32 tid = rpmtsGetTid(ts);
   	he->tag = RPMTAG_INSTALLTIME;
   	he->t = RPM_INT32_TYPE;
   	he->p.i32p = &tid;
   	he->c = 1;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(h, he, 0);
   	/* XXX W2DO: tag value inheirited from parent? */
   	he->tag = RPMTAG_BUILDTIME;
   	he->t = RPM_INT32_TYPE;
   	he->p.i32p = &tid;
   	he->c = 1;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(h, he, 0);
       }
   
   #ifdef	NOTYET
  @@ -647,8 +635,7 @@
       he->t = RPM_STRING_TYPE;
       he->p.str = fn;
       he->c = 1;
  -    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +    xx = hae(h, he, 0);
   #endif
   
       /* Add header to database. */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfc.c
  ============================================================================
  $ cvs diff -u -r1.29 -r1.30 rpmfc.c
  --- rpm/lib/rpmfc.c	22 Oct 2007 01:06:05 -0000	1.29
  +++ rpm/lib/rpmfc.c	22 Oct 2007 02:48:41 -0000	1.30
  @@ -1390,7 +1390,7 @@
   
   int rpmfcGenerateDepends(void * specp, void * pkgp)
   {
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const Spec spec = specp;
       Package pkg = pkgp;
  @@ -1529,8 +1529,7 @@
   	for (i = 0; i < he->c; i++)
   	    fcolors[i] &= 0x0f;
   
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
       }
   
       /* Add classes(#classes) */
  @@ -1539,8 +1538,7 @@
       he->p.argv = argvData(fc->cdict);
       he->c = argvCount(fc->cdict);
       if (he->p.ptr != NULL && he->c > 0) {
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
       }
   
       /* Add per-file classes(#files) */
  @@ -1550,8 +1548,7 @@
       he->c = argiCount(fc->fcdictx);
   assert(ac == he->c);
       if (he->p.ptr != NULL && he->c > 0) {
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
       }
   
       /* Add Provides: */
  @@ -1561,8 +1558,7 @@
   	he->tag = RPMTAG_PROVIDENAME;
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = fc->provides->N;
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
   
   	/* XXX rpm prior to 3.0.2 did not always supply EVR and Flags. */
   /*@-nullpass@*/
  @@ -1570,15 +1566,13 @@
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = fc->provides->EVR;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
   
   	he->tag = RPMTAG_PROVIDEFLAGS;
   	he->t = RPM_INT32_TYPE;
   	he->p.i32p = fc->provides->Flags;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
   /*@=nullpass@*/
       }
   
  @@ -1590,8 +1584,7 @@
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = fc->requires->N;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
   
   	/* XXX rpm prior to 3.0.2 did not always supply EVR and Flags. */
   /*@-nullpass@*/
  @@ -1599,15 +1592,13 @@
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = fc->requires->EVR;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
   
   	he->tag = RPMTAG_REQUIREFLAGS;
   	he->t = RPM_INT32_TYPE;
   	he->p.i32p = fc->requires->Flags;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
   /*@=nullpass@*/
       }
   
  @@ -1617,8 +1608,7 @@
       he->p.i32p = argiData(fc->ddictx);
       he->c = argiCount(fc->ddictx);
       if (he->p.ptr != NULL) {
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
       }
   
       /* Add per-file dependency (start,number) pairs (#files) */
  @@ -1628,8 +1618,7 @@
       he->c = argiCount(fc->fddictx);
   assert(ac == he->c);
       if (he->p.ptr != NULL) {
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
       }
   
       he->tag = RPMTAG_FILEDEPENDSN;
  @@ -1638,8 +1627,7 @@
       he->c = argiCount(fc->fddictn);
   assert(ac == he->c);
       if (he->p.ptr != NULL) {
  -	xx = hae(pkg->header, he->tag, he->t, he->p.ptr, he->c);
  -assert(xx);
  +	xx = hae(pkg->header, he, 0);
       }
   
       printDeps(pkg->header);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfi.c
  ============================================================================
  $ cvs diff -u -r2.93 -r2.94 rpmfi.c
  --- rpm/lib/rpmfi.c	21 Oct 2007 23:22:55 -0000	2.93
  +++ rpm/lib/rpmfi.c	22 Oct 2007 02:48:41 -0000	2.94
  @@ -684,11 +684,11 @@
   	/*@modifies ts, fi, origH, actions, rpmGlobalMacroContext,
   		internalState @*/
   {
  -    rpmte p = rpmtsRelocateElement(ts);
  -    HGE_t hge = (HGE_t)headerGetExtension;
  -    HAE_t hae = (HAE_t) headerAddEntry;
  +    HGE_t hge = headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HME_t hme = (HME_t) headerModifyEntry;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
  +    rpmte p = rpmtsRelocateElement(ts);
       static int _printed = 0;
       int allowBadRelocate = (rpmtsFilterFlags(ts) & RPMPROB_FILTER_FORCERELOCATE);
       rpmRelocation relocations = NULL;
  @@ -745,7 +745,7 @@
   		he->t = validType;
   		he->p.argv = validRelocations;
   		he->c = numValid;
  -		xx = hae(origH, he->tag, he->t, he->p.ptr, he->c);
  +		xx = hae(origH, he, 0);
   	    }
   	    validRelocations = _free(validRelocations);
   	}
  @@ -873,7 +873,7 @@
   	    he->t = RPM_STRING_ARRAY_TYPE;
   	    he->p.argv = actualRelocations;
   	    he->c = numActual;
  -	    xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	    xx = hae(h, he, 0);
   	}
   
   	actualRelocations = _free(actualRelocations);
  @@ -1102,19 +1102,19 @@
   	he->tag = RPMTAG_BASENAMES;
   	xx = hge(h, he, 0);
   	he->tag = RPMTAG_ORIGBASENAMES;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(h, he, 0);
   	he->p.ptr = _free(he->p.ptr);
   
   	he->tag = RPMTAG_DIRNAMES;
   	xx = hge(h, he, 0);
   	he->tag = RPMTAG_ORIGDIRNAMES;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(h, he, 0);
   	he->p.ptr = _free(he->p.ptr);
   
   	he->tag = RPMTAG_DIRINDEXES;
   	xx = hge(h, he, 0);
   	he->tag = RPMTAG_ORIGDIRINDEXES;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(h, he, 0);
   	he->p.ptr = _free(he->p.ptr);
   
   	he->tag = RPMTAG_BASENAMES;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrNVR.c
  ============================================================================
  $ cvs diff -u -r1.21 -r1.22 hdrNVR.c
  --- rpm/rpmdb/hdrNVR.c	21 Oct 2007 23:22:56 -0000	1.21
  +++ rpm/rpmdb/hdrNVR.c	22 Oct 2007 02:48:41 -0000	1.22
  @@ -202,85 +202,81 @@
   
   void headerMergeLegacySigs(Header h, const Header sigh)
   {
  +    HAE_t hae = headerAddExtension;
       HFD_t hfd = (HFD_t) headerFreeData;
  +    HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       HeaderIterator hi;
  -    int_32 tag;
  -    rpmTagType type;
  -    const void * ptr;
  -    rpmTagCount count;
       int xx;
   
       if (h == NULL || sigh == NULL)
   	return;
   
       for (hi = headerInitIterator(sigh);
  -        headerNextIterator(hi, &tag, &type, &ptr, &count);
  -        ptr = hfd(ptr, type))
  +        headerNextIterator(hi, &he->tag, &he->t, &he->p, &he->c);
  +        he->p.ptr = hfd(he->p.ptr, he->t))
       {
  -	switch (tag) {
   	/* XXX Translate legacy signature tag values. */
  +	switch (he->tag) {
   	case RPMSIGTAG_SIZE:
  -	    tag = RPMTAG_SIGSIZE;
  +	    he->tag = RPMTAG_SIGSIZE;
   	    /*@switchbreak@*/ break;
   #if defined(SUPPORT_RPMV3_BROKEN)
   	case RPMSIGTAG_LEMD5_1:
  -	    tag = RPMTAG_SIGLEMD5_1;
  +	    he->tag = RPMTAG_SIGLEMD5_1;
   	    /*@switchbreak@*/ break;
   	case RPMSIGTAG_LEMD5_2:
  -	    tag = RPMTAG_SIGLEMD5_2;
  +	    he->tag = RPMTAG_SIGLEMD5_2;
   	    /*@switchbreak@*/ break;
   #endif
   #if defined(SUPPORT_RPMV3_VERIFY_RSA)
   	case RPMSIGTAG_PGP:
  -	    tag = RPMTAG_SIGPGP;
  +	    he->tag = RPMTAG_SIGPGP;
   	    /*@switchbreak@*/ break;
   	case RPMSIGTAG_PGP5:
  -	    tag = RPMTAG_SIGPGP5;
  +	    he->tag = RPMTAG_SIGPGP5;
   	    /*@switchbreak@*/ break;
   #endif
   	case RPMSIGTAG_MD5:
  -	    tag = RPMTAG_SIGMD5;
  +	    he->tag = RPMTAG_SIGMD5;
   	    /*@switchbreak@*/ break;
   #if defined(SUPPORT_RPMV3_VERIFY_DSA)
   	case RPMSIGTAG_GPG:
  -	    tag = RPMTAG_SIGGPG;
  +	    he->tag = RPMTAG_SIGGPG;
   	    /*@switchbreak@*/ break;
   #endif
   	case RPMSIGTAG_PAYLOADSIZE:
  -	    tag = RPMTAG_ARCHIVESIZE;
  +	    he->tag = RPMTAG_ARCHIVESIZE;
   	    /*@switchbreak@*/ break;
   	case RPMSIGTAG_SHA1:
   	case RPMSIGTAG_DSA:
   	case RPMSIGTAG_RSA:
   	default:
  -	    if (!(tag >= HEADER_SIGBASE && tag < HEADER_TAGBASE))
  +	    /* Skip all unknown tags that are not in the signature tag range. */
  +	    if (!(he->tag >= HEADER_SIGBASE && he->tag < HEADER_TAGBASE))
   		continue;
   	    /*@switchbreak@*/ break;
   	}
  -	if (ptr == NULL) continue;	/* XXX can't happen */
  -	if (!headerIsEntry(h, tag)) {
  -	    if (hdrchkType(type))
  -		continue;
  -	    if (count < 0 || hdrchkData(count))
  -		continue;
  -	    switch(type) {
  -	    case RPM_MASK_TYPE:
  -	    case RPM_OPENPGP_TYPE:
  -	    case RPM_ASN1_TYPE:
  -	    case RPM_NULL_TYPE:
  -		continue;
  -		/*@notreached@*/ /*@switchbreak@*/ break;
  +assert(he->p.ptr != NULL);
  +	if (!headerIsEntry(h, he->tag)) {
  +	    if (hdrchkType(he->t))
  +		continue;
  +	    if (he->c < 0 || hdrchkData(he->c))
  +		continue;
  +	    switch(he->t) {
  +	    default:
  +assert(0);	/* XXX keep gcc quiet */
  +		/*@switchbreak@*/ break;
   	    case RPM_CHAR_TYPE:
   	    case RPM_INT8_TYPE:
   	    case RPM_INT16_TYPE:
   	    case RPM_INT32_TYPE:
   	    case RPM_INT64_TYPE:
  -		if (count != 1)
  +		if (he->c != 1)
   		    continue;
   		/*@switchbreak@*/ break;
   	    case RPM_STRING_TYPE:
   	    case RPM_BIN_TYPE:
  -		if (count >= 16*1024)
  +		if (he->c >= 16*1024)
   		    continue;
   		/*@switchbreak@*/ break;
   	    case RPM_STRING_ARRAY_TYPE:
  @@ -288,7 +284,8 @@
   		continue;
   		/*@notreached@*/ /*@switchbreak@*/ break;
   	    }
  - 	    xx = headerAddEntry(h, tag, type, ptr, count);
  + 	    xx = hae(h, he, 0);
  +assert(xx == 1);
   	}
       }
       hi = headerFreeIterator(hi);
  @@ -296,67 +293,66 @@
   
   Header headerRegenSigHeader(const Header h, int noArchiveSize)
   {
  +    HAE_t hae = headerAddExtension;
       HFD_t hfd = (HFD_t) headerFreeData;
  +    HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       Header sigh = headerNew();
       HeaderIterator hi;
  -    int_32 stag;
  -    int_32 tag;
  -    rpmTagType type;
  -    const void * ptr;
  -    rpmTagCount count;
       int xx;
   
       for (hi = headerInitIterator(h);
  -        headerNextIterator(hi, &tag, &type, &ptr, &count);
  -        ptr = hfd(ptr, type))
  +        headerNextIterator(hi, &he->tag, &he->t, &he->p, &he->c);
  +        he->p.ptr = hfd(he->p.ptr, he->t))
       {
  -	switch (tag) {
   	/* XXX Translate legacy signature tag values. */
  +	switch (he->tag) {
   	case RPMTAG_SIGSIZE:
  -	    stag = RPMSIGTAG_SIZE;
  +	    he->tag = RPMSIGTAG_SIZE;
   	    /*@switchbreak@*/ break;
   #if defined(SUPPORT_RPMV3_BROKEN)
   	case RPMTAG_SIGLEMD5_1:
  -	    stag = RPMSIGTAG_LEMD5_1;
  +	    he->tag = RPMSIGTAG_LEMD5_1;
   	    /*@switchbreak@*/ break;
   	case RPMTAG_SIGLEMD5_2:
  -	    stag = RPMSIGTAG_LEMD5_2;
  +	    he->tag = RPMSIGTAG_LEMD5_2;
   	    /*@switchbreak@*/ break;
   #endif
   #if defined(SUPPORT_RPMV3_VERIFY_RSA)
   	case RPMTAG_SIGPGP:
  -	    stag = RPMSIGTAG_PGP;
  +	    he->tag = RPMSIGTAG_PGP;
   	    /*@switchbreak@*/ break;
   	case RPMTAG_SIGPGP5:
  -	    stag = RPMSIGTAG_PGP5;
  +	    he->tag = RPMSIGTAG_PGP5;
   	    /*@switchbreak@*/ break;
   #endif
   	case RPMTAG_SIGMD5:
  -	    stag = RPMSIGTAG_MD5;
  +	    he->tag = RPMSIGTAG_MD5;
   	    /*@switchbreak@*/ break;
   #if defined(SUPPORT_RPMV3_VERIFY_DSA)
   	case RPMTAG_SIGGPG:
  -	    stag = RPMSIGTAG_GPG;
  +	    he->tag = RPMSIGTAG_GPG;
   	    /*@switchbreak@*/ break;
   #endif
   	case RPMTAG_ARCHIVESIZE:
   	    /* XXX rpm-4.1 and later has archive size in signature header. */
   	    if (noArchiveSize)
   		continue;
  -	    stag = RPMSIGTAG_PAYLOADSIZE;
  +	    he->tag = RPMSIGTAG_PAYLOADSIZE;
   	    /*@switchbreak@*/ break;
   	case RPMTAG_SHA1HEADER:
   	case RPMTAG_DSAHEADER:
   	case RPMTAG_RSAHEADER:
   	default:
  -	    if (!(tag >= HEADER_SIGBASE && tag < HEADER_TAGBASE))
  +	    /* Skip all unknown tags that are not in the signature tag range. */
  +	    if (!(he->tag >= HEADER_SIGBASE && he->tag < HEADER_TAGBASE))
   		continue;
  -	    stag = tag;
   	    /*@switchbreak@*/ break;
   	}
  -	if (ptr == NULL) continue;	/* XXX can't happen */
  -	if (!headerIsEntry(sigh, stag))
  -	    xx = headerAddEntry(sigh, stag, type, ptr, count);
  +assert(he->p.ptr != NULL);
  +	if (!headerIsEntry(sigh, he->tag)) {
  +	    xx = hae(sigh, he, 0);
  +assert(xx == 1);
  +	}
       }
       hi = headerFreeIterator(hi);
       return sigh;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrinline.h
  ============================================================================
  $ cvs diff -u -r1.23 -r1.24 hdrinline.h
  --- rpm/rpmdb/hdrinline.h	21 Oct 2007 23:22:56 -0000	1.23
  +++ rpm/rpmdb/hdrinline.h	22 Oct 2007 02:48:42 -0000	1.24
  @@ -268,6 +268,30 @@
   }
   
   /** \ingroup header
  + * Add or append tag container to header.
  + *
  + * @param h		header
  + * @param he		tag container
  + * @param flags		(unused)
  + * @return		1 on success, 0 on failure
  + */
  +/*@mayexit@*/
  +/*@unused@*/ static inline
  +int headerAddExtension(Header h, HE_t he, /*@unused@*/ unsigned int flags)
  +	/*@modifies h @*/
  +{
  +    int xx;
  +    if (he->append)
  +	xx = (h2hv(h)->hdraddorappend) (h, he->tag, he->t, he->p.ptr, he->c);
  +    else
  +	xx = (h2hv(h)->hdradd) (h, he->tag, he->t, he->p.ptr, he->c);
  +#if 0
  +assert(xx);
  +#endif
  +    return xx;
  +}
  +
  +/** \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
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.h
  ============================================================================
  $ cvs diff -u -r1.54 -r1.55 header.h
  --- rpm/rpmdb/header.h	22 Oct 2007 01:14:51 -0000	1.54
  +++ rpm/rpmdb/header.h	22 Oct 2007 02:48:42 -0000	1.55
  @@ -371,22 +371,14 @@
   	/*@modifies *he @*/;
   
   /**
  - * Prototype for headerAddEntry() vector.
  + * Add or append tag container to header.
    *
  - * Duplicate tags are okay, but only defined for iteration (with the
  - * exceptions noted below). While you are allowed to add i18n string
  - * arrays through this function, you probably don't mean to. See
  - * headerAddI18NString() instead.
  - *
  - * @param h             header
  - * @param tag           tag
  - * @param type          tag value data type
  - * @param p             tag value(s)
  - * @param c             number of values
  - * @return              1 on success, 0 on failure
  + * @param h		header
  + * @param he		tag container
  + * @param flags		(unused)
  + * @return		1 on success, 0 on failure
    */
  -typedef int (*HAE_t) (Header h, rpmTag tag, rpmTagType type,
  -			const void * p, rpmTagCount c)
  +typedef int (*HAE_t) (Header h, HE_t he, unsigned int flags)
   	/*@modifies h @*/;
   
   /**
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.194 -r1.195 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	21 Oct 2007 23:22:56 -0000	1.194
  +++ rpm/rpmdb/rpmdb.c	22 Oct 2007 02:48:42 -0000	1.195
  @@ -3097,8 +3097,8 @@
   DBC * dbcursor = NULL;
   DBT * key = alloca(sizeof(*key));
   DBT * data = alloca(sizeof(*data));
  -    HGE_t hge = (HGE_t) headerGetExtension;
  -    HAE_t hae = (HAE_t) headerAddEntry;
  +    HGE_t hge = headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       sigset_t signalMask;
   #if defined(SUPPORT_RPMV3_BASENAMES_HACKS)
  @@ -3135,7 +3135,7 @@
   	he->p.i32p = &tid;
   	he->c = 1;
   	if (!headerIsEntry(h, he->tag))
  -	   xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	   xx = hae(h, he, 0);
       }
   
       /* Add the package color if not present. */
  @@ -3145,7 +3145,7 @@
   	he->t = RPM_INT32_TYPE;
   	he->p.ui32p = &hcolor;
   	he->c = 1;
  -	xx = hae(h, he->tag, he->t, he->p.ptr, he->c);
  +	xx = hae(h, he, 0);
       }
   
   #if defined(SUPPORT_RPMV3_BASENAMES_HACKS)
  @@ .
Received on Mon Oct 22 04:48:42 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.