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:   09-Dec-2009 04:59:58
  Branch: HEAD                             Handle: 2009120903595700

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               rpmdb.c

  Log:
    - rpmdb: inline rpmdbOpenAll for inplace --rebuilddb. sadly
        DB->associate(..., DB_CREATE) is not free threaded w -fopenmp. oh well.

  Summary:
    Revision    Changes     Path
    1.3189      +2  -0      rpm/CHANGES
    1.352       +26 -12     rpm/rpmdb/rpmdb.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3188 -r1.3189 CHANGES
  --- rpm/CHANGES       9 Dec 2009 03:55:33 -0000       1.3188
  +++ rpm/CHANGES       9 Dec 2009 03:59:57 -0000       1.3189
  @@ -1,5 +1,7 @@
   
   5.2b1 -> 5.3a1
  +    - jbj: rpmdb: inline rpmdbOpenAll for inplace --rebuilddb. sadly
  +     DB->associate(..., DB_CREATE) is not free threaded w -fopenmp. oh well.
       - jbj: rpmts: take checkpoints beroe and after --rebuilddb.
       - jbj: rpmdb: do in-place rebuilddb, opt-in for now.
       - jbj: rpmdb: lazily create non-existent secondary indices.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.351 -r1.352 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 8 Dec 2009 21:20:35 -0000       1.351
  +++ rpm/rpmdb/rpmdb.c 9 Dec 2009 03:59:57 -0000       1.352
  @@ -778,20 +778,18 @@
   
   int rpmdbOpenAll(rpmdb db)
   {
  -    size_t dbix;
       int rc = 0;
   
       if (db == NULL) return -2;
   
  -    if (db->db_tags != NULL && db->_dbi != NULL)
  +  if (db->db_tags != NULL && db->_dbi != NULL) {
  +    size_t dbix;
       for (dbix = 0; dbix < db->db_ndbi; dbix++) {
  -     tagStore_t dbiTag = db->db_tags + dbix;
  -     int tag = dbiTag->tag;
  -     if (tag < 0)
  +     if ((int)db->db_tags[dbix].tag < 0)
            continue;
        if (db->_dbi[dbix] != NULL)
            continue;
  -     switch (tag) {
  +     switch (db->db_tags[dbix].tag) {
        case RPMDBI_AVAILABLE:
        case RPMDBI_ADDED:
        case RPMDBI_REMOVED:
  @@ -805,8 +803,9 @@
        default:
            /*...@switchbreak@*/ break;
        }
  -     (void) dbiOpen(db, tag, db->db_flags);
  +     (void) dbiOpen(db, db->db_tags[dbix].tag, db->db_flags);
       }
  +  }
       return rc;
   }
   
  @@ -3636,13 +3635,28 @@
       xx = rpmdbRemoveDatabase(myprefix, dbpath, _dbapi, dbiTags, dbiNTags);
   
       /* XXX Seqno update needs O_RDWR. */
  -    if (rpmdbOpenDatabase(myprefix, dbpath, _dbapi, &olddb, O_RDWR, 0644, 
0)) {
  -     rc = 1;
  +    if (rpmdbOpenDatabase(myprefix, dbpath, _dbapi, &olddb, O_RDWR, 0644, 0))
        goto exit;
  -    }
  -    _dbapi = olddb->db_api;
   
  -    xx = rpmdbOpenAll(olddb);
  +  { size_t dbix;
  +    for (dbix = 0; dbix < dbiNTags; dbix++) {
  +     switch (dbiTags[dbix].tag) {
  +     case RPMDBI_AVAILABLE:
  +     case RPMDBI_ADDED:
  +     case RPMDBI_REMOVED:
  +     case RPMDBI_DEPENDS:
  +     case RPMDBI_BTREE:
  +     case RPMDBI_HASH:
  +     case RPMDBI_QUEUE:
  +     case RPMDBI_RECNO:
  +         continue;
  +         /*...@notreached@*/ /*...@switchbreak@*/ break;
  +     default:
  +         /*...@switchbreak@*/ break;
  +     }
  +     (void) dbiOpen(olddb, dbiTags[dbix].tag, olddb->db_flags);
  +    }
  +  }
   
       xx = rpmdbClose(olddb);
   
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to