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

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   14-Dec-2009 02:52:11
  Branch: HEAD                             Handle: 2009121401520901

  Modified files:
    rpm                     CHANGES
    rpm/js/tscripts         Mi.js
    rpm/macros              macros.in
    rpm/python              rpmts-py.c
    rpm/rpmdb               db3.c dbconfig.c rpmdb.c rpmdb.h rpmtag.h

  Log:
    - rpmdb: Stub-in RPMDBI_REPACKAGES/RPMDBI_REPOSITORY stores.
    - rpmdb: Eliminate RPMDBI_LABEL. Use RPMTAG_NVRA instead.
    - rpmmi: Prepare for multiple primary stores w mi_index -> mi_primary.
    - dbi: Prepare for multiple primary stores w dbi_index -> dbi_primary.
    - dbi: Eliminate verify_on_close/noload/byteswapped coprolites.

  Summary:
    Revision    Changes     Path
    1.3199      +8  -3      rpm/CHANGES
    1.15        +6  -7      rpm/js/tscripts/Mi.js
    1.23        +4  -4      rpm/macros/macros.in
    1.110       +1  -1      rpm/python/rpmts-py.c
    1.138       +11 -93     rpm/rpmdb/db3.c
    1.76        +2  -7      rpm/rpmdb/dbconfig.c
    1.368       +19 -19     rpm/rpmdb/rpmdb.c
    1.135       +4  -7      rpm/rpmdb/rpmdb.h
    1.70        +3  -1      rpm/rpmdb/rpmtag.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3198 -r1.3199 CHANGES
  --- rpm/CHANGES       13 Dec 2009 23:06:05 -0000      1.3198
  +++ rpm/CHANGES       14 Dec 2009 01:52:09 -0000      1.3199
  @@ -1,8 +1,13 @@
   
   5.2b1 -> 5.3a1
  -    - jbj: rpmdb: permit patterns on (little used) secondary indices.
  -    - jbj: rpmdb: stub-in an event_notify callback.
  -    - jbj: rpmdb: wire up DB_RECOVER progress feedback callback.
  +    - jbj: rpmdb: Stub-in RPMDBI_REPACKAGES/RPMDBI_REPOSITORY stores.
  +    - jbj: rpmdb: Eliminate RPMDBI_LABEL. Use RPMTAG_NVRA instead.
  +    - jbj: rpmmi: Prepare for multiple primary stores w mi_index -> 
mi_primary.
  +    - jbj: dbi: Prepare for multiple primary stores w dbi_index -> 
dbi_primary.
  +    - jbj: dbi: Eliminate verify_on_close/noload/byteswapped coprolites.
  +    - jbj: rpmdb: Permit patterns on (little used) secondary indices.
  +    - jbj: rpmdb: Stub-in an event_notify callback.
  +    - jbj: rpmdb: Wire up DB_RECOVER progress feedback callback.
       - jbj: rpmlio: Register logio dispatch handler with db_recover.
       - jbj: rpmdb: Switch to inplace rpmtsRebuildDB(), eliminate 
rpmdbRebuild().
       - jbj: rpmmi: Eliminate rpmmiSetHdrChk(), get ts out of the rpmdb layer.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/js/tscripts/Mi.js
  ============================================================================
  $ cvs diff -u -r1.14 -r1.15 Mi.js
  --- rpm/js/tscripts/Mi.js     12 Dec 2009 00:04:37 -0000      1.14
  +++ rpm/js/tscripts/Mi.js     14 Dec 2009 01:52:09 -0000      1.15
  @@ -1,7 +1,6 @@
   if (loglvl) print("--> Mi.js");
   
   var RPMDBI_PACKAGES = 0;
  -var RPMDBI_LABEL = 2;
   var RPMTAG_NAME = 1000;
   var RPMTAG_VERSION = 1001;
   var RPMTAG_RELEASE = 1002;
  @@ -97,14 +96,14 @@
   doITER(ts, RPMTAG_NVRA, NVRA);
   
   // --- Retrieve by N, N-V, N-V-R, and N-V-R.A strings.
  -doITER(ts, RPMDBI_LABEL, N);
  -doITER(ts, RPMDBI_LABEL, N+"-"+V);
  -doITER(ts, RPMDBI_LABEL, N+"-"+V+"-"+R);
  -doITER(ts, RPMDBI_LABEL, N+"-"+V+"-"+R+"."+A);
  +doITER(ts, RPMTAG_NVRA, N);
  +doITER(ts, RPMTAG_NVRA, N+"-"+V);
  +doITER(ts, RPMTAG_NVRA, N+"-"+V+"-"+R);
  +doITER(ts, RPMTAG_NVRA, N+"-"+V+"-"+R+"."+A);
   
   // --- Retrieve by N pattern.
  -doITER(ts, RPMDBI_LABEL, "\^"+N+"-[0-9].*$");
  -doITER(ts, RPMDBI_LABEL, "\^"+N+"-[0-9].*"+"\."+A+"$");
  +doITER(ts, RPMTAG_NVRA, "\^"+N+"-[0-9].*$");
  +doITER(ts, RPMTAG_NVRA, "\^"+N+"-[0-9].*"+"\."+A+"$");
   
   // --- Retrieve by N with various mire pattern selectors.
   var mi = new Mi(ts, RPMTAG_NAME, N);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/macros/macros.in
  ============================================================================
  $ cvs diff -u -r1.22 -r1.23 macros.in
  --- rpm/macros/macros.in      13 Dec 2009 01:04:46 -0000      1.22
  +++ rpm/macros/macros.in      14 Dec 2009 01:52:10 -0000      1.23
  @@ -1,7 +1,7 @@
   #/*! \page config_macros Default configuration: @USRLIBRPM@/macros
   # \verbatim
   #
  -# $Id: macros.in,v 1.22 2009/12/13 01:04:46 jbj Exp $
  +# $Id: macros.in,v 1.23 2009/12/14 01:52:10 jbj Exp $
   #
   # This is a global RPM configuration file. All changes made here will
   # be lost when the rpm package is upgraded. Any per-system configuration
  @@ -316,8 +316,8 @@
   # database tag configuration
   %_dbi_tags                      %{expand:%%{_dbi_tags_%{_dbapi_used}}}
   
  -%_bt_dupsort    bt_dupsort index
  -%_h_dupsort     h_dupsort index
  +%_bt_dupsort    bt_dupsort primary=Packages
  +%_h_dupsort     h_dupsort primary=Packages
   
   %_dbi_tags_3                    
Packages:Name:Version:Release:Arch:Os:Group:Providename:Requirename:Conflictname:Obsoletename:Triggername:Dirnames:Installtid:Sigmd5:Sha1header:Filedigests:Pubkeys:Packagecolor:Nvra:Sourcepkgid:Filepaths:Seqno:Btree:Hash:Queue:Recno
   
  @@ -372,7 +372,7 @@
   %_dbi_config_4_Group            %{_dbi_sqlconfig}
   %_dbi_config_4_Installtid       %{_dbi_sqlconfig}
   %_dbi_config_4_Name             %{_dbi_sqlconfig}
  -%_dbi_config_4_Nvra             %{_dbi_sqlconfig} noload
  +%_dbi_config_4_Nvra             %{_dbi_sqlconfig}
   %_dbi_config_4_Obsoletename     %{_dbi_sqlconfig}
   %_dbi_config_4_Obsoleteyamlentry %{_dbi_sqlconfig}
   %_dbi_config_4_Os               %{_dbi_sqlconfig}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/python/rpmts-py.c
  ============================================================================
  $ cvs diff -u -r1.109 -r1.110 rpmts-py.c
  --- rpm/python/rpmts-py.c     4 Dec 2009 04:17:52 -0000       1.109
  +++ rpm/python/rpmts-py.c     14 Dec 2009 01:52:10 -0000      1.110
  @@ -472,7 +472,7 @@
       if (PyString_Check(o) || PyUnicode_Check(o)) {
        char * name = PyString_AsString(o);
   
  -     mi = rpmtsInitIterator(s->ts, RPMDBI_LABEL, name, 0);
  +     mi = rpmtsInitIterator(s->ts, RPMTAG_NVRA, name, 0);
        count = rpmmiCount(mi);
        if (count <= 0) {
            mi = rpmmiFree(mi);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/db3.c
  ============================================================================
  $ cvs diff -u -r1.137 -r1.138 db3.c
  --- rpm/rpmdb/db3.c   13 Dec 2009 23:06:06 -0000      1.137
  +++ rpm/rpmdb/db3.c   14 Dec 2009 01:52:10 -0000      1.138
  @@ -708,7 +708,7 @@
   }
   
   static void
  -rpmdbe_feedback(DB_ENV * dbenv, u_int32_t opcode, int percent)
  +rpmdbe_feedback(DB_ENV * dbenv, int opcode, int percent)
        /*...@*/
   {
       dbenv = NULL;
  @@ -1052,26 +1052,6 @@
   /*...@=mustmod@*/
   #endif       /* NOTYET */
   
  -/*...@-mustmod@*/
  -static int db3verify(dbiIndex dbi, /*...@null@*/ const char * dbfile,
  -             /*...@unused@*/ /*...@null@*/ const char * dbsubfile, FILE * fp,
  -             unsigned int flags)
  -     /*...@globals fileSystem @*/
  -     /*...@modifies fileSystem @*/
  -{
  -    DB * db = dbi->dbi_db;
  -    int rc;
  -
  -assert(db != NULL);
  -    rc = db->verify(db, dbfile, dbsubfile, fp, flags);
  -    rc = cvtdberr(dbi, "db->verify", rc, _debug);
  -
  -DBIDEBUG(dbi, (stderr, "<-- %s(%p,%s,%s,%p,0x%x) rc %d\n", __FUNCTION__, 
dbi, dbfile, dbsubfile, fp, flags, rc));
  -
  -    return rc;
  -}
  -/*...@=mustmod@*/
  -
   static int db3sync(dbiIndex dbi, unsigned int flags)
        /*...@globals fileSystem @*/
        /*...@modifies fileSystem @*/
  @@ -1613,67 +1593,6 @@
        rpmdb->db_opens--;
       }
   
  -    if (dbi->dbi_verify_on_close && !dbi->dbi_temporary) {
  -     DB_ENV * dbenv = NULL;
  -     int eflags;
  -
  -     /*...@-moduncon@*/ /* FIX: annotate db3 methods */
  -     rc = db_env_create(&dbenv, 0);
  -     /*...@=moduncon@*/
  -     rc = cvtdberr(dbi, "db_env_create", rc, _debug);
  -     if (rc || dbenv == NULL) goto exit;
  -
  -     /*...@-noeffectuncon@*/ /* FIX: annotate db3 methods */
  -/*...@-castfcnptr@*/
  -     dbenv->set_errcall(dbenv, (void *)rpmdb->db_errcall);
  -/*...@=castfcnptr@*/
  -     dbenv->set_errfile(dbenv, rpmdb->db_errfile);
  -     dbenv->set_errpfx(dbenv, rpmdb->db_errpfx);
  - /*  dbenv->set_paniccall(???) */
  -     /*...@=noeffectuncon@*/
  -
  -     if (dbi->dbi_tmpdir) {
  -         /*...@-mods@*/
  -         const char * tmpdir = rpmGenPath(root, dbi->dbi_tmpdir, NULL);
  -         /*...@=mods@*/
  -         rc = dbenv->set_tmp_dir(dbenv, tmpdir);
  -         rc = cvtdberr(dbi, "dbenv->set_tmp_dir", rc, _debug);
  -         tmpdir = _free(tmpdir);
  -         if (rc) goto exit;
  -     }
  -         
  -     eflags = DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON;
  -     rc = (dbenv->open) (dbenv, dbhome, eflags, 0);
  -     rc = cvtdberr(dbi, "dbenv->open", rc, _debug);
  -     if (rc) goto exit;
  -
  -     /*...@-moduncon -nullst...@*/ /* FIX: annotate db3 methods */
  -     rc = db_create(&db, dbenv, 0);
  -     /*...@=moduncon =nullst...@*/
  -     rc = cvtdberr(dbi, "db_create", rc, _debug);
  -
  -     if (db != NULL) {
  -             /*...@-mods@*/
  -             const char * dbf = rpmGetPath(dbhome, "/", dbfile, NULL);
  -             const char * _dbsubfile = NULL;
  -             FILE * _fp = NULL;
  -             /*...@=mods@*/
  -
  -             rc = db3verify(dbi, dbf, _dbsubfile, _fp, flags);
  -
  -             rpmlog(RPMLOG_DEBUG, D_("verified db index       %s/%s\n"),
  -                     (dbhome ? dbhome : ""),
  -                     (dbfile ? dbfile : dbiBN));
  -
  -             dbf = _free(dbf);
  -     }
  -     xx = dbenv->close(dbenv, 0);
  -     xx = cvtdberr(dbi, "dbenv->close", xx, _debug);
  -     if (rc == 0 && xx) rc = xx;
  -    }
  -
  -exit:
  -
   DBIDEBUG(dbi, (stderr, "<-- %s(%p,0x%x) rc %d\n", __FUNCTION__, dbi, flags, 
rc));
   
       dbi->dbi_db = NULL;
  @@ -2164,7 +2083,7 @@
   
       oflags = (dbi->dbi_oeflags | dbi->dbi_oflags);
       /* XXX permit DB_TRUNCATE iff a secondary index. */
  -    if (!dbi->dbi_index) oflags &= ~DB_TRUNCATE;
  +    if (dbi->dbi_primary) oflags &= ~DB_TRUNCATE;
   
   #if 0        /* XXX rpmdb: illegal flag combination specified to DB->open */
       if ( dbi->dbi_mode & O_EXCL) oflags |= DB_EXCL;
  @@ -2185,7 +2104,8 @@
            dbi->dbi_oeflags |= DB_CREATE;
        }
        /* XXX permit DB_TRUNCATE iff a secondary index. */
  -     if (dbi->dbi_index && (dbi->dbi_mode & O_TRUNC)) oflags |= DB_TRUNCATE;
  +     if (dbi->dbi_primary && (dbi->dbi_mode & O_TRUNC))
  +         oflags |= DB_TRUNCATE;
       }
   
       /*
  @@ -2302,12 +2222,6 @@
       if (oflags & (DB_CREATE|DB_TRUNCATE))
        dbi_type = dbi->dbi_type;
   
  -    /*
  -     * Turn off verify-on-close if opening read-only.
  -     */
  -    if (oflags & DB_RDONLY)
  -     dbi->dbi_verify_on_close = 0;
  -
       if (dbi->dbi_use_dbenv) {
        /*...@-mods@*/
        if (rpmdb->db_dbenv == NULL) {
  @@ -2630,12 +2544,17 @@
       if (rc == 0 && dbi->dbi_db != NULL && dbip != NULL) {
        dbi->dbi_vec = &db3vec;
        *dbip = dbi;
  -     if (dbi->dbi_index) {
  +     if (dbi->dbi_primary) {
  +         rpmTag Ptag = tagValue(dbi->dbi_primary);
  +         dbiIndex Pdbi = NULL;
            int (*_callback)(DB *, const DBT *, const DBT *, DBT *)
                        = db3Acallback;
            int _flags = DB_IMMUTABLE_KEY;
  +assert(Ptag == RPMDBI_PACKAGES && Ptag != rpmtag);
  +         Pdbi = dbiOpen(rpmdb, Ptag, 0);
  +assert(Pdbi != NULL);
            if (oflags & (DB_CREATE|DB_TRUNCATE)) _flags |= DB_CREATE;
  -         xx = db3associate(rpmdb->_dbi[0], dbi, _callback, _flags);
  +         xx = db3associate(Pdbi, dbi, _callback, _flags);
        }
        if (dbi->dbi_seq_id) {
            char * end = NULL;
  @@ -2651,7 +2570,6 @@
                xx = seqid_init(dbi, dbi->dbi_seq_id, 0, &dbi->dbi_seq);
        }
       } else {
  -     dbi->dbi_verify_on_close = 0;
        (void) db3close(dbi, 0);
        dbi = NULL;
       }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/dbconfig.c
  ============================================================================
  $ cvs diff -u -r1.75 -r1.76 dbconfig.c
  --- rpm/rpmdb/dbconfig.c      8 Nov 2009 02:35:55 -0000       1.75
  +++ rpm/rpmdb/dbconfig.c      14 Dec 2009 01:52:10 -0000      1.76
  @@ -277,8 +277,6 @@
   #endif
   
   #if defined(WITH_DB)
  - { "verify", 0,POPT_ARG_NONE,        &db3dbi.dbi_verify_on_close, 0,
  -     NULL, NULL },
    { "usedbenv",       0,POPT_ARG_NONE,        &db3dbi.dbi_use_dbenv, 0,
        NULL, NULL },
   #endif
  @@ -290,9 +288,7 @@
    { "lockdbfd",       0,POPT_ARG_NONE,        &db3dbi.dbi_lockdbfd, 0,
        NULL, NULL },
   #endif
  - { "noload", 0,POPT_ARG_NONE,        &db3dbi.dbi_noload, 0,
  -     NULL, NULL },
  - { "index",  0,POPT_ARG_NONE,        &db3dbi.dbi_index, 0,
  + { "primary",        0,POPT_ARG_STRING,      &db3dbi.dbi_primary, 0,
        NULL, NULL },
    { "foreign",        0,POPT_ARG_STRING,      &db3dbi.dbi_foreign, 0,
        NULL, NULL },
  @@ -457,6 +453,7 @@
        dbi->dbi_errpfx = _free(dbi->dbi_errpfx);
        dbi->dbi_seq_id = _free(dbi->dbi_seq_id);
        dbi->dbi_re_source = _free(dbi->dbi_re_source);
  +     dbi->dbi_primary = _free(dbi->dbi_primary);
        dbi->dbi_foreign = _free(dbi->dbi_foreign);
        dbi->dbi_stats = _free(dbi->dbi_stats);
       }
  @@ -626,8 +623,6 @@
       dbi->dbi_jlen = 1 * sizeof(rpmuint32_t);
   /*...@=sizeoftype@*/
   
  -    dbi->dbi_byteswapped = -1;       /* -1 unknown, 0 native order, 1 alien 
order */
  -
   #if defined(WITH_DB)
       dbi->dbi_use_dbenv = 1;  /* dbenv is always used now. */
       dbi->dbi_eflags |= (DB_INIT_MPOOL|DB_JOINENV);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.367 -r1.368 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 13 Dec 2009 23:06:06 -0000      1.367
  +++ rpm/rpmdb/rpmdb.c 14 Dec 2009 01:52:10 -0000      1.368
  @@ -212,7 +212,6 @@
   dbiIndex dbiOpen(rpmdb db, rpmTag tag, /*...@unused@*/ unsigned int flags)
   {
       static int _oneshot = 0;
  -    static int _dbapi_rebuild;
       size_t dbix;
       dbiIndex dbi = NULL;
       int _dbapi;
  @@ -232,8 +231,6 @@
        (void) checkfd(_devnull, STDERR_FILENO, O_WRONLY);
   #endif
   /*...@=noeffect@*/
  -    _dbapi_rebuild = 
rpmExpandNumeric("%{?_dbapi_rebuild}%{!?_dbapi_rebuild:4}");
  -assert(_dbapi_rebuild == 3 || _dbapi_rebuild == 4);
        _oneshot++;
      }
   
  @@ -526,7 +523,7 @@
       unsigned int     mi_count;
       uint32_t         mi_setx;
       void *           mi_keyp;
  -    int                      mi_index;
  +    const char *     mi_primary;
       size_t           mi_keylen;
   /*...@refcounted@*/ /*...@null@*/
       Header           mi_h;
  @@ -1633,7 +1630,7 @@
   
       mi->mi_keyp = _free(mi->mi_keyp);
       mi->mi_keylen = 0;
  -    mi->mi_index = 0;
  +    mi->mi_primary = _free(mi->mi_primary);
   
       /* XXX this needs to be done elsewhere, not within destructor. */
       (void) rpmdbCheckSignals();
  @@ -1668,7 +1665,7 @@
       unsigned int rc;
   
       /* XXX Secondary db associated with Packages needs cursor record count */
  -    if (mi && mi->mi_index && mi->mi_dbc == NULL) {
  +    if (mi && mi->mi_primary && mi->mi_dbc == NULL) {
        dbiIndex dbi = dbiOpen(mi->mi_db, mi->mi_rpmtag, 0);
        DBT k = DBT_INIT;
        DBT v = DBT_INIT;
  @@ -2123,7 +2120,7 @@
   
            vp->ulen = (u_int32_t)uhlen;
            vp->data = uh;
  -         if (dbi->dbi_index && pk)
  +         if (dbi->dbi_primary && pk)
                rc = dbiPget(dbi, dbcursor, kp, pk, vp, flags);
            else
                rc = dbiGet(dbi, dbcursor, kp, vp, flags);
  @@ -2163,7 +2160,9 @@
       if (mi == NULL)
        return NULL;
   
  -tag = (mi->mi_set == NULL && mi->mi_index ? mi->mi_rpmtag : RPMDBI_PACKAGES);
  +    /* Find the tag to open. */
  +    tag = (mi->mi_set == NULL && mi->mi_primary != NULL
  +             ? mi->mi_rpmtag : RPMDBI_PACKAGES);
       dbi = dbiOpen(mi->mi_db, tag, 0);
       if (dbi == NULL)
        return NULL;
  @@ -2215,7 +2214,7 @@
        k.size = (UINT32_T)sizeof(mi->mi_offset);
        rc = rpmmiGet(dbi, mi->mi_dbc, &k, NULL, &v, DB_SET);
       }
  -    else if (dbi->dbi_index) {
  +    else if (dbi->dbi_primary) {
        rc = rpmmiGet(dbi, mi->mi_dbc, &k, &p, &v, _flags);
        switch (rc) {
        default:
  @@ -2477,8 +2476,8 @@
   
       switch (tag) {
       default: break;
  -    /* XXX HACK to remove rpmdbFindByLabel/findMatches from the API */
  -    case RPMDBI_LABEL:
  +    case 2:  /* XXX HACK to remove RPMDBI_LABEL from RPM. */
  +     /* XXX rpmlog message warning RPMDBI is deprecated? */
        tag = RPMTAG_NVRA;
        /*...@fallthrough@*/
       case RPMTAG_NVRA:
  @@ -2548,8 +2547,8 @@
            return NULL;
        }
       }
  -    else if (dbi->dbi_index) {
  -     /* XXX Special case #5: secondary db associated with primary Packages */
  +    else if (dbi->dbi_primary != NULL) {
  +     /* XXX Special case #5: secondary ndex associated with primary table. */
       }
       else {
        /* Common case: retrieve join keys. */
  @@ -2566,20 +2565,21 @@
       mi->mi_setx = 0;
       mi->mi_count = (set ? set->count : 0);
   
  -    mi->mi_index = (dbi && dbi->dbi_index ? 1 : 0);
  +    mi->mi_primary = (dbi && dbi->dbi_primary
  +             ? xstrdup(dbi->dbi_primary) : NULL);
   
  -    /* Coerce and swab integer keys, save the key in the iterator. */
  +    /* Coerce/swab integer keys. Save key ind keylen in the iterator. */
       switch (tagType(tag) & 0xffff) {
  -    case RPM_UINT8_TYPE:     /* XXX coerce to uint32_t */
  +    case RPM_UINT8_TYPE:
   assert(keylen == sizeof(he->p.ui8p[0]));
  -     mi->mi_keylen = sizeof(he->p.ui32p[0]);
  +     mi->mi_keylen = sizeof(he->p.ui32p[0]); /* XXX coerce to uint32_t */
        mi->mi_keyp = he->p.ui32p = xmalloc(mi->mi_keylen);
        he->p.ui32p[0] = 0;
        memcpy(&he->p.ui8p[3], keyp, keylen);
        break;
  -    case RPM_UINT16_TYPE:    /* XXX coerce to uint32_t */
  +    case RPM_UINT16_TYPE:
   assert(keylen == sizeof(he->p.ui16p[0]));
  -     mi->mi_keylen = sizeof(he->p.ui32p[0]);
  +     mi->mi_keylen = sizeof(he->p.ui32p[0]); /* XXX coerce to uint32_t */
        mi->mi_keyp = he->p.ui32p = xmalloc(mi->mi_keylen);
        he->p.ui32p[0] = 0;
        memcpy(&he->p.ui16p[1], keyp, keylen);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.h
  ============================================================================
  $ cvs diff -u -r1.134 -r1.135 rpmdb.h
  --- rpm/rpmdb/rpmdb.h 13 Dec 2009 01:04:46 -0000      1.134
  +++ rpm/rpmdb/rpmdb.h 14 Dec 2009 01:52:10 -0000      1.135
  @@ -337,15 +337,12 @@
       long dbi_shmkey;         /*!< shared memory base key */
       int      dbi_api;                /*!< Berkeley API type */
   
  -    int      dbi_verify_on_close;
       int      dbi_use_dbenv;          /*!< use db environment? */
       int      dbi_no_fsync;           /*!< no-op fsync for db */
       int      dbi_no_dbsync;          /*!< don't call dbiSync */
       int      dbi_lockdbfd;           /*!< do fcntl lock on db fd */
       int      dbi_temporary;          /*!< non-persistent index/table */
  -    int dbi_noload;          /*!< standalone index/table */
       int      dbi_debug;
  -    int      dbi_byteswapped;
   
       rpmbf dbi_bf;
   
  @@ -420,7 +417,9 @@
        /* queue access parameters */
       unsigned int dbi_q_extentsize;
   
  -    int dbi_index;
  +/*...@null@*/
  +    const char * dbi_primary;        /*!< Primary table for secondary index. 
*/
  +/*...@null@*/
       const char * dbi_foreign;
   
   /*...@refcounted@*/
  @@ -833,9 +832,7 @@
   int dbiByteSwapped(dbiIndex dbi)
        /*...@modifies dbi @*/
   {
  -    if (dbi->dbi_byteswapped == -1)
  -        dbi->dbi_byteswapped = (*dbi->dbi_vec->byteswapped) (dbi);
  -    return dbi->dbi_byteswapped;
  +    return (*dbi->dbi_vec->byteswapped) (dbi);
   }
   
   /** \ingroup dbi
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmtag.h
  ============================================================================
  $ cvs diff -u -r1.69 -r1.70 rpmtag.h
  --- rpm/rpmdb/rpmtag.h        10 Dec 2009 17:08:42 -0000      1.69
  +++ rpm/rpmdb/rpmtag.h        14 Dec 2009 01:52:10 -0000      1.70
  @@ -137,7 +137,7 @@
    */
   #define      RPMDBI_PACKAGES         0       /* Installed package headers. */
   #define      RPMDBI_DEPENDS          1       /* Dependency resolution cache. 
*/
  -#define      RPMDBI_LABEL            2       /* Fingerprint search marker. */
  +     /* (obsolete) RPMDBI_LABEL was 2 */
   #define      RPMDBI_ADDED            3       /* Added package headers. */
   #define      RPMDBI_REMOVED          4       /* Removed package headers. */
   #define      RPMDBI_AVAILABLE        5       /* Available package headers. */
  @@ -149,6 +149,8 @@
   #define      RPMDBI_HASH             11      /* (development) Generic 
DB_HASH. */
   #define      RPMDBI_QUEUE            12      /* (development) Generic 
DB_QUEUE. */
   #define      RPMDBI_RECNO            13      /* (development) Generic 
DB_RECNO. */
  +#define      RPMDBI_REPACKAGES       14      /* Re-packaged package paths. */
  +#define      RPMDBI_REPOSITORY       15      /* Repository URI's. */
   
   /** \ingroup header
    * Tags identify data in package headers.
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to