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: Thu 08 Nov 2007 - 16:15:41 CET
Message-Id: <20071108151541.AA93034845C@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:   08-Nov-2007 16:15:41
  Branch: HEAD                             Handle: 2007110815153704

  Modified files:
    rpm                     CHANGES
    rpm/build               files.c pack.c parseChangelog.c parsePreamble.c
                            reqprov.c
    rpm/lib                 formats.c psm.c rpmchecksig.c rpmfc.c rpmfi.c
    rpm/python              header-py.c
    rpm/rpmdb               Makefile.am hdrNVR.c hdrfmt.c header.c header.h
                            header_internal.c rpmdb.c signature.c sqlite.c
    rpm/tools               rpmcache.c

  Log:
    - finish converting to headerAddExtension() everywhere.
    - change names of header tag integer types: s/INT32/UINT32/ etc.

  Summary:
    Revision    Changes     Path
    1.1773      +2  -0      rpm/CHANGES
    1.285       +13 -13     rpm/build/files.c
    2.245       +4  -4      rpm/build/pack.c
    2.35        +1  -1      rpm/build/parseChangelog.c
    2.143       +1  -1      rpm/build/parsePreamble.c
    1.79        +2  -2      rpm/build/reqprov.c
    2.116       +1  -1      rpm/lib/formats.c
    2.255       +4  -4      rpm/lib/psm.c
    1.165       +5  -5      rpm/lib/rpmchecksig.c
    1.32        +7  -7      rpm/lib/rpmfc.c
    2.96        +1  -1      rpm/lib/rpmfi.c
    1.71        +96 -43     rpm/python/header-py.c
    1.85        +1  -1      rpm/rpmdb/Makefile.am
    1.24        +11 -11     rpm/rpmdb/hdrNVR.c
    1.28        +20 -20     rpm/rpmdb/hdrfmt.c
    1.114       +31 -31     rpm/rpmdb/header.c
    1.58        +4  -4      rpm/rpmdb/header.h
    1.12        +16 -14     rpm/rpmdb/header_internal.c
    1.200       +16 -16     rpm/rpmdb/rpmdb.c
    1.16        +1  -1      rpm/rpmdb/signature.c
    1.19        +8  -8      rpm/rpmdb/sqlite.c
    2.22        +36 -12     rpm/tools/rpmcache.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1772 -r1.1773 CHANGES
  --- rpm/CHANGES	4 Nov 2007 20:51:26 -0000	1.1772
  +++ rpm/CHANGES	8 Nov 2007 15:15:37 -0000	1.1773
  @@ -1,4 +1,6 @@
   4.5 -> 5.0:
  +    - jbj: finish converting to headerAddExtension() everywhere.
  +    - jbj: change names of header tag integer types: s/INT32/UINT32/ etc.
       - jbj: finish bulldozing headerAddEntry throughout rpmbuild.
       - jbj: start bulldozing headerAddEntry throughout rpmbuild.
       - jbj: use HAE_t for signature tags, change int_32 to uint32_t where needed.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/files.c
  ============================================================================
  $ cvs diff -u -r1.284 -r1.285 files.c
  --- rpm/build/files.c	6 Nov 2007 19:17:00 -0000	1.284
  +++ rpm/build/files.c	8 Nov 2007 15:15:38 -0000	1.285
  @@ -1252,7 +1252,7 @@
   exit:
       if (count > 0) {
   	he->tag = RPMTAG_DIRINDEXES;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = dirIndexes;
   	he->c = count;
   	xx = hae(h, he, 0);
  @@ -1403,7 +1403,7 @@
   /*@-sizeoftype@*/
   	ui32 = flp->fl_size;
   	he->tag = RPMTAG_FILESIZES;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  @@ -1428,7 +1428,7 @@
   
   	ui32 = flp->fl_mtime;
   	he->tag = RPMTAG_FILEMTIMES;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  @@ -1437,7 +1437,7 @@
   
   	ui16 = flp->fl_mode;
   	he->tag = RPMTAG_FILEMODES;
  -	he->t = RPM_INT16_TYPE;
  +	he->t = RPM_UINT16_TYPE;
   	he->p.ui16p = &ui16;
   	he->c = 1;
   	he->append = 1;
  @@ -1446,7 +1446,7 @@
   
   	ui16 = flp->fl_rdev;
   	he->tag = RPMTAG_FILERDEVS;
  -	he->t = RPM_INT16_TYPE;
  +	he->t = RPM_UINT16_TYPE;
   	he->p.ui16p = &ui16;
   	he->c = 1;
   	he->append = 1;
  @@ -1455,7 +1455,7 @@
   
   	ui32 = flp->fl_dev;
   	he->tag = RPMTAG_FILEDEVICES;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  @@ -1464,7 +1464,7 @@
   
   	ui32 = flp->fl_ino;
   	he->tag = RPMTAG_FILEINODES;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  @@ -1532,7 +1532,7 @@
   
   	ui32 = dalgo;
   	he->tag = RPMTAG_FILEDIGESTALGOS;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  @@ -1573,7 +1573,7 @@
   	}
   	ui32 = flp->verifyFlags;
   	he->tag = RPMTAG_FILEVERIFYFLAGS;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  @@ -1588,7 +1588,7 @@
   
   	ui32 = flp->flags;
   	he->tag = RPMTAG_FILEFLAGS;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &ui32;
   	he->c = 1;
   	he->append = 1;
  @@ -1619,7 +1619,7 @@
   
       ui32 = fl->totalFileSize;
       he->tag = RPMTAG_SIZE;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &ui32;
       he->c = 1;
       he->append = 1;
  @@ -2609,7 +2609,7 @@
   	    he->append = 0;
   	    if (srcPtr->flags & RPMFILE_GHOST) {
   		he->tag = RPMTAG_NOSOURCE;
  -		he->t = RPM_INT32_TYPE;
  +		he->t = RPM_UINT32_TYPE;
   		he->p.ui32p = &srcPtr->num;
   		he->c = 1;
   		he->append = 1;
  @@ -2627,7 +2627,7 @@
   	    he->append = 0;
   	    if (srcPtr->flags & RPMFILE_GHOST) {
   		he->tag = RPMTAG_NOPATCH;
  -		he->t = RPM_INT32_TYPE;
  +		he->t = RPM_UINT32_TYPE;
   		he->p.ui32p = &srcPtr->num;
   		he->c = 1;
   		he->append = 1;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
  ============================================================================
  $ cvs diff -u -r2.244 -r2.245 pack.c
  --- rpm/build/pack.c	4 Nov 2007 19:37:02 -0000	2.244
  +++ rpm/build/pack.c	8 Nov 2007 15:15:38 -0000	2.245
  @@ -529,7 +529,7 @@
   	    he->append = 0;
   
   	    he->tag = RPMTAG_PROVIDEFLAGS;
  -	    he->t = RPM_INT32_TYPE;
  +	    he->t = RPM_UINT32_TYPE;
   	    he->p.ui32p = &fdummy;
   	    he->c = 1;
   	    he->append = 1;
  @@ -579,7 +579,7 @@
   	he->append = 0;
   
   	he->tag = RPMTAG_PROVIDEFLAGS;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &pFlags;
   	he->c = 1;
   	he->append = 1;
  @@ -624,7 +624,7 @@
   	csa->cpioArchiveSize = 0;
   	/* Add a bogus archive size to the Header */
   	he->tag = RPMTAG_ARCHIVESIZE;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &csa->cpioArchiveSize;
   	he->c = 1;
   	xx = hae(h, he, 0);
  @@ -790,7 +790,7 @@
   
       {	uint32_t payloadSize = csa->cpioArchiveSize;
   	he->tag = RPMSIGTAG_PAYLOADSIZE;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &payloadSize;
   	he->c = 1;
   	xx = hae(sigh, he, 0);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parseChangelog.c
  ============================================================================
  $ cvs diff -u -r2.34 -r2.35 parseChangelog.c
  --- rpm/build/parseChangelog.c	4 Nov 2007 19:37:02 -0000	2.34
  +++ rpm/build/parseChangelog.c	8 Nov 2007 15:15:38 -0000	2.35
  @@ -20,7 +20,7 @@
       int xx;
   
       he->tag = RPMTAG_CHANGELOGTIME;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &mytime;
       he->c = 1;
       he->append = 1;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parsePreamble.c
  ============================================================================
  $ cvs diff -u -r2.142 -r2.143 parsePreamble.c
  --- rpm/build/parsePreamble.c	4 Nov 2007 17:59:55 -0000	2.142
  +++ rpm/build/parsePreamble.c	8 Nov 2007 15:15:38 -0000	2.143
  @@ -679,7 +679,7 @@
   	    return RPMRC_FAIL;
   	}
   	he->tag = tag;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &num;
   	he->c = 1;
   	xx = hae(pkg->header, he, 0);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/reqprov.c
  ============================================================================
  $ cvs diff -u -r1.78 -r1.79 reqprov.c
  --- rpm/build/reqprov.c	4 Nov 2007 19:37:02 -0000	1.78
  +++ rpm/build/reqprov.c	8 Nov 2007 15:15:38 -0000	1.79
  @@ -128,7 +128,7 @@
   	he->append = 0;
   
   	he->tag = flagtag;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &Flags;
   	he->c = 1;
   	he->append = 1;
  @@ -137,7 +137,7 @@
       }
       if (indextag) {
   	he->tag = indextag;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &index;
   	he->c = 1;
   	he->append = 1;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/formats.c
  ============================================================================
  $ cvs diff -u -r2.115 -r2.116 formats.c
  --- rpm/lib/formats.c	19 Oct 2007 00:36:44 -0000	2.115
  +++ rpm/lib/formats.c	8 Nov 2007 15:15:39 -0000	2.116
  @@ -81,7 +81,7 @@
       if (rpmGetFilesystemList(NULL, &he->c))
   	goto exit;
   
  -    he->t = RPM_INT64_TYPE;
  +    he->t = RPM_UINT64_TYPE;
       he->freeData = 1;
   
       if (fnames.ptr == NULL)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/psm.c
  ============================================================================
  $ cvs diff -u -r2.254 -r2.255 psm.c
  --- rpm/lib/psm.c	3 Nov 2007 23:44:00 -0000	2.254
  +++ rpm/lib/psm.c	8 Nov 2007 15:15:39 -0000	2.255
  @@ -1532,13 +1532,13 @@
       }
   
       he->tag = RPMTAG_INSTALLTIME;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &installTime;
       he->c = 1;
       xx = hae(fi->h, he, 0);
   
       he->tag = RPMTAG_INSTALLCOLOR;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &tscolor;
       he->c = 1;
       xx = hae(fi->h, he, 0);
  @@ -1546,7 +1546,7 @@
       /* XXX FIXME: add preferred color at install. */
   
       he->tag = RPMTAG_PACKAGECOLOR;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &tecolor;
       he->c = 1;
       xx = hae(fi->h, he, 0);
  @@ -1933,7 +1933,7 @@
   	    {	uint32_t tid = rpmtsGetTid(ts);
   
   		he->tag = RPMTAG_REMOVETID;
  -		he->t = RPM_INT32_TYPE;
  +		he->t = RPM_UINT32_TYPE;
   		he->p.ui32p = &tid;
   		he->c = 1;
   		xx = hae(psm->oh, he, 0);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmchecksig.c
  ============================================================================
  $ cvs diff -u -r1.164 -r1.165 rpmchecksig.c
  --- rpm/lib/rpmchecksig.c	3 Nov 2007 23:44:00 -0000	1.164
  +++ rpm/lib/rpmchecksig.c	8 Nov 2007 15:15:39 -0000	1.165
  @@ -562,7 +562,7 @@
       xx = hae(h, he, 0);
   
       he->tag = RPMTAG_SIZE;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &zero;
       he->c = 1;
       xx = hae(h, he, 0);
  @@ -580,7 +580,7 @@
       he->c = 1;
       xx = hae(h, he, 0);
       he->tag = RPMTAG_PROVIDEFLAGS;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &pflags;
       he->c = 1;
       xx = hae(h, he, 0);
  @@ -596,7 +596,7 @@
       he->c = 1;
       xx = hae(h, he, 0);
       he->tag = RPMTAG_PROVIDEFLAGS;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = &pflags;
       he->c = 1;
       xx = hae(h, he, 0);
  @@ -617,13 +617,13 @@
       xx = hae(h, he, 0);
       {   uint32_t tid = rpmtsGetTid(ts);
   	he->tag = RPMTAG_INSTALLTIME;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &tid;
   	he->c = 1;
   	xx = hae(h, he, 0);
   	/* XXX W2DO: tag value inheirited from parent? */
   	he->tag = RPMTAG_BUILDTIME;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &tid;
   	he->c = 1;
   	xx = hae(h, he, 0);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfc.c
  ============================================================================
  $ cvs diff -u -r1.31 -r1.32 rpmfc.c
  --- rpm/lib/rpmfc.c	3 Nov 2007 23:44:01 -0000	1.31
  +++ rpm/lib/rpmfc.c	8 Nov 2007 15:15:39 -0000	1.32
  @@ -1517,7 +1517,7 @@
   
       /* Add per-file colors(#files) */
       he->tag = RPMTAG_FILECOLORS;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = argiData(fc->fcolor);
       he->c = argiCount(fc->fcolor);
   assert(ac == he->c);
  @@ -1543,7 +1543,7 @@
   
       /* Add per-file classes(#files) */
       he->tag = RPMTAG_FILECLASS;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = argiData(fc->fcdictx);
       he->c = argiCount(fc->fcdictx);
   assert(ac == he->c);
  @@ -1569,7 +1569,7 @@
   	xx = hae(pkg->header, he, 0);
   
   	he->tag = RPMTAG_PROVIDEFLAGS;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = fc->provides->Flags;
   assert(he->p.ptr != NULL);
   	xx = hae(pkg->header, he, 0);
  @@ -1595,7 +1595,7 @@
   	xx = hae(pkg->header, he, 0);
   
   	he->tag = RPMTAG_REQUIREFLAGS;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = fc->requires->Flags;
   assert(he->p.ptr != NULL);
   	xx = hae(pkg->header, he, 0);
  @@ -1604,7 +1604,7 @@
   
       /* Add dependency dictionary(#dependencies) */
       he->tag = RPMTAG_DEPENDSDICT;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = argiData(fc->ddictx);
       he->c = argiCount(fc->ddictx);
       if (he->p.ptr != NULL) {
  @@ -1613,7 +1613,7 @@
   
       /* Add per-file dependency (start,number) pairs (#files) */
       he->tag = RPMTAG_FILEDEPENDSX;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = argiData(fc->fddictx);
       he->c = argiCount(fc->fddictx);
   assert(ac == he->c);
  @@ -1622,7 +1622,7 @@
       }
   
       he->tag = RPMTAG_FILEDEPENDSN;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = argiData(fc->fddictn);
       he->c = argiCount(fc->fddictn);
   assert(ac == he->c);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmfi.c
  ============================================================================
  $ cvs diff -u -r2.95 -r2.96 rpmfi.c
  --- rpm/lib/rpmfi.c	3 Nov 2007 23:44:01 -0000	2.95
  +++ rpm/lib/rpmfi.c	8 Nov 2007 15:15:39 -0000	2.96
  @@ -1138,7 +1138,7 @@
   	fi->dc = he->c;
   
   	he->tag = RPMTAG_DIRINDEXES;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = dirIndexes;
   	he->c = fileCount;
   	xx = hme(h, he->tag, he->t, he->p.ptr, he->c);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/python/header-py.c
  ============================================================================
  $ cvs diff -u -r1.70 -r1.71 header-py.c
  --- rpm/python/header-py.c	3 Nov 2007 23:44:03 -0000	1.70
  +++ rpm/python/header-py.c	8 Nov 2007 15:15:40 -0000	1.71
  @@ -173,7 +173,7 @@
           /*@modifies h @*/
   {
       HGE_t hge = (HGE_t)headerGetExtension;
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HAE_t hae = (HAE_t)headerAddExtension;
       HRE_t hre = (HRE_t)headerRemoveEntry;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       int xx;
  @@ -184,7 +184,8 @@
   	xx = hge(h, he, 0);
   	if (he->p.ptr == NULL || he->c <= 0)
   	    return;
  -	xx = hae(h, RPMTAG_OLDFILENAMES, he->t, he->p, he->c);
  +	he->tag = RPMTAG_OLDFILENAMES;
  +	xx = hae(h, he, 0);
   	he->p.ptr = _free(he->p.ptr);
       }
       /*@=branchstate@*/
  @@ -203,14 +204,14 @@
   	/*@modifies h @*/
   {
       HGE_t hge = (HGE_t)headerGetExtension;
  -    HAE_t hae = (HAE_t)headerAddEntry;
  +    HAE_t hae = headerAddExtension;
       HRE_t hre = (HRE_t)headerRemoveEntry;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char ** fileNames;
       const char ** dirNames;
       const char ** baseNames;
  -    int_32 * dirIndexes;
  -    int count;
  +    uint32_t * dirIndexes;
  +    uint32_t count;
       int dirIndex = -1;
       int xx;
       int i;
  @@ -281,11 +282,23 @@
   
   exit:
       if (count > 0) {
  -	xx = hae(h, RPMTAG_DIRINDEXES, RPM_INT32_TYPE, dirIndexes, count);
  -	xx = hae(h, RPMTAG_BASENAMES, RPM_STRING_ARRAY_TYPE,
  -			baseNames, count);
  -	xx = hae(h, RPMTAG_DIRNAMES, RPM_STRING_ARRAY_TYPE,
  -			dirNames, dirIndex + 1);
  +	he->tag = RPMTAG_DIRINDEXES;
  +	he->t = RPM_UINT32_TYPE;
  +	he->p.ui32p = dirIndexes;
  +	he->c = count;
  +	xx = hae(h, he, 0);
  +
  +	he->tag = RPMTAG_DIRINDEXES;
  +	he->t = RPM_STRING_ARRAY_TYPE;
  +	he->p.argv = baseNames;
  +	he->c = count;
  +	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, 0);
       }
   
       fileNames = _free(fileNames);
  @@ -301,6 +314,7 @@
   	/*@*/
   {
       HGE_t hge = (HGE_t)headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       int xx;
   
  @@ -316,7 +330,8 @@
   	return;
   
       /* XXX Legacy tag needs to go away. */
  -    headerAddEntry(h, RPMTAG_OLDFILENAMES, he->t, he->p.ptr, he->c);
  +    he->tag = RPMTAG_OLDFILENAMES;
  +    xx = hae(h, he, 0);
   
       he->p.ptr = _free(he->p.ptr);
   }
  @@ -331,17 +346,18 @@
   static void providePackageNVR(Header h)
   {
       HGE_t hge = (HGE_t)headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       const char *N, *V, *R;
  -    int_32 E;
  +    uint32_t E;
       int gotE;
       const char *pEVR;
       char *p;
  -    int_32 pFlags = RPMSENSE_EQUAL;
  +    uint32_t pFlags = RPMSENSE_EQUAL;
       const char ** provides = NULL;
       const char ** providesEVR = NULL;
  -    int_32 * provideFlags = NULL;
  -    int providesCount;
  +    uint32_t * provideFlags = NULL;
  +    uint32_t providesCount;
       int i, xx;
       int bingo = 1;
   
  @@ -380,12 +396,18 @@
       providesEVR = he->p.argv;
       if (!xx) {
   	for (i = 0; i < providesCount; i++) {
  -	    char * vdummy = "";
  -	    int_32 fdummy = RPMSENSE_ANY;
  -	    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION, RPM_STRING_ARRAY_TYPE,
  -			&vdummy, 1);
  -	    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS, RPM_INT32_TYPE,
  -			&fdummy, 1);
  +	    static char vdummy[] = "";
  +	    static uint32_t fdummy = RPMSENSE_ANY;
  +	    he->tag = RPMTAG_PROVIDEVERSION;
  +	    he->t = RPM_STRING_ARRAY_TYPE;
  +	    he->p.argv = &vdummy;
  +	    he->c = 1;
  +	    xx = hae(h, he, 0);
  +	    he->tag = RPMTAG_PROVIDEFLAGS;
  +	    he->t = RPM_UINT32_TYPE;
  +	    he->p.ui32p = &fdummy;
  +	    he->c = 1;
  +	    xx = hae(h, he, 0);
   	}
   	goto exit;
       }
  @@ -413,12 +435,29 @@
       provideFlags = _free(provideFlags);
   
       if (bingo) {
  -	xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDENAME, RPM_STRING_ARRAY_TYPE,
  -		&N, 1);
  -	xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS, RPM_INT32_TYPE,
  -		&pFlags, 1);
  -	xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION, RPM_STRING_ARRAY_TYPE,
  -		&pEVR, 1);
  +	he->tag = RPMTAG_PROVIDENAME;
  +	he->t = RPM_STRING_ARRAY_TYPE;
  +	he->p.argv = N;
  +	he->c = 1;
  +	he->append = 1;
  +	xx = hae(h, he, 0);
  +	he->append = 0;
  +
  +	he->tag = RPMTAG_PROVIDEVERSION;
  +	he->t = RPM_STRING_ARRAY_TYPE;
  +	he->p.argv = pEVR;
  +	he->c = 1;
  +	he->append = 1;
  +	xx = hae(h, he, 0);
  +	he->append = 0;
  +
  +	he->tag = RPMTAG_PROVIDEFLAGS;
  +	he->t = RPM_UINT32_TYPE;
  +	he->p.ui32p = pFlags;
  +	he->c = 1;
  +	he->append = 1;
  +	xx = hae(h, he, 0);
  +	he->append = 0;
       }
   }
   #endif	/* SUPPORT_RPMV3_PROVIDE_SELF */
  @@ -453,10 +492,10 @@
   	case RPM_OPENPGP_TYPE:
   	case RPM_ASN1_TYPE:
   	case RPM_BIN_TYPE:
  -	case RPM_INT64_TYPE:
  -	case RPM_INT32_TYPE:
  -	case RPM_INT16_TYPE:
  -	case RPM_INT8_TYPE:
  +	case RPM_UINT64_TYPE:
  +	case RPM_UINT32_TYPE:
  +	case RPM_UINT16_TYPE:
  +	case RPM_UINT8_TYPE:
   	case RPM_CHAR_TYPE:
   	case RPM_STRING_ARRAY_TYPE:
   	case RPM_STRING_TYPE:
  @@ -789,7 +828,7 @@
   	break;
   
       case RPM_CHAR_TYPE:
  -    case RPM_INT8_TYPE:
  +    case RPM_UINT8_TYPE:
   	if (he->c != 1 || forceArray) {
   	    metao = PyList_New(0);
   	    for (i = 0; i < he->c; i++) {
  @@ -803,7 +842,7 @@
   	}
   	break;
   
  -    case RPM_INT16_TYPE:
  +    case RPM_UINT16_TYPE:
   	if (he->c != 1 || forceArray) {
   	    metao = PyList_New(0);
   	    for (i = 0; i < he->c; i++) {
  @@ -817,7 +856,7 @@
   	}
   	break;
   
  -    case RPM_INT32_TYPE:
  +    case RPM_UINT32_TYPE:
   	if (he->c != 1 || forceArray) {
   	    metao = PyList_New(0);
   	    for (i = 0; i < he->c; i++) {
  @@ -831,7 +870,7 @@
   	}
   	break;
   
  -    case RPM_INT64_TYPE:
  +    case RPM_UINT64_TYPE:
   	if (he->c != 1 || forceArray) {
   	    metao = PyList_New(0);
   	    for (i = 0; i < he->c; i++) {
  @@ -1098,6 +1137,10 @@
    */
   int rpmMergeHeaders(PyObject * list, FD_t fd, int matchTag)
   {
  +    HGE_t hge = (HGE_t)headerGetExtension;
  +    HAE_t hae = headerAddExtension;
  +    HRE_t hre = (HRE_t)headerRemoveEntry;
  +    HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
       Header h;
       HeaderIterator hi;
       rpmTagData newMatch;
  @@ -1108,22 +1151,32 @@
       rpmTagType t;
       rpmTagCount c;
       rpmTagData p;
  +    int xx;
   
       Py_BEGIN_ALLOW_THREADS
       h = headerRead(fd);
       Py_END_ALLOW_THREADS
   
       while (h) {
  -	if (!headerGetEntry(h, matchTag, NULL, &newMatch, NULL)) {
  +	he->tag = matchTag;
  +	xx = hge(hdr->h, he, 0);
  +	newMatch.ptr = he->p.ptr;
  +	if (!xx) {
   	    PyErr_SetString(pyrpmError, "match tag missing in new header");
   	    return 1;
   	}
   
   	hdr = (hdrObject *) PyList_GetItem(list, count++);
  -	if (!hdr) return 1;
  +	if (!hdr) {
  +	    PyErr_SetString(pyrpmError, "match list item missing");
  +	    return 1;
  +	}
   
  -	if (!headerGetEntry(hdr->h, matchTag, NULL, &oldMatch, NULL)) {
  -	    PyErr_SetString(pyrpmError, "match tag missing in new header");
  +	he->tag = matchTag;
  +	xx = hge(hdr->h, he, 0);
  +	oldMatch.ptr = he->p.ptr;
  +	if (!xx) {
  +	    PyErr_SetString(pyrpmError, "match tag missing in old header");
   	    return 1;
   	}
   
  @@ -1137,12 +1190,12 @@
   	hdr->linkList = _free(hdr->linkList);
   
   	for (hi = headerInitIterator(h);
  -	    headerNextIterator(hi, &tag, &t, &p, &c);
  -	    p.ptr = headerFreeData(p.ptr, t))
  +	    headerNextIterator(hi, &he->tag, &he->t, &he->p, &he->c);
  +	    he->p.ptr = headerFreeData(he->p.ptr, t))
   	{
   	    /* could be dupes */
  -	    headerRemoveEntry(hdr->h, tag);
  -	    headerAddEntry(hdr->h, tag, t, p.ptr, c);
  +	    xx = hre(hdr->h, he->tag);
  +	    xx = hae(hdr->h, he, 0);
   	}
   
   	headerFreeIterator(hi);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.84 -r1.85 Makefile.am
  --- rpm/rpmdb/Makefile.am	1 Nov 2007 17:37:49 -0000	1.84
  +++ rpm/rpmdb/Makefile.am	8 Nov 2007 15:15:40 -0000	1.85
  @@ -85,7 +85,7 @@
   	@echo '' >> $@
   	@echo '/*@observer@*/ /*@unchecked@*/' >> $@
   	@echo 'static const struct headerTagTableEntry_s rpmTagTbl[] = {' >> $@
  -	${AWK} '/(RPMTAG_[A-Z0-9]*)[ \t]+([0-9]*)/ && !/internal/ {tt = "NULL"; ta = "ANY"; if ($$5 == "c") {tt = "CHAR"; ta = "SCALAR"} if ($$5 == "c[]") {tt = "CHAR"; ta = "ARRAY"} if ($$5 == "h") {tt = "INT16"; ta = "SCALAR"} if ($$5 == "h[]") {tt = "INT16"; ta = "ARRAY"} if ($$5 == "i") {tt = "INT32"; ta = "SCALAR"} if ($$5 == "i[]") {tt = "INT32"; ta = "ARRAY"} if ($$5 == "l") {tt = "INT64"; ta = "SCALAR"} if ($$5 == "l[]") {tt = "INT64"; ta = "ARRAY"} if ($$5 == "s") {tt = "STRING"; ta = "SCALAR"} if ($$5 == "s[]") {tt = "STRING_ARRAY"; ta = "ARRAY"} if ($$5 == "s{}") {tt = "I18NSTRING"; ta = "SCALAR"} if ($$5 == "x") {tt = "BIN"; ta = "SCALAR"} if ($$2 == "=") { printf("\t{ \"%s\",	%s	RPM_%s_TYPE + RPM_%s_RETURN_TYPE },\n", $$1, $$3, tt, ta) } else { printf("\t{ \"%s\",	%s,	RPM_%s_TYPE + RPM_%s_RETURN_TYPE  },\n", $$2, $$3, tt, ta) } }' < ${top_srcdir}/rpmdb/rpmtag.h | sort >> $@
  +	${AWK} '/(RPMTAG_[A-Z0-9]*)[ \t]+([0-9]*)/ && !/internal/ {tt = "NULL"; ta = "ANY"; if ($$5 == "c") {tt = "CHAR"; ta = "SCALAR"} if ($$5 == "c[]") {tt = "CHAR"; ta = "ARRAY"} if ($$5 == "h") {tt = "UINT16"; ta = "SCALAR"} if ($$5 == "h[]") {tt = "UINT16"; ta = "ARRAY"} if ($$5 == "i") {tt = "UINT32"; ta = "SCALAR"} if ($$5 == "i[]") {tt = "UINT32"; ta = "ARRAY"} if ($$5 == "l") {tt = "UINT64"; ta = "SCALAR"} if ($$5 == "l[]") {tt = "UINT64"; ta = "ARRAY"} if ($$5 == "s") {tt = "STRING"; ta = "SCALAR"} if ($$5 == "s[]") {tt = "STRING_ARRAY"; ta = "ARRAY"} if ($$5 == "s{}") {tt = "I18NSTRING"; ta = "SCALAR"} if ($$5 == "x") {tt = "BIN"; ta = "SCALAR"} if ($$2 == "=") { printf("\t{ \"%s\",	%s	RPM_%s_TYPE + RPM_%s_RETURN_TYPE },\n", $$1, $$3, tt, ta) } else { printf("\t{ \"%s\",	%s,	RPM_%s_TYPE + RPM_%s_RETURN_TYPE  },\n", $$2, $$3, tt, ta) } }' < ${top_srcdir}/rpmdb/rpmtag.h | sort >> $@
   	@echo '	{ NULL, 0, 0 }' >> $@
   	@echo '};' >> $@
   	@echo '' >> $@
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrNVR.c
  ============================================================================
  $ cvs diff -u -r1.23 -r1.24 hdrNVR.c
  --- rpm/rpmdb/hdrNVR.c	3 Nov 2007 23:44:03 -0000	1.23
  +++ rpm/rpmdb/hdrNVR.c	8 Nov 2007 15:15:40 -0000	1.24
  @@ -64,19 +64,19 @@
   	ival = 0;
   	switch (he->t) {
   	case RPM_CHAR_TYPE:
  -	case RPM_INT8_TYPE:
  +	case RPM_UINT8_TYPE:
   	    ival = he->p.ui8p[0];
   	    val = numbuf;
   	    /*@switchbreak@*/ break;
  -	case RPM_INT16_TYPE:
  +	case RPM_UINT16_TYPE:
   	    ival = he->p.ui16p[0];
   	    val = numbuf;
   	    /*@switchbreak@*/ break;
  -	case RPM_INT32_TYPE:
  +	case RPM_UINT32_TYPE:
   	    ival = he->p.ui32p[0];
   	    val = numbuf;
   	    /*@switchbreak@*/ break;
  -	case RPM_INT64_TYPE:
  +	case RPM_UINT64_TYPE:
   	    ival = he->p.ui64p[0];
   	    val = numbuf;
   	    /*@switchbreak@*/ break;
  @@ -118,7 +118,7 @@
   	if (!xx)
   	    continue;
   	switch (he->t) {
  -	case RPM_INT32_TYPE:
  +	case RPM_UINT32_TYPE:
   	    delMacro(NULL, tagm->macroname);
   	    /*@switchbreak@*/ break;
   	case RPM_STRING_TYPE:
  @@ -129,8 +129,8 @@
   	case RPM_BIN_TYPE:
   	case RPM_NULL_TYPE:
   	case RPM_CHAR_TYPE:
  -	case RPM_INT8_TYPE:
  -	case RPM_INT16_TYPE:
  +	case RPM_UINT8_TYPE:
  +	case RPM_UINT16_TYPE:
   	default:
   	    /*@switchbreak@*/ break;
   	}
  @@ -287,10 +287,10 @@
   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:
  +	    case RPM_UINT8_TYPE:
  +	    case RPM_UINT16_TYPE:
  +	    case RPM_UINT32_TYPE:
  +	    case RPM_UINT64_TYPE:
   		if (he->c != 1)
   		    continue;
   		/*@switchbreak@*/ break;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrfmt.c
  ============================================================================
  $ cvs diff -u -r1.27 -r1.28 hdrfmt.c
  --- rpm/rpmdb/hdrfmt.c	3 Nov 2007 23:44:03 -0000	1.27
  +++ rpm/rpmdb/hdrfmt.c	8 Nov 2007 15:15:40 -0000	1.28
  @@ -83,7 +83,7 @@
       char * val;
   
   assert(ix == 0);
  -    if (he->t != RPM_INT64_TYPE)
  +    if (he->t != RPM_UINT64_TYPE)
   	val = xstrdup(_("(invalid type)"));
       else {
   	uint64_t anint = data.ui64p[ix];
  @@ -112,7 +112,7 @@
       char * val;
   
   assert(ix == 0);
  -    if (he->t != RPM_INT64_TYPE) {
  +    if (he->t != RPM_UINT64_TYPE) {
   	val = xstrdup(_("(invalid type)"));
       } else {
   	uint64_t anint = he->p.ui64p[0];
  @@ -134,7 +134,7 @@
       char * val;
   
   assert(ix == 0);
  -    if (he->t != RPM_INT64_TYPE) {
  +    if (he->t != RPM_UINT64_TYPE) {
   	val = xstrdup(_("(invalid type)"));
       } else {
   	char buf[15];
  @@ -201,10 +201,10 @@
   	break;
       case RPM_NULL_TYPE:
       case RPM_CHAR_TYPE:
  -    case RPM_INT8_TYPE:
  -    case RPM_INT16_TYPE:
  -    case RPM_INT32_TYPE:
  -    case RPM_INT64_TYPE:
  +    case RPM_UINT8_TYPE:
  +    case RPM_UINT16_TYPE:
  +    case RPM_UINT32_TYPE:
  +    case RPM_UINT64_TYPE:
       case RPM_I18NSTRING_TYPE:
       default:
   	return xstrdup(_("(invalid type)"));
  @@ -340,7 +340,7 @@
   if (_jbj)
   fprintf(stderr, " XML: tag %s(%d) %d %p[%d:%d] free %d\n", tagName(he->tag), he->tag, he->t, he->p.ptr, he->ix, he->c, he->freeData);
   assert(ix == 0);
  -assert(he->t == RPM_STRING_TYPE || he->t == RPM_INT64_TYPE || he->t == RPM_BIN_TYPE);
  +assert(he->t == RPM_STRING_TYPE || he->t == RPM_UINT64_TYPE || he->t == RPM_BIN_TYPE);
       switch (he->t) {
       case RPM_STRING_ARRAY_TYPE:
   	s = data.argv[ix];
  @@ -374,16 +374,16 @@
       }	break;
   /*@=globs =mods@*/
       case RPM_CHAR_TYPE:
  -    case RPM_INT8_TYPE:
  +    case RPM_UINT8_TYPE:
   	anint = data.ui8p[ix];
   	break;
  -    case RPM_INT16_TYPE:
  +    case RPM_UINT16_TYPE:
   	anint = data.ui16p[ix];	/* XXX note unsigned */
   	break;
  -    case RPM_INT32_TYPE:
  +    case RPM_UINT32_TYPE:
   	anint = data.ui32p[ix];
   	break;
  -    case RPM_INT64_TYPE:
  +    case RPM_UINT64_TYPE:
   	anint = data.ui64p[ix];
   	break;
       case RPM_NULL_TYPE:
  @@ -508,7 +508,7 @@
   if (_jbj)
   fprintf(stderr, "YAML: tag %s(%d) %d %p[%d:%d] free %d\n", tagName(he->tag), he->tag, he->t, he->p.ptr, he->ix, he->c, he->freeData);
   assert(ix == 0);
  -assert(he->t == RPM_STRING_TYPE || he->t == RPM_INT64_TYPE || he->t == RPM_BIN_TYPE);
  +assert(he->t == RPM_STRING_TYPE || he->t == RPM_UINT64_TYPE || he->t == RPM_BIN_TYPE);
       switch (he->t) {
       case RPM_STRING_ARRAY_TYPE:
       case RPM_I18NSTRING_TYPE:
  @@ -567,16 +567,16 @@
       }	break;
   /*@=globs =mods@*/
       case RPM_CHAR_TYPE:
  -    case RPM_INT8_TYPE:
  +    case RPM_UINT8_TYPE:
   	anint = data.ui8p[ix];
   	break;
  -    case RPM_INT16_TYPE:
  +    case RPM_UINT16_TYPE:
   	anint = data.ui16p[ix];	/* XXX note unsigned */
   	break;
  -    case RPM_INT32_TYPE:
  +    case RPM_UINT32_TYPE:
   	anint = data.ui32p[ix];
   	break;
  -    case RPM_INT64_TYPE:
  +    case RPM_UINT64_TYPE:
   	anint = data.ui64p[ix];
   	break;
       case RPM_NULL_TYPE:
  @@ -752,7 +752,7 @@
       char * val;
   
   assert(ix == 0);
  -    if (he->t != RPM_INT64_TYPE) {
  +    if (he->t != RPM_UINT64_TYPE) {
   	val = xstrdup(_("(invalid type)"));
       } else {
   	uint64_t anint = data.ui64p[ix];
  @@ -845,7 +845,7 @@
   	return 0;
   
       _he->tag = he->tag;
  -    _he->t = RPM_INT32_TYPE;
  +    _he->t = RPM_UINT32_TYPE;
       _he->p.ui32p = NULL;
       _he->c = 1;
       _he->freeData = -1;
  @@ -1179,7 +1179,7 @@
   		fileSystem, internalState @*/
   {
       he->tag = RPMTAG_DBINSTANCE;
  -    he->t = RPM_INT32_TYPE;
  +    he->t = RPM_UINT32_TYPE;
       he->p.ui32p = xmalloc(sizeof(*he->p.ui32p));
       he->p.ui32p[0] = headerGetInstance(h);
       he->freeData = 1;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.113 -r1.114 header.c
  --- rpm/rpmdb/header.c	3 Nov 2007 23:44:03 -0000	1.113
  +++ rpm/rpmdb/header.c	8 Nov 2007 15:15:40 -0000	1.114
  @@ -63,10 +63,10 @@
   static int typeSizes[16] =  { 
       0,	/*!< RPM_NULL_TYPE */
       1,	/*!< RPM_CHAR_TYPE */
  -    1,	/*!< RPM_INT8_TYPE */
  -    2,	/*!< RPM_INT16_TYPE */
  -    4,	/*!< RPM_INT32_TYPE */
  -    8,	/*!< RPM_INT64_TYPE */
  +    1,	/*!< RPM_UINT8_TYPE */
  +    2,	/*!< RPM_UINT16_TYPE */
  +    4,	/*!< RPM_UINT32_TYPE */
  +    8,	/*!< RPM_UINT64_TYPE */
       -1,	/*!< RPM_STRING_TYPE */
       1,	/*!< RPM_BIN_TYPE */
       -1,	/*!< RPM_STRING_ARRAY_TYPE */
  @@ -602,7 +602,7 @@
   
   	/* Perform endian conversions */
   	switch (ntohl(pe->type)) {
  -	case RPM_INT64_TYPE:
  +	case RPM_UINT64_TYPE:
   	{   int_64 * it = (int_64 *)t;
   	    int_32 b[2];
   	    for (; ie.info.count > 0; ie.info.count--, it += 1) {
  @@ -615,7 +615,7 @@
   	    }
   	    t = (unsigned char *) it;
   	}   /*@switchbreak@*/ break;
  -	case RPM_INT32_TYPE:
  +	case RPM_UINT32_TYPE:
   	{   int_32 * it = (int_32 *)t;
   	    for (; ie.info.count > 0; ie.info.count--, it += 1) {
   		if (dataEnd && ((unsigned char *)it) >= dataEnd)
  @@ -624,7 +624,7 @@
   	    }
   	    t = (unsigned char *) it;
   	}   /*@switchbreak@*/ break;
  -	case RPM_INT16_TYPE:
  +	case RPM_UINT16_TYPE:
   	{   int_16 * it = (int_16 *) t;
   	    for (; ie.info.count > 0; ie.info.count--, it += 1) {
   		if (dataEnd && ((unsigned char *)it) >= dataEnd)
  @@ -867,7 +867,7 @@
   
   	/* copy data w/ endian conversions */
   	switch (entry->info.type) {
  -	case RPM_INT64_TYPE:
  +	case RPM_UINT64_TYPE:
   	{   int_32 b[2];
   	    count = entry->info.count;
   	    src = entry->data;
  @@ -883,7 +883,7 @@
   	    }
   	}   /*@switchbreak@*/ break;
   
  -	case RPM_INT32_TYPE:
  +	case RPM_UINT32_TYPE:
   	    count = entry->info.count;
   	    src = entry->data;
   	    while (count--) {
  @@ -895,7 +895,7 @@
   	    }
   	    /*@switchbreak@*/ break;
   
  -	case RPM_INT16_TYPE:
  +	case RPM_UINT16_TYPE:
   	    count = entry->info.count;
   	    src = entry->data;
   	    while (count--) {
  @@ -1908,16 +1908,16 @@
   	he->freeData = 1;	/* XXX RPM_BIN_TYPE is malloc'd */
   	/*@fallthrough@*/
       case RPM_CHAR_TYPE:
  -    case RPM_INT8_TYPE:
  +    case RPM_UINT8_TYPE:
   	nb = he->c * sizeof(*he->p.ui8p);
   	break;
  -    case RPM_INT16_TYPE:
  +    case RPM_UINT16_TYPE:
   	nb = he->c * sizeof(*he->p.ui16p);
   	break;
  -    case RPM_INT32_TYPE:
  +    case RPM_UINT32_TYPE:
   	nb = he->c * sizeof(*he->p.ui32p);
   	break;
  -    case RPM_INT64_TYPE:
  +    case RPM_UINT64_TYPE:
   	nb = he->c * sizeof(*he->p.ui64p);
   	break;
       case RPM_I18NSTRING_TYPE:
  @@ -2912,16 +2912,16 @@
   	return xstrdup(_("(not a number)"));
   	break;
       case RPM_CHAR_TYPE:	
  -    case RPM_INT8_TYPE:
  +    case RPM_UINT8_TYPE:
   	ival = he->p.ui8p[ix];
   	break;
  -    case RPM_INT16_TYPE:
  +    case RPM_UINT16_TYPE:
   	ival = he->p.ui16p[ix];	/* XXX note unsigned. */
   	break;
  -    case RPM_INT32_TYPE:
  +    case RPM_UINT32_TYPE:
   	ival = he->p.ui32p[ix];
   	break;
  -    case RPM_INT64_TYPE:
  +    case RPM_UINT64_TYPE:
   	ival = he->p.ui64p[ix];
   	break;
       case RPM_STRING_TYPE:
  @@ -3010,7 +3010,7 @@
       rpmTagData data = { .ptr = he->p.ptr };
       char * val;
   
  -    if (he->t != RPM_INT64_TYPE) {
  +    if (he->t != RPM_UINT64_TYPE) {
   	val = xstrdup(_("(not a number)"));
       } else {
   	struct tm * tstruct;
  @@ -3065,12 +3065,12 @@
       size_t nb;
   
       /* XXX one of these integer types is unnecessary. */
  -    if (he->t == RPM_INT32_TYPE) {
  +    if (he->t == RPM_UINT32_TYPE) {
   	nb = 20;
   	val = xmalloc(nb);
   	snprintf(val, nb, "%u", data.ui32p[0]);
   	val[nb-1] = '\0';
  -    } else if (he->t == RPM_INT64_TYPE) {
  +    } else if (he->t == RPM_UINT64_TYPE) {
   	nb = 40;
   	val = xmalloc(40);
   	snprintf(val, nb, "%llu", data.ui64p[0]);
  @@ -3552,7 +3552,7 @@
       if (tag->arrayCount) {
   	countBuf = he->c;
   	he = rpmheClean(he);
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &countBuf;
   	he->c = 1;
   	he->freeData = 0;
  @@ -3580,29 +3580,29 @@
   	vhe->ix = -1;
   	break;
       case RPM_CHAR_TYPE:
  -    case RPM_INT8_TYPE:
  -    case RPM_INT16_TYPE:
  -    case RPM_INT32_TYPE:
  -    case RPM_INT64_TYPE:
  +    case RPM_UINT8_TYPE:
  +    case RPM_UINT16_TYPE:
  +    case RPM_UINT32_TYPE:
  +    case RPM_UINT64_TYPE:
   	switch (he->t) {
   	default:
   assert(0);	/* XXX keep gcc quiet. */
   	    break;
   	case RPM_CHAR_TYPE:	
  -	case RPM_INT8_TYPE:
  +	case RPM_UINT8_TYPE:
   	    ival = he->p.ui8p[element];
   	    break;
  -	case RPM_INT16_TYPE:
  +	case RPM_UINT16_TYPE:
   	    ival = he->p.ui16p[element];	/* XXX note unsigned. */
   	    break;
  -	case RPM_INT32_TYPE:
  +	case RPM_UINT32_TYPE:
   	    ival = he->p.ui32p[element];
   	    break;
  -	case RPM_INT64_TYPE:
  +	case RPM_UINT64_TYPE:
   	    ival = he->p.ui64p[element];
   	    break;
   	}
  -	vhe->t = RPM_INT64_TYPE;
  +	vhe->t = RPM_UINT64_TYPE;
   	vhe->p.ui64p = &ival;
   	vhe->c = he->c;
   	/* XXX TODO: force array representation? */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.h
  ============================================================================
  $ cvs diff -u -r1.57 -r1.58 header.h
  --- rpm/rpmdb/header.h	3 Nov 2007 23:44:03 -0000	1.57
  +++ rpm/rpmdb/header.h	8 Nov 2007 15:15:40 -0000	1.58
  @@ -115,10 +115,10 @@
   enum rpmTagType_e {
       RPM_NULL_TYPE		=  0,
       RPM_CHAR_TYPE		=  1,
  -    RPM_INT8_TYPE		=  2,
  -    RPM_INT16_TYPE		=  3,
  -    RPM_INT32_TYPE		=  4,
  -    RPM_INT64_TYPE		=  5,
  +    RPM_UINT8_TYPE		=  2,
  +    RPM_UINT16_TYPE		=  3,
  +    RPM_UINT32_TYPE		=  4,
  +    RPM_UINT64_TYPE		=  5,
       RPM_STRING_TYPE		=  6,
       RPM_BIN_TYPE		=  7,
       RPM_STRING_ARRAY_TYPE	=  8,
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.c
  ============================================================================
  $ cvs diff -u -r1.11 -r1.12 header_internal.c
  --- rpm/rpmdb/header_internal.c	17 Oct 2007 00:32:26 -0000	1.11
  +++ rpm/rpmdb/header_internal.c	8 Nov 2007 15:15:40 -0000	1.12
  @@ -16,10 +16,10 @@
   int rpm_typeAlign[16] =  {
       1,	/*!< RPM_NULL_TYPE */
       1,	/*!< RPM_CHAR_TYPE */
  -    1,	/*!< RPM_INT8_TYPE */
  -    2,	/*!< RPM_INT16_TYPE */
  -    4,	/*!< RPM_INT32_TYPE */
  -    8,	/*!< RPM_INT64_TYPE */
  +    1,	/*!< RPM_UINT8_TYPE */
  +    2,	/*!< RPM_UINT16_TYPE */
  +    4,	/*!< RPM_UINT32_TYPE */
  +    8,	/*!< RPM_UINT64_TYPE */
       1,	/*!< RPM_STRING_TYPE */
       1,	/*!< RPM_BIN_TYPE */
       1,	/*!< RPM_STRING_ARRAY_TYPE */
  @@ -109,16 +109,18 @@
   	case RPM_BIN_TYPE:
   	    type = "BIN";
   	    /*@switchbreak@*/ break;
  -	case RPM_INT8_TYPE:
  -	    type = "INT8";
  +	case RPM_UINT8_TYPE:
  +	    type = "UINT8";
   	    /*@switchbreak@*/ break;
  -	case RPM_INT16_TYPE:
  -	    type = "INT16";
  +	case RPM_UINT16_TYPE:
  +	    type = "UINT16";
   	    /*@switchbreak@*/ break;
  -	case RPM_INT32_TYPE:
  -	    type = "INT32";
  +	case RPM_UINT32_TYPE:
  +	    type = "UINT32";
  +	    /*@switchbreak@*/ break;
  +	case RPM_UINT64_TYPE:
  +	    type = "UINT64";
   	    /*@switchbreak@*/ break;
  -	/*case RPM_INT64_TYPE:  	type = "INT64"; 	break;*/
   	case RPM_STRING_TYPE:
   	    type = "STRING";
   	    /*@switchbreak@*/ break;
  @@ -152,7 +154,7 @@
   
   	    /* Print the data inline */
   	    switch (p->info.type) {
  -	    case RPM_INT32_TYPE:
  +	    case RPM_UINT32_TYPE:
   		while (c--) {
   		    fprintf(f, "       Data: %.3d 0x%08x (%d)\n", ct++,
   			    (unsigned) *((int_32 *) dp),
  @@ -161,7 +163,7 @@
   		}
   		/*@switchbreak@*/ break;
   
  -	    case RPM_INT16_TYPE:
  +	    case RPM_UINT16_TYPE:
   		while (c--) {
   		    fprintf(f, "       Data: %.3d 0x%04x (%d)\n", ct++,
   			    (unsigned) (*((int_16 *) dp) & 0xffff),
  @@ -169,7 +171,7 @@
   		    dp += sizeof(int_16);
   		}
   		/*@switchbreak@*/ break;
  -	    case RPM_INT8_TYPE:
  +	    case RPM_UINT8_TYPE:
   		while (c--) {
   		    fprintf(f, "       Data: %.3d 0x%02x (%d)\n", ct++,
   			    (unsigned) (*((int_8 *) dp) & 0xff),
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.199 -r1.200 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	4 Nov 2007 18:10:20 -0000	1.199
  +++ rpm/rpmdb/rpmdb.c	8 Nov 2007 15:15:40 -0000	1.200
  @@ -2175,7 +2175,7 @@
   		ntags++;
   		continue;
   	    }
  -	    he->t = RPM_INT32_TYPE;
  +	    he->t = RPM_UINT32_TYPE;
   	    he->p.ui32p = xcalloc(1, sizeof(*he->p.ui32p));
   	    he->c = 1;
   	}
  @@ -2184,7 +2184,7 @@
   	while (1) {
   	    switch (he->t) {
   	    case RPM_CHAR_TYPE:
  -	    case RPM_INT8_TYPE:
  +	    case RPM_UINT8_TYPE:
   		for (j = 0; j < he->c; j++) {
   		    sprintf(numbuf, "%u", he->p.ui8p[j]);
   		    rc = mireRegexec(mire, numbuf);
  @@ -2192,7 +2192,7 @@
   			anymatch++;
   		}
   		/*@switchbreak@*/ break;
  -	    case RPM_INT16_TYPE:
  +	    case RPM_UINT16_TYPE:
   		for (j = 0; j < he->c; j++) {
   		    sprintf(numbuf, "%u", he->p.ui16p[j]);
   		    rc = mireRegexec(mire, numbuf);
  @@ -2200,7 +2200,7 @@
   			anymatch++;
   		}
   		/*@switchbreak@*/ break;
  -	    case RPM_INT32_TYPE:
  +	    case RPM_UINT32_TYPE:
   		for (j = 0; j < he->c; j++) {
   		    sprintf(numbuf, "%u", he->p.ui32p[j]);
   		    rc = mireRegexec(mire, numbuf);
  @@ -2208,7 +2208,7 @@
   			anymatch++;
   		}
   		/*@switchbreak@*/ break;
  -	    case RPM_INT64_TYPE:
  +	    case RPM_UINT64_TYPE:
   		for (j = 0; j < he->c; j++) {
   		    sprintf(numbuf, "%llu", he->p.ui64p[j]);
   		    rc = mireRegexec(mire, numbuf);
  @@ -2823,7 +2823,7 @@
       if (rid != 0 && rid != -1) {
   	uint32_t tid = rid;
   	he->tag = RPMTAG_REMOVETID;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &tid;
   	he->c = 1;
   	xx = hae(h, he, 0);
  @@ -2936,19 +2936,19 @@
   assert(0);
   		    /*@switchbreak@*/ break;
   		case RPM_CHAR_TYPE:
  -		case RPM_INT8_TYPE:
  +		case RPM_UINT8_TYPE:
   		    key->size = sizeof(*he->p.ui8p);
   /*@i@*/		    key->data = he->p.ui8p + i;
   		    /*@switchbreak@*/ break;
  -		case RPM_INT16_TYPE:
  +		case RPM_UINT16_TYPE:
   		    key->size = sizeof(*he->p.ui16p);
   /*@i@*/		    key->data = he->p.ui16p + i;
   		    /*@switchbreak@*/ break;
  -		case RPM_INT32_TYPE:
  +		case RPM_UINT32_TYPE:
   		    key->size = sizeof(*he->p.ui32p);
   /*@i@*/		    key->data = he->p.ui32p + i;
   		    /*@switchbreak@*/ break;
  -		case RPM_INT64_TYPE:
  +		case RPM_UINT64_TYPE:
   		    key->size = sizeof(*he->p.ui64p);
   /*@i@*/		    key->data = he->p.ui64p + i;
   		    /*@switchbreak@*/ break;
  @@ -3138,7 +3138,7 @@
       if (iid != 0 && iid != -1) {
   	uint32_t tid = iid;
   	he->tag = RPMTAG_INSTALLTID;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &tid;
   	he->c = 1;
   	if (!headerIsEntry(h, he->tag))
  @@ -3149,7 +3149,7 @@
       if (!headerIsEntry(h, RPMTAG_PACKAGECOLOR)) {
   	uint32_t hcolor = hGetColor(h);
   	he->tag = RPMTAG_PACKAGECOLOR;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &hcolor;
   	he->c = 1;
   	xx = hae(h, he, 0);
  @@ -3427,19 +3427,19 @@
   assert(0);
   		    /*@switchbreak@*/ break;
   		case RPM_CHAR_TYPE:
  -		case RPM_INT8_TYPE:
  +		case RPM_UINT8_TYPE:
   		    key->size = sizeof(*he->p.ui8p);
   /*@i@*/		    key->data = he->p.ui8p + i;
   		    /*@switchbreak@*/ break;
  -		case RPM_INT16_TYPE:
  +		case RPM_UINT16_TYPE:
   		    key->size = sizeof(*he->p.ui16p);
   /*@i@*/		    key->data = he->p.ui16p + i;
   		    /*@switchbreak@*/ break;
  -		case RPM_INT32_TYPE:
  +		case RPM_UINT32_TYPE:
   		    key->size = sizeof(*he->p.ui32p);
   /*@i@*/		    key->data = he->p.ui32p + i;
   		    /*@switchbreak@*/ break;
  -		case RPM_INT64_TYPE:
  +		case RPM_UINT64_TYPE:
   		    key->size = sizeof(*he->p.ui64p);
   /*@i@*/		    key->data = he->p.ui64p + i;
   		    /*@switchbreak@*/ break;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/signature.c
  ============================================================================
  $ cvs diff -u -r1.15 -r1.16 signature.c
  --- rpm/rpmdb/signature.c	4 Nov 2007 17:59:56 -0000	1.15
  +++ rpm/rpmdb/signature.c	8 Nov 2007 15:15:40 -0000	1.16
  @@ -664,7 +664,7 @@
   	    break;
   	pktlen = st.st_size;
   	he->tag = sigTag;
  -	he->t = RPM_INT32_TYPE;
  +	he->t = RPM_UINT32_TYPE;
   	he->p.ui32p = &pktlen;
   	he->c = 1;
   	xx = hae(sigh, he, 0);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/sqlite.c
  ============================================================================
  $ cvs diff -u -r1.18 -r1.19 sqlite.c
  --- rpm/rpmdb/sqlite.c	16 Oct 2007 16:23:13 -0000	1.18
  +++ rpm/rpmdb/sqlite.c	8 Nov 2007 15:15:40 -0000	1.19
  @@ -530,22 +530,22 @@
   /*@=castfcnptr =nullpass@*/
   	    /*@innerbreak@*/ break;
   	case RPM_CHAR_TYPE:
  -	case RPM_INT8_TYPE:
  +	case RPM_UINT8_TYPE:
   	{   unsigned char i;
   /*@i@*/ assert(key->size == sizeof(unsigned char));
   assert(swapped == 0); /* Byte swap?! */
   	    memcpy(&i, key->data, sizeof(i));
   	    rc = sqlite3_bind_int(scp->pStmt, pos, i);
   	} /*@innerbreak@*/ break;
  -	case RPM_INT16_TYPE:
  +	case RPM_UINT16_TYPE:
   	{	unsigned short i;
   /*@i@*/ assert(key->size == sizeof(int_16));
   assert(swapped == 0); /* Byte swap?! */
   	    memcpy(&i, key->data, sizeof(i));
   	    rc = sqlite3_bind_int(scp->pStmt, pos, i);
   	} /*@innerbreak@*/ break;
  -        case RPM_INT32_TYPE:
  -/*      case RPM_INT64_TYPE: */   
  +        case RPM_UINT32_TYPE:
  +	case RPM_UINT64_TYPE:
   	default:
   	{   unsigned int i;
   /*@i@*/ assert(key->size == sizeof(int_32));
  @@ -747,10 +747,10 @@
   		keytype = "blob UNIQUE";
   		/*@innerbreak@*/ break;
   	    case RPM_CHAR_TYPE:
  -	    case RPM_INT8_TYPE:
  -	    case RPM_INT16_TYPE:
  -	    case RPM_INT32_TYPE:
  -/*	    case RPM_INT64_TYPE: */
  +	    case RPM_UINT8_TYPE:
  +	    case RPM_UINT16_TYPE:
  +	    case RPM_UINT32_TYPE:
  +	    case RPM_UINT64_TYPE:
   		keytype = "int UNIQUE";
   		/*@innerbreak@*/ break;
   	    case RPM_STRING_TYPE:
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/tools/rpmcache.c
  ============================================================================
  $ cvs diff -u -r2.21 -r2.22 rpmcache.c
  --- rpm/tools/rpmcache.c	19 Oct 2007 00:36:47 -0000	2.21
  +++ rpm/tools/rpmcache.c	8 Nov 2007 15:15:41 -0000	2.22
  @@ -44,8 +44,8 @@
   
   typedef struct Item_s {
       const char * path;
  -    int_32 size;
  -    int_32 mtime;
  +    uint32_t size;
  +    uint32_t mtime;
       rpmds this;
       Header h;
   } * Item;
  @@ -105,9 +105,10 @@
   
   static int ftsCacheUpdate(rpmts ts)
   {
  -    HGE_t hge = (HGE_t)headerGetExtension;
  +    HGE_t hge = headerGetExtension;
  +    HAE_t hae = headerAddExtension;
       HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
  -    int_32 tid = rpmtsGetTid(ts);
  +    uint32_t tid = rpmtsGetTid(ts);
       rpmdbMatchIterator mi;
       unsigned char * md5;
       int rc = 0;
  @@ -148,17 +149,40 @@
   	}
   
   	/* --- Add cache tags to new cache header. */
  -	rc = headerAddOrAppendEntry(ip->h, RPMTAG_CACHECTIME,
  -		RPM_INT32_TYPE, &tid, 1);
  +	he->tag = RPMTAG_CACHECTIME;
  +	he->t = RPM_UINT32_TYPE;
  +	he->p.ui32p = &tid;
  +	he->c = 1;
  +	he->append = 1;
  +	rc = hae(ip->h, he, 0);
  +	he->append = 0;
   	if (rc != 1) break;
  -	rc = headerAddOrAppendEntry(ip->h, RPMTAG_CACHEPKGPATH,
  -		RPM_STRING_ARRAY_TYPE, &ip->path, 1);
  +
  +	he->tag = RPMTAG_CACHEPKGPATH;
  +	he->t = RPM_STRING_ARRAY_TYPE;
  +	he->p.argv = &ip->path;
  +	he->c = 1;
  +	he->append = 1;
  +	rc = hae(ip->h, he, 0);
  +	he->append = 0;
   	if (rc != 1) break;
  -	rc = headerAddOrAppendEntry(ip->h, RPMTAG_CACHEPKGSIZE,
  -		RPM_INT32_TYPE, &ip->size, 1);
  +
  +	he->tag = RPMTAG_CACHEPKGSIZE;
  +	he->t = RPM_UINT32_TYPE;
  +	he->p.ui32p = &ip->size;
  +	he->c = 1;
  +	he->append = 1;
  +	rc = hae(ip->h, he, 0);
  +	he->append = 0;
   	if (rc != 1) break;
  -	rc = headerAddOrAppendEntry(ip->h, RPMTAG_CACHEPKGMTIME,
  -		RPM_INT32_TYPE, &ip->mtime, 1);
  +
  +	he->tag = RPMTAG_CACHEPKGMTIME;
  +	he->t = RPM_UINT32_TYPE;
  +	he->p.ui32p = &ip->mtime;
  +	he->c = 1;
  +	he->append = 1;
  +	rc = hae(ip->h, he, 0);
  +	he->append = 0;
   	if (rc != 1) break;
   
   	/* --- Add new cache header to database. */
  @@ .
Received on Thu Nov 8 16:15:41 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.