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

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: rpm                              Date:   08-Nov-2007 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 @@
   /[EMAIL PROTECTED]@*/
        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 @@
           /[EMAIL PROTECTED] 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);
       }
       /[EMAIL PROTECTED]@*/
  @@ -203,14 +204,14 @@
        /[EMAIL PROTECTED] 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 @@
        /[EMAIL PROTECTED]/
   {
       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 '/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/' >> $@
        @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;
            /[EMAIL PROTECTED]@*/ break;
  -     case RPM_INT16_TYPE:
  +     case RPM_UINT16_TYPE:
            ival = he->p.ui16p[0];
            val = numbuf;
            /[EMAIL PROTECTED]@*/ break;
  -     case RPM_INT32_TYPE:
  +     case RPM_UINT32_TYPE:
            ival = he->p.ui32p[0];
            val = numbuf;
            /[EMAIL PROTECTED]@*/ break;
  -     case RPM_INT64_TYPE:
  +     case RPM_UINT64_TYPE:
            ival = he->p.ui64p[0];
            val = numbuf;
            /[EMAIL PROTECTED]@*/ break;
  @@ -118,7 +118,7 @@
        if (!xx)
            continue;
        switch (he->t) {
  -     case RPM_INT32_TYPE:
  +     case RPM_UINT32_TYPE:
            delMacro(NULL, tagm->macroname);
            /[EMAIL PROTECTED]@*/ 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:
            /[EMAIL PROTECTED]@*/ break;
        }
  @@ -287,10 +287,10 @@
   assert(0);   /* XXX keep gcc quiet */
                /[EMAIL PROTECTED]@*/ 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;
                /[EMAIL PROTECTED]@*/ 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;
   /[EMAIL PROTECTED] [EMAIL PROTECTED]/
       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;
   /[EMAIL PROTECTED] [EMAIL PROTECTED]/
       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;
        }   /[EMAIL PROTECTED]@*/ 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;
        }   /[EMAIL PROTECTED]@*/ 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 @@
            }
        }   /[EMAIL PROTECTED]@*/ break;
   
  -     case RPM_INT32_TYPE:
  +     case RPM_UINT32_TYPE:
            count = entry->info.count;
            src = entry->data;
            while (count--) {
  @@ -895,7 +895,7 @@
            }
            /[EMAIL PROTECTED]@*/ 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 */
        /[EMAIL PROTECTED]@*/
       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";
            /[EMAIL PROTECTED]@*/ break;
  -     case RPM_INT8_TYPE:
  -         type = "INT8";
  +     case RPM_UINT8_TYPE:
  +         type = "UINT8";
            /[EMAIL PROTECTED]@*/ break;
  -     case RPM_INT16_TYPE:
  -         type = "INT16";
  +     case RPM_UINT16_TYPE:
  +         type = "UINT16";
            /[EMAIL PROTECTED]@*/ break;
  -     case RPM_INT32_TYPE:
  -         type = "INT32";
  +     case RPM_UINT32_TYPE:
  +         type = "UINT32";
  +         /[EMAIL PROTECTED]@*/ break;
  +     case RPM_UINT64_TYPE:
  +         type = "UINT64";
            /[EMAIL PROTECTED]@*/ break;
  -     /*case RPM_INT64_TYPE:          type = "INT64";         break;*/
        case RPM_STRING_TYPE:
            type = "STRING";
            /[EMAIL PROTECTED]@*/ 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 @@
                }
                /[EMAIL PROTECTED]@*/ 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);
                }
                /[EMAIL PROTECTED]@*/ 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++;
                }
                /[EMAIL PROTECTED]@*/ 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++;
                }
                /[EMAIL PROTECTED]@*/ 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++;
                }
                /[EMAIL PROTECTED]@*/ 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);
                    /[EMAIL PROTECTED]@*/ break;
                case RPM_CHAR_TYPE:
  -             case RPM_INT8_TYPE:
  +             case RPM_UINT8_TYPE:
                    key->size = sizeof(*he->p.ui8p);
   /[EMAIL PROTECTED]@*/                    key->data = he->p.ui8p + i;
                    /[EMAIL PROTECTED]@*/ break;
  -             case RPM_INT16_TYPE:
  +             case RPM_UINT16_TYPE:
                    key->size = sizeof(*he->p.ui16p);
   /[EMAIL PROTECTED]@*/                    key->data = he->p.ui16p + i;
                    /[EMAIL PROTECTED]@*/ break;
  -             case RPM_INT32_TYPE:
  +             case RPM_UINT32_TYPE:
                    key->size = sizeof(*he->p.ui32p);
   /[EMAIL PROTECTED]@*/                    key->data = he->p.ui32p + i;
                    /[EMAIL PROTECTED]@*/ break;
  -             case RPM_INT64_TYPE:
  +             case RPM_UINT64_TYPE:
                    key->size = sizeof(*he->p.ui64p);
   /[EMAIL PROTECTED]@*/                    key->data = he->p.ui64p + i;
                    /[EMAIL PROTECTED]@*/ 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);
                    /[EMAIL PROTECTED]@*/ break;
                case RPM_CHAR_TYPE:
  -             case RPM_INT8_TYPE:
  +             case RPM_UINT8_TYPE:
                    key->size = sizeof(*he->p.ui8p);
   /[EMAIL PROTECTED]@*/                    key->data = he->p.ui8p + i;
                    /[EMAIL PROTECTED]@*/ break;
  -             case RPM_INT16_TYPE:
  +             case RPM_UINT16_TYPE:
                    key->size = sizeof(*he->p.ui16p);
   /[EMAIL PROTECTED]@*/                    key->data = he->p.ui16p + i;
                    /[EMAIL PROTECTED]@*/ break;
  -             case RPM_INT32_TYPE:
  +             case RPM_UINT32_TYPE:
                    key->size = sizeof(*he->p.ui32p);
   /[EMAIL PROTECTED]@*/                    key->data = he->p.ui32p + i;
                    /[EMAIL PROTECTED]@*/ break;
  -             case RPM_INT64_TYPE:
  +             case RPM_UINT64_TYPE:
                    key->size = sizeof(*he->p.ui64p);
   /[EMAIL PROTECTED]@*/                    key->data = he->p.ui64p + i;
                    /[EMAIL PROTECTED]@*/ 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 @@
   /[EMAIL PROTECTED] [EMAIL PROTECTED]/
            /[EMAIL PROTECTED]@*/ break;
        case RPM_CHAR_TYPE:
  -     case RPM_INT8_TYPE:
  +     case RPM_UINT8_TYPE:
        {   unsigned char i;
   /[EMAIL PROTECTED]@*/ 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);
        } /[EMAIL PROTECTED]@*/ break;
  -     case RPM_INT16_TYPE:
  +     case RPM_UINT16_TYPE:
        {       unsigned short i;
   /[EMAIL PROTECTED]@*/ 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);
        } /[EMAIL PROTECTED]@*/ break;
  -        case RPM_INT32_TYPE:
  -/*      case RPM_INT64_TYPE: */   
  +        case RPM_UINT32_TYPE:
  +     case RPM_UINT64_TYPE:
        default:
        {   unsigned int i;
   /[EMAIL PROTECTED]@*/ assert(key->size == sizeof(int_32));
  @@ -747,10 +747,10 @@
                keytype = "blob UNIQUE";
                /[EMAIL PROTECTED]@*/ 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";
                /[EMAIL PROTECTED]@*/ 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. */
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to