RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Per Øyvind Karlsen Root: /v/rpm/cvs Email: pkarl...@rpm5.org Module: rpm Date: 30-Mar-2011 16:17:31 Branch: rpm-5_4 Handle: 2011033014173100 Modified files: (Branch: rpm-5_4) rpm CHANGES rpm/tools dbconvert.c Log: fix conversion to older hash database format resulting in "missing" package from rpmdb Summary: Revision Changes Path 1.3501.2.83 +2 -0 rpm/CHANGES 2.1.2.3 +13 -2 rpm/tools/dbconvert.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3501.2.82 -r1.3501.2.83 CHANGES --- rpm/CHANGES 30 Mar 2011 11:09:47 -0000 1.3501.2.82 +++ rpm/CHANGES 30 Mar 2011 14:17:31 -0000 1.3501.2.83 @@ -1,4 +1,6 @@ 5.4.0 -> 5.4.1: + - proyvind: dbconvert: fix conversion to older hash database format + resulting in "missing" package from rpmdb - devzero2000: add %_initddir macro for Mandriva (ref http://lists.mandriva.com/maintainers/2011-03/msg00252.php) - jbj: fix: reduce false positives checking for duplicate keys(mdvbz#62822). @@ . patch -p0 <<'@@ .' Index: rpm/tools/dbconvert.c ============================================================================ $ cvs diff -u -r2.1.2.2 -r2.1.2.3 dbconvert.c --- rpm/tools/dbconvert.c 27 Jan 2011 01:10:02 -0000 2.1.2.2 +++ rpm/tools/dbconvert.c 30 Mar 2011 14:17:31 -0000 2.1.2.3 @@ -151,6 +151,17 @@ int doswap = -1; float pct = 0; uint8_t tmp; + /* + * Older rpm places number of keys as first entry of hash database, + * so any package placed at beginning of it will be "missing" from + * rpmdb... + */ + if (dbtype == 1){ + key.data = &i; + data.data = &nkeys; + key.size = data.size = sizeof(uint32_t); + xx = dbiNew->dbi_db->put(dbiNew->dbi_db, NULL, &key, &data, 0); + } while ((xx = dbcpCur->c_get(dbcpCur, &key, &data, DB_NEXT)) == 0) { tmp = pct; pct = (100*(float)++i/nkeys) + 0.5; @@ -159,8 +170,8 @@ fprintf(stderr, "\rconverting %s%s/Packages: %u/%u %d%%", prefix && prefix[0] ? prefix : "", tmppath, i, nkeys, (int)pct); } fflush(stdout); - if(!*(uint32_t*)key.data) - continue; + if(i == 1 && !*(uint32_t*)key.data) + continue; if(__builtin_expect(doswap, 1) < 0) { if((htole32(*(uint32_t*)key.data) > 10000000 && swap < 0) || (htole32(*(uint32_t*)key.data) < 10000000 && swap > 0)) @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org