RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/build/ files.c pack.c parseChangelog.c par...

From: Jeff Johnson <jbj@rpm5.org>
Date: Sun 25 Nov 2007 - 00:15:33 CET
Message-Id: <20071124231533.D8472348455@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:   25-Nov-2007 00:15:33
  Branch: HEAD                             Handle: 2007112423153102

  Modified files:
    rpm                     CHANGES
    rpm/build               files.c pack.c parseChangelog.c parsePreamble.c
                            parseScript.c parseSpec.c reqprov.c
    rpm/lib                 psm.c rpmchecksig.c rpmfc.c rpmfi.c
    rpm/python              header-py.c
    rpm/rpmdb               hdrNVR.c hdrinline.h header.c header.h
                            librpmdb.vers rpmdb.c rpmtag.h signature.c
    rpm/tools               rpmcache.c

  Log:
    - finalize headerMod, add to the ABI, remove HME_t goop.
    - finalize headerDel, add to the ABI, remove HRE_t goop.
    - finalize headerPut, add to the ABI, remove HAE_t goop.

  Summary:
    Revision    Changes     Path
    1.1886      +3  -0      rpm/CHANGES
    1.293       +29 -34     rpm/build/files.c
    2.257       +29 -37     rpm/build/pack.c
    2.37        +3  -4      rpm/build/parseChangelog.c
    2.146       +9  -14     rpm/build/parsePreamble.c
    2.51        +3  -4      rpm/build/parseScript.c
    2.116       +3  -4      rpm/build/parseSpec.c
    1.82        +4  -5      rpm/build/reqprov.c
    2.267       +15 -20     rpm/lib/psm.c
    1.199       +40 -43     rpm/lib/rpmchecksig.c
    1.42        +18 -20     rpm/lib/rpmfc.c
    2.104       +8  -10     rpm/lib/rpmfi.c
    1.85        +2  -4      rpm/python/header-py.c
    1.38        +2  -4      rpm/rpmdb/hdrNVR.c
    1.42        +0  -58     rpm/rpmdb/hdrinline.h
    1.135       +48 -0      rpm/rpmdb/header.c
    1.76        +0  -36     rpm/rpmdb/header.h
    1.33        +3  -0      rpm/rpmdb/librpmdb.vers
    1.221       +4  -11     rpm/rpmdb/rpmdb.c
    1.14        +36 -1      rpm/rpmdb/rpmtag.h
    1.34        +4  -6      rpm/rpmdb/signature.c
    2.26        +4  -5      rpm/tools/rpmcache.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1885 -r1.1886 CHANGES
  --- rpm/CHANGES	24 Nov 2007 22:07:27 -0000	1.1885
  +++ rpm/CHANGES	24 Nov 2007 23:15:31 -0000	1.1886
  @@ -1,4 +1,7 @@
   5.0a2 -> 5.0a3:
  +    - jbj: finalize headerMod, add to the ABI, remove HME_t goop.
  +    - jbj: finalize headerDel, add to the ABI, remove HRE_t goop.
  +    - jbj: finalize headerPut, add to the ABI, remove HAE_t goop.
       - jbj: finalize headerGet, add to the ABI, remove HGE_t goop.
       - jbj: re-add headerSprintf to the ABI, removing wrappers/methods.
       - jbj: move headerSprintf goop out of header.c into hdrfmt.c.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/files.c
  ============================================================================
  $ cvs diff -u -r1.292 -r1.293 files.c
  --- rpm/build/files.c	24 Nov 2007 22:07:28 -0000	1.292
  +++ rpm/build/files.c	24 Nov 2007 23:15:31 -0000	1.293
  @@ -1169,8 +1169,6 @@
   static void compressFilelist(Header h)
   	/*@modifies h @*/
   {
  -    HAE_t hae = headerAddExtension;
  -    HRE_t hre = headerRemoveExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char ** fileNames;
       const char * fn;
  @@ -1190,7 +1188,7 @@
   
       if (headerIsEntry(h, RPMTAG_DIRNAMES)) {
   	he->tag = RPMTAG_OLDFILENAMES;
  -	xx = hre(h, he, 0);
  +	xx = headerDel(h, he, 0);
   	return;		/* Already converted. */
       }
   
  @@ -1254,25 +1252,25 @@
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = dirIndexes;
   	he->c = count;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   
   	he->tag = RPMTAG_BASENAMES;
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = baseNames;
   	he->c = count;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(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, 0);
  +	xx = headerPut(h, he, 0);
       }
   
       fileNames = _free(fileNames);
   
       he->tag = RPMTAG_OLDFILENAMES;
  -    xx = hre(h, he, 0);
  +    xx = headerDel(h, he, 0);
   }
   /*@=bounds@*/
   
  @@ -1292,7 +1290,6 @@
   	/*@modifies h, *fip, fl->processingFailed, fl->fileList,
   		rpmGlobalMacroContext, fileSystem, internalState @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char * apath;
       uint16_t ui16;
  @@ -1397,7 +1394,7 @@
   	he->p.argv = &flp->fileURL;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   /*@-sizeoftype@*/
  @@ -1407,7 +1404,7 @@
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	he->tag = RPMTAG_FILEUSERNAME;
  @@ -1415,7 +1412,7 @@
   	he->p.argv = &flp->uname;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	he->tag = RPMTAG_FILEGROUPNAME;
  @@ -1423,7 +1420,7 @@
   	he->p.argv = &flp->gname;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	ui32 = flp->fl_mtime;
  @@ -1432,7 +1429,7 @@
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	ui16 = flp->fl_mode;
  @@ -1441,7 +1438,7 @@
   	he->p.ui16p = &ui16;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	ui16 = flp->fl_rdev;
  @@ -1450,7 +1447,7 @@
   	he->p.ui16p = &ui16;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	ui32 = flp->fl_dev;
  @@ -1459,7 +1456,7 @@
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	ui32 = flp->fl_ino;
  @@ -1468,7 +1465,7 @@
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   /*@=sizeoftype@*/
  @@ -1478,7 +1475,7 @@
   	he->p.argv = &flp->langs;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
         { static uint32_t source_file_dalgo = 0;
  @@ -1527,7 +1524,7 @@
   	he->p.argv = &s;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	ui32 = dalgo;
  @@ -1536,7 +1533,7 @@
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
         }
   	
  @@ -1564,7 +1561,7 @@
   	he->p.argv = &s;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	if (flp->flags & RPMFILE_GHOST) {
  @@ -1577,7 +1574,7 @@
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   	
   	if (!isSrc && isDoc(fl, flp->fileURL))
  @@ -1592,7 +1589,7 @@
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   	
   	/* Add file security context to package. */
  @@ -1606,7 +1603,7 @@
   	    he->p.argv = (const char **)&scon;	/* XXX NOCAST */
   	    he->c = 1;
   	    he->append = 1;
  -	    xx = hae(h, he, 0);
  +	    xx = headerPut(h, he, 0);
   	    he->append = 0;
   
   	    if (scon != nocon)
  @@ -1623,7 +1620,7 @@
       he->p.ui32p = &ui32;
       he->c = 1;
       he->append = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->append = 0;
   	
       compressFilelist(h);
  @@ -2070,7 +2067,6 @@
   		check_fileList, rpmGlobalMacroContext,
   		fileSystem, internalState @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char * buildURL = "%{_builddir}/%{?buildsubdir}/";
       const char * fn = NULL;
  @@ -2122,7 +2118,7 @@
       he->p.argv = &apkt;
       he->c = 1;
       he->append = 1;
  -    xx = hae(pkg->header, he, 0);
  +    xx = headerPut(pkg->header, he, 0);
       he->append = 0;
   
       rc = 0;
  @@ -2522,7 +2518,6 @@
   
   int initSourceHeader(Spec spec, StringBuf *sfp)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       HeaderIterator hi;
       StringBuf sourceFiles;
  @@ -2560,7 +2555,7 @@
   	case RPMTAG_XPM:
   	case HEADER_I18NTABLE:
   	    if (he->p.ptr)
  -		xx = hae(spec->sourceHeader, he, 0);
  +		xx = headerPut(spec->sourceHeader, he, 0);
   	    /*@switchbreak@*/ break;
   	default:
   	    /* do not copy */
  @@ -2575,7 +2570,7 @@
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = spec->BANames;
   	he->c = spec->BACount;
  -	xx = hae(spec->sourceHeader, he, 0);
  +	xx = headerPut(spec->sourceHeader, he, 0);
       }
     }
   
  @@ -2604,7 +2599,7 @@
   	    he->p.argv = &srcPtr->source;
   	    he->c = 1;
   	    he->append = 1;
  -	    xx = hae(spec->sourceHeader, he, 0);
  +	    xx = headerPut(spec->sourceHeader, he, 0);
   	    he->append = 0;
   	    if (srcPtr->flags & RPMFILE_GHOST) {
   		he->tag = RPMTAG_NOSOURCE;
  @@ -2612,7 +2607,7 @@
   		he->p.ui32p = &srcPtr->num;
   		he->c = 1;
   		he->append = 1;
  -		xx = hae(spec->sourceHeader, he, 0);
  +		xx = headerPut(spec->sourceHeader, he, 0);
   		he->append = 0;
   	    }
   	}
  @@ -2622,7 +2617,7 @@
   	    he->p.argv = &srcPtr->source;
   	    he->c = 1;
   	    he->append = 1;
  -	    xx = hae(spec->sourceHeader, he, 0);
  +	    xx = headerPut(spec->sourceHeader, he, 0);
   	    he->append = 0;
   	    if (srcPtr->flags & RPMFILE_GHOST) {
   		he->tag = RPMTAG_NOPATCH;
  @@ -2630,7 +2625,7 @@
   		he->p.ui32p = &srcPtr->num;
   		he->c = 1;
   		he->append = 1;
  -		xx = hae(spec->sourceHeader, he, 0);
  +		xx = headerPut(spec->sourceHeader, he, 0);
   		he->append = 0;
   	    }
   	}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
  ============================================================================
  $ cvs diff -u -r2.256 -r2.257 pack.c
  --- rpm/build/pack.c	24 Nov 2007 22:07:28 -0000	2.256
  +++ rpm/build/pack.c	24 Nov 2007 23:15:31 -0000	2.257
  @@ -177,8 +177,6 @@
   	/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
   	/*@modifies h, rpmGlobalMacroContext, fileSystem, internalState @*/
   {
  -    HAE_t hae = headerAddExtension;
  -    HRE_t hre = headerRemoveExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       StringBuf sb = newStringBuf();
       int xx;
  @@ -187,7 +185,7 @@
       xx = headerGet(h, he, 0);
       if (xx) {
   	appendLineStringBuf(sb, he->p.str);
  -	(void) hre(h, he, 0);
  +	xx = headerDel(h, he, 0);
       }
       he->p.ptr = _free(he->p.ptr);
   
  @@ -198,7 +196,7 @@
       he->t = RPM_STRING_TYPE;
       he->p.str = getStringBuf(sb);
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       sb = freeStringBuf(sb);
       return 0;
  @@ -210,7 +208,6 @@
   	/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
   	/*@modifies h, rpmGlobalMacroContext, fileSystem, internalState  @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       StringBuf sb = newStringBuf();
       const char *s;
  @@ -226,7 +223,7 @@
       he->p.argv = &s;
       he->c = 1;
       he->append = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->append = 0;
   
       sb = freeStringBuf(sb);
  @@ -238,7 +235,6 @@
   	/*@modifies pkg->header, rpmGlobalMacroContext,
   		fileSystem, internalState @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       struct TriggerFileEntry *p;
       int xx;
  @@ -300,7 +296,7 @@
   	he->p.argv = (const char **)&p->prog;	/* XXX NOCAST */
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   	he->append = 0;
   	if (p->script) {
   	    he->tag = RPMTAG_TRIGGERSCRIPTS;
  @@ -308,7 +304,7 @@
   	    he->p.argv = (const char **)&p->script;	/* XXX NOCAST */
   	    he->c = 1;
   	    he->append = 1;
  -	    xx = hae(pkg->header, he, 0);
  +	    xx = headerPut(pkg->header, he, 0);
   	    he->append = 0;
   	} else if (p->fileName) {
   	    if (addFileToArrayTag(spec, p->fileName, pkg->header,
  @@ -325,7 +321,7 @@
   	    he->p.argv = &bull;
   	    he->c = 1;
   	    he->append = 1;
  -	    xx = hae(pkg->header, he, 0);
  +	    xx = headerPut(pkg->header, he, 0);
   	    he->append = 0;
   	}
       }
  @@ -470,7 +466,6 @@
   
   void providePackageNVR(Header h)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char *N, *V, *R;
       uint32_t E;
  @@ -528,7 +523,7 @@
   	    he->p.argv = &vdummy;
   	    he->c = 1;
   	    he->append = 1;
  -	    xx = hae(h, he, 0);
  +	    xx = headerPut(h, he, 0);
   	    he->append = 0;
   
   	    he->tag = RPMTAG_PROVIDEFLAGS;
  @@ -536,7 +531,7 @@
   	    he->p.ui32p = &fdummy;
   	    he->c = 1;
   	    he->append = 1;
  -	    xx = hae(h, he, 0);
  +	    xx = headerPut(h, he, 0);
   	    he->append = 0;
   	}
   	goto exit;
  @@ -570,7 +565,7 @@
   	he->p.argv = &N;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	he->tag = RPMTAG_PROVIDEVERSION;
  @@ -578,7 +573,7 @@
   	he->p.argv = &pEVR;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	he->tag = RPMTAG_PROVIDEFLAGS;
  @@ -586,7 +581,7 @@
   	he->p.ui32p = &pFlags;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
       }
   }
  @@ -595,7 +590,6 @@
   rpmRC writeRPM(Header *hdrp, unsigned char ** pkgidp, const char *fileName,
   		CSA_t csa, char *passPhrase, const char **cookie)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       FD_t fd = NULL;
       FD_t ifd = NULL;
  @@ -657,7 +651,7 @@
   	    he->t = RPM_STRING_TYPE;
   	    he->p.str = payload_format;
   	    he->c = 1;
  -	    xx = hae(h, he, 0);
  +	    xx = headerPut(h, he, 0);
   	}
   
   	/* XXX addition to header is too late to be displayed/sorted. */
  @@ -666,19 +660,19 @@
   	    he->t = RPM_STRING_TYPE;
   	    he->p.str = "gzip";
   	    he->c = 1;
  -	    xx = hae(h, he, 0);
  +	    xx = headerPut(h, he, 0);
   	} else if (s[1] == 'b' && s[2] == 'z') {
   	    he->tag = RPMTAG_PAYLOADCOMPRESSOR;
   	    he->t = RPM_STRING_TYPE;
   	    he->p.str = "bzip2";
   	    he->c = 1;
  -	    xx = hae(h, he, 0);
  +	    xx = headerPut(h, he, 0);
   	} else if (s[1] == 'l' && s[2] == 'z') {
   	    he->tag = RPMTAG_PAYLOADCOMPRESSOR;
   	    he->t = RPM_STRING_TYPE;
   	    he->p.str = "lzma";
   	    he->c = 1;
  -	    xx = hae(h, he, 0);
  +	    xx = headerPut(h, he, 0);
   	    (void) rpmlibNeedsFeature(h, "PayloadIsLzma", "4.4.6-1");
   	}
   	strcpy(buf, rpmio_flags);
  @@ -688,7 +682,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = buf+1;
   	he->c = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
       }
   
       /* Create and add the cookie */
  @@ -699,7 +693,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = *cookie;
   	he->c = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
       }
       
       /* Reallocate the header into one contiguous region. */
  @@ -775,7 +769,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = SHA1;
   	he->c = 1;
  -	xx = hae(sigh, he, 0);
  +	xx = headerPut(sigh, he, 0);
   	SHA1 = _free(SHA1);
       }
   
  @@ -784,7 +778,7 @@
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &payloadSize;
   	he->c = 1;
  -	xx = hae(sigh, he, 0);
  +	xx = headerPut(sigh, he, 0);
       }
   
       /* Reallocate the signature into one contiguous region. */
  @@ -948,7 +942,6 @@
   /*@-boundswrite@*/
   int packageBinaries(Spec spec)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       struct cpioSourceArchive_s csabuf;
       CSA_t csa = &csabuf;
  @@ -968,7 +961,7 @@
   	    he->t = RPM_STRING_TYPE;
   	    he->p.str = spec->cookie;
   	    he->c = 1;
  -	    xx = hae(pkg->header, he, 0);
  +	    xx = headerPut(pkg->header, he, 0);
   	}
   
   	/* Copy changelog from src rpm */
  @@ -978,25 +971,25 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = VERSION;
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	he->tag = RPMTAG_BUILDHOST;
   	he->t = RPM_STRING_TYPE;
   	he->p.str = buildHost();
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	he->tag = RPMTAG_BUILDTIME;
   	he->t = RPM_STRING_TYPE;
   	he->p.ui32p = getBuildTime();
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	he->tag = RPMTAG_OPTFLAGS;
   	he->t = RPM_STRING_TYPE;
   	he->p.str = rpmExpand("%{optflags}", NULL);
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   	he->p.ptr = _free(he->p.ptr);
   
   	(void) genSourceRpmName(spec);
  @@ -1004,14 +997,14 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = spec->sourceRpmName;
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	if (spec->sourcePkgId != NULL) {
   	    he->tag = RPMTAG_SOURCEPKGID;
   	    he->t = RPM_BIN_TYPE;
   	    he->p.ptr = spec->sourcePkgId;
   	    he->c = 16;
  -	    xx = hae(pkg->header, he, 0);
  +	    xx = headerPut(pkg->header, he, 0);
   	}
   	
   	{   const char *binFormat = rpmGetPath("%{_rpmfilename}", NULL);
  @@ -1077,7 +1070,6 @@
   /*@-boundswrite@*/
   int packageSources(Spec spec)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       struct cpioSourceArchive_s csabuf;
       CSA_t csa = &csabuf;
  @@ -1089,19 +1081,19 @@
       he->t = RPM_STRING_TYPE;
       he->p.str = VERSION;
       he->c = 1;
  -    xx = hae(spec->sourceHeader, he, 0);
  +    xx = headerPut(spec->sourceHeader, he, 0);
   
       he->tag = RPMTAG_BUILDHOST;
       he->t = RPM_STRING_TYPE;
       he->p.str = buildHost();
       he->c = 1;
  -    xx = hae(spec->sourceHeader, he, 0);
  +    xx = headerPut(spec->sourceHeader, he, 0);
   
       he->tag = RPMTAG_BUILDTIME;
       he->t = RPM_STRING_TYPE;
       he->p.ui32p = getBuildTime();
       he->c = 1;
  -    xx = hae(spec->sourceHeader, he, 0);
  +    xx = headerPut(spec->sourceHeader, he, 0);
   
       (void) genSourceRpmName(spec);
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parseChangelog.c
  ============================================================================
  $ cvs diff -u -r2.36 -r2.37 parseChangelog.c
  --- rpm/build/parseChangelog.c	22 Nov 2007 18:50:25 -0000	2.36
  +++ rpm/build/parseChangelog.c	24 Nov 2007 23:15:31 -0000	2.37
  @@ -14,7 +14,6 @@
   
   void addChangelogEntry(Header h, time_t time, const char *name, const char *text)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       uint32_t mytime = time;	/* XXX convert to uint32_t for header */
       int xx;
  @@ -24,7 +23,7 @@
       he->p.ui32p = &mytime;
       he->c = 1;
       he->append = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->append = 0;
   
       he->tag = RPMTAG_CHANGELOGNAME;
  @@ -32,7 +31,7 @@
       he->p.argv = &name;
       he->c = 1;
       he->append = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->append = 0;
   
       he->tag = RPMTAG_CHANGELOGTEXT;
  @@ -40,7 +39,7 @@
       he->p.argv = &text;
       he->c = 1;
       he->append = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->append = 0;
   }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parsePreamble.c
  ============================================================================
  $ cvs diff -u -r2.145 -r2.146 parsePreamble.c
  --- rpm/build/parsePreamble.c	24 Nov 2007 22:07:28 -0000	2.145
  +++ rpm/build/parsePreamble.c	24 Nov 2007 23:15:31 -0000	2.146
  @@ -60,7 +60,6 @@
   static void addOrAppendListEntry(Header h, rpmTag tag, char * line)
   	/*@modifies h @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       int xx;
       int argc;
  @@ -73,7 +72,7 @@
   	he->p.argv = argv;
   	he->c = argc;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
       }
       argv = _free(argv);
  @@ -345,7 +344,6 @@
   	/*@globals rpmGlobalMacroContext, h_errno @*/
   	/*@modifies h, rpmGlobalMacroContext @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       struct optionalTag *ot;
       int xx;
  @@ -359,7 +357,7 @@
   		he->t = RPM_STRING_TYPE;
   		he->p.str = val;
   		he->c = 1;
  -		xx = hae(h, he, 0);
  +		xx = headerPut(h, he, 0);
   	    }
   	    val = _free(val);
   /*@=boundsread@*/
  @@ -374,7 +372,6 @@
   	/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
   	/*@modifies rpmGlobalMacroContext, fileSystem, internalState  @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char *fn, *Lurlfn = NULL;
       struct Source *sp;
  @@ -439,7 +436,7 @@
   	he->t = RPM_BIN_TYPE;
   	he->p.ui8p = icon;
   	he->c = nb;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
       } else
       if (icon[0] == '/' && icon[1] == '*' && icon[2] == ' '
        && icon[3] == 'X' && icon[4] == 'P' && icon[5] == 'M')
  @@ -448,7 +445,7 @@
   	he->t = RPM_BIN_TYPE;
   	he->p.ui8p = icon;
   	he->c = nb;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
       } else {
   	rpmlog(RPMLOG_ERR, _("Unknown icon type: %s\n"), fn);
   	goto exit;
  @@ -523,7 +520,6 @@
   		pkg->header, pkg->autoProv, pkg->autoReq, pkg->icon,
   		rpmGlobalMacroContext, fileSystem, internalState @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       char * field = spec->line;
       char * end;
  @@ -588,7 +584,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = field;
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   	break;
       case RPMTAG_GROUP:
       case RPMTAG_SUMMARY:
  @@ -603,7 +599,7 @@
   	    he->t = RPM_STRING_TYPE;
   	    he->p.str = field;
   	    he->c = 1;
  -	    xx = hae(pkg->header, he, 0);
  +	    xx = headerPut(pkg->header, he, 0);
   	} else if (!(noLang && strcmp(lang, RPMBUILD_DEFAULT_LANG))) {
   	    (void) headerAddI18NString(pkg->header, tag, field, lang);
   	}
  @@ -679,7 +675,7 @@
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &num;
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   	break;
       case RPMTAG_AUTOREQPROV:
   	pkg->autoReq = parseYesNo(field);
  @@ -786,7 +782,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = field;
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   	break;
       }
   
  @@ -972,7 +968,6 @@
   /* XXX should return rpmParseState, but RPMRC_FAIL forces int return. */
   int parsePreamble(Spec spec, int initialPackage)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       rpmParseState nextPart;
       int rc, xx;
  @@ -1013,7 +1008,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = NVR;
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
       }
   
       if ((rc = readLine(spec, STRIP_TRAILINGSPACE | STRIP_COMMENTS)) > 0) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parseScript.c
  ============================================================================
  $ cvs diff -u -r2.50 -r2.51 parseScript.c
  --- rpm/build/parseScript.c	4 Nov 2007 19:37:02 -0000	2.50
  +++ rpm/build/parseScript.c	24 Nov 2007 23:15:31 -0000	2.51
  @@ -73,7 +73,6 @@
   /*@-boundswrite@*/
   int parseScript(Spec spec, int parsePart)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       int xx;
   
  @@ -334,7 +333,7 @@
   	    he->t = RPM_STRING_TYPE;
   	    he->p.str = *progArgv;
   	    he->c = progArgc;
  -	    xx = hae(pkg->header, he, 0);
  +	    xx = headerPut(pkg->header, he, 0);
   	} else {
   	    (void) rpmlibNeedsFeature(pkg->header,
   			"ScriptletInterpreterArgs", "4.0.3-1");
  @@ -342,7 +341,7 @@
   	    he->t = RPM_STRING_ARRAY_TYPE;
   	    he->p.argv = progArgv;
   	    he->c = progArgc;
  -	    xx = hae(pkg->header, he, 0);
  +	    xx = headerPut(pkg->header, he, 0);
   	}
   
   	if (*p != '\0') {
  @@ -350,7 +349,7 @@
   	    he->t = RPM_STRING_TYPE;
   	    he->p.str = p;
   	    he->c = 1;
  -	    xx = hae(pkg->header, he, 0);
  +	    xx = headerPut(pkg->header, he, 0);
   	}
   
   	if (file) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parseSpec.c
  ============================================================================
  $ cvs diff -u -r2.115 -r2.116 parseSpec.c
  --- rpm/build/parseSpec.c	24 Nov 2007 22:07:28 -0000	2.115
  +++ rpm/build/parseSpec.c	24 Nov 2007 23:15:31 -0000	2.116
  @@ -434,7 +434,6 @@
   		int recursing, const char *passPhrase,
   		const char *cookie, int anyarch, int force, int verify)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       rpmParseState parsePart = PART_PREAMBLE;
       int initialPackage = 1;
  @@ -616,19 +615,19 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = os;
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	he->tag = RPMTAG_ARCH;
   	he->t = RPM_STRING_TYPE;
   	he->p.str = arch;
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	he->tag = RPMTAG_PLATFORM;
   	he->t = RPM_STRING_TYPE;
   	he->p.str = platform;
   	he->c = 1;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	pkg->ds = rpmdsThis(pkg->header, RPMTAG_REQUIRENAME, RPMSENSE_EQUAL);
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/reqprov.c
  ============================================================================
  $ cvs diff -u -r1.81 -r1.82 reqprov.c
  --- rpm/build/reqprov.c	24 Nov 2007 22:07:28 -0000	1.81
  +++ rpm/build/reqprov.c	24 Nov 2007 23:15:31 -0000	1.82
  @@ -14,7 +14,6 @@
   		const char * N, const char * EVR, rpmsenseFlags Flags,
   		uint32_t index)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char ** names;
       rpmTag nametag = 0;
  @@ -114,7 +113,7 @@
       he->p.argv = &N;
       he->c = 1;
       he->append = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->append = 0;
   
       if (flagtag) {
  @@ -123,7 +122,7 @@
   	he->p.argv = &EVR;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
   
   	he->tag = flagtag;
  @@ -131,7 +130,7 @@
   	he->p.ui32p = &Flags;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
       }
       if (indextag) {
  @@ -140,7 +139,7 @@
   	he->p.ui32p = &index;
   	he->c = 1;
   	he->append = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->append = 0;
       }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/psm.c
  ============================================================================
  $ cvs diff -u -r2.266 -r2.267 psm.c
  --- rpm/lib/psm.c	24 Nov 2007 22:07:28 -0000	2.266
  +++ rpm/lib/psm.c	24 Nov 2007 23:15:32 -0000	2.267
  @@ -1364,13 +1364,12 @@
   static int hCopyTag(Header sh, Header th, rpmTag tag)
   	/*@modifies th @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       int xx = 1;
   
       he->tag = tag;
       if (headerGet(sh, he, 0) && he->c > 0)
  -	xx = hae(th, he, 0);
  +	xx = headerPut(th, he, 0);
       he->p.ptr = _free(he->p.ptr);
       return 0;
   }
  @@ -1384,7 +1383,6 @@
   static int hSaveBlinks(Header h, const struct rpmChainLink_s * blink)
   	/*@modifies h @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
   /*@observer@*/
       static const char * chain_end = RPMTE_CHAIN_END;
  @@ -1402,7 +1400,7 @@
   	he->p.argv = &chain_end;
   	he->c = 1;
       }
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       
       he->tag = RPMTAG_BLINKPKGID;
       he->t = RPM_STRING_ARRAY_TYPE;
  @@ -1414,7 +1412,7 @@
   	he->p.argv = &chain_end;
   	he->c = 1;
       }
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       he->tag = RPMTAG_BLINKHDRID;
       he->t = RPM_STRING_ARRAY_TYPE;
  @@ -1426,7 +1424,7 @@
   	he->p.argv = &chain_end;
   	he->c = 1;
       }
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       return 0;
   }
  @@ -1440,7 +1438,6 @@
   static int hSaveFlinks(Header h, const struct rpmChainLink_s * flink)
   	/*@modifies h @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
   #ifdef	NOTYET
       /*@observer@*/
  @@ -1463,7 +1460,7 @@
   	he->c = 1;
       }
   #endif
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       he->tag = RPMTAG_FLINKPKGID;
       he->t = RPM_STRING_ARRAY_TYPE;
  @@ -1478,7 +1475,7 @@
   	he->c = 1;
       }
   #endif
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       he->tag = RPMTAG_FLINKHDRID;
       he->t = RPM_STRING_ARRAY_TYPE;
  @@ -1493,7 +1490,7 @@
   	he->c = 1;
       }
   #endif
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       return 0;
   }
  @@ -1508,7 +1505,6 @@
   static int populateInstallHeader(const rpmts ts, const rpmte te, rpmfi fi)
   	/*@modifies fi @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       uint32_t tscolor = rpmtsColor(ts);
       uint32_t tecolor = rpmteColor(te);
  @@ -1522,20 +1518,20 @@
   	he->t = RPM_UINT8_TYPE;
   	he->p.ui8p = fi->fstates;
   	he->c = fc;
  -	xx = hae(fi->h, he, 0);
  +	xx = headerPut(fi->h, he, 0);
       }
   
       he->tag = RPMTAG_INSTALLTIME;
       he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &installTime;
       he->c = 1;
  -    xx = hae(fi->h, he, 0);
  +    xx = headerPut(fi->h, he, 0);
   
       he->tag = RPMTAG_INSTALLCOLOR;
       he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &tscolor;
       he->c = 1;
  -    xx = hae(fi->h, he, 0);
  +    xx = headerPut(fi->h, he, 0);
   
       /* XXX FIXME: add preferred color at install. */
   
  @@ -1543,7 +1539,7 @@
       he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &tecolor;
       he->c = 1;
  -    xx = hae(fi->h, he, 0);
  +    xx = headerPut(fi->h, he, 0);
   
       /* Add the header's origin (i.e. URL) */
       he->tag = RPMTAG_PACKAGEORIGIN;
  @@ -1551,7 +1547,7 @@
       he->p.str = headerGetOrigin(fi->h);
       he->c = 1;
       if (he->p.str != NULL)
  -	xx = hae(fi->h, he, 0);
  +	xx = headerPut(fi->h, he, 0);
   
       /* XXX Don't clobber forward/backward upgrade chain on rollbacks */
       if (rpmtsType(ts) != RPMTRANS_TYPE_ROLLBACK)
  @@ -1591,7 +1587,6 @@
   /*@-nullpass@*/ /* FIX: testing null annotation for fi->h */
   rpmRC rpmpsmStage(rpmpsm psm, pkgStage stage)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const rpmts ts = psm->ts;
       uint32_t tscolor = rpmtsColor(ts);
  @@ -1866,7 +1861,7 @@
   			{
   			    if (he->tag == RPMTAG_ARCHIVESIZE)
   				noArchiveSize = 1;
  -			    xx = hae(psm->oh, he, 0);
  +			    xx = headerPut(psm->oh, he, 0);
   			}
   			hi = headerFreeIterator(hi);
   
  @@ -1929,7 +1924,7 @@
   		he->t = RPM_UINT32_TYPE;
   		he->p.ui32p = &tid;
   		he->c = 1;
  -		xx = hae(psm->oh, he, 0);
  +		xx = headerPut(psm->oh, he, 0);
   
   		/* Add original header's origin (i.e. URL) */
   		if (origin != NULL) {
  @@ -1937,7 +1932,7 @@
   		    he->t = RPM_STRING_TYPE;
   		    he->p.str = origin;
   		    he->c = 1;
  -		    xx = hae(psm->oh, he, 0);
  +		    xx = headerPut(psm->oh, he, 0);
   		    origin = _free(origin);
   		}
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.198 -r1.199 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c	24 Nov 2007 22:07:28 -0000	1.198
  +++ rpm/lib/rpmchecksig.c	24 Nov 2007 23:15:32 -0000	1.199
  @@ -179,8 +179,6 @@
           /*@modifies ts, rpmGlobalMacroContext,
                   fileSystem, internalState @*/
   {
  -    HAE_t hae = headerAddExtension;
  -    HRE_t hre = headerRemoveExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       rpmgi gi = NULL;
       FD_t fd = NULL;
  @@ -285,7 +283,7 @@
   		ohe->p.ptr = headerFreeData(ohe->p.ptr, ohe->t))
   	    {
   		if (ohe->p.ptr) {
  -		    xx = hae(nh, ohe, 0);
  +		    xx = headerPut(nh, ohe, 0);
   		}
   	    }
   	    hi = headerFreeIterator(hi);
  @@ -299,36 +297,36 @@
   if (sigh != NULL) {
   	/* Eliminate broken digest values. */
   	he->tag = RPMSIGTAG_LEMD5_1;
  -	xx = hre(sigh, he, 0);
  +	xx = headerDel(sigh, he, 0);
   	he->tag = RPMSIGTAG_LEMD5_2;
  -	xx = hre(sigh, he, 0);
  +	xx = headerDel(sigh, he, 0);
   	he->tag = RPMSIGTAG_BADSHA1_1;
  -	xx = hre(sigh, he, 0);
  +	xx = headerDel(sigh, he, 0);
   	he->tag = RPMSIGTAG_BADSHA1_2;
  -	xx = hre(sigh, he, 0);
  +	xx = headerDel(sigh, he, 0);
   
   	/* Toss and recalculate header+payload size and digests. */
   	he->tag = RPMSIGTAG_SIZE;
  -	xx = hre(sigh, he, 0);
  +	xx = headerDel(sigh, he, 0);
   	xx = rpmAddSignature(sigh, sigtarget, RPMSIGTAG_SIZE, qva->passPhrase);
   	he->tag = RPMSIGTAG_MD5;
  -	xx = hre(sigh, he, 0);
  +	xx = headerDel(sigh, he, 0);
   	xx = rpmAddSignature(sigh, sigtarget, RPMSIGTAG_MD5, qva->passPhrase);
   	he->tag = RPMSIGTAG_SHA1;
  -	xx = hre(sigh, he, 0);
  +	xx = headerDel(sigh, he, 0);
   	xx = rpmAddSignature(sigh, sigtarget, RPMSIGTAG_SHA1, qva->passPhrase);
   
   	if (deleting) {	/* Nuke all the signature tags. */
   	    he->tag = RPMSIGTAG_GPG;
  -	    xx = hre(sigh, he, 0);
  +	    xx = headerDel(sigh, he, 0);
   	    he->tag = RPMSIGTAG_PGP5;
  -	    xx = hre(sigh, he, 0);
  +	    xx = headerDel(sigh, he, 0);
   	    he->tag = RPMSIGTAG_PGP;
  -	    xx = hre(sigh, he, 0);
  +	    xx = headerDel(sigh, he, 0);
   	    he->tag = RPMSIGTAG_DSA;
  -	    xx = hre(sigh, he, 0);
  +	    xx = headerDel(sigh, he, 0);
   	    he->tag = RPMSIGTAG_RSA;
  -	    xx = hre(sigh, he, 0);
  +	    xx = headerDel(sigh, he, 0);
   	} else {		/* If gpg/pgp is configured, replace the signature. */
   	  int addsig = 0;
   	  sigtag = RPMSIGTAG_GPG;
  @@ -344,25 +342,25 @@
   	    switch (sigtag) {
   	    case RPMSIGTAG_DSA:
   		he->tag = RPMSIGTAG_GPG;
  -		xx = hre(sigh, he, 0);
  +		xx = headerDel(sigh, he, 0);
   		/*@switchbreak@*/ break;
   	    case RPMSIGTAG_RSA:
   		he->tag = RPMSIGTAG_PGP;
  -		xx = hre(sigh, he, 0);
  +		xx = headerDel(sigh, he, 0);
   		/*@switchbreak@*/ break;
   	    case RPMSIGTAG_GPG:
   		he->tag = RPMSIGTAG_DSA;
  -		xx = hre(sigh, he, 0);
  +		xx = headerDel(sigh, he, 0);
   		/*@fallthrough@*/
   	    case RPMSIGTAG_PGP5:
   	    case RPMSIGTAG_PGP:
   		he->tag = RPMSIGTAG_RSA;
  -		xx = hre(sigh, he, 0);
  +		xx = headerDel(sigh, he, 0);
   		/*@switchbreak@*/ break;
   	    }
   
   	    he->tag = sigtag;
  -	    xx = hre(sigh, he, 0);
  +	    xx = headerDel(sigh, he, 0);
   	    xx = rpmAddSignature(sigh, sigtarget, sigtag, qva->passPhrase);
   
   	    /* If package was previously signed, check for same signer. */
  @@ -470,7 +468,6 @@
   
   rpmRC rpmcliImportPubkey(const rpmts ts, const unsigned char * pkt, ssize_t pktlen)
   {
  -    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 };
  @@ -544,7 +541,7 @@
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &enc;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       he->append = 0;
   
  @@ -556,13 +553,13 @@
       he->c = 1;
       he->tag = RPMTAG_NAME;
       he->p.str = "gpg-pubkey";
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->tag = RPMTAG_VERSION;
       he->p.str = v+8;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->tag = RPMTAG_RELEASE;
       he->p.str = r;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       /* Add Summary/Description/Group. */
       he->tag = RPMTAG_DESCRIPTION;
  @@ -570,42 +567,42 @@
   #if defined(SUPPORT_IMPLICIT_TAG_DATA_TYPES)
       xx = headerAddI18NString(h, he->tag, he->p.ptr, "C");
   #else
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   #endif
       he->tag = RPMTAG_GROUP;
       he->p.str = group;
   #if defined(SUPPORT_IMPLICIT_TAG_DATA_TYPES)
       xx = headerAddI18NString(h, he->tag, he->p.ptr, "C");
   #else
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   #endif
       he->tag = RPMTAG_SUMMARY;
       he->p.str = u;
   #if defined(SUPPORT_IMPLICIT_TAG_DATA_TYPES)
       xx = headerAddI18NString(h, he->tag, he->p.ptr, "C");
   #else
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   #endif
   
   #ifdef	NOTYET	/* XXX can't erase pubkeys with "pubkey" arch. */
       /* Add a "pubkey" arch/os to avoid missing value NULL ptrs. */
       he->tag = RPMTAG_ARCH;
       he->p.str = "pubkey";
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->tag = RPMTAG_OS;
       he->p.str = "pubkey";
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   #endif
   
       he->tag = RPMTAG_LICENSE;
       he->p.str = license;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       he->tag = RPMTAG_SIZE;
       he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &zero;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       he->append = 1;
   
  @@ -613,33 +610,33 @@
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &u;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->tag = RPMTAG_PROVIDEVERSION;
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &evr;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->tag = RPMTAG_PROVIDEFLAGS;
       he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &pflags;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       he->tag = RPMTAG_PROVIDENAME;
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &n;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->tag = RPMTAG_PROVIDEVERSION;
       he->t = RPM_STRING_ARRAY_TYPE;
       he->p.argv = &evr;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
       he->tag = RPMTAG_PROVIDEFLAGS;
       he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &pflags;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   
       he->append = 0;
   
  @@ -647,26 +644,26 @@
       he->t = RPM_STRING_TYPE;
       he->p.str = RPMVERSION;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(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, 0);
  +    xx = headerPut(h, he, 0);
       {   uint32_t tid = rpmtsGetTid(ts);
   	he->tag = RPMTAG_INSTALLTIME;
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &tid;
   	he->c = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	/* XXX W2DO: tag value inheirited from parent? */
   	he->tag = RPMTAG_BUILDTIME;
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &tid;
   	he->c = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
       }
   
   #ifdef	NOTYET
  @@ -675,7 +672,7 @@
       he->t = RPM_STRING_TYPE;
       he->p.str = fn;
       he->c = 1;
  -    xx = hae(h, he, 0);
  +    xx = headerPut(h, he, 0);
   #endif
   
       /* Add header to database. */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfc.c
  ============================================================================
  $ cvs diff -u -r1.41 -r1.42 rpmfc.c
  --- rpm/lib/rpmfc.c	24 Nov 2007 22:07:28 -0000	1.41
  +++ rpm/lib/rpmfc.c	24 Nov 2007 23:15:32 -0000	1.42
  @@ -1393,8 +1393,6 @@
   
   int rpmfcGenerateDepends(void * specp, void * pkgp)
   {
  -    HAE_t hae = headerAddExtension;
  -    HRE_t hre = headerRemoveExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const Spec spec = specp;
       Package pkg = pkgp;
  @@ -1474,11 +1472,11 @@
   	xx = rpmdsMerge(&fc->provides, ds);
   	ds = rpmdsFree(ds);
   	he->tag = RPMTAG_PROVIDENAME;
  -	xx = hre(pkg->header, he, 0);
  +	xx = headerDel(pkg->header, he, 0);
   	he->tag = RPMTAG_PROVIDEVERSION;
  -	xx = hre(pkg->header, he, 0);
  +	xx = headerDel(pkg->header, he, 0);
   	he->tag = RPMTAG_PROVIDEFLAGS;
  -	xx = hre(pkg->header, he, 0);
  +	xx = headerDel(pkg->header, he, 0);
   
   	/* Add config dependency, Provides: config(N) = EVR */
   	if (genConfigDeps) {
  @@ -1499,11 +1497,11 @@
   	xx = rpmdsMerge(&fc->requires, ds);
   	ds = rpmdsFree(ds);
   	he->tag = RPMTAG_REQUIRENAME;
  -	xx = hre(pkg->header, he, 0);
  +	xx = headerDel(pkg->header, he, 0);
   	he->tag = RPMTAG_REQUIREVERSION;
  -	xx = hre(pkg->header, he, 0);
  +	xx = headerDel(pkg->header, he, 0);
   	he->tag = RPMTAG_REQUIREFLAGS;
  -	xx = hre(pkg->header, he, 0);
  +	xx = headerDel(pkg->header, he, 0);
   
   	/* Add config dependency,  Requires: config(N) = EVR */
   	if (genConfigDeps) {
  @@ -1538,7 +1536,7 @@
   	for (i = 0; i < he->c; i++)
   	    fcolors[i] &= 0x0f;
   
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
       }
   
       /* Add classes(#classes) */
  @@ -1547,7 +1545,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, 0);
  +	xx = headerPut(pkg->header, he, 0);
       }
   
       /* Add per-file classes(#files) */
  @@ -1557,7 +1555,7 @@
       he->c = argiCount(fc->fcdictx);
   assert(ac == he->c);
       if (he->p.ptr != NULL && he->c > 0) {
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
       }
   
       /* Add Provides: */
  @@ -1567,7 +1565,7 @@
   	he->tag = RPMTAG_PROVIDENAME;
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = fc->provides->N;
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	/* XXX rpm prior to 3.0.2 did not always supply EVR and Flags. */
   /*@-nullpass@*/
  @@ -1575,13 +1573,13 @@
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = fc->provides->EVR;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	he->tag = RPMTAG_PROVIDEFLAGS;
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = fc->provides->Flags;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   /*@=nullpass@*/
       }
   
  @@ -1593,7 +1591,7 @@
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = fc->requires->N;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	/* XXX rpm prior to 3.0.2 did not always supply EVR and Flags. */
   /*@-nullpass@*/
  @@ -1601,13 +1599,13 @@
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = fc->requires->EVR;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   
   	he->tag = RPMTAG_REQUIREFLAGS;
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = fc->requires->Flags;
   assert(he->p.ptr != NULL);
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
   /*@=nullpass@*/
       }
   
  @@ -1617,7 +1615,7 @@
       he->p.ui32p = argiData(fc->ddictx);
       he->c = argiCount(fc->ddictx);
       if (he->p.ptr != NULL) {
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
       }
   
       /* Add per-file dependency (start,number) pairs (#files) */
  @@ -1627,7 +1625,7 @@
       he->c = argiCount(fc->fddictx);
   assert(ac == he->c);
       if (he->p.ptr != NULL) {
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
       }
   
       he->tag = RPMTAG_FILEDEPENDSN;
  @@ -1636,7 +1634,7 @@
       he->c = argiCount(fc->fddictn);
   assert(ac == he->c);
       if (he->p.ptr != NULL) {
  -	xx = hae(pkg->header, he, 0);
  +	xx = headerPut(pkg->header, he, 0);
       }
   
       printDeps(pkg->header);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfi.c
  ============================================================================
  $ cvs diff -u -r2.103 -r2.104 rpmfi.c
  --- rpm/lib/rpmfi.c	24 Nov 2007 22:07:28 -0000	2.103
  +++ rpm/lib/rpmfi.c	24 Nov 2007 23:15:32 -0000	2.104
  @@ -687,8 +687,6 @@
   	/*@modifies ts, fi, origH, actions, rpmGlobalMacroContext,
   		internalState @*/
   {
  -    HAE_t hae = headerAddExtension;
  -    HME_t hme = headerModifyExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       rpmte p = rpmtsRelocateElement(ts);
       static int _printed = 0;
  @@ -747,7 +745,7 @@
   		he->t = validType;
   		he->p.argv = validRelocations;
   		he->c = numValid;
  -		xx = hae(origH, he, 0);
  +		xx = headerPut(origH, he, 0);
   	    }
   	    validRelocations = _free(validRelocations);
   	}
  @@ -875,7 +873,7 @@
   	    he->t = RPM_STRING_ARRAY_TYPE;
   	    he->p.argv = actualRelocations;
   	    he->c = numActual;
  -	    xx = hae(h, he, 0);
  +	    xx = headerPut(h, he, 0);
   	}
   
   	actualRelocations = _free(actualRelocations);
  @@ -1104,26 +1102,26 @@
   	he->tag = RPMTAG_BASENAMES;
   	xx = headerGet(h, he, 0);
   	he->tag = RPMTAG_ORIGBASENAMES;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->p.ptr = _free(he->p.ptr);
   
   	he->tag = RPMTAG_DIRNAMES;
   	xx = headerGet(h, he, 0);
   	he->tag = RPMTAG_ORIGDIRNAMES;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->p.ptr = _free(he->p.ptr);
   
   	he->tag = RPMTAG_DIRINDEXES;
   	xx = headerGet(h, he, 0);
   	he->tag = RPMTAG_ORIGDIRINDEXES;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
   	he->p.ptr = _free(he->p.ptr);
   
   	he->tag = RPMTAG_BASENAMES;
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = baseNames;
   	he->c = fileCount;
  -	xx = hme(h, he, 0);
  +	xx = headerMod(h, he, 0);
   	fi->bnl = _free(fi->bnl);
   	xx = headerGet(h, he, 0);
   	fi->bnl = he->p.argv;
  @@ -1133,7 +1131,7 @@
   	he->t = RPM_STRING_ARRAY_TYPE;
   	he->p.argv = dirNames;
   	he->c = dirCount;
  -	xx = hme(h, he, 0);
  +	xx = headerMod(h, he, 0);
   	fi->dnl = _free(fi->dnl);
   	xx = headerGet(h, he, 0);
   	fi->dnl = he->p.argv;
  @@ -1143,7 +1141,7 @@
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = dirIndexes;
   	he->c = fileCount;
  -	xx = hme(h, he, 0);
  +	xx = headerMod(h, he, 0);
   	fi->dil = _free(fi->dil);
   	xx = headerGet(h, he, 0);
   	fi->dil = he->p.ui32p;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/python/header-py.c
  ============================================================================
  $ cvs diff -u -r1.84 -r1.85 header-py.c
  --- rpm/python/header-py.c	24 Nov 2007 22:07:30 -0000	1.84
  +++ rpm/python/header-py.c	24 Nov 2007 23:15:32 -0000	1.85
  @@ -778,8 +778,6 @@
    */
   int rpmMergeHeaders(PyObject * list, FD_t fd, int matchTag)
   {
  -    HAE_t hae = headerAddExtension;
  -    HRE_t hre = headerRemoveExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       Header h;
       HeaderIterator hi;
  @@ -836,8 +834,8 @@
   	    he->p.ptr = headerFreeData(he->p.ptr, he->t))
   	{
   	    /* could be dupes */
  -	    xx = hre(hdr->h, he, 0);
  -	    xx = hae(hdr->h, he, 0);
  +	    xx = headerDel(hdr->h, he, 0);
  +	    xx = headerPut(hdr->h, he, 0);
   	}
   
   	headerFreeIterator(hi);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrNVR.c
  ============================================================================
  $ cvs diff -u -r1.37 -r1.38 hdrNVR.c
  --- rpm/rpmdb/hdrNVR.c	24 Nov 2007 22:07:30 -0000	1.37
  +++ rpm/rpmdb/hdrNVR.c	24 Nov 2007 23:15:33 -0000	1.38
  @@ -221,7 +221,6 @@
   
   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;
  @@ -281,7 +280,7 @@
   		continue;
   		/*@notreached@*/ /*@switchbreak@*/ break;
   	    }
  - 	    xx = hae(h, he, 0);
  + 	    xx = headerPut(h, he, 0);
   assert(xx == 1);
   	}
       }
  @@ -290,7 +289,6 @@
   
   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();
  @@ -326,7 +324,7 @@
   	}
   assert(he->p.ptr != NULL);
   	if (!headerIsEntry(sigh, he->tag)) {
  -	    xx = hae(sigh, he, 0);
  +	    xx = headerPut(sigh, he, 0);
   assert(xx == 1);
   	}
       }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrinline.h
  ============================================================================
  $ cvs diff -u -r1.41 -r1.42 hdrinline.h
  --- rpm/rpmdb/hdrinline.h	24 Nov 2007 22:07:30 -0000	1.41
  +++ rpm/rpmdb/hdrinline.h	24 Nov 2007 23:15:33 -0000	1.42
  @@ -224,64 +224,6 @@
   }
   
   /** \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 defined(SUPPORT_IMPLICIT_TAG_DATA_TYPES)
  -/*@-modfilesys@*/
  -    /* XXX verify that explicit and implicit types are identical. */
  -    tagTypeValidate(he);
  -/*@=modfilesys@*/
  -#endif
  -    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);
  -    return xx;
  -}
  -
  -/** \ingroup header
  - * Modify tag container in header.
  - * If there are multiple entries with this tag, the first one gets replaced.
  - * @param h		header
  - * @param he		tag container
  - * @param flags		(unused)
  - * @return		1 on success, 0 on failure
  - */
  -/*@unused@*/ static inline
  -int headerModifyExtension(Header h, HE_t he, /*@unused@*/ unsigned int flags)
  -	/*@modifies h @*/
  -{
  -    return (h2hv(h)->hdrmodify) (h, he->tag, he->t, he->p.ptr, he->c);
  -}
  -
  -/** \ingroup header
  - * Remove tag container from header.
  - *
  - * @param h		header
  - * @param he		tag container
  - * @param flags		(unused)
  - * @return		1 on success, 0 on failure
  - */
  -/*@mayexit@*/
  -/*@unused@*/ static inline
  -int headerRemoveExtension(Header h, HE_t he, /*@unused@*/ unsigned int flags)
  -	/*@modifies h @*/
  -{
  -    return (h2hv(h)->hdrremove) (h, he->tag);
  -}
  -
  -/** \ingroup header
    * Destroy header tag container iterator.
    * @param hi		header tag container iterator
    * @return		NULL always
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.134 -r1.135 header.c
  --- rpm/rpmdb/header.c	24 Nov 2007 22:07:30 -0000	1.134
  +++ rpm/rpmdb/header.c	24 Nov 2007 23:15:33 -0000	1.135
  @@ -2360,5 +2360,53 @@
   exit:
       if (sw != NULL)	(void) rpmswExit(sw, 0);
   
  +#if defined(SUPPORT_IMPLICIT_TAG_DATA_TYPES)
  +/*@-modfilesys@*/
  +    /* XXX verify that explicit and implicit types are identical. */
  +    if (rc)
  +	tagTypeValidate(he);
  +/*@=modfilesys@*/
  +#endif
  +
       return rc;
   }
  +
  +int headerPut(Header h, HE_t he, /*@unused@*/ unsigned int flags)
  +{
  +    int rc;
  +
  +#if defined(SUPPORT_IMPLICIT_TAG_DATA_TYPES)
  +/*@-modfilesys@*/
  +    /* XXX verify that explicit and implicit types are identical. */
  +    tagTypeValidate(he);
  +/*@=modfilesys@*/
  +#endif
  +
  +    if (he->append)
  +	rc = headerAddOrAppendEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +    else
  +	rc = headerAddEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +assert(rc == 1);
  +
  +    return rc;
  +}
  +
  +int headerDel(Header h, HE_t he, /*@unused@*/ unsigned int flags)
  +	/*@modifies h @*/
  +{
  +    return headerRemoveEntry(h, he->tag);
  +}
  +
  +int headerMod(Header h, HE_t he, /*@unused@*/ unsigned int flags)
  +	/*@modifies h @*/
  +{
  +
  +#if defined(SUPPORT_IMPLICIT_TAG_DATA_TYPES)
  +/*@-modfilesys@*/
  +    /* XXX verify that explicit and implicit types are identical. */
  +    tagTypeValidate(he);
  +/*@=modfilesys@*/
  +#endif
  +
  +    return headerModifyEntry(h, he->tag, he->t, he->p.ptr, he->c);
  +}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.h
  ============================================================================
  $ cvs diff -u -r1.75 -r1.76 header.h
  --- rpm/rpmdb/header.h	24 Nov 2007 22:07:30 -0000	1.75
  +++ rpm/rpmdb/header.h	24 Nov 2007 23:15:33 -0000	1.76
  @@ -97,42 +97,6 @@
       void * (*HFD_t) (/*@only@*/ /*@null@*/ const void * data, rpmTagType type)
   	/*@modifies data @*/;
   
  -/**
  - * Add or append tag container to header.
  - *
  - * @param h		header
  - * @param he		tag container
  - * @param flags		(unused)
  - * @return		1 on success, 0 on failure
  - */
  -typedef int (*HAE_t) (Header h, HE_t he, unsigned int flags)
  -	/*@modifies h @*/;
  -
  -/**
  - * Prototype for headerModifyEntry() vector.
  - * If there are multiple entries with this tag, the first one gets replaced.
  - *
  - * @param h		header
  - * @param he		tag container
  - * @param flags		(unused)
  - * @return		1 on success, 0 on failure
  - */
  -typedef int (*HME_t) (Header h, HE_t he, unsigned int flags)
  -	/*@modifies h @*/;
  -
  -/**
  - * Prototype for headerRemoveEntry() vector.
  - * Delete tag in header.
  - * Removes all entries of type tag from the header, returns 1 if none were
  - * found.
  - *
  - * @param h		header
  - * @param tag		tag
  - * @return		0 on success, 1 on failure (INCONSISTENT)
  - */
  -typedef int (*HRE_t) (Header h, HE_t he, unsigned int flags)
  -	/*@modifies h @*/;
  -
   /** \ingroup header
    * Create new (empty) header instance.
    * @return		header
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/librpmdb.vers
  ============================================================================
  $ cvs diff -u -r1.32 -r1.33 librpmdb.vers
  --- rpm/rpmdb/librpmdb.vers	24 Nov 2007 22:07:30 -0000	1.32
  +++ rpm/rpmdb/librpmdb.vers	24 Nov 2007 23:15:33 -0000	1.33
  @@ -30,11 +30,14 @@
       headerCheck;
       headerCompoundFormats;
       headerDefaultFormats;
  +    headerDel;
       headerGet;
       headerMacrosLoad;
       headerMacrosUnload;
       headerMergeLegacySigs;
  +    headerMod;
       headerNEVRA;
  +    headerPut;
       headerRegenSigHeader;
       headerSprintf;
       headerVerifyInfo;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.220 -r1.221 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	24 Nov 2007 22:07:30 -0000	1.220
  +++ rpm/rpmdb/rpmdb.c	24 Nov 2007 23:15:33 -0000	1.221
  @@ -2792,9 +2792,6 @@
   DBT * key = alloca(sizeof(*key));
   DBT * data = alloca(sizeof(*data));
   union _dbswap mi_offset;
  -#ifdef	DYING
  -    HAE_t hae = headerAddExtension;
  -#endif
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       Header h;
       sigset_t signalMask;
  @@ -2830,7 +2827,7 @@
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &tid;
   	he->c = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
       }
   #endif
   
  @@ -3109,10 +3106,6 @@
   DBC * dbcursor = NULL;
   DBT * key = alloca(sizeof(*key));
   DBT * data = alloca(sizeof(*data));
  -    HAE_t hae = headerAddExtension;
  -#ifdef	NOTYET	/* XXX headerRemoveEntry() broken on dribbles. */
  -    HRE_t hre = headerRemoveExtension;
  -#endif
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       sigset_t signalMask;
       const char ** dirNames;
  @@ -3137,7 +3130,7 @@
   
   #ifdef	NOTYET	/* XXX headerRemoveEntry() broken on dribbles. */
       he->tag = RPMTAG_REMOVETID;
  -    xx = hre(h, he, 0);
  +    xx = headerDel(h, he, 0);
   #endif
       if (iid != 0 && iid != -1) {
   	uint32_t tid = iid;
  @@ -3146,7 +3139,7 @@
   	he->p.ui32p = &tid;
   	he->c = 1;
   	if (!headerIsEntry(h, he->tag))
  -	   xx = hae(h, he, 0);
  +	   xx = headerPut(h, he, 0);
       }
   
       /* Add the package color if not present. */
  @@ -3156,7 +3149,7 @@
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &hcolor;
   	he->c = 1;
  -	xx = hae(h, he, 0);
  +	xx = headerPut(h, he, 0);
       }
   
       he->tag = RPMTAG_DIRNAMES;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmtag.h
  ============================================================================
  $ cvs diff -u -r1.13 -r1.14 rpmtag.h
  --- rpm/rpmdb/rpmtag.h	24 Nov 2007 22:07:30 -0000	1.13
  +++ rpm/rpmdb/rpmtag.h	24 Nov 2007 23:15:33 -0000	1.14
  @@ -658,10 +658,45 @@
    * @param flags		(unused)
    * @return		1 on success, 0 on failure
    */
  -int headerGet(Header h, HE_t he, unsigned int flags)
  +int headerGet(Header h, HE_t he, /*@unused@*/ unsigned int flags)
   	/*@globals headerCompoundFormats @*/
   	/*@modifies he @*/;
   
  +/** \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@*/
  +int headerPut(Header h, HE_t he, /*@unused@*/ unsigned int flags)
  +	/*@modifies h @*/;
  +
  +/** \ingroup header
  + * Remove tag container from header.
  + *
  + * @param h		header
  + * @param he		tag container
  + * @param flags		(unused)
  + * @return		1 on success, 0 on failure
  + */
  +/*@mayexit@*/
  +int headerDel(Header h, HE_t he, /*@unused@*/ unsigned int flags)
  +	/*@modifies h @*/;
  +
  +/** \ingroup header
  + * Modify tag container in header.
  + * If there are multiple entries with this tag, the first one gets replaced.
  + * @param h		header
  + * @param he		tag container
  + * @param flags		(unused)
  + * @return		1 on success, 0 on failure
  + */
  +int headerMod(Header h, HE_t he, /*@unused@*/ unsigned int flags)
  +	/*@modifies h @*/;
  +
   #ifdef __cplusplus
   }
   #endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/signature.c
  ============================================================================
  $ cvs diff -u -r1.33 -r1.34 signature.c
  --- rpm/rpmdb/signature.c	24 Nov 2007 22:07:30 -0000	1.33
  +++ rpm/rpmdb/signature.c	24 Nov 2007 23:15:33 -0000	1.34
  @@ -306,7 +306,6 @@
   	/*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
   	/*@modifies sigh, sigTag, rpmGlobalMacroContext, fileSystem, internalState @*/
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       Header h = NULL;
       FD_t fd = NULL;
  @@ -370,7 +369,7 @@
   	he->t = RPM_STRING_TYPE;
   	he->p.str = SHA1;
   	he->c = 1;
  -	xx = hae(sigh, he, 0);
  +	xx = headerPut(sigh, he, 0);
   	SHA1 = _free(SHA1);
   	if (!xx)
   	    goto exit;
  @@ -412,7 +411,7 @@
   	he->t = RPM_BIN_TYPE;
   	he->p.ptr = pkt;
   	he->c = pktlen;
  -	xx = hae(sigh, he, 0);
  +	xx = headerPut(sigh, he, 0);
   	if (!xx)
   	    goto exit;
   	ret = 0;
  @@ -433,7 +432,6 @@
   int rpmAddSignature(Header sigh, const char * file, uint32_t sigTag,
   		const char * passPhrase)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       struct stat st;
       byte * pkt;
  @@ -453,7 +451,7 @@
   	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &pktlen;
   	he->c = 1;
  -	xx = hae(sigh, he, 0);
  +	xx = headerPut(sigh, he, 0);
   	if (!xx)
   	    break;
   	ret = 0;
  @@ -467,7 +465,7 @@
   	he->t = RPM_BIN_TYPE;
   	he->p.ptr = pkt;
   	he->c = pktlen;
  -	xx = hae(sigh, he, 0);
  +	xx = headerPut(sigh, he, 0);
   	if (!xx)
   	    break;
   	ret = 0;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/tools/rpmcache.c
  ============================================================================
  $ cvs diff -u -r2.25 -r2.26 rpmcache.c
  --- rpm/tools/rpmcache.c	24 Nov 2007 22:07:31 -0000	2.25
  +++ rpm/tools/rpmcache.c	24 Nov 2007 23:15:33 -0000	2.26
  @@ -106,7 +106,6 @@
   
   static int ftsCacheUpdate(rpmts ts)
   {
  -    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       uint32_t tid = rpmtsGetTid(ts);
       rpmdbMatchIterator mi;
  @@ -154,7 +153,7 @@
   	he->p.ui32p = &tid;
   	he->c = 1;
   	he->append = 1;
  -	rc = hae(ip->h, he, 0);
  +	rc = headerPut(ip->h, he, 0);
   	he->append = 0;
   	if (rc != 1) break;
   
  @@ -163,7 +162,7 @@
   	he->p.argv = &ip->path;
   	he->c = 1;
   	he->append = 1;
  -	rc = hae(ip->h, he, 0);
  +	rc = headerPut(ip->h, he, 0);
   	he->append = 0;
   	if (rc != 1) break;
   
  @@ -172,7 +171,7 @@
   	he->p.ui32p = &ip->size;
   	he->c = 1;
   	he->append = 1;
  -	rc = hae(ip->h, he, 0);
  +	rc = headerPut(ip->h, he, 0);
   	he->append = 0;
   	if (rc != 1) break;
   
  @@ -181,7 +180,7 @@
   	he->p.ui32p = &ip->mtime;
   	he->c = 1;
   	he->append = 1;
  -	rc = hae(ip->h, he, 0);
  +	rc = headerPut(ip->h, he, 0);
   	he->append = 0;
   	if (rc != 1) break;
   
  @@ .
Received on Sun Nov 25 00:15:33 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.