[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 14-Feb-2011 02:53:34 Branch: HEAD Handle: 2011021401533300 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: set mi-mi_count when rpmmiNext() initializes db cursor so that rpmmiCount() won't break (mdvbz#62267) Summary: RevisionChanges Path 1.3562 +2 -0 rpm/CHANGES 1.398 +3 -0 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3561 -r1.3562 CHANGES --- rpm/CHANGES 12 Feb 2011 23:11:31 - 1.3561 +++ rpm/CHANGES 14 Feb 2011 01:53:33 - 1.3562 @@ -1,4 +1,6 @@ 5.4.0 - 5.4.1: +- proyvind: set mi-mi_count when rpmmiNext() initializes db cursor so that + rpmmiCount() won't break (mdvbz#62267) - proyvind: fix rpmmiCount() not resetting db cursor after use, breaking iterator (mdvbz#62279) - devzero2000: update INSTALL.developer with some jbj consideration @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.397 -r1.398 rpmdb.c --- rpm/rpmdb/rpmdb.c 12 Feb 2011 23:07:28 - 1.397 +++ rpm/rpmdb/rpmdb.c 14 Feb 2011 01:53:33 - 1.398 @@ -2155,6 +2155,9 @@ if (k.data k.size == 0) k.size = (UINT32_T) strlen((char *)k.data); if (k.data k.size == 0) k.size++; /* XXX / fixup. */ _flags = DB_SET; + if (!dbiGet(dbi, mi-mi_dbc, k, v, _flags)) + xx = dbiCount(dbi, mi-mi_dbc, mi-mi_count, 0); + } else _flags = (mi-mi_setx ? DB_NEXT_DUP : DB_SET); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 13-Feb-2011 00:07:28 Branch: HEAD Handle: 2011021223072800 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: fix rpmmiCount() not resetting db cursor after use, breaking iterator (mdvbz#62279) Summary: RevisionChanges Path 1.3560 +2 -0 rpm/CHANGES 1.397 +1 -0 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3559 -r1.3560 CHANGES --- rpm/CHANGES 11 Feb 2011 15:31:15 - 1.3559 +++ rpm/CHANGES 12 Feb 2011 23:07:28 - 1.3560 @@ -1,4 +1,6 @@ 5.4.0 - 5.4.1: +- fix rpmmiCount() not resetting db cursor after use, breaking iterator + (mdvbz#62279) - devzero2000: update INSTALL.developer with some jbj consideration on how to use multiple rpm version. - devzero2000: permit in configure phase to enable the @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.396 -r1.397 rpmdb.c --- rpm/rpmdb/rpmdb.c 1 Jan 2011 14:39:19 - 1.396 +++ rpm/rpmdb/rpmdb.c 12 Feb 2011 23:07:28 - 1.397 @@ -1646,6 +1646,7 @@ if (k.data k.size == 0) k.size++; /* XXX / fixup. */ if (!dbiGet(dbi, mi-mi_dbc, k, v, DB_SET)) xx = dbiCount(dbi, mi-mi_dbc, mi-mi_count, 0); + mi-mi_dbc = NULL; } rc = (mi ? mi-mi_count : 0); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 16-Dec-2010 15:16:10 Branch: HEAD Handle: 2010121614160602 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmmi: lazily instantiate the basenames header set. Summary: RevisionChanges Path 1.3508 +1 -0 rpm/CHANGES 1.393 +2 -0 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3507 -r1.3508 CHANGES --- rpm/CHANGES 14 Dec 2010 16:53:11 - 1.3507 +++ rpm/CHANGES 16 Dec 2010 14:16:06 - 1.3508 @@ -1,6 +1,7 @@ 5.3.7 - 5.4a1: 5.3.6 - 5.3.7: +- jbj: rpmmi: lazily instantiate the basenames header set. - jbj: re-add the lazy creator avoiding self LOOP's in ordering pkgs during installs using parentdir relations. - proyvind: rpmts: don't default rootDir to if set to NULL, as it @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.392 -r1.393 rpmdb.c --- rpm/rpmdb/rpmdb.c 2 Dec 2010 14:38:08 - 1.392 +++ rpm/rpmdb/rpmdb.c 16 Dec 2010 14:16:08 - 1.393 @@ -1380,6 +1380,8 @@ /* Set tagNum to the hash of the basename. */ for (i = 0; i set-count; i++) set-recs[i].tagNum = tagNum; + if (mi-mi_set == NULL) + mi-mi_set = xcalloc(1, sizeof(*mi-mi_set)); (void) dbiAppendSet(mi-mi_set, set-recs, set-count, sizeof(*set-recs), 0); } rc = 0; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 02-Nov-2010 16:09:39 Branch: HEAD Handle: 2010110215093801 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - put the rpm -qf 1-liner under #ifdef RPM_VENDOR_MANDRIVA for now. Summary: RevisionChanges Path 1.3491 +1 -0 rpm/CHANGES 1.391 +2 -0 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3490 -r1.3491 CHANGES --- rpm/CHANGES 2 Nov 2010 15:03:51 - 1.3490 +++ rpm/CHANGES 2 Nov 2010 15:09:38 - 1.3491 @@ -1,4 +1,5 @@ 5.3.5 - 5.4a1: +- jbj: put the rpm -qf 1-liner under #ifdef RPM_VENDOR_MANDRIVA for now. - proyvind: fix issue with 'rpm -qf' on unowned file not being reported. (launchpad #669130) - proyvind: fix assert failure with Fadvise() on non-existing files. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.390 -r1.391 rpmdb.c --- rpm/rpmdb/rpmdb.c 1 Nov 2010 19:48:25 - 1.390 +++ rpm/rpmdb/rpmdb.c 2 Nov 2010 15:09:39 - 1.391 @@ -2373,7 +2373,9 @@ #ifdef NOTYET /* XXX JS unit tests break. */ case RPMTAG_NAME: #endif +#ifdef RPM_VENDOR_MANDRIVA /* XXX rpm -qf /non/existent breaks */ case RPMTAG_PROVIDENAME: +#endif case RPMTAG_VERSION: case RPMTAG_RELEASE: case RPMTAG_ARCH: @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 01-Nov-2010 20:48:26 Branch: HEAD Handle: 2010110119482500 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: fix issue with 'rpm -qf' on unowned unowned file not being reported. (launchpad #669130) Summary: RevisionChanges Path 1.3488 +2 -0 rpm/CHANGES 1.390 +1 -0 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3487 -r1.3488 CHANGES --- rpm/CHANGES 1 Nov 2010 14:44:32 - 1.3487 +++ rpm/CHANGES 1 Nov 2010 19:48:25 - 1.3488 @@ -1,4 +1,6 @@ 5.3.5 - 5.4a1: +- proyvind: fix issue with 'rpm -qf' on unowned unowned file not being + reported. (launchpad #669130) - proyvind: fix assert failure with Fadvise() on non-existing files. - proyvind: mandriva: fix 'Conflicts: dependencies without release misfire'. (mdvbz#55810) @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.389 -r1.390 rpmdb.c --- rpm/rpmdb/rpmdb.c 8 Oct 2010 22:34:11 - 1.389 +++ rpm/rpmdb/rpmdb.c 1 Nov 2010 19:48:25 - 1.390 @@ -2373,6 +2373,7 @@ #ifdef NOTYET /* XXX JS unit tests break. */ case RPMTAG_NAME: #endif +case RPMTAG_PROVIDENAME: case RPMTAG_VERSION: case RPMTAG_RELEASE: case RPMTAG_ARCH: @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 13-Aug-2010 19:29:50 Branch: HEAD Handle: 2010081317295000 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - solve: generalize %_dbpath to permit multiple rpmdb's. Summary: RevisionChanges Path 1.3411 +1 -0 rpm/CHANGES 1.388 +8 -3 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3410 -r1.3411 CHANGES --- rpm/CHANGES 13 Aug 2010 14:19:14 - 1.3410 +++ rpm/CHANGES 13 Aug 2010 17:29:50 - 1.3411 @@ -1,4 +1,5 @@ 5.3.2 - 5.4a1: +- jbj: solve: generalize %_dbpath to permit mutiple rpmdb's. - jbj: solve: flip --aid opt-in behavior to --noaid opt-out. - jbj: solve: fix: don't free the package file name when depsolving. - jbj: stub in bag/svn/cvs/git objects. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.387 -r1.388 rpmdb.c --- rpm/rpmdb/rpmdb.c 30 Apr 2010 15:07:17 - 1.387 +++ rpm/rpmdb/rpmdb.c 13 Aug 2010 17:29:50 - 1.388 @@ -825,14 +825,18 @@ /*...@modifies rpmGlobalMacroContext, fileSystem, internalState @*/ { const char * s = rpmGetPath(uri, NULL); +ARGV_t av = NULL; +int xx = argvSplit(av, s, :); const char * fn = NULL; -urltype ut = urlPath(s, fn); +/* XXX av contains a colon separated path split, use the 1st path. */ +urltype ut = urlPath(av[0], fn); + +xx = xx; switch (ut) { case URL_IS_PATH: case URL_IS_UNKNOWN: - fn = s; - s = NULL; + fn = xstrdup(av[0]); break; case URL_IS_HTTPS: case URL_IS_HTTP: @@ -862,6 +866,7 @@ } } +av = argvFree(av); s = _free(s); assert(fn != NULL); return fn; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 30-Jan-2010 21:29:50 Branch: HEAD Handle: 2010013020294901 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - hrmib: fix: add lazy Mkdir to instantiate in chroot's. Summary: RevisionChanges Path 1.3265 +1 -0 rpm/CHANGES 1.385 +15 -0 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3264 -r1.3265 CHANGES --- rpm/CHANGES 29 Jan 2010 18:54:41 - 1.3264 +++ rpm/CHANGES 30 Jan 2010 20:29:49 - 1.3265 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: hrmib: fix: add lazy Mkdir to instantiate in chroot's. - jbj: begin to finalize upgrade fingerprint handling. - jbj: satsify Requires: / internally always, SuSE doesn't package /. - jbj: change rpmlib(PayloadIsLzma) version from 4.4.6 - 4.4.2 a la SuSE. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.384 -r1.385 rpmdb.c --- rpm/rpmdb/rpmdb.c 29 Jan 2010 21:17:23 - 1.384 +++ rpm/rpmdb/rpmdb.c 30 Jan 2010 20:29:50 - 1.385 @@ -593,6 +593,7 @@ /*...@modifies h, rpmGlobalMacroContext, fileSystem, internalState @*/ { +static int oneshot; HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); const char * fn = NULL; int xx; @@ -606,6 +607,20 @@ if (fn == NULL) goto exit; +/* Lazily create the directory in chroot's if configured. */ +if (!oneshot) { + const char * dn = dirname(fn); + mode_t _mode = 0755; + uid_t _uid = 0; + gid_t _gid = 0; + /* If not a directory, then disable, else don't retry. */ + errno = 0; + oneshot = (rpmioMkpath(dn, _mode, _uid, _gid) ? -1 : 1); +} +/* If directory is AWOL, don't bother exporting info. */ +if (oneshot 0) + goto exit; + if (adding) { FD_t fd = Fopen(fn, w.fdio); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 04-Jan-2010 14:29:16 Branch: HEAD Handle: 2010010413291600 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: fix: ensure that rpmdb pool allocations are set to zero. Summary: RevisionChanges Path 1.3238 +1 -0 rpm/CHANGES 1.378 +3 -1 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3237 -r1.3238 CHANGES --- rpm/CHANGES 4 Jan 2010 03:51:36 - 1.3237 +++ rpm/CHANGES 4 Jan 2010 13:29:16 - 1.3238 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: fix: ensure that rpmdb pool allocations are set to zero. - jbj: tests: add a check-sign target w DSA/RSA coverage. - jbj: sign: fix: add a killref to plug a header memory leak. - jbj: tests: add a check-ACID target w db_tool coverage tests. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.377 -r1.378 rpmdb.c --- rpm/rpmdb/rpmdb.c 3 Jan 2010 19:02:39 - 1.377 +++ rpm/rpmdb/rpmdb.c 4 Jan 2010 13:29:16 - 1.378 @@ -644,7 +644,9 @@ NULL, NULL, NULL); pool = _rpmdbPool; } -return (rpmdb) rpmioGetPool(pool, sizeof(*db)); +db = (rpmdb) rpmioGetPool(pool, sizeof(*db)); +memset(((char *)db)+sizeof(db-_item), 0, sizeof(*db)-sizeof(db-_item)); +return db; } int rpmdbOpenAll(rpmdb db) @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 03-Jan-2010 20:02:39 Branch: HEAD Handle: 2010010319023801 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: fix: reduce the scope of db-db_h caching optimization (multiple headerLoad's are avoided) so that non-existent secondary indices can be lazily rebuilt as needed. Summary: RevisionChanges Path 1.3234 +3 -0 rpm/CHANGES 1.377 +26 -16 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3233 -r1.3234 CHANGES --- rpm/CHANGES 3 Jan 2010 00:08:07 - 1.3233 +++ rpm/CHANGES 3 Jan 2010 19:02:38 - 1.3234 @@ -1,5 +1,8 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: fix: reduce the scope of db-db_h caching optimization + (multiple headerLoad's are avoided) so that non-existent secondary + indices can be lazily rebuilt as needed. - afb: JS: use libjs 1.7.0 on FreeBSD. - jbj: tests: configure an rpmdb using DB_CONFIG with reasonable tuning. - jbj: add --with-db-sql. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.376 -r1.377 rpmdb.c --- rpm/rpmdb/rpmdb.c 25 Dec 2009 14:18:13 - 1.376 +++ rpm/rpmdb/rpmdb.c 3 Jan 2010 19:02:39 - 1.377 @@ -2494,6 +2494,7 @@ /*...@unused@*/ rpmts ts) { HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); +Header h = NULL; sigset_t signalMask; dbiIndex dbi; size_t dbix; @@ -2506,20 +2507,20 @@ /* Retrieve header for use by associated secondary index callbacks. */ {rpmmi mi; mi = rpmmiInit(db, RPMDBI_PACKAGES, hdrNum, sizeof(hdrNum)); - db-db_h = rpmmiNext(mi); - if (db-db_h) - db-db_h = headerLink(db-db_h); + h = rpmmiNext(mi); + if (h) + h = headerLink(h); mi = rpmmiFree(mi); } -if (db-db_h == NULL) { +if (h == NULL) { rpmlog(RPMLOG_ERR, _(%s: cannot read header at 0x%x\n), rpmdbRemove, (unsigned)hdrNum); return 1; } he-tag = RPMTAG_NVRA; -xx = headerGet(db-db_h, he, 0); +xx = headerGet(h, he, 0); rpmlog(RPMLOG_DEBUG, --- h#%8u %s\n, (unsigned)hdrNum, he-p.str); he-p.ptr = _free(he-p.ptr); @@ -2544,7 +2545,7 @@ switch (he-tag) { default: /* Don't bother if tag is not present. */ - if (!headerGet(db-db_h, he, 0)) + if (!headerGet(h, he, 0)) /*...@switchbreak@*/ break; dbi = dbiOpen(db, he-tag, 0); assert(dbi != NULL); /* XXX sanity */ @@ -2558,12 +2559,15 @@ /*...@switchbreak@*/ break; case RPMDBI_PACKAGES: if (db-db_export != NULL) - xx = db-db_export(db, db-db_h, 0); + xx = db-db_export(db, h, 0); ui = _hton_ui(hdrNum); k.data = ui; k.size = (UINT32_T) sizeof(ui); + /* New h ref for use by associated secondary index callbacks. */ + db-db_h = headerLink(h); + dbi = dbiOpen(db, he-tag, 0); assert(dbi != NULL); rc = dbiCopen(dbi, dbiTxnid(dbi), dbcursor, DB_WRITECURSOR); @@ -2571,6 +2575,11 @@ if (!rc) rc = dbiDel(dbi, dbcursor, k, v, 0); xx = dbiCclose(dbi, dbcursor, DB_WRITECURSOR); + + /* Unreference db_h used by associated secondary index callbacks. */ + (void) headerFree(db-db_h); + db-db_h = NULL; + if (!dbi-dbi_no_dbsync) xx = dbiSync(dbi, 0); @@ -2579,8 +2588,8 @@ } while (dbix-- 0); /* Unreference header used by associated secondary index callbacks. */ -(void) headerFree(db-db_h); -db-db_h = NULL; +(void) headerFree(h); +h = NULL; (void) unblockSignals(db, signalMask); @@ -2605,9 +2614,6 @@ if (_rpmdb_debug) fprintf(stderr, -- %s(%p, %u, %p, %p) h# %u\n, __FUNCTION__, db, (unsigned)iid, h, ts, hdrNum); -/* Reference header for use by associated secondary index callbacks. */ -db-db_h = headerLink(h); - assert(headerIsEntry(h, RPMTAG_REMOVETID) == 0); /* XXX sanity */ /* Add the install transaction id. */ @@ -2695,11 +2701,19 @@
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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 18:52:42 Branch: HEAD Handle: 2009120917524101 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmmi: optimize NVRA range queries using a *RE stem. Summary: RevisionChanges Path 1.3190 +1 -0 rpm/CHANGES 1.353 +28 -65 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3189 -r1.3190 CHANGES --- rpm/CHANGES 9 Dec 2009 03:59:57 - 1.3189 +++ rpm/CHANGES 9 Dec 2009 17:52:41 - 1.3190 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmmi: optimize NVRA range queries using a *RE stem. - 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. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.352 -r1.353 rpmdb.c --- rpm/rpmdb/rpmdb.c 9 Dec 2009 03:59:57 - 1.352 +++ rpm/rpmdb/rpmdb.c 9 Dec 2009 17:52:42 - 1.353 @@ -64,8 +64,6 @@ /*...@unchecked@*/ int _rpmdb_debug = 0; -static int _jbj_debug = 0; - /*...@unchecked@*/ static int _rebuildinprogress = 0; @@ -1294,22 +1292,12 @@ return ret; } -static void prtDBT(const char * msg, DBT * kp) -{ -if (msg) fprintf(stderr, \t%s, msg); -fprintf(stderr, %p[%u:%u:%u] flags 0x%x\n, - kp-data, (unsigned)kp-size, (unsigned)kp-doff, (unsigned)kp-dlen, - kp-flags); -} - -#ifdef NOTYET -/* Determine if the regular expression specification has any meta characters. */ +/* Return pointer to first RE character (or NUL terminator) */ static const char * stemEnd(const char * s) - /*...@modifies sxp @*/ + /*...@*/ { int c; -/* Return pointer to first RE character (or NUL terminator) */ while ((c = *s)) { switch (c) { case '.': @@ -1337,7 +1325,6 @@ exit: return s; } -#endif /*...@only@*/ static const char * _str2PCREpat(/*...@null@*/ const char *_pre, const char *s, @@ -1351,9 +1338,6 @@ char * t; char * te; -if (_pre == NULL) _pre = ^; -if (_post == NULL) _post = (-[^-]+-[^-]+\\.[^.]+|-[^-]+\\.[^.]+|\\.[^.]+|)$; - /* Find the PCRE pattern length, including escapes. */ for (se = s; *se != '\0'; se++, nt++) if (strchr(_REchars, *se)) nt++; @@ -1367,8 +1351,6 @@ te = stpcpy(te, _post); *te = '\0'; -if (_jbj_debug) -fprintf(stderr, -- %s(\%s\) ret \%s\\n, __FUNCTION__, s, t); return t; } @@ -1377,15 +1359,14 @@ { DBC * dbcursor = NULL; DBT k = DBT_INIT; -#ifdef NOTYET -DBT fk; -#endif DBT p = DBT_INIT; DBT v = DBT_INIT; dbiIndex dbi; miRE mire = NULL; -uint32_t _flags = DB_NEXT; -dbiIndexSet set = NULL; +uint32_t _flags = DB_NEXT; +dbiIndexSet set = NULL; +const char * b = NULL; +size_t nb = 0; int ret = 1; /* assume error */ int rc; int xx; @@ -1395,10 +1376,6 @@ goto exit; if (pat) { - const char * b = pat; -#ifdef NOTYET - const char * be; -#endif mire = mireNew(mode, 0); xx = mireRegcomp(mire, pat); @@ -1407,22 +1384,20 @@ default: break; case RPMMIRE_PCRE: -#ifdef NOTYET - if (*b == '^') k.doff = 1; - be = stemEnd(b + k.doff); + b = pat; + if (*b == '^') b++; + nb = stemEnd(b) - b; /* If partial match on stem won't help, just iterate. */ - if (be == (b + k.doff)) { + if (nb == 0) { k.doff = 0; goto doit; } /* Set stem length for partial match retrieve. */ - k.dlen = (be - b) - k.doff; k.flags = DB_DBT_PARTIAL; + k.dlen = nb; + k.size = nb; k.data = (void *) b; - _flags = DB_SET; -#else - goto doit; -#endif + _flags = DB_SET_RANGE; break; case RPMMIRE_STRCMP: k.size = (UINT32_T) strlen(b); @@ -1430,37 +1405,33 @@ _flags = DB_SET; break; } -if
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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 21:32:46 Branch: HEAD Handle: 2009120920324401 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: fold rpmdbMireApply into dbiMireKeys. Summary: RevisionChanges Path 1.3191 +1 -0 rpm/CHANGES 1.354 +90 -91 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3190 -r1.3191 CHANGES --- rpm/CHANGES 9 Dec 2009 17:52:41 - 1.3190 +++ rpm/CHANGES 9 Dec 2009 20:32:44 - 1.3191 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: fold rpmdbMireApply into dbiMireKeys. - jbj: rpmmi: optimize NVRA range queries using a *RE stem. - jbj: rpmdb: inline rpmdbOpenAll for inplace --rebuilddb. sadly DB-associate(..., DB_CREATE) is not free threaded w -fopenmp. oh well. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.353 -r1.354 rpmdb.c --- rpm/rpmdb/rpmdb.c 9 Dec 2009 17:52:42 - 1.353 +++ rpm/rpmdb/rpmdb.c 9 Dec 2009 20:32:45 - 1.354 @@ -65,6 +65,9 @@ int _rpmdb_debug = 0; /*...@unchecked@*/ +int _rpmmi_debug = 0; + +/*...@unchecked@*/ static int _rebuildinprogress = 0; static int _rebuild_inplace = 1; @@ -1234,64 +1237,6 @@ return rpmdbCount(db, RPMTAG_NAME, name, 0); } -int rpmdbMireApply(rpmdb db, rpmTag tag, rpmMireMode mode, const char * pat, - const char *** argvp) -{ -DBC * dbcursor = NULL; -DBT k = DBT_INIT; -DBT v = DBT_INIT; -dbiIndex dbi; -miRE mire = NULL; -ARGV_t av = NULL; -int ret = 1; /* assume error */ -int rc; -int xx; - -dbi = dbiOpen(db, tag, 0); -if (dbi == NULL) - goto exit; - -if (pat) { - mire = mireNew(mode, 0); - xx = mireRegcomp(mire, pat); -} - -xx = dbiCopen(dbi, dbiTxnid(dbi), dbcursor, 0); - -/* Iterate over all string keys, collecting pattern matches. */ -while ((rc = dbiGet(dbi, dbcursor, k, v, DB_NEXT_NODUP)) == 0) { - size_t ns = k.size; - /* XXX TODO: strdup malloc is necessary solely for argvAdd() */ - char * s = memcpy(xmalloc(ns+1), k.data, ns); - - s[ns] = '\0'; - if (mire == NULL || mireRegexec(mire, s, ns) = 0) - xx = argvAdd(av, s); - s = _free(s); -} - -xx = dbiCclose(dbi, dbcursor, 0); -dbcursor = NULL; - -switch (rc) { -case 0: -case DB_NOTFOUND: - ret = 0; - break; -default: - rpmlog(RPMLOG_ERR, _(error(%d) getting keys from %s index\n), - rc, tagName(dbi-dbi_rpmtag)); - break; -} - -exit: -if (argvp != NULL) - xx = argvAppend(argvp, av); -av = argvFree(av); -mire = mireFree(mire); -return ret; -} - /* Return pointer to first RE character (or NUL terminator) */ static const char * stemEnd(const char * s) /*...@*/ @@ -1354,8 +1299,21 @@ return t; } -static int rpmdbMireKeys(rpmdb db, rpmTag tag, rpmMireMode mode, - const char * pat, dbiIndexSet * matches) +/** + * Retrieve prinary/secondary keys for a pattern match. + * @todo Move to Berkeley DB db3.c when dbiIndexSet is eliminated. + * @param db rpm database + * @param tagrpm tag + * @param mode type of pattern match + * @param patpattern to match (NULL iterates all keys). + * @retval *matches array or primary keys that match (or NULL) + * @retval *argvp array of secondary keys that match (or NULL) + */ +static int dbiMireKeys(rpmdb db, rpmTag tag, rpmMireMode mode, + /*...@null@*/ const char * pat, + /*...@null@*/ dbiIndexSet * matches, + /*...@null@*/ const char *** argvp) + /*...@modifies *matches, *argvp @*/ { DBC * dbcursor = NULL; DBT k = DBT_INIT; @@ -1364,6 +1322,7 @@ dbiIndex dbi; miRE mire = NULL; uint32_t _flags = DB_NEXT; +ARGV_t av = NULL; dbiIndexSet set = NULL; const char * b = NULL; size_t nb = 0; @@ -1375,23 +1334,40 @@ if (dbi == NULL) goto exit; +if (_rpmmi_debug || dbi-dbi_debug) +fprintf(stderr, -- %s(%p, %s(%u), %d, \%s\, %p, %p)\n, __FUNCTION__,
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: RevisionChanges 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 - 1.3188 +++ rpm/CHANGES 9 Dec 2009 03:59:57 - 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 - 1.351 +++ rpm/rpmdb/rpmdb.c 9 Dec 2009 03:59:57 - 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 Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 04-Dec-2009 19:40:20 Branch: HEAD Handle: 2009120418401900 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: permit anchored patterns on RPMDBI_LABEL retrieves. strings are escaped and anchored. Still only RPMTAG_NAME, RPMTAG_NVRA next. Summary: RevisionChanges Path 1.3181 +2 -0 rpm/CHANGES 1.345 +52 -33 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3180 -r1.3181 CHANGES --- rpm/CHANGES 4 Dec 2009 13:58:25 - 1.3180 +++ rpm/CHANGES 4 Dec 2009 18:40:19 - 1.3181 @@ -1,5 +1,7 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: permit anchored patterns on RPMDBI_LABEL retrieves. strings + are escaped and anchored. Still only RPMTAG_NAME, RPMTAG_NVRA next. - jbj: perform checkpoint after every successful transaction. - jbj: rpmtxn: expose rpmtxnCheckpoint. - rpm.org: Only report disk space/inode issues for affected packages. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.344 -r1.345 rpmdb.c --- rpm/rpmdb/rpmdb.c 4 Dec 2009 04:16:15 - 1.344 +++ rpm/rpmdb/rpmdb.c 4 Dec 2009 18:40:19 - 1.345 @@ -1283,6 +1283,34 @@ } #endif +static const char * xpatdup(const char * s, size_t ns) +{ +char * t; + +if (s[0] == '^' || s[ns-1] == '$') + t = xstrdup(s); +else { + static const char _REchars[] = ^.*(|)[]+?{}$; + size_t nt = 0; + const char * se; + char * te; + + for (se = s; *se != '\0'; se++, nt++) + if (strchr(_REchars, *se)) nt++; + + te = t = xmalloc(nt + sizeof(^$)); + *te++ = '^'; + for (se = s; *se != '\0'; *te++ = *se++) + if (strchr(_REchars, *se)) *te++ = '\\'; + *te++ = '$'; + *te = '\0'; +} + +if (_jbj_debug) +fprintf(stderr, -- %s(\%s\, %u) ret \%s\\n, __FUNCTION__, s, ns, t); +return t; +} + static int rpmdbMireKeys(rpmdb db, rpmTag tag, rpmMireMode mode, const char * pat, dbiIndexSet * matches) { @@ -1426,58 +1454,50 @@ * @param dbcursor index database cursor * @param keysearch key/length/flags * @param data search data/length/flags - * @param N package name - * @param V package version (can be a pattern) - * @param R package release (can be a pattern) + * @param NVRname[-version[-release]] string/pattern * @retval matches set of header instances that match * @return RPMRC_OK on match, RPMRC_NOMATCH or RPMRC_FAIL */ -static rpmRC dbiFindMatches(dbiIndex dbi, DBC * dbcursor, - DBT * key, DBT * data, - const char * N, - /*...@null@*/ const char * V, - /*...@null@*/ const char * R, - /*...@out@*/ dbiIndexSet * matches) +static rpmRC dbiFindMatches(dbiIndex dbi, DBC * dbcursor, DBT * key, DBT * data, + const char * NVR, /*...@out@*/ dbiIndexSet * matches) /*...@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*...@modifies dbi, *dbcursor, *key, *data, *matches, rpmGlobalMacroContext, fileSystem, internalState @*/ /*...@requires maxSet(matches) = 0 @*/ { -rpmRC rc = RPMRC_FAIL; +const char * s = NVR; +size_t ns = (s ? strlen(s) : 0); +rpmRC rc = RPMRC_NOTFOUND; int ret; -{rpmMireMode _mode = RPMMIRE_PCRE; +if (ns == 0) goto exit; + +{ #ifdef NOTYET rpmTag _tag = RPMTAG_NVRA; #else rpmTag _tag = RPMTAG_NAME; #endif - /* XXX add ^...$ *RE anchors. */ - const char * _pat = N; + rpmMireMode _mode = RPMMIRE_PCRE; + const char * _pat = xpatdup(s, ns); + /* Add ^...$ *RE anchors. Escape pattern characters. */ ret = rpmdbMireKeys(dbi-dbi_rpmdb, _tag, _mode, _pat, matches); + _pat = _free(_pat); } switch (ret) { -case 0: - if (V == NULL R == NULL) { - rc = RPMRC_OK; - goto exit; - } - break; -case DB_NOTFOUND: - rc = RPMRC_NOTFOUND; - goto exit; - /*...@notreached@*/ break; -default: +case 0: rc = RPMRC_OK;
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 05-Dec-2009 00:22:52 Branch: HEAD Handle: 2009120423225101 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: use RPMTAG_NVRA patterns for RPMDBI_LABEL rpmmi iterators. Summary: RevisionChanges Path 1.3182 +1 -0 rpm/CHANGES 1.346 +29 -27 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3181 -r1.3182 CHANGES --- rpm/CHANGES 4 Dec 2009 18:40:19 - 1.3181 +++ rpm/CHANGES 4 Dec 2009 23:22:51 - 1.3182 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: use RPMTAG_NVRA patterns for RPMDBI_LABEL rpmmi iterators. - jbj: rpmdb: permit anchored patterns on RPMDBI_LABEL retrieves. strings are escaped and anchored. Still only RPMTAG_NAME, RPMTAG_NVRA next. - jbj: perform checkpoint after every successful transaction. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.345 -r1.346 rpmdb.c --- rpm/rpmdb/rpmdb.c 4 Dec 2009 18:40:19 - 1.345 +++ rpm/rpmdb/rpmdb.c 4 Dec 2009 23:22:52 - 1.346 @@ -1283,31 +1283,36 @@ } #endif -static const char * xpatdup(const char * s, size_t ns) +/*...@only@*/ +static const char * _str2PCREpat(/*...@null@*/ const char *_pre, const char *s, + /*...@null@*/ const char *_post) + /*...@*/ { + +static const char _REchars[] = ^.*(|)[]+?{}$; +size_t nt = 0; +const char * se; char * t; +char * te; -if (s[0] == '^' || s[ns-1] == '$') - t = xstrdup(s); -else { - static const char _REchars[] = ^.*(|)[]+?{}$; - size_t nt = 0; - const char * se; - char * te; - - for (se = s; *se != '\0'; se++, nt++) - if (strchr(_REchars, *se)) nt++; - - te = t = xmalloc(nt + sizeof(^$)); - *te++ = '^'; - for (se = s; *se != '\0'; *te++ = *se++) - if (strchr(_REchars, *se)) *te++ = '\\'; - *te++ = '$'; - *te = '\0'; -} +if (_pre == NULL) _pre = ^; +if (_post == NULL) _post = (-[^-]+-[^-]+|-[^-]+|)\\.[^.]+$; + +/* Find the PCRE pattern length, including escapes. */ +for (se = s; *se != '\0'; se++, nt++) + if (strchr(_REchars, *se)) nt++; +nt += strlen(_pre) + strlen(_post); + +/* Build the PCRE pattern, escaping characters as needed. */ +te = t = xmalloc(nt + 1); +te = stpcpy(te, _pre); +for (se = s; *se != '\0'; *te++ = *se++) + if (strchr(_REchars, *se)) *te++ = '\\'; +te = stpcpy(te, _post); +*te = '\0'; if (_jbj_debug) -fprintf(stderr, -- %s(\%s\, %u) ret \%s\\n, __FUNCTION__, s, ns, t); +fprintf(stderr, -- %s(\%s\) ret \%s\\n, __FUNCTION__, s, t); return t; } @@ -1472,15 +1477,12 @@ if (ns == 0) goto exit; -{ -#ifdef NOTYET - rpmTag _tag = RPMTAG_NVRA; -#else - rpmTag _tag = RPMTAG_NAME; -#endif +{rpmTag _tag = RPMTAG_NVRA; rpmMireMode _mode = RPMMIRE_PCRE; - const char * _pat = xpatdup(s, ns); /* Add ^...$ *RE anchors. Escape pattern characters. */ + const char * _pat = (s[0] == '^' || s[ns-1] == '$') + ? xstrdup(s) + : _str2PCREpat(^, s, (-[^-]+-[^-]+|-[^-]+|)\\.[^.]+$); ret = rpmdbMireKeys(dbi-dbi_rpmdb, _tag, _mode, _pat, matches); _pat = _free(_pat); } @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c rpmdb.h
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: 04-Dec-2009 05:16:16 Branch: HEAD Handle: 2009120404161501 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c rpmdb.h Log: - rpmdb: mark code to renumber primary keys when needed. - rpmmi: fix: return native endian, but store big endian, primary keys. Summary: RevisionChanges Path 1.3177 +2 -0 rpm/CHANGES 1.344 +51 -27 rpm/rpmdb/rpmdb.c 1.128 +9 -8 rpm/rpmdb/rpmdb.h patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3176 -r1.3177 CHANGES --- rpm/CHANGES 3 Dec 2009 21:44:25 - 1.3176 +++ rpm/CHANGES 4 Dec 2009 04:16:15 - 1.3177 @@ -1,5 +1,7 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: mark code to renumber primary keys when needed. +- jbj: rpmmi: fix: return native endian, but store big endian, primary keys. - jbj: DB_CONFIG: create /var/lib/rpm/tmp subdir. - jbj: DB_CONFIG: move log files to /var/liog/rpm/log subdir. - jbj: DB_CONFIG: configure set_lk_max_{locks,lockers,objects} to 4000. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.343 -r1.344 rpmdb.c --- rpm/rpmdb/rpmdb.c 22 Nov 2009 14:33:04 - 1.343 +++ rpm/rpmdb/rpmdb.c 4 Dec 2009 04:16:15 - 1.344 @@ -479,12 +479,12 @@ } /* XXX transaction.c */ -unsigned int dbiIndexRecordOffset(dbiIndexSet set, int recno) { +uint32_t dbiIndexRecordOffset(dbiIndexSet set, int recno) { return (unsigned) set-recs[recno].hdrNum; } /* XXX transaction.c */ -unsigned int dbiIndexRecordFileNumber(dbiIndexSet set, int recno) { +uint32_t dbiIndexRecordFileNumber(dbiIndexSet set, int recno) { return (unsigned) set-recs[recno].tagNum; } @@ -518,8 +518,8 @@ int mi_sorted; int mi_cflags; int mi_modified; -unsigned int mi_prevoffset; /* header instance (native endian) */ -unsigned int mi_offset; /* header instance (native endian) */ +unsigned int mi_prevoffset; /* header instance (big endian) */ +unsigned int mi_offset; /* header instance (big endian) */ /*...@refcounted@*/ /*...@null@*/ rpmbfmi_bf; /* Iterator instance Bloom filter. */ int mi_nre; @@ -1684,8 +1684,14 @@ return mi; } -unsigned int rpmmiInstance(rpmmi mi) { -return (mi ? mi-mi_offset : 0); +uint32_t rpmmiInstance(rpmmi mi) +{ +union _dbswap mi_offset; +/* Get a native endian copy of the primary package key. */ +mi_offset.ui = (mi ? mi-mi_offset : 0); +if (_endian.uc[0] == 0x44) + _DBSWAP(mi_offset); +return mi_offset.ui; } unsigned int rpmmiCount(rpmmi mi) { @@ -2232,7 +2238,10 @@ /* The set of header instances is known in advance. */ if (!(mi-mi_setx mi-mi_set-count)) return NULL; - mi-mi_offset = dbiIndexRecordOffset(mi-mi_set, mi-mi_setx); + mi_offset.ui = dbiIndexRecordOffset(mi-mi_set, mi-mi_setx); + if (_endian.uc[0] == 0x44) + _DBSWAP(mi_offset); + mi-mi_offset = mi_offset.ui; mi-mi_setx++; /* If next header is identical, return it now. */ @@ -2245,11 +2254,8 @@ goto next; /* Fetch header by offset. */ - mi_offset.ui = mi-mi_offset; - if (_endian.uc[0] == 0x44) - _DBSWAP(mi_offset); - k.data = mi_offset.ui; - k.size = (u_int32_t)sizeof(mi_offset.ui); + k.data = mi-mi_offset; + k.size = (UINT32_T)sizeof(mi-mi_offset); rc = rpmmiGet(dbi, mi-mi_dbc, k, NULL, v, DB_SET); } else if (dbi-dbi_index) { @@ -2263,10 +2269,8 @@ /*...@notreached@*/ break; case 0: mi-mi_setx++; - memcpy(mi_offset, p.data, sizeof(mi_offset.ui)); - if (_endian.uc[0] == 0x44) - _DBSWAP(mi_offset); - mi-mi_offset = mi_offset.ui; +assert(p.size == sizeof(mi-mi_offset)); + memcpy(mi-mi_offset, p.data, sizeof(mi-mi_offset)); /* If next header is identical, return it now. */ if (mi-mi_offset == mi-mi_prevoffset mi-mi_h != NULL) return mi-mi_h; @@ -2284,12 +2288,10 @@ do { rc = rpmmiGet(dbi,
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 15-Nov-2009 17:33:49 Branch: HEAD Handle: 2009111516334800 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmmi: rework iterator instance filtering as a Bloom filter. - rpmdb: eliminate signature/digest checks on rpmdb Header blobs. Summary: RevisionChanges Path 1.3159 +2 -0 rpm/CHANGES 1.341 +66 -55 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3158 -r1.3159 CHANGES --- rpm/CHANGES 15 Nov 2009 16:30:12 - 1.3158 +++ rpm/CHANGES 15 Nov 2009 16:33:48 - 1.3159 @@ -1,5 +1,7 @@ 5.2b1 - 5.3a1 +- jbj: rpmmi: rework iterator instance filtering as a Bloom filter. +- jbj: rpmdb: eliminate signature/digest checks on rpmdb Header blobs. - jbj: rpmbf: permit non-string Bloom filters, s/char/void/ in prototypes. - jbj: rpmdb: eliminate rpmdbFlags hysteria. - jbj: rpmdb: use Seqno to assign Packages primary keys. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.340 -r1.341 rpmdb.c --- rpm/rpmdb/rpmdb.c 14 Nov 2009 16:22:49 - 1.340 +++ rpm/rpmdb/rpmdb.c 15 Nov 2009 16:33:48 - 1.341 @@ -17,7 +17,7 @@ #include argv.h #define _RPMBF_INTERNAL -#include rpmbf.h /* pbm_set macros */ +#include rpmbf.h #include rpmtypes.h @@ -280,6 +280,7 @@ } db-_dbi[dbix] = dbi; +#if defined(SUPPORT_HEADER_CHECKS) /* XXX FIXME: move to rpmdbOpen() instead. */ if (tag == RPMDBI_PACKAGES db-db_bf == NULL) { size_t _jiggery = 2;/* XXX todo: Bloom filter tuning? */ @@ -287,6 +288,7 @@ size_t _m = _jiggery * (3 * 8192 * _k) / 2; db-db_bf = rpmbfNew(_m, _k, 0); } +#endif exit: @@ -469,41 +471,6 @@ return 0; } -/** - * Remove element(s) from set of index database items. - * @param setset of index database items - * @param recs array of items to remove from set - * @param nrecs number of items - * @param recsizesize of an array item - * @param sorted array is already sorted? - * @return 0 success, 1 failure (no items found) - */ -static int dbiPruneSet(dbiIndexSet set, void * recs, int nrecs, - size_t recsize, int sorted) - /*...@modifies set, recs @*/ -{ -int from; -int to = 0; -int num = set-count; -int numCopied = 0; - -assert(set-count 0); -if (nrecs 1 !sorted) - qsort(recs, nrecs, recsize, hdrNumCmp); - -for (from = 0; from num; from++) { - if (bsearch(set-recs[from], recs, nrecs, recsize, hdrNumCmp)) { - set-count--; - continue; - } - if (from != to) - set-recs[to] = set-recs[from]; /* structure assignment */ - to++; - numCopied++; -} -return (numCopied == num); -} - /* XXX transaction.c */ unsigned int dbiIndexSetCount(dbiIndexSet set) { return set-count; @@ -551,6 +518,8 @@ int mi_modified; unsigned int mi_prevoffset; /* header instance (native endian) */ unsigned int mi_offset; /* header instance (native endian) */ +/*...@refcounted@*/ /*...@null@*/ +rpmbfmi_bf; /* Iterator instance Bloom filter. */ int mi_nre; /*...@only@*/ /*...@null@*/ miRE mi_re; @@ -1598,7 +1567,9 @@ return 0; if (dbi mi-mi_dbc mi-mi_modified mi-mi_prevoffset) { +#if defined(SUPPORT_HEADER_CHECKS) int chkhdr = (pgpDigVSFlags _RPMVSF_NOHEADER) ^ _RPMVSF_NOHEADER; +#endif DBT k = DBT_INIT; DBT v = DBT_INIT; rpmRC rpmrc = RPMRC_NOTFOUND; @@ -1611,6 +1582,7 @@ v.size = (UINT32_T) len; } +#if defined(SUPPORT_HEADER_CHECKS) /* Check header digest/signature on blob export (if requested). */ if (mi-mi_ts chkhdr) { const char * msg = NULL; @@ -1625,6 +1597,7 @@ mi-mi_prevoffset, (msg ? msg : \n)); msg = _free(msg); } +#endif if (v.data != NULL rpmrc != RPMRC_FAIL) { sigset_t signalMask; @@ -1687,6 +1660,8 @@ (void)
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 13-Nov-2009 18:21:51 Branch: HEAD Handle: 2009111317215000 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: assign the primary key to installed headers persistently. Summary: RevisionChanges Path 1.3154 +1 -0 rpm/CHANGES 1.338 +72 -63 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3153 -r1.3154 CHANGES --- rpm/CHANGES 11 Nov 2009 22:02:07 - 1.3153 +++ rpm/CHANGES 13 Nov 2009 17:21:50 - 1.3154 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: assign the primary key to installed headers persistently. - jbj: rpmdb: use a Bloom filter not a bitmap to determine if header signature/digest was checked. Header instances no longer need to be small integers. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.337 -r1.338 rpmdb.c --- rpm/rpmdb/rpmdb.c 11 Nov 2009 22:02:08 - 1.337 +++ rpm/rpmdb/rpmdb.c 13 Nov 2009 17:21:50 - 1.338 @@ -160,7 +160,7 @@ } if (_rpmdb_debug) -fprintf(stderr, *** dbiTagStr %s\n, dbiTagStr); +fprintf(stderr, -- %s(%p, %p) dbiTagStr %s\n, __FUNCTION__, dbiTagsP, dbiNTagsP, dbiTagStr); /* Always allocate package index */ dbiTags = xcalloc(1, sizeof(*dbiTags)); dbiTags[dbiNTags].str = xstrdup(Packages); @@ -291,8 +291,8 @@ _oneshot++; } -assert(db != NULL); -assert(db-_dbi != NULL); +assert(db != NULL); /* XXX sanity */ +assert(db-_dbi != NULL);/* XXX sanity */ /* Is this index configured? */ dbix = dbiTagToDbix(db, tag); @@ -1781,7 +1781,7 @@ /* XXX there's code that traverses here w mi-mi_db == NULL. b0rked imho. */ if (mi-mi_db) { dbi = dbiOpen(mi-mi_db, RPMDBI_PACKAGES, 0); -assert(dbi != NULL); +assert(dbi != NULL); /* XXX sanity */ xx = miFreeHeader(mi, dbi); @@ -2347,7 +2347,6 @@ } else if (dbi-dbi_index) { rc = rpmmiGet(dbi, mi-mi_dbc, k, p, v, _flags); - _flags = DB_NEXT_DUP; switch (rc) { default: assert(0); @@ -2366,6 +2365,7 @@ return mi-mi_h; break; } + _flags = DB_NEXT_DUP; } else { /* Iterating Packages database. */ @@ -2572,9 +2572,6 @@ if (mi-mi_set == NULL) { mi-mi_set = set; } else { -#if 0 -fprintf(stderr, +++ %d = %d + %d\t\%s\\n, (mi-mi_set-count + set-count), mi-mi_set-count, set-count, ((char *)key-data)); -#endif mi-mi_set-recs = xrealloc(mi-mi_set-recs, (mi-mi_set-count + set-count) * sizeof(*(mi-mi_set-recs))); memcpy(mi-mi_set-recs + mi-mi_set-count, set-recs, @@ -2775,12 +2772,16 @@ default: /* Do a lazy open on all necessary secondary indices. */ #ifndef NOTYET /* XXX headerGet() sees tag extensions, headerIsEntry doesn't */ - if (headerGet(db-db_h, he, 0)) + if (headerGet(db-db_h, he, 0)) { dbi = dbiOpen(db, he-tag, 0); +assert(dbi != NULL); /* XXX sanity */ + } he-p.ptr = _free(he-p.ptr); #else - if (headerIsEntry(db-db_h, he-tag)) + if (headerIsEntry(db-db_h, he-tag)) { dbi = dbiOpen(db, he-tag, 0); +assert(dbi != NULL); /* XXX sanity */ + } #endif /*...@switchbreak@*/ break; case RPMDBI_AVAILABLE: /* Filter out temporary databases */ @@ -2850,21 +2851,22 @@ dbiIndex dbi; size_t dbix; union _dbswap mi_offset; -unsigned int hdrNum = 0; +uint32_t hdrNum = headerGetInstance(h); int ret = 0; int xx; -/* Initialize the header instance */ -(void) headerSetInstance(h, 0); - if (db == NULL) return 0; +if (_rpmdb_debug) +fprintf(stderr, -- %s(%p, %u, %p, %p) h# %u\n, __FUNCTION__, db, (unsigned)iid, h, ts, hdrNum); + /* Reference header for use by associated secondary index callbacks. */ db-db_h = headerLink(h); assert(headerIsEntry(h, RPMTAG_REMOVETID) == 0); /* XXX sanity */
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c rpmdb.h
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: 11-Nov-2009 23:02:08 Branch: HEAD Handle: 200922020701 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c rpmdb.h Log: - rpmdb: use a Bloom filter not a bitmap to determine if header signature/digest was checked. Header instances no longer need to be small integers. Summary: RevisionChanges Path 1.3153 +3 -0 rpm/CHANGES 1.337 +14 -23 rpm/rpmdb/rpmdb.c 1.123 +3 -7 rpm/rpmdb/rpmdb.h patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3152 -r1.3153 CHANGES --- rpm/CHANGES 9 Nov 2009 22:53:56 - 1.3152 +++ rpm/CHANGES 11 Nov 2009 22:02:07 - 1.3153 @@ -1,5 +1,8 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: use a Bloom filter not a bitmap to determine if header + signature/digest was checked. Header instances no longer need to + be small integers. - jbj: rpmdb: begin phasing out RPMDBI_LABEL with patterns on keys. - jbj: rpmdb: fix: resurrect queries with duplicate packages. happy yum ... - jbj: rpmdb: remap rpmdbCount - dbiCount, eliminate dbiIndexSet usage. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.336 -r1.337 rpmdb.c --- rpm/rpmdb/rpmdb.c 10 Nov 2009 16:15:19 - 1.336 +++ rpm/rpmdb/rpmdb.c 11 Nov 2009 22:02:08 - 1.337 @@ -323,11 +323,11 @@ db-_dbi[dbix] = dbi; /* XXX FIXME: move to rpmdbOpen() instead. */ -if (tag == RPMDBI_PACKAGES db-db_bits == NULL) { - db-db_nbits = 8192; -/*...@-sizeoftype@*/ - db-db_bits = PBM_ALLOC(db-db_nbits); -/*...@=sizeoftype@*/ +if (tag == RPMDBI_PACKAGES db-db_bf == NULL) { + size_t _jiggery = 2;/* XXX todo: Bloom filter tuning? */ + size_t _k = _jiggery * 8; + size_t _m = _jiggery * (3 * 8192 * _k) / 2; + db-db_bf = rpmbfNew(_m, _k, 0); } exit: @@ -903,7 +903,7 @@ db-db_errpfx = _free(db-db_errpfx); db-db_root = _free(db-db_root); db-db_home = _free(db-db_home); - db-db_bits = PBM_FREE(db-db_bits); + db-db_bf = rpmbfFree(db-db_bf); db-db_tags = tagStoreFree(db-db_tags, db-db_ndbi); db-_dbi = _free(db-_dbi); db-db_ndbi = 0; @@ -1064,8 +1064,7 @@ db-db_export = rpmdbExportInfo; db-db_h = NULL; -db-db_bits = NULL; -db-db_nbits = 0; +db-db_bf = NULL; db-db_next = NULL; db-db_opens = 0; @@ -2404,14 +2403,10 @@ rpmRC rpmrc = RPMRC_NOTFOUND; /* Don't bother re-checking a previously read header. */ - if (mi-mi_db-db_bits) { - pbm_set * set; - - set = PBM_REALLOC((pbm_set **)mi-mi_db-db_bits, - mi-mi_db-db_nbits, mi-mi_offset); - if (PBM_ISSET(mi-mi_offset, set)) - rpmrc = RPMRC_OK; - } + if (mi-mi_db mi-mi_db-db_bf + rpmbfChk(mi-mi_db-db_bf, + (const char *)mi-mi_offset, sizeof(mi-mi_offset))) + rpmrc = RPMRC_OK; /* If blob is unchecked, check blob import consistency now. */ if (rpmrc != RPMRC_OK) { @@ -2427,13 +2422,9 @@ msg = _free(msg); /* Mark header checked. */ - if (mi-mi_db mi-mi_db-db_bits rpmrc == RPMRC_OK) { - pbm_set * set; - - set = PBM_REALLOC((pbm_set **)mi-mi_db-db_bits, - mi-mi_db-db_nbits, mi-mi_offset); - PBM_SET(mi-mi_offset, set); - } + if (mi-mi_db mi-mi_db-db_bf rpmrc == RPMRC_OK) + rpmbfAdd(mi-mi_db-db_bf, + (const char *)mi-mi_offset, sizeof(mi-mi_offset)); /* Skip damaged and inconsistent headers. */ if (rpmrc == RPMRC_FAIL) @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.h $ cvs diff -u -r1.122 -r1.123 rpmdb.h --- rpm/rpmdb/rpmdb.h 9 Nov 2009 22:53:57 - 1.122 +++ rpm/rpmdb/rpmdb.h 11 Nov 2009 22:02:08 - 1.123 @@ -477,14 +477,12 @@ int (*db_export) (rpmdb db, Header h, int adding); /*...@refcounted@*/ +rpmbfdb_bf; /*! Header instance Bloom filter. */ +/*...@refcounted@*/ Header db_h; /*! Currently
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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-Nov-2009 15:31:41 Branch: HEAD Handle: 2009110914314000 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: remap rpmdbCount - dbiCount, eliminate dbiIndexSet usage. Summary: RevisionChanges Path 1.3151 +1 -0 rpm/CHANGES 1.334 +27 -34 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3150 -r1.3151 CHANGES --- rpm/CHANGES 8 Nov 2009 21:25:27 - 1.3150 +++ rpm/CHANGES 9 Nov 2009 14:31:40 - 1.3151 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: remap rpmdbCount - dbiCount, eliminate dbiIndexSet usage. - jbj: rpmdb: fix: rpmmiCount() - dbiCCount() with early dbcOpen(). - jbj: rpmmi: eliminate mi-mi_filenum rpmmiFilenum(), join keysi are history. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.333 -r1.334 rpmdb.c --- rpm/rpmdb/rpmdb.c 8 Nov 2009 21:25:27 - 1.333 +++ rpm/rpmdb/rpmdb.c 9 Nov 2009 14:31:40 - 1.334 @@ -1269,6 +1269,7 @@ int rpmdbCount(rpmdb db, rpmTag tag, const void * keyp, size_t keylen) { +unsigned int count = 0; DBC * dbcursor = NULL; DBT k = DBT_INIT; DBT v = DBT_INIT; @@ -1293,36 +1294,24 @@ xx = dbiCopen(dbi, dbiTxnid(dbi), dbcursor, 0); rc = dbiGet(dbi, dbcursor, k, v, DB_SET); -#ifndef SQLITE_HACK -xx = dbiCclose(dbi, dbcursor, 0); -dbcursor = NULL; -#endif - -if (rc == 0) { /* success */ - dbiIndexSet matches; - /*...@-nullpass@*/ /* FIX: matches might be NULL */ - matches = NULL; - (void) dbt2set(dbi, v, matches); - if (matches) { - rc = dbiIndexSetCount(matches); - matches = dbiFreeIndexSet(matches); +switch (rc) { +case 0: + if ((rc = dbiCount(dbi, dbcursor, count, 0)) != 0) { + rc = -1; + break; } - /*...@=nullpass@*/ -} else -if (rc == DB_NOTFOUND) { /* not found */ - rc = 0; -} else { /* error */ - rpmlog(RPMLOG_ERR, - _(error(%d) getting records from %s index\n), + /*...@fallthrough@*/ +case DB_NOTFOUND: + rc = count; + break; +default: + rpmlog(RPMLOG_ERR, _(error(%d) getting records from %s index\n), rc, tagName(dbi-dbi_rpmtag)); rc = -1; + break; } - -#ifdef SQLITE_HACK xx = dbiCclose(dbi, dbcursor, 0); dbcursor = NULL; -#endif - return rc; } @@ -1365,19 +1354,21 @@ key-size = (UINT32_T) strlen(name); rc = dbiGet(dbi, dbcursor, key, data, DB_SET); - -if (rc == 0) { /* success */ +switch (rc) { +case 0: (void) dbt2set(dbi, data, matches); if (version == NULL release == NULL) return RPMRC_OK; -} else -if (rc == DB_NOTFOUND) { /* not found */ + break; +case DB_NOTFOUND: return RPMRC_NOTFOUND; -} else { /* error */ + /*...@notreached@*/ break; +default: rpmlog(RPMLOG_ERR, _(error(%d) getting records from %s index\n), rc, tagName(dbi-dbi_rpmtag)); return RPMRC_FAIL; + /*...@notreached@*/ break; } /* Make sure the version and release match. */ @@ -2585,11 +2576,12 @@ const char *** argvp) { DBC * dbcursor = NULL; -DBT * key = memset(alloca(sizeof(*key)), 0, sizeof(*key)); -DBT * data = memset(alloca(sizeof(*data)), 0, sizeof(*data)); +DBT k = DBT_INIT; +DBT v = DBT_INIT; dbiIndex dbi; miRE mire = NULL; ARGV_t av = NULL; +uint32_t _flags = DB_SET; int ret = 1; /* assume error */ int rc; int xx; @@ -2605,14 +2597,15 @@ xx = dbiCopen(dbi, dbiTxnid(dbi), dbcursor, 0); -while ((rc = dbiGet(dbi, dbcursor, key, data, DB_NEXT)) == 0) { - size_t ns = key-size; - char * s = memcpy(xmalloc(ns+1), key-data, ns); +while ((rc = dbiGet(dbi, dbcursor, k, v, _flags)) == 0) { + size_t ns = k.size; + char * s = memcpy(xmalloc(ns+1), k.data, ns); s[ns] = '\0'; if (mire == NULL || mireRegexec(mire, s, ns) = 0)
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 07-Nov-2009 19:05:16 Branch: HEAD Handle: 2009110718051401 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: eliminate the custom Basenames retrieval code. Summary: RevisionChanges Path 1.3145 +1 -0 rpm/CHANGES 1.329 +9 -279rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3144 -r1.3145 CHANGES --- rpm/CHANGES 7 Nov 2009 16:07:05 - 1.3144 +++ rpm/CHANGES 7 Nov 2009 18:05:14 - 1.3145 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: eliminate the custom Basenames retrieval code. - jbj: rpmdb: eliminate the Basenames index. - jbj: rpmdb: abandon RPMTAG_BASENAMES lookup, use RPMTAG_FILEPATHS instead. - jbj: rpmts: stub-in a grandparent transaction. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.328 -r1.329 rpmdb.c --- rpm/rpmdb/rpmdb.c 7 Nov 2009 16:02:34 - 1.328 +++ rpm/rpmdb/rpmdb.c 7 Nov 2009 18:05:15 - 1.329 @@ -67,17 +67,6 @@ /*...@unchecked@*/ static int _rebuildinprogress = 0; -/* Use a path uniqifier in the upper 16 bits of tagNum? */ -/* XXX Note: one cannot just choose a value, rpmdb tagNum's need fixing too */ -#define _DB_TAGGED_FILE_INDICES 1 -/*...@unchecked@*/ -static int _db_tagged_file_indices = _DB_TAGGED_FILE_INDICES; - -/* Use a path uniqifier while doing -qf? */ -#define _DB_TAGGED_FINDBYFILE 1 -/*...@unchecked@*/ -static int _db_tagged_findbyfile = _DB_TAGGED_FINDBYFILE; - #define _DBI_FLAGS 0 #define _DBI_PERMS 0644 #define _DBI_MAJOR -1 @@ -124,23 +113,6 @@ return val; } -#ifdef DYING -/** - * Check key for printable characters. - * @param ptrkey value pointer - * @param lenkey value length - * @return 1 if only ASCII, 0 otherwise. - */ -static int printable(const void * ptr, size_t len) /*...@*/ -{ -const char * s = ptr; -int i; -for (i = 0; i len; i++, s++) - if (!(*s = ' ' *s = '~')) return 0; -return 1; -} -#endif - /** * Return dbi index used for rpm tag. * @param db rpm database @@ -1447,241 +1419,6 @@ return rc; } -/** - * Return a tagnum with hash on the (directory) path in upper 16 bits. - * @param s (directory) path - * @return tagnum with (directory) path hash - */ -static inline unsigned taghash(const char * s) - /*...@*/ -{ -unsigned int r = 0; -int c; -while ((c = (int) *s++) != 0) { - /* XXX Excluding the '/' character may cause hash collisions. */ - if (c != (int) '/') - r += (r 3) + c; -} -return ((r 0x7fff) | 0x8000) 16; -} - -/** - * Return the intersection of dirName = baseName index sets. - * @param tagdirName hash tag. - * @param dnset dirName's set. - * @baram bnset baseName's set. - * @retval *matches intersection of dnset and bnset (NULL if disjoint). - * @return no. of matches - */ -static int dbiIntersect(unsigned int tag, dbiIndexSet dnset, dbiIndexSet bnset, - dbiIndexSet *matches) - /*...@modifies *matches @*/ -{ -dbiIndexItem drec = dnset-recs; -dbiIndexItem brec = bnset-recs; -dbiIndexItem rec = alloca(sizeof(*rec)); -int i = 0; -int j = 0; -int xx; - -*matches = NULL; -while (i dnset-count) { - while (j bnset-count brec-hdrNum = drec-hdrNum) { - if (brec-hdrNum == drec-hdrNum - tag == (brec-tagNum 0x)) - break; - brec++; - j++; - } - if (j = bnset-count) - break; - if (brec-hdrNum == drec-hdrNum - tag == (brec-tagNum 0x)) - { - *rec = *brec; /* structure assignment */ - rec-tagNum = 0x; - if (*matches == NULL) - *matches = xcalloc(1, sizeof(**matches)); - xx = dbiAppendSet(*matches, rec, 1, sizeof(*rec), 0); - brec++; - j++; - } - drec++; - i++; -} -return (*matches ? (*matches)-count : 0); -} -
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 07-Nov-2009 19:37:11 Branch: HEAD Handle: 2009110718370901 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: add assertions before always using secondary indices. Summary: RevisionChanges Path 1.3147 +1 -0 rpm/CHANGES 1.330 +4 -1 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3146 -r1.3147 CHANGES --- rpm/CHANGES 7 Nov 2009 18:20:21 - 1.3146 +++ rpm/CHANGES 7 Nov 2009 18:37:09 - 1.3147 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: add assertions before always using secondary indices. - jbj: rpmdb: change from a CDB to ACID database behahvior. - jbj: rpmdb: eliminate the custom Basenames retrieval code. - jbj: rpmdb: eliminate the Basenames index. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.329 -r1.330 rpmdb.c --- rpm/rpmdb/rpmdb.c 7 Nov 2009 18:05:15 - 1.329 +++ rpm/rpmdb/rpmdb.c 7 Nov 2009 18:37:10 - 1.330 @@ -2359,7 +2359,7 @@ } else { /* Iterating Packages database. */ - assert(mi-mi_rpmtag == RPMDBI_PACKAGES); +assert(mi-mi_rpmtag == RPMDBI_PACKAGES); /* Fetch header with DB_NEXT. */ /* Instance 0 is the largest header instance in the database, @@ -2673,6 +2673,7 @@ /* Common case: retrieve join keys. */ int rc; +assert(isLabel != 0); if (isLabel) { rc = dbiFindByLabel(dbi, keyp, keylen, set); } else { @@ -2896,6 +2897,7 @@ if (dbi != NULL !dbi-dbi_index) { int printed; +assert(dbi-dbi_rpmtag == RPMDBI_PACKAGES); /* XXX Coerce strings into header argv return. */ if (he-t == RPM_STRING_TYPE) { const char * s = he-p.str; @@ -3340,6 +3342,7 @@ if (dbi != NULL !dbi-dbi_index) { int printed; +assert(dbi-dbi_rpmtag == RPMDBI_PACKAGES); /* XXX Coerce strings into header argv return. */ if (he-t == RPM_STRING_TYPE) { const char * s = he-p.str; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 07-Nov-2009 21:03:07 Branch: HEAD Handle: 2009110720030501 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: eliminate dead code associated with database indices. Summary: RevisionChanges Path 1.3148 +1 -0 rpm/CHANGES 1.331 +4 -531rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3147 -r1.3148 CHANGES --- rpm/CHANGES 7 Nov 2009 18:37:09 - 1.3147 +++ rpm/CHANGES 7 Nov 2009 20:03:05 - 1.3148 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmdb: eliminate dead code associated with database indices. - jbj: rpmdb: add assertions before always using secondary indices. - jbj: rpmdb: change from a CDB to ACID database behahvior. - jbj: rpmdb: eliminate the custom Basenames retrieval code. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.330 -r1.331 rpmdb.c --- rpm/rpmdb/rpmdb.c 7 Nov 2009 18:37:10 - 1.330 +++ rpm/rpmdb/rpmdb.c 7 Nov 2009 20:03:06 - 1.331 @@ -465,85 +465,6 @@ /*...@=compdef@*/ } -/** - * Convert index set to database representation. - * @param dbiindex database handle - * @param data retrieved data - * @param setindex set - * @return 0 on success - */ -static int set2dbt(dbiIndex dbi, DBT * data, const dbiIndexSet set) - /*...@modifies dbi, *data @*/ -{ -int _dbbyteswapped; -setSwap S; -char * t; -int i; - -if (dbi == NULL || data == NULL || set == NULL) - return -1; -_dbbyteswapped = dbiByteSwapped(dbi); - -data-size = (UINT32_T)(set-count * (dbi-dbi_jlen)); -if (data-size == 0) { - data-data = NULL; - return 0; -} - -t = data-data = xmalloc(data-size); -S = (setSwap)set-recs; - -/*...@-sizeoftype@*/ -switch (dbi-dbi_jlen) { -default: -case 2*sizeof(rpmuint32_t): - if (_dbbyteswapped) { - for (i = 0; i set-count; i++) { - *t++ = S-hdr.uc[3]; - *t++ = S-hdr.uc[2]; - *t++ = S-hdr.uc[1]; - *t++ = S-hdr.uc[0]; - *t++ = S-tag.uc[3]; - *t++ = S-tag.uc[2]; - *t++ = S-tag.uc[1]; - *t++ = S-tag.uc[0]; - S++; - } - } else { - for (i = 0; i set-count; i++) { - memcpy(t, S-hdr.ui, sizeof(S-hdr.ui)); - t += sizeof(S-hdr.ui); - memcpy(t, S-tag.ui, sizeof(S-tag.ui)); - t += sizeof(S-tag.ui); - S++; - } - } - break; -case 1*sizeof(rpmuint32_t): - if (_dbbyteswapped) { - for (i = 0; i set-count; i++) { - *t++ = S-hdr.uc[3]; - *t++ = S-hdr.uc[2]; - *t++ = S-hdr.uc[1]; - *t++ = S-hdr.uc[0]; - S++; - } - } else { - for (i = 0; i set-count; i++) { - memcpy(t, S-hdr.ui, sizeof(S-hdr.ui)); - t += sizeof(S-hdr.ui); - S++; - } - } - break; -} -/*...@=sizeoftype@*/ - -/*...@-compdef@*/ -return 0; -/*...@=compdef@*/ -} - /* XXX assumes hdrNum is first int in dbiIndexItem */ static int hdrNumCmp(const void * one, const void * two) /*...@*/ @@ -1348,77 +1269,6 @@ return rc; } -static int _joinKeys(dbiIndex dbi, const void * keyp, size_t keylen, - dbiIndexSet * matches) -{ -static unsigned int _tagNum = 0; -static unsigned int _fpNum = 0; -dbiIndexSet set = NULL; -DBC * dbcursor = NULL; -DBT k = DBT_INIT; -DBT v = DBT_INIT; -uint32_t _flags; -int rc; -int xx; - -*matches = NULL; - -xx = dbiCopen(dbi, dbiTxnid(dbi), dbcursor, 0); - -k.data = (void *) keyp; -k.size = (UINT32_T) keylen; -if (k.data k.size == 0) k.size = (UINT32_T) strlen((char *)k.data); -if (k.data k.size == 0) k.size++; /* XXX / fixup. */ - -_flags = DB_SET; -while (1) { - union _dbswap * vp; - size_t nb; - - rc = dbiGet(dbi, dbcursor, k, v, _flags); - _flags = DB_NEXT_DUP; - - vp = v.data; - -
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c rpm/rpmio/ Makefile.am libr...
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: 26-Jun-2009 07:17:09 Branch: HEAD Handle: 2009062605170801 Added files: rpm/rpmio rpmbf.c rpmbf.h Modified files: rpm CHANGES rpm/rpmdb rpmdb.c rpm/rpmio Makefile.am librpmio.vers poptIO.c rpmio.c Log: - rpmbf: stub-in a Bloom filter. Summary: RevisionChanges Path 1.3033 +1 -0 rpm/CHANGES 1.307 +3 -48 rpm/rpmdb/rpmdb.c 1.232 +9 -7 rpm/rpmio/Makefile.am 2.126 +7 -0 rpm/rpmio/librpmio.vers 1.53+5 -0 rpm/rpmio/poptIO.c 2.1 +76 -0 rpm/rpmio/rpmbf.c 2.1 +173 -0 rpm/rpmio/rpmbf.h 1.198 +2 -0 rpm/rpmio/rpmio.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3032 -r1.3033 CHANGES --- rpm/CHANGES 25 Jun 2009 12:38:48 - 1.3032 +++ rpm/CHANGES 26 Jun 2009 05:17:08 - 1.3033 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmbf: stub-in a Bloom filter. - jbj: selinux: fix: disabler bit toggle sense was inverted. - jbj: js: add getters/setters to handle defvar() variables. - jbj: js: add methods and unit tests for the Aug class. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.306 -r1.307 rpmdb.c --- rpm/rpmdb/rpmdb.c 29 May 2009 22:11:36 - 1.306 +++ rpm/rpmdb/rpmdb.c 26 Jun 2009 05:17:09 - 1.307 @@ -15,6 +15,9 @@ #include rpmsq.h #include argv.h +#define _RPMBF_INTERNAL +#include rpmbf.h /* pbm_set macros */ + #include rpmtypes.h #define _RPMTAG_INTERNAL @@ -78,54 +81,6 @@ #define _DBI_PERMS 0644 #define _DBI_MAJOR -1 -/* Bit mask macros. */ -/*...@-exporttype@*/ -typedef unsigned int __pbm_bits; -/*...@=exporttype@*/ -#define __PBM_NBITS /*...@-sizeoftype@*/(8 * sizeof(__pbm_bits))/*...@=sizeoftype@*/ -#define __PBM_IX(d) ((d) / __PBM_NBITS) -#define __PBM_MASK(d)((__pbm_bits) 1 (((unsigned)(d)) % __PBM_NBITS)) -/*...@-exporttype@*/ -typedef struct { -__pbm_bits bits[1]; -} pbm_set; -/*...@=exporttype@*/ -#define __PBM_BITS(set) ((set)-bits) - -#define PBM_FREE(s) _free(s); -#define PBM_SET(d, s) (__PBM_BITS (s)[__PBM_IX (d)] |= __PBM_MASK (d)) -#define PBM_CLR(d, s) (__PBM_BITS (s)[__PBM_IX (d)] = ~__PBM_MASK (d)) -#define PBM_ISSET(d, s) ((__PBM_BITS (s)[__PBM_IX (d)] __PBM_MASK (d)) != 0) - -#define PBM_ALLOC(d)xcalloc(__PBM_IX (d) + 1, __PBM_NBITS/8) - -/** - * Reallocate a bit map. - * @retval spaddress of bit map pointer - * @retval odp no. of bits in map - * @param nd desired no. of bits - */ -/*...@unused@*/ -static inline pbm_set * PBM_REALLOC(pbm_set ** sp, int * odp, int nd) - /*...@modifies *sp, *odp @*/ -{ -int i, nb; - -if (nd (*odp)) { - nd *= 2; - nb = __PBM_IX(nd) + 1; -/*...@-unqualifiedtrans@*/ - *sp = xrealloc(*sp, nb * (__PBM_NBITS/8)); -/*...@=unqualifiedtrans@*/ - for (i = __PBM_IX(*odp) + 1; i nb; i++) - __PBM_BITS(*sp)[i] = 0; - *odp = nd; -} -/*...@-compdef -retalias -userelea...@*/ -return *sp; -/*...@=compdef =retalias =userelea...@*/ -} - /** * Convert hex to binary nibble. * @param c hex character @@ . patch -p0 '@@ .' Index: rpm/rpmio/Makefile.am $ cvs diff -u -r1.231 -r1.232 Makefile.am --- rpm/rpmio/Makefile.am 12 Jun 2009 19:04:34 - 1.231 +++ rpm/rpmio/Makefile.am 26 Jun 2009 05:17:09 - 1.232 @@ -66,11 +66,12 @@ argv.h ar.h cpio.h crc.h envvar.h fnmatch.h fts.h glob.h iosm.h \ md2.h md4.h rmd128.h rmd160.h rmd256.h rmd320.h sha224.h \ salsa10.h salsa20.h tiger.h \ - poptIO.h rpmaug.h rpmbc.h rpmbz.h rpmdav.h rpmficl.h rpmgc.h rpmhash.h \ - rpmhook.h rpmio_internal.h rpmjs.h rpmjsio.h rpmkeyring.h rpmku.h \ - rpmlua.h rpmmg.h rpmnss.h rpmperl.h rpmpython.h rpmruby.h rpmsq.h \ - rpmsquirrel.h rpmssl.h rpmsyck.h rpmtcl.h rpmurl.h rpmuuid.h rpmxar.h \ - rpmz.h rpmzq.h tar.h ugid.h rpmio-stub.h + poptIO.h rpmaug.h rpmbc.h
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c rpmdb.h rpm/rpmio/ librpmio...
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: 30-May-2009 00:11:36 Branch: HEAD Handle: 2009052922113501 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c rpmdb.h rpm/rpmio librpmio.vers rpmio.h rpmrpc.c Log: - rpmio: wrap posix_fallocate(3) / fallocate(2) (for rpmdb creation). - eliminate useless rebuilddb legacy sanity check hysteria. Summary: RevisionChanges Path 1.3002 +2 -0 rpm/CHANGES 1.306 +1 -61 rpm/rpmdb/rpmdb.c 1.92+0 -1 rpm/rpmdb/rpmdb.h 2.119 +1 -0 rpm/rpmio/librpmio.vers 1.90+7 -0 rpm/rpmio/rpmio.h 2.87+125 -0 rpm/rpmio/rpmrpc.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3001 -r1.3002 CHANGES --- rpm/CHANGES 29 May 2009 19:04:20 - 1.3001 +++ rpm/CHANGES 29 May 2009 22:11:35 - 1.3002 @@ -1,5 +1,7 @@ 5.2b1 - 5.3a1 +- jbj: rpmio: wrap posix_fallocate(3) / fallocate(2) (for rpmdb creation). +- jbj: eliminate useless rebuilddb legacy sanity check hysteria. - jbj: display rebuilddb progress using ps(1) and top(1). - jbj: mark rebuilddb legacy hysteria for destruction. - jbj: add RPMTAG_SHA1HEADER to rpmdb pubkeys. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.305 -r1.306 rpmdb.c --- rpm/rpmdb/rpmdb.c 29 May 2009 19:04:21 - 1.305 +++ rpm/rpmdb/rpmdb.c 29 May 2009 22:11:36 - 1.306 @@ -62,8 +62,6 @@ /*...@unchecked@*/ static int _rebuildinprogress = 0; -/*...@unchecked@*/ -static int _db_filter_dups = 0; /* Use a path uniqifier in the upper 16 bits of tagNum? */ /* XXX Note: one cannot just choose a value, rpmdb tagNum's need fixing too */ @@ -1208,23 +1206,16 @@ rpmdb rpmdbNew(/*...@kept@*/ /*...@null@*/ const char * root, /*...@kept@*/ /*...@null@*/ const char * home, int mode, int perms, int flags) - /*...@globals _db_filter_dups @*/ - /*...@modifies _db_filter_dups @*/ + /*...@*/ { rpmdb db = rpmdbGetPool(_rpmdbPool); const char * epfx = _DB_ERRPFX; -static int oneshot = 0; /*...@-modfilesys@*/ /*...@-nullpass@*/ if (_rpmdb_debug) fprintf(stderr, == rpmdbNew(%s, %s, 0x%x, 0%o, 0x%x) db %p\n, root, home, mode, perms, flags, db); /*...@=modfilesys@*/ /*...@=nullpass@*/ -if (!oneshot) { - _db_filter_dups = rpmExpandNumeric(%{?_filterdbdups}); - oneshot = 1; -} - db-db_api = _DB_MAJOR; db-_dbi = NULL; @@ -1249,7 +1240,6 @@ db-db_export = rpmdbExportInfo; db-db_errpfx = rpmExpand( (epfx *epfx ? epfx : _DB_ERRPFX), NULL); db-db_remove_env = 0; -db-db_filter_dups = _db_filter_dups; dbiTagsInit(db-db_tags, db-db_ndbi); db-_dbi = xcalloc(db-db_ndbi, sizeof(*db-_dbi)); /*...@-globstate@*/ @@ -4241,56 +4231,6 @@ while ((h = rpmmiNext(mi)) != NULL) { -#if defined(SUPPORT_REBUILDDB_SANITY) - /* let's sanity check this record a bit, otherwise just skip it */ - if (!(headerIsEntry(h, RPMTAG_NAME) - headerIsEntry(h, RPMTAG_VERSION) - headerIsEntry(h, RPMTAG_RELEASE) - headerIsEntry(h, RPMTAG_BUILDTIME))) - { - rpmlog(RPMLOG_WARNING, - _(header #%u in the database is bad -- skipping.\n), - _RECNUM); - continue; - } - if (!headerIsEntry(h, RPMTAG_SOURCERPM) -headerIsEntry(h, RPMTAG_ARCH)) - { - rpmlog(RPMLOG_WARNING, - _(header #%u in the database is SRPM -- skipping.\n), - _RECNUM); - continue; - } -#endif - -#if defined(SUPPORT_REBUILDDB_FILTER) - /* Filter duplicate entries ? (bug in pre rpm-3.0.4) */ - if (_db_filter_dups || newdb-db_filter_dups) { - const char * name, * version, * release; - int skip = 0; - - (void) headerNEVRA(h, name, NULL, version, release, NULL); - - /*...@-shadow@*/ - { rpmmi mi; - mi = rpmmiInit(newdb, RPMTAG_NAME, name, 0); - (void) rpmmiAddPattern(mi, RPMTAG_VERSION, -
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c rpm/ rpmqv.c
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: 25-May-2009 18:48:21 Branch: HEAD Handle: 2009052516482100 Modified files: rpm CHANGES rpmqv.c rpm/rpmdb rpmdb.c Log: - fix: resuscitate --nodigest/--nosignature w --rebuilddb. Summary: RevisionChanges Path 1.2998 +1 -0 rpm/CHANGES 1.302 +12 -8 rpm/rpmdb/rpmdb.c 1.159 +6 -1 rpm/rpmqv.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2997 -r1.2998 CHANGES --- rpm/CHANGES 24 May 2009 23:30:27 - 1.2997 +++ rpm/CHANGES 25 May 2009 16:48:21 - 1.2998 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: fix: resuscitate --nodigest/--nosignature w --rebuilddb. - jbj: pick-up some orphan check-ins. - jbj: header: remove (unused) headerUsageCount. - jbj: header: fix: re-initialize headers from pool more carefully. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.301 -r1.302 rpmdb.c --- rpm/rpmdb/rpmdb.c 23 May 2009 15:48:44 - 1.301 +++ rpm/rpmdb/rpmdb.c 25 May 2009 16:48:21 - 1.302 @@ -460,9 +460,10 @@ static dbiIndexItem dbiIndexNewItem(unsigned int hdrNum, unsigned int tagNum) /*...@*/ { -dbiIndexItem rec = xcalloc(1, sizeof(*rec)); +dbiIndexItem rec = xmalloc(sizeof(*rec)); rec-hdrNum = hdrNum; rec-tagNum = tagNum; +rec-fpNum = 0; return rec; } @@ -1966,6 +1967,7 @@ return 0; if (dbi mi-mi_dbc mi-mi_modified mi-mi_prevoffset) { + int chkhdr = (pgpDigVSFlags _RPMVSF_NOHEADER) ^ _RPMVSF_NOHEADER; DBT k = DBT_INIT; DBT v = DBT_INIT; rpmRC rpmrc = RPMRC_NOTFOUND; @@ -1979,7 +1981,7 @@ } /* Check header digest/signature on blob export (if requested). */ - if (mi-mi_ts) { + if (mi-mi_ts chkhdr) { const char * msg = NULL; int lvl; @@ -2506,6 +2508,7 @@ union _dbswap mi_offset; void * uh; size_t uhlen; +int chkhdr = (pgpDigVSFlags _RPMVSF_NOHEADER) ^ _RPMVSF_NOHEADER; int map; int rc; int xx; @@ -2584,7 +2587,7 @@ xx = miFreeHeader(mi, dbi); /* Check header digest/signature once (if requested). */ -if (mi-mi_ts) { +if (mi-mi_ts chkhdr) { rpmRC rpmrc = RPMRC_NOTFOUND; /* Don't bother re-checking a previously read header. */ @@ -3423,6 +3426,7 @@ if (hdrNum) {dbiIndexItem rec = dbiIndexNewItem(hdrNum, 0); + int chkhdr = (pgpDigVSFlags _RPMVSF_NOHEADER) ^ _RPMVSF_NOHEADER; /* Save the header instance. */ (void) headerSetInstance(h, hdrNum); @@ -3478,7 +3482,7 @@ } /* Check header digest/signature on blob export. */ - if (ts) { + if (ts chkhdr !(h-flags HEADERFLAG_RDONLY)) { const char * msg = NULL; int lvl; @@ -3536,9 +3540,9 @@ const char * s = he-p.str; char * t; he-c = 1; - he-p.argv = xcalloc(1, sizeof(*he-p.argv)+strlen(s)+1); + he-p.argv = xmalloc(sizeof(*he-p.argv)+strlen(s)+1); he-p.argv[0] = t = (char *) he-p.argv[1]; - (void) strcpy(t, s); + t = stpcpy(t, s); s = _free(s); } @@ -3626,7 +3630,7 @@ unsigned j; assert((dlen 1) == 0); dlen /= 2; - bin = t = xcalloc(1, dlen); + bin = t = xmalloc(dlen); /*...@-type@*/ for (j = 0; j (unsigned) dlen; j++, t++, s += 2) *t = (rpmuint8_t) (nibble(s[0]) 4) | nibble(s[1]); @@ -3638,7 +3642,7 @@ /* Extract the pubkey id from the base64 blob. */ if (dbi-dbi_rpmtag == RPMTAG_PUBKEYS) { int nbin; - bin = xcalloc(1, 32); + bin = xmalloc(32); nbin = pgpExtractPubkeyFingerprint(he-p.argv[i], bin); if (nbin = 0) /*...@innercontinue@*/ continue; @@ . patch -p0 '@@ .' Index: rpm/rpmqv.c
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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-May-2009 00:31:28 Branch: HEAD Handle: 2009051322312700 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmmi: split out a pool destructor (prior to using). Summary: RevisionChanges Path 1.2986 +1 -0 rpm/CHANGES 1.293 +55 -48 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2985 -r1.2986 CHANGES --- rpm/CHANGES 13 May 2009 19:44:19 - 1.2985 +++ rpm/CHANGES 13 May 2009 22:31:27 - 1.2986 @@ -1,5 +1,6 @@ 5.2b1 - 5.3a1 +- jbj: rpmmi: split out a pool destructor (prior to using). - jbj: mire: handle items from _mirePool like all other pools. - bero: adjust find-debuginfo.sh to new location of debugedit - jbj: rpmds: dereference/flush global items earlier, before pool teardown. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.292 -r1.293 rpmdb.c --- rpm/rpmdb/rpmdb.c 24 Apr 2009 17:29:41 - 1.292 +++ rpm/rpmdb/rpmdb.c 13 May 2009 22:31:27 - 1.293 @@ -1926,14 +1926,66 @@ /*...@=nullstate@*/ } -rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi) +static void rpmdbFiniIterator(void * _mi) /*...@globals rpmmiRock @*/ - /*...@modifies rpmmiRock @*/ + /*...@modifies _mi, rpmmiRock @*/ { +rpmdbMatchIterator mi = _mi; rpmdbMatchIterator * prev, next; dbiIndex dbi; int xx; +prev = rpmmiRock; +while ((next = *prev) != NULL next != mi) + prev = next-mi_next; +if (next) { +/*...@i@*/ *prev = next-mi_next; + next-mi_next = NULL; +} + +dbi = dbiOpen(mi-mi_db, RPMDBI_PACKAGES, 0); +assert(dbi != NULL); + +xx = miFreeHeader(mi, dbi); + +if (mi-mi_dbc) + xx = dbiCclose(dbi, mi-mi_dbc, 0); +mi-mi_dbc = NULL; + +mi-mi_re = mireFreeAll(mi-mi_re, mi-mi_nre); + +mi-mi_set = dbiFreeIndexSet(mi-mi_set); +/* XXX rpmdbUnlink will not do. + * NB: must be called after rpmmiRock cleanup. + */ +(void) rpmdbClose(mi-mi_db); +mi-mi_db = NULL; +} + +/*...@unchecked@*/ +int _rpmmi_debug = 0; + +/*...@unchecked@*/ /*...@only@*/ /*...@null@*/ +rpmioPool _rpmmiPool; + +static rpmdbMatchIterator rpmmiGetPool(/*...@null@*/ rpmioPool pool) + /*...@globals _rpmdbPool, fileSystem @*/ + /*...@modifies pool, _rpmdbPool, fileSystem @*/ +{ +rpmdbMatchIterator mi; + +if (_rpmmiPool == NULL) { + _rpmmiPool = rpmioNewPool(mi, sizeof(*mi), -1, _rpmmi_debug, + NULL, NULL, NULL); + pool = _rpmmiPool; +} +return (rpmdbMatchIterator) rpmioGetPool(pool, sizeof(*mi)); +} + +rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi) + /*...@globals rpmmiRock @*/ + /*...@modifies rpmmiRock @*/ +{ if (mi == NULL) return NULL; @@ -1944,32 +1996,7 @@ /*...@-usereleased@*/ if (yarnPeekLock(mi-_item.use) = 1L) { - - prev = rpmmiRock; - while ((next = *prev) != NULL next != mi) - prev = next-mi_next; - if (next) { -/*...@i@*/ *prev = next-mi_next; - next-mi_next = NULL; - } - - dbi = dbiOpen(mi-mi_db, RPMDBI_PACKAGES, 0); -assert(dbi != NULL); - - xx = miFreeHeader(mi, dbi); - - if (mi-mi_dbc) - xx = dbiCclose(dbi, mi-mi_dbc, 0); - mi-mi_dbc = NULL; - - mi-mi_re = mireFreeAll(mi-mi_re, mi-mi_nre); - - mi-mi_set = dbiFreeIndexSet(mi-mi_set); - /* XXX rpmdbUnlink will not do. - * NB: must be called after rpmmiRock cleanup. */ - (void) rpmdbClose(mi-mi_db); - mi-mi_db = NULL; - + rpmdbFiniIterator(mi); mi = (rpmdbMatchIterator)rpmioPutPool((rpmioItem)mi); } else yarnTwist(mi-_item.use, BY, -1); @@ -2656,26 +2683,6 @@ return 0; } -/*...@unchecked@*/ -int _rpmmi_debug = 0; - -/*...@unchecked@*/ /*...@only@*/ /*...@null@*/ -rpmioPool _rpmmiPool; - -static rpmdbMatchIterator rpmmiGetPool(/*...@null@*/ rpmioPool pool) - /*...@globals _rpmdbPool, fileSystem @*/ - /*...@modifies pool, _rpmdbPool, fileSystem @*/ -{ -rpmdbMatchIterator mi; - -if (_rpmmiPool == NULL) { - _rpmmiPool =
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c rpm/rpmio/ librpmio.vers mi...
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: 30-Mar-2009 00:42:25 Branch: HEAD Handle: 2009032922422301 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c rpm/rpmio librpmio.vers mire.c mire.h rpmio.c Log: - yarn: convert mire to usage mutex with refcounts (unifying array - element mutexes by copying use/pool pointers throughout the array). Summary: RevisionChanges Path 1.2887 +3 -0 rpm/CHANGES 1.289 +14 -8 rpm/rpmdb/rpmdb.c 2.102 +2 -0 rpm/rpmio/librpmio.vers 1.49+49 -36 rpm/rpmio/mire.c 1.29+17 -1 rpm/rpmio/mire.h 1.177 +2 -0 rpm/rpmio/rpmio.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2886 -r1.2887 CHANGES --- rpm/CHANGES 29 Mar 2009 21:44:05 - 1.2886 +++ rpm/CHANGES 29 Mar 2009 22:42:23 - 1.2887 @@ -1,5 +1,8 @@ 5.2a3 - 5.2a4: +- jbj: yarn: convert mire to usage mutex with refcounts + (unifying array - element mutexes by copying use/pool + pointers throughout the array). - jbj: rpmku: rework rpmiob handling to avoid extra malloc's. - jbj: rpmiob: fix: add a newref in rpmiobNew. - jbj: yarn: convert rpmiob to usage mutex with refcounts. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.288 -r1.289 rpmdb.c --- rpm/rpmdb/rpmdb.c 29 Mar 2009 20:59:13 - 1.288 +++ rpm/rpmdb/rpmdb.c 29 Mar 2009 22:42:24 - 1.289 @@ -1932,7 +1932,6 @@ rpmdbMatchIterator * prev, next; dbiIndex dbi; int xx; -int i; if (mi == NULL) return NULL; @@ -1955,10 +1954,7 @@ xx = dbiCclose(dbi, mi-mi_dbc, 0); mi-mi_dbc = NULL; -if (mi-mi_re != NULL) -for (i = 0; i mi-mi_nre; i++) - xx = mireClean(mi-mi_re + i); -mi-mi_re = _free(mi-mi_re); +mi-mi_re = mireFreeAll(mi-mi_re, mi-mi_nre); mi-mi_set = dbiFreeIndexSet(mi-mi_set); /* XXX rpmdbUnlink will not do. @@ -2144,8 +2140,19 @@ if (rc) goto exit; -mi-mi_re = xrealloc(mi-mi_re, (mi-mi_nre + 1) * sizeof(*mi-mi_re)); -mire = mi-mi_re + mi-mi_nre; +if (mi-mi_re == NULL) { + mi-mi_re = mireGetPool(_mirePool); + mire = mi-mi_re; +} else { + void *use = mi-mi_re-_item.use; + void *pool = mi-mi_re-_item.pool; + mi-mi_re = xrealloc(mi-mi_re, (mi-mi_nre + 1) * sizeof(*mi-mi_re)); + mire = mi-mi_re + mi-mi_nre; + memset(mire, 0, sizeof(*mire)); + /* XXX ensure no segfault, copy the use/pool from 1st item. */ + mire-_item.use = use; + mire-_item.pool = pool; +} mi-mi_nre++; mire-mode = nmire-mode; @@ -2159,7 +2166,6 @@ /* XXX todo: permit PCRE patterns to be used. */ mire-offsets = NULL; mire-noffsets = 0; -mire-nrefs = 0; if (mi-mi_nre 1) qsort(mi-mi_re, mi-mi_nre, sizeof(*mi-mi_re), mireCmp); @@ . patch -p0 '@@ .' Index: rpm/rpmio/librpmio.vers $ cvs diff -u -r2.101 -r2.102 librpmio.vers --- rpm/rpmio/librpmio.vers 29 Mar 2009 18:42:22 - 2.101 +++ rpm/rpmio/librpmio.vers 29 Mar 2009 22:42:24 - 2.102 @@ -165,12 +165,14 @@ lzdio; max_macro_depth; _mire_debug; +_mirePool; mireAppend; mireApply; mireClean; _mireEL; mireFree; mireFreeAll; +mireGetPool; _mireGLOBoptions; mireLoadPatterns; mireNew; @@ . patch -p0 '@@ .' Index: rpm/rpmio/mire.c $ cvs diff -u -r1.48 -r1.49 mire.c --- rpm/rpmio/mire.c 2 Mar 2009 00:45:55 - 1.48 +++ rpm/rpmio/mire.c 29 Mar 2009 22:42:24 - 1.49 @@ -4,6 +4,7 @@ #include system.h #include rpmiotypes.h +#include rpmio.h #include rpmlog.h #define _MIRE_INTERNAL @@ -68,44 +69,41 @@ miRE XmireUnlink(miRE mire, const char * msg, const char * fn, unsigned ln) { -if (mire == NULL) return NULL; - -/*...@-modfilesys@*/ -if (_mire_debug msg != NULL) -fprintf(stderr, -- mire %p -- %d %s at %s:%u\n, mire, mire-nrefs, msg, fn, ln); -/*...@=modfilesys@*/ -
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 24-Mar-2009 20:01:00 Branch: HEAD Handle: 2009032419005900 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpmdb: don't bother with the silly structure assignment initialize. Summary: RevisionChanges Path 1.2868 +1 -0 rpm/CHANGES 1.283 +14 -30 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2867 -r1.2868 CHANGES --- rpm/CHANGES 24 Mar 2009 17:52:32 - 1.2867 +++ rpm/CHANGES 24 Mar 2009 19:00:59 - 1.2868 @@ -1,5 +1,6 @@ 5.2a3 - 5.2a4: +- jbj: rpmdb: don't bother with the silly structure assignment initialize. - jbj: yarn: wire up rpmdsFini, mark rpmdsFree for destruction. - jbj: yarn: wire up rpmtsFini, mark rpmtsFree for destruction. - jbj: yarn: for now, don't assert fail, just print FIXME. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.282 -r1.283 rpmdb.c --- rpm/rpmdb/rpmdb.c 20 Mar 2009 21:24:49 - 1.282 +++ rpm/rpmdb/rpmdb.c 24 Mar 2009 19:00:59 - 1.283 @@ -918,23 +918,6 @@ return 0; } -#define _DB_ROOT/ -#define _DB_HOME%{?_dbpath} -#define _DB_FLAGS 0 -#define _DB_MODE 0 -#define _DB_PERMS0644 - -#define _DB_MAJOR-1 -#define _DB_ERRPFX rpmdb - -/*...@-fullinitblock@*/ -/*...@observer@*/ /*...@unchecked@*/ -static struct rpmdb_s dbTemplate = { { NULL, NULL}, -_DB_ROOT,_DB_HOME, _DB_FLAGS, _DB_MODE, _DB_PERMS, -_DB_MAJOR, _DB_ERRPFX -}; -/*...@=fullinitblock@*/ - /*...@unchecked@*/ /*...@null@*/ rpmioPool _rpmdbPool; @@ -1167,8 +1150,16 @@ return fn; } +#define _DB_ROOT/ +#define _DB_HOME%{?_dbpath} +#define _DB_FLAGS 0 +#define _DB_MODE 0 +#define _DB_PERMS0644 + +#define _DB_MAJOR-1 +#define _DB_ERRPFX rpmdb + /*...@-exportheader@*/ -/*...@-globs -mods -incond...@*/ /* FIX: dbTemplate structure assignment */ /*...@only@*/ /*...@null@*/ rpmdb rpmdbNew(/*...@kept@*/ /*...@null@*/ const char * root, /*...@kept@*/ /*...@null@*/ const char * home, @@ -1190,22 +1181,16 @@ oneshot = 1; } -{void * use = db-_item.use; - void * pool = db-_item.pool; - /*...@-assignexpose@*/ - *db = dbTemplate; /* structure assignment */ - /*...@=assignexpose@*/ - db-_item.pool = pool; - db-_item.use = use; -} +db-db_api = _DB_MAJOR; +db-db_errpfx = _DB_ERRPFX; db-_dbi = NULL; if (!(perms 0600)) perms = 0644; /* XXX sanity */ -if (mode = 0) db-db_mode = mode; -if (perms = 0) db-db_perms = perms; -if (flags = 0) db-db_flags = flags; +db-db_mode = (mode = 0) ? mode : _DB_MODE; +db-db_perms = (perms = 0) ? perms : _DB_PERMS; +db-db_flags = (flags = 0) ? flags : _DB_FLAGS; db-db_root = rpmdbURIPath( (root *root ? root : _DB_ROOT) ); db-db_home = rpmdbURIPath( (home *home ? home : _DB_HOME) ); @@ -1228,7 +1213,6 @@ return rpmdbLink(db, rpmdbCreate); /*...@=globstate@*/ } -/*...@=globs =mods =incond...@*/ /*...@=exportheader@*/ /*...@-exportheader@*/ @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c rpm/rpmio/ librpmio.vers rp...
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: 20-Mar-2009 22:24:50 Branch: HEAD Handle: 2009032021244900 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c rpm/rpmio librpmio.vers rpmio.c rpmio.h rpmmalloc.c url.c Log: - yarn: wire up fdFini, eliminate XfdFree. Summary: RevisionChanges Path 1.2854 +1 -0 rpm/CHANGES 1.282 +1 -1 rpm/rpmdb/rpmdb.c 2.98+1 -1 rpm/rpmio/librpmio.vers 1.171 +33 -55 rpm/rpmio/rpmio.c 1.87+16 -10 rpm/rpmio/rpmio.h 1.19+28 -4 rpm/rpmio/rpmmalloc.c 1.67+11 -8 rpm/rpmio/url.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2853 -r1.2854 CHANGES --- rpm/CHANGES 20 Mar 2009 18:28:33 - 1.2853 +++ rpm/CHANGES 20 Mar 2009 21:24:49 - 1.2854 @@ -1,5 +1,6 @@ 5.2a3 - 5.2a4: +- jbj: yarn: wire up fdFini, eliminate XfdFree. - jbj: url: fix: u-use clobbers the lock from the pool. - jbj: rpmds: fix: rpmdsDup needs to go through rpmdsGetPool() too. - jbj: yarn: move rpmioItem to rpmiotypes.h @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.281 -r1.282 rpmdb.c --- rpm/rpmdb/rpmdb.c 20 Mar 2009 18:28:34 - 1.281 +++ rpm/rpmdb/rpmdb.c 20 Mar 2009 21:24:49 - 1.282 @@ -1190,7 +1190,7 @@ oneshot = 1; } -{yarnLock use = db-_item.use; +{void * use = db-_item.use; void * pool = db-_item.pool; /*...@-assignexpose@*/ *db = dbTemplate; /* structure assignment */ @@ . patch -p0 '@@ .' Index: rpm/rpmio/librpmio.vers $ cvs diff -u -r2.97 -r2.98 librpmio.vers --- rpm/rpmio/librpmio.vers 20 Mar 2009 15:05:13 - 2.97 +++ rpm/rpmio/librpmio.vers 20 Mar 2009 21:24:49 - 2.98 @@ -305,6 +305,7 @@ rpmioDigestPoptTable; rpmioFini; rpmioFreePool; +rpmioFreePoolItem; rpmioFtsOpts; rpmioFtsPoptTable; rpmioGetPool; @@ -501,7 +502,6 @@ xstrcasecmp; xstrncasecmp; xstrtolocale; -XfdFree; XfdNew; XurlFree; XurlNew; @@ . patch -p0 '@@ .' Index: rpm/rpmio/rpmio.c $ cvs diff -u -r1.170 -r1.171 rpmio.c --- rpm/rpmio/rpmio.c 20 Mar 2009 18:28:35 - 1.170 +++ rpm/rpmio/rpmio.c 20 Mar 2009 21:24:49 - 1.171 @@ -168,23 +168,6 @@ /*...@unchecked@*/ int _dav_debug = 0; - -/*...@unchecked@*/ /*...@null@*/ -rpmioPool _fdPool; - -static FD_t fdGetPool(/*...@null@*/ rpmioPool pool) - /*...@modifies pool @*/ -{ -FD_t fd; - -if (_fdPool == NULL) { - _fdPool = rpmioNewPool(fd, sizeof(*fd), -1, _rpmio_debug, - (const char * (*)(void *))fdbg, NULL, NULL); - pool = _fdPool; -} -return (FD_t) rpmioGetPool(pool, sizeof(*fd)); -} - /* === */ const char * fdbg(FD_t fd) @@ -285,53 +268,48 @@ /* === */ -/*...@-incondefs@*/ -/*...@null@*/ -FD_t XfdFree( /*...@killref@*/ FD_t fd, const char *msg, - const char *fn, unsigned ln) - /*...@modifies fd @*/ +static void fdFini(void * _fd) + /*...@modifies _fd @*/ { - int i; +FD_t fd = _fd; +int i; -#ifdef NOTYET assert(fd != NULL); -#else -if (fd == NULL) -DBGREFS(0, (stderr, -- fd %p -- %ld %s at %s:%u\n, fd, -9L, msg, fn, ln)); -#endif -FDSANE(fd); -if (fd) { - yarnLock use = fd-_item.use; - yarnPossess(use); -DBGREFS(fd, (stderr, -- fd %p -- %ld %s at %s:%u %s\n, fd, yarnPeekLock(use), msg, fn, ln, fdbg(fd))); - if (yarnPeekLock(use) == 1L) { - fd-opath = _free(fd-opath); - fd-stats = _free(fd-stats); - for (i = fd-ndigests - 1; i = 0; i--) { - FDDIGEST_t fddig = fd-digests + i; - if (fddig-hashctx == NULL) - continue; - (void) rpmDigestFinal(fddig-hashctx, NULL, NULL, 0); - fddig-hashctx = NULL; - } - fd-ndigests =
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c rpm/rpmio/ rpmsq.c rpmz.c
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: 19-Feb-2009 16:27:07 Branch: HEAD Handle: 2009021915270601 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c rpm/rpmio rpmsq.c rpmz.c Log: - jbj: rpmz: stub in signal handling. Summary: RevisionChanges Path 1.2778 +1 -0 rpm/CHANGES 1.278 +4 -0 rpm/rpmdb/rpmdb.c 1.41+15 -3 rpm/rpmio/rpmsq.c 1.11+120 -2 rpm/rpmio/rpmz.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2777 -r1.2778 CHANGES --- rpm/CHANGES 17 Feb 2009 19:54:32 - 1.2777 +++ rpm/CHANGES 19 Feb 2009 15:27:06 - 1.2778 @@ -1,5 +1,6 @@ 5.2a2 - 5.2a3: +- jbj: rpmz: stub in signal handling. - jbj: rpmz: handle gzip/bzip2/xz/lzma compression in 1 executable. - proyvind: create %mipsel and also add more generations to the mips macros. - jbj: fix: avoid the assertion failure w LZMA lzdio by upgrading to XZ. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.277 -r1.278 rpmdb.c --- rpm/rpmdb/rpmdb.c 19 Dec 2008 02:47:09 - 1.277 +++ rpm/rpmdb/rpmdb.c 19 Feb 2009 15:27:07 - 1.278 @@ -766,6 +766,10 @@ || sigismember(rpmsqCaught, SIGHUP) || sigismember(rpmsqCaught, SIGTERM) || sigismember(rpmsqCaught, SIGPIPE) +#ifdef NOTYET /* XXX todo++ */ + || sigismember(rpmsqCaught, SIGXCPU) + || sigismember(rpmsqCaught, SIGXFSZ) +#endif || terminate) terminating = 1; @@ . patch -p0 '@@ .' Index: rpm/rpmio/rpmsq.c $ cvs diff -u -r1.40 -r1.41 rpmsq.c --- rpm/rpmio/rpmsq.c 11 Dec 2008 21:55:14 - 1.40 +++ rpm/rpmio/rpmsq.c 19 Feb 2009 15:27:07 - 1.41 @@ -366,11 +366,23 @@ { SIGCHLD, rpmsqAction }, #define rpmsigTbl_sigchld (rpmsigTbl[2]) { SIGHUP,rpmsqAction }, -#define rpmsigTbl_sighup(rpmsigTbl[3]) +#define rpmsigTbl_sighup(rpmsigTbl[3]) /* XXX unused */ { SIGTERM, rpmsqAction }, -#define rpmsigTbl_sigterm (rpmsigTbl[4]) +#define rpmsigTbl_sigterm (rpmsigTbl[4]) /* XXX unused */ { SIGPIPE, rpmsqAction }, -#define rpmsigTbl_sigpipe (rpmsigTbl[5]) +#define rpmsigTbl_sigpipe (rpmsigTbl[5]) /* XXX unused */ + +#ifdef NOTYET /* XXX todo++ */ +#if defined(SIGXCPU) +{ SIGXCPU, rpmsqAction }, +#define rpmsigTbl_sigxcpu (rpmsigTbl[6]) /* XXX unused */ +#endif +#if defined(SIGXFSZ) +{ SIGXFSZ, rpmsqAction }, +#define rpmsigTbl_sigxfsz (rpmsigTbl[7]) /* XXX unused */ +#endif +#endif + { -1,NULL }, }; /*...@=fullinitblock@*/ @@ . patch -p0 '@@ .' Index: rpm/rpmio/rpmz.c $ cvs diff -u -r1.10 -r1.11 rpmz.c --- rpm/rpmio/rpmz.c 18 Feb 2009 09:37:36 - 1.10 +++ rpm/rpmio/rpmz.c 19 Feb 2009 15:27:07 - 1.11 @@ -20,9 +20,11 @@ #include system.h +#include lzma.h + #include rpmio.h +#include rpmsq.h #include poptIO.h -#include lzma.h #include debug.h @@ -584,6 +586,118 @@ } /*==*/ +/*...@unchecked@*/ +static int signals_init_count; + +static void signals_init(void) + /*...@*/ +{ +int xx; + +if (signals_init_count++ == 0) { + xx = rpmsqEnable(SIGHUP, NULL); + xx = rpmsqEnable(SIGINT, NULL); + xx = rpmsqEnable(SIGTERM, NULL); + xx = rpmsqEnable(SIGQUIT, NULL); + xx = rpmsqEnable(SIGPIPE, NULL); + xx = rpmsqEnable(SIGXCPU, NULL); + xx = rpmsqEnable(SIGXFSZ, NULL); +} +} + +static void signals_fini(void) + /*...@*/ +{ +int xx; + +if (--signals_init_count == 0) { + xx = rpmsqEnable(-SIGHUP, NULL); + xx = rpmsqEnable(-SIGINT, NULL); + xx = rpmsqEnable(-SIGTERM,NULL); + xx = rpmsqEnable(-SIGQUIT,NULL); + xx = rpmsqEnable(-SIGPIPE,NULL); + xx = rpmsqEnable(-SIGXCPU,NULL); +
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Alexey Tourbin Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 18-Aug-2008 18:56:55 Branch: HEAD Handle: 2008081816565500 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: rpmdb.c: enable/disable rpmsq signal handlers with respect to rpmdbRock Summary: RevisionChanges Path 1.2523 +1 -0 rpm/CHANGES 1.264 +30 -16 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2522 -r1.2523 CHANGES --- rpm/CHANGES 17 Aug 2008 20:43:58 - 1.2522 +++ rpm/CHANGES 18 Aug 2008 16:56:55 - 1.2523 @@ -1,5 +1,6 @@ 5.1.0 - 5.2a0: +- at: rpmdb.c: enable/disable rpmsq signal handlers with respect to rpmdbRock - jbj: WR: run-time discovered configuration goopiness, take 1. - jbj: WR: rely on PATH to find pkg-config. - jbj: WR: don't spew error messages with internal lua shadow module. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.263 -r1.264 rpmdb.c --- rpm/rpmdb/rpmdb.c 18 Aug 2008 06:16:08 - 1.263 +++ rpm/rpmdb/rpmdb.c 18 Aug 2008 16:56:55 - 1.264 @@ -1017,13 +1017,13 @@ int rc = 0; if (db == NULL) - goto exit; + return rc; (void) rpmdbUnlink(db, rpmdbClose); /[EMAIL PROTECTED]@*/ if (db-nrefs 0) - goto exit; + return rc; if (db-_dbi) for (dbix = db-db_ndbi; dbix;) { @@ -1055,15 +1055,20 @@ } /[EMAIL PROTECTED]@*/ +if (rpmdbRock == NULL rpmmiRock == NULL) { + /* Last close uninstalls special signal handling. */ + (void) rpmsqEnable(-SIGHUP, NULL); + (void) rpmsqEnable(-SIGINT, NULL); + (void) rpmsqEnable(-SIGTERM,NULL); + (void) rpmsqEnable(-SIGQUIT,NULL); + (void) rpmsqEnable(-SIGPIPE,NULL); + /* Pending signals strike here. */ + (void) rpmdbCheckSignals(); +} + /[EMAIL PROTECTED]@*/ db = _free(db); /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ -exit: -(void) rpmsqEnable(-SIGHUP, NULL); -(void) rpmsqEnable(-SIGINT, NULL); -(void) rpmsqEnable(-SIGTERM,NULL); -(void) rpmsqEnable(-SIGQUIT,NULL); -(void) rpmsqEnable(-SIGPIPE,NULL); return rc; } /[EMAIL PROTECTED]@*/ @@ -1229,11 +1234,19 @@ if (db == NULL) return 1; -(void) rpmsqEnable(SIGHUP, NULL); -(void) rpmsqEnable(SIGINT, NULL); -(void) rpmsqEnable(SIGTERM, NULL); -(void) rpmsqEnable(SIGQUIT, NULL); -(void) rpmsqEnable(SIGPIPE, NULL); +if (rpmdbRock == NULL rpmmiRock == NULL) { + /* First open installs special signal handling. */ + (void) rpmsqEnable(SIGHUP, NULL); + (void) rpmsqEnable(SIGINT, NULL); + (void) rpmsqEnable(SIGTERM, NULL); + (void) rpmsqEnable(SIGQUIT, NULL); + (void) rpmsqEnable(SIGPIPE, NULL); +} + +/[EMAIL PROTECTED] [EMAIL PROTECTED]/ +/[EMAIL PROTECTED]@*/db-db_next = rpmdbRock; + rpmdbRock = db; +/[EMAIL PROTECTED] [EMAIL PROTECTED]/ db-db_api = _dbapi; @@ -1289,8 +1302,6 @@ xx = rpmdbClose(db); else { /[EMAIL PROTECTED] [EMAIL PROTECTED]/ -/[EMAIL PROTECTED]@*/db-db_next = rpmdbRock; - rpmdbRock = db; /[EMAIL PROTECTED]@*/*dbp = db; /[EMAIL PROTECTED] [EMAIL PROTECTED]/ } @@ -1962,7 +1973,10 @@ mi-mi_set = dbiFreeIndexSet(mi-mi_set); mi-mi_keyp = _free(mi-mi_keyp); -mi-mi_db = rpmdbUnlink(mi-mi_db, matchIterator); +/* XXX rpmdbUnlink will not do. + * NB: must be called after rpmmiRock cleanup. */ +(void) rpmdbClose(mi-mi_db); +mi-mi_db = NULL; mi = _free(mi); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 09-May-2008 15:11:26 Branch: HEAD Handle: 2008050913112501 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpm.org: Restore rpmdb selinux contexts to default after rebuild (#442149) . Summary: RevisionChanges Path 1.2322 +1 -0 rpm/CHANGES 1.247 +13 -0 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2321 -r1.2322 CHANGES --- rpm/CHANGES 7 May 2008 18:39:17 - 1.2321 +++ rpm/CHANGES 9 May 2008 13:11:25 - 1.2322 @@ -1,5 +1,6 @@ 5.1.0 - 5.2a0: +- rpm.org: Restore rpmdb selinux contexts to default after rebuild (#442149). - jbj: tests: coverage results at http://wraptastic.org/pub/jbj/rpm-lcov. - jbj: tests: add devtool-sanity (and other) tests. - jbj: rpmio: add additional tests. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.246 -r1.247 rpmdb.c --- rpm/rpmdb/rpmdb.c 23 Mar 2008 15:33:12 - 1.246 +++ rpm/rpmdb/rpmdb.c 9 May 2008 13:11:26 - 1.247 @@ -3827,6 +3827,7 @@ const char * ofn, * nfn; int rc = 0; int xx; +int selinux = is_selinux_enabled() (matchpathcon_init(NULL) != -1); switch (_olddbapi) { default: @@ -3877,6 +3878,8 @@ rc = 1; goto bottom; } + + /* Restore uid/gid/mode/mtime/security context if possible. */ xx = Chown(nfn, nst-st_uid, nst-st_gid); xx = Chmod(nfn, (nst-st_mode 0)); { struct utimbuf stamp; @@ -3884,6 +3887,14 @@ stamp.modtime = nst-st_mtime; xx = Utime(nfn, stamp); } + if (selinux) { + security_context_t scon = NULL; + if (matchpathcon(nfn, nst-st_mode, scon) != -1) + xx = setfilecon(nfn, scon); + if (scon != NULL) + freecon(scon); + } + bottom: ofn = _free(ofn); nfn = _free(nfn); @@ -3914,6 +3925,8 @@ case 0: break; } +if (selinux) + matchpathcon_fini(); return rc; } @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 09-May-2008 15:17:43 Branch: HEAD Handle: 2008050913174300 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpm.org: Mask signals while moving rebuilt rpmdb into place. Summary: RevisionChanges Path 1.2323 +1 -0 rpm/CHANGES 1.248 +4 -0 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2322 -r1.2323 CHANGES --- rpm/CHANGES 9 May 2008 13:11:25 - 1.2322 +++ rpm/CHANGES 9 May 2008 13:17:43 - 1.2323 @@ -1,5 +1,6 @@ 5.1.0 - 5.2a0: +- rpm.org: Mask signals while moving rebuilt rpmdb into place. - rpm.org: Restore rpmdb selinux contexts to default after rebuild (#442149). - jbj: tests: coverage results at http://wraptastic.org/pub/jbj/rpm-lcov. - jbj: tests: add devtool-sanity (and other) tests. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.247 -r1.248 rpmdb.c --- rpm/rpmdb/rpmdb.c 9 May 2008 13:11:26 - 1.247 +++ rpm/rpmdb/rpmdb.c 9 May 2008 13:17:43 - 1.248 @@ -3828,7 +3828,9 @@ int rc = 0; int xx; int selinux = is_selinux_enabled() (matchpathcon_init(NULL) != -1); +sigset_t sigMask; +blockSignals(NULL, sigMask); switch (_olddbapi) { default: case 4: @@ -3925,6 +3927,8 @@ case 0: break; } +unblockSignals(NULL, sigMask); + if (selinux) matchpathcon_fini(); return rc; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 09-May-2008 15:28:10 Branch: HEAD Handle: 2008050913281000 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - jbj: fix: is_selinux_enbled() 1 is the correct test. Summary: RevisionChanges Path 1.2325 +1 -0 rpm/CHANGES 1.249 +1 -1 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2324 -r1.2325 CHANGES --- rpm/CHANGES 9 May 2008 13:22:29 - 1.2324 +++ rpm/CHANGES 9 May 2008 13:28:10 - 1.2325 @@ -1,5 +1,6 @@ 5.1.0 - 5.2a0: +- jbj: fix: is_selinux_enbled() 1 is the correct test. - rpm.org: Avoid entirely unnecessary static temp string buffer. - rpm.org: Mask signals while moving rebuilt rpmdb into place. - rpm.org: Restore rpmdb selinux contexts to default after rebuild (#442149). @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.248 -r1.249 rpmdb.c --- rpm/rpmdb/rpmdb.c 9 May 2008 13:17:43 - 1.248 +++ rpm/rpmdb/rpmdb.c 9 May 2008 13:28:10 - 1.249 @@ -3827,7 +3827,7 @@ const char * ofn, * nfn; int rc = 0; int xx; -int selinux = is_selinux_enabled() (matchpathcon_init(NULL) != -1); +int selinux = is_selinux_enabled() 0 (matchpathcon_init(NULL) != -1); sigset_t sigMask; blockSignals(NULL, sigMask); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c sqlite.c
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: 12-Mar-2008 17:50:13 Branch: HEAD Handle: 2008031216501200 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c sqlite.c Log: - jbj: QNX: retrofit u_int32_t typedef where needed. Summary: RevisionChanges Path 1.2244 +1 -0 rpm/CHANGES 1.242 +5 -0 rpm/rpmdb/rpmdb.c 1.30+5 -0 rpm/rpmdb/sqlite.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2243 -r1.2244 CHANGES --- rpm/CHANGES 12 Mar 2008 16:27:22 - 1.2243 +++ rpm/CHANGES 12 Mar 2008 16:50:12 - 1.2244 @@ -1,4 +1,5 @@ 5.0.0 - 5.1a1: +- jbj: QNX: retrofit u_int32_t typedef where needed. - jbj: add random arch name feelgood fluffiness (#432496). - jbj: prepare for Fedorable dependency loops (#437041). - rse: upgraded from GNU libtool 1.5.x to 2.2 @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.241 -r1.242 rpmdb.c --- rpm/rpmdb/rpmdb.c 10 Mar 2008 04:46:18 - 1.241 +++ rpm/rpmdb/rpmdb.c 12 Mar 2008 16:50:12 - 1.242 @@ -44,6 +44,11 @@ #define UINT32_Tuint32_t #endif +/* XXX retrofit the *BSD typedef for the deprived. */ +#if defined(__QNXNTO__)) +typedef u_int32_t uint32_t; +#endif + /[EMAIL PROTECTED] [EMAIL PROTECTED]/ /[EMAIL PROTECTED] [EMAIL PROTECTED]/ /[EMAIL PROTECTED] [EMAIL PROTECTED]/ @@ . patch -p0 '@@ .' Index: rpm/rpmdb/sqlite.c $ cvs diff -u -r1.29 -r1.30 sqlite.c --- rpm/rpmdb/sqlite.c10 Mar 2008 04:46:18 - 1.29 +++ rpm/rpmdb/sqlite.c12 Mar 2008 16:50:12 - 1.30 @@ -57,6 +57,11 @@ /[EMAIL PROTECTED] rpmdb @*/ /[EMAIL PROTECTED] dbiIndex @*/ +/* XXX retrofit the *BSD typedef for the deprived. */ +#if defined(__QNXNTO__)) +typedef u_int32_t uint32_t; +#endif + /[EMAIL PROTECTED]@*/ static int _debug = 0; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c sqlite.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Ralf S. Engelschall Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 28-Jan-2008 21:29:16 Branch: HEAD Handle: 2008012820291501 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c sqlite.c Log: (again) replace u_int32_t with uint32_t to be consistent across the code base Summary: RevisionChanges Path 1.2107 +1 -0 rpm/CHANGES 1.234 +37 -37 rpm/rpmdb/rpmdb.c 1.26+2 -2 rpm/rpmdb/sqlite.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2106 -r1.2107 CHANGES --- rpm/CHANGES 27 Jan 2008 18:30:56 - 1.2106 +++ rpm/CHANGES 28 Jan 2008 20:29:15 - 1.2107 @@ -1,4 +1,5 @@ 5.0.0 - 5.1a1: +- rse: (again) replace u_int32_t with uint32_t to be consistent across the code base - jbj: use RPM_OS_NTOQNX as manifest constant. - jbj: updated nl.po (Translation Project). - rpm.org: Missing space in russian translation (mdvbz#36974). @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.233 -r1.234 rpmdb.c --- rpm/rpmdb/rpmdb.c 5 Jan 2008 08:42:50 - 1.233 +++ rpm/rpmdb/rpmdb.c 28 Jan 2008 20:29:16 - 1.234 @@ -546,7 +546,7 @@ return -1; _dbbyteswapped = dbiByteSwapped(dbi); -data-size = (u_int32_t)(set-count * (dbi-dbi_jlen)); +data-size = (uint32_t)(set-count * (dbi-dbi_jlen)); if (data-size == 0) { data-data = NULL; return 0; @@ -1457,7 +1457,7 @@ /[EMAIL PROTECTED]@*/ key-data = (void *) baseName; /[EMAIL PROTECTED]@*/ -key-size = (u_int32_t) strlen(baseName); +key-size = (uint32_t) strlen(baseName); if (key-size == 0) key-size++; /* XXX / fixup. */ rc = dbiGet(dbi, dbcursor, key, data, DB_SET); @@ -1586,7 +1586,7 @@ /[EMAIL PROTECTED]@*/ key-data = (void *) name; /[EMAIL PROTECTED]@*/ -key-size = (u_int32_t) strlen(name); +key-size = (uint32_t) strlen(name); xx = dbiCopen(dbi, dbi-dbi_txnid, dbcursor, 0); rc = dbiGet(dbi, dbcursor, key, data, DB_SET); @@ -1653,7 +1653,7 @@ /[EMAIL PROTECTED]@*/ key-data = (void *) name; /[EMAIL PROTECTED]@*/ -key-size = (u_int32_t) strlen(name); +key-size = (uint32_t) strlen(name); rc = dbiGet(dbi, dbcursor, key, data, DB_SET); @@ -1860,11 +1860,11 @@ (void) headerGetMagic(mi-mi_h, NULL, nb); /[EMAIL PROTECTED]@*/key-data = (void *) mi-mi_prevoffset; - key-size = (u_int32_t) sizeof(mi-mi_prevoffset); + key-size = (uint32_t) sizeof(mi-mi_prevoffset); { size_t len; len = 0; data-data = headerUnload(mi-mi_h, len); - data-size = (u_int32_t) len; /* XXX data-size is uint32_t */ + data-size = (uint32_t) len;/* XXX data-size is uint32_t */ #ifdef DYING /* XXX this is needed iff headerSizeof() is used instead. */ data-size -= nb; /* XXX HEADER_MAGIC_NO */ #endif @@ -2358,9 +2358,9 @@ keylen = sizeof(mi_offset.ui); } else { key-data = (void *)mi-mi_keyp; - key-size = (u_int32_t) mi-mi_keylen; + key-size = (uint32_t) mi-mi_keylen; data-data = uh; - data-size = (u_int32_t) uhlen; + data-size = (uint32_t) uhlen; #if !defined(_USE_COPY_LOAD) data-flags |= DB_DBT_MALLOC; #endif @@ -2404,7 +2404,7 @@ /* Retrieve next header blob for index iterator. */ if (uh == NULL) { key-data = keyp; - key-size = (u_int32_t) keylen; + key-size = (uint32_t) keylen; #if !defined(_USE_COPY_LOAD) data-flags |= DB_DBT_MALLOC; #endif @@ -2714,8 +2714,8 @@ /[EMAIL PROTECTED]@*/ key-data = (void *) keyp; /[EMAIL PROTECTED]@*/ -key-size = (u_int32_t) keylen; -if (key-data key-size == 0) key-size = (u_int32_t) strlen((char *)key-data); +key-size = (uint32_t) keylen; +if (key-data key-size == 0) key-size = (uint32_t) strlen((char *)key-data); if (key-data key-size == 0) key-size++;/* XXX / fixup. */ /[EMAIL PROTECTED]@*/ @@ -2887,7 +2887,7 @@ _DBSWAP(mi_offset); key-data = mi_offset; /[EMAIL PROTECTED]@*/ - key-size = (u_int32_t) sizeof(mi_offset.ui); + key-size = (uint32_t) sizeof(mi_offset.ui); rc = dbiCopen(dbi, dbi-dbi_txnid,
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c rpmdb.h
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: 04-Dec-2007 04:38:54 Branch: HEAD Handle: 2007120403385300 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c rpmdb.h Log: - rpm.org: Rename _rpmdbMatchIterator - rpmdbMatchIterator_s. Summary: RevisionChanges Path 1.1932 +1 -0 rpm/CHANGES 1.224 +1 -1 rpm/rpmdb/rpmdb.c 1.69+1 -1 rpm/rpmdb/rpmdb.h patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1931 -r1.1932 CHANGES --- rpm/CHANGES 4 Dec 2007 03:21:09 - 1.1931 +++ rpm/CHANGES 4 Dec 2007 03:38:53 - 1.1932 @@ -1,4 +1,5 @@ 5.0a4 - 5.0b1: +- rpm.org: Rename _rpmdbMatchIterator - rpmdbMatchIterator_s. - jbj: split out implementation specific storage from pgpDig. - jbj: create rpmbc.c and rpmbc.h to hide beecrypt signature internals. - jbj: hide additional beecrypt RSA/DSA signature verification. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.223 -r1.224 rpmdb.c --- rpm/rpmdb/rpmdb.c 26 Nov 2007 21:05:57 - 1.223 +++ rpm/rpmdb/rpmdb.c 4 Dec 2007 03:38:53 - 1.224 @@ -699,7 +699,7 @@ return set; } -struct _rpmdbMatchIterator { +struct rpmdbMatchIterator_s { /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ rpmdbMatchIterator mi_next; /[EMAIL PROTECTED]@*/ @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.h $ cvs diff -u -r1.68 -r1.69 rpmdb.h --- rpm/rpmdb/rpmdb.h 14 Nov 2007 21:13:18 - 1.68 +++ rpm/rpmdb/rpmdb.h 4 Dec 2007 03:38:53 - 1.69 @@ -43,7 +43,7 @@ /** \ingroup rpmdb * Database iterator. */ -typedef /[EMAIL PROTECTED]@*/ struct _rpmdbMatchIterator * rpmdbMatchIterator; +typedef /[EMAIL PROTECTED]@*/ struct rpmdbMatchIterator_s * rpmdbMatchIterator; #endif /** @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 18-Nov-2007 16:29:31 Branch: HEAD Handle: 2007111815293000 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - fix: don't loop on failed lookup by instance. Summary: RevisionChanges Path 1.1841 +1 -0 rpm/CHANGES 1.212 +5 -1 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1840 -r1.1841 CHANGES --- rpm/CHANGES 17 Nov 2007 18:11:45 - 1.1840 +++ rpm/CHANGES 18 Nov 2007 15:29:30 - 1.1841 @@ -1,4 +1,5 @@ 5.0a1 - 5.0a2: +- jbj: fix: don't loop on failed lookup by instance. - jbj: Eliminate SUPPORT_RPMV3_PROVIDE_SELF Provies: N = E:V-R retrofit. - jbj: Eliminate SUPPORT_RPMV3_BASENAMES_HACKS file path conversions. - jbj: Eliminate SUPPORT_RPMV3_VERIFY_{RSA,DSA} header+payload signatures. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.211 -r1.212 rpmdb.c --- rpm/rpmdb/rpmdb.c 17 Nov 2007 18:05:22 - 1.211 +++ rpm/rpmdb/rpmdb.c 18 Nov 2007 15:29:30 - 1.212 @@ -2457,8 +2457,12 @@ } /* Skip damaged and inconsistent headers. */ - if (rpmrc == RPMRC_FAIL) + if (rpmrc == RPMRC_FAIL) { + /* XXX Terminate immediately on failed lookup by instance. */ + if (mi-mi_set == NULL mi-mi_keyp != NULL mi-mi_keylen == 4) + return NULL; goto top; + } } } @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 02-Nov-2007 04:07:46 Branch: HEAD Handle: 2007110203074600 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - jbj: fix --rebuilddb --root /path. Summary: RevisionChanges Path 1.1762 +1 -0 rpm/CHANGES 1.196 +1 -1 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1761 -r1.1762 CHANGES --- rpm/CHANGES 1 Nov 2007 19:19:20 - 1.1761 +++ rpm/CHANGES 2 Nov 2007 03:07:46 - 1.1762 @@ -1,4 +1,5 @@ 4.5 - 5.0: +- jbj: fix --rebuilddb --root /path. - rse: fix linking of RPM against PCRE's POSIX API under --with-pcre - jbj: upgrade to F8 fix rpm-python. i18n tags w hdr_subscript are b0rked. - jbj: update loader maps for python lazy loads. rpm-python fixing to do. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.195 -r1.196 rpmdb.c --- rpm/rpmdb/rpmdb.c 22 Oct 2007 02:48:42 - 1.195 +++ rpm/rpmdb/rpmdb.c 2 Nov 2007 03:07:46 - 1.196 @@ -3917,7 +3917,7 @@ } dbpath = rootdbpath = rpmGetPath(prefix, tfn, NULL); if (!(prefix[0] == '/' prefix[1] == '\0')) - dbpath += strlen(prefix) - 1; + dbpath += strlen(prefix); tfn = _free(tfn); /[EMAIL PROTECTED]@*/ @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 12-Oct-2007 22:34:10 Branch: HEAD Handle: 2007101221340901 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - jbj: rpmdb.c: retrofit HE_s. Summary: RevisionChanges Path 1.1679 +2 -1 rpm/CHANGES 1.176 +10 -26 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1678 -r1.1679 CHANGES --- rpm/CHANGES 12 Oct 2007 20:23:03 - 1.1678 +++ rpm/CHANGES 12 Oct 2007 20:34:09 - 1.1679 @@ -1,5 +1,6 @@ 4.5 - 5.0: -- jbj: addTE: use headerGetExtension. +- jbj: rpmdb.c: retrofit HE_s. +- jbj: rpmte.c: use headerGetExtension. - jbj: add HE_s typedef to get rid of alloca baggage. - bero: Make rpm2cpio work for packages with payloads other than gzip - jbj: change to hRET_t for existing headerGetExtension uses. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.175 -r1.176 rpmdb.c --- rpm/rpmdb/rpmdb.c 12 Oct 2007 18:55:58 - 1.175 +++ rpm/rpmdb/rpmdb.c 12 Oct 2007 20:34:10 - 1.176 @@ -2134,13 +2134,11 @@ /[EMAIL PROTECTED] mi-mi_re @*/ { HGE_t hge = (HGE_t) headerGetExtension; -#ifdef DYING -HFD_t hfd = (HFD_t) headerFreeData; -#endif -HE_t he; -int_32 he_t; +int_32 he_t = 0; hRET_t he_p = { .ptr = NULL }; -int_32 he_c; +int_32 he_c = 0; +HE_s he_s = { .tag = 0, .t = he_t, .p = he_p, .c = he_c, .freeData = 0 }; +HE_t he = he_s; char numbuf[32]; miRE mire; int ntags = 0; @@ -2158,12 +2156,6 @@ if ((mire = mi-mi_re) == NULL) return 0; -he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); -memset(he_p, 0, sizeof(he_p)); -he-t = he_t; -he-p = he_p; -he-c = he_c; - for (i = 0; i mi-mi_nre; i++, mire++) { int anymatch; @@ -2817,15 +2809,11 @@ /[EMAIL PROTECTED] -nullptrarith -nullderef @*/ /* FIX: rpmvals heartburn */ {dbiIndexItem rec = dbiIndexNewItem(hdrNum, 0); int dbix; - HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); - int_32 he_t; + int_32 he_t = 0; hRET_t he_p = { .ptr = NULL }; - int_32 he_c; - - memset(he_p, 0, sizeof(he_p)); - he-t = he_t; - he-p = he_p; - he-c = he_c; + int_32 he_c = 0; + HE_s he_s = { .tag = 0, .t = he_t, .p = he_p, .c = he_c, .freeData = 0 }; + HE_t he = he_s; if (db-db_tagn != NULL) for (dbix = 0; dbix db-db_ndbi; dbix++) { @@ -3215,15 +3203,11 @@ if (hdrNum) {dbiIndexItem rec = dbiIndexNewItem(hdrNum, 0); - HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); int_32 he_t; hRET_t he_p = { .ptr = NULL }; int_32 he_c; - - memset(he_p, 0, sizeof(he_p)); - he-t = he_t; - he-p = he_p; - he-c = he_c; + HE_s he_s = { .tag = 0, .t = he_t, .p = he_p, .c = he_c, .freeData = 0 }; + HE_t he = he_s; /* Save the header instance. */ (void) headerSetInstance(h, hdrNum); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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-Oct-2007 07:00:53 Branch: HEAD Handle: 2007100806005201 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - start converting rpmdb.c to use headerGetExtension instead. Summary: RevisionChanges Path 1.1661 +1 -0 rpm/CHANGES 1.167 +62 -55 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1660 -r1.1661 CHANGES --- rpm/CHANGES 7 Oct 2007 19:25:21 - 1.1660 +++ rpm/CHANGES 8 Oct 2007 05:00:52 - 1.1661 @@ -1,4 +1,5 @@ 4.5 - 5.0: +- jbj: start converting rpmdb.c to use headerGetExtension instead. - jbj: expose hRET_t through headerGetExtension prototypes. - jbj: unbork/simplify hRET_t indirections, too much acid in the Kool-Aid. - jbj: rpmdeps: unhide various CLI options. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.166 -r1.167 rpmdb.c --- rpm/rpmdb/rpmdb.c 7 Oct 2007 19:25:22 - 1.166 +++ rpm/rpmdb/rpmdb.c 8 Oct 2007 05:00:53 - 1.167 @@ -3217,8 +3217,16 @@ /* Now update the indexes */ if (hdrNum) -{ - dbiIndexItem rec = dbiIndexNewItem(hdrNum, 0); +{dbiIndexItem rec = dbiIndexNewItem(hdrNum, 0); + HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); + int_32 he_t; + hRET_t he_p; + int_32 he_c; + + memset(he_p, 0, sizeof(he_p)); + he-t = he_t; + he-p = he_p; + he-c = he_c; /* Save the header instance. */ (void) headerSetInstance(h, hdrNum); @@ -3226,11 +3234,7 @@ if (db-db_tagn != NULL) for (dbix = 0; dbix db-db_ndbi; dbix++) { const char *av[1]; - const char **rpmvals = NULL; byte * bin = NULL; - rpmTagType rpmtype = 0; - int rpmcnt = 0; - int rpmtag; int_32 * requireFlags; rpmRC rpmrc; int i, j; @@ -3238,9 +3242,12 @@ rpmrc = RPMRC_NOTFOUND; dbi = NULL; requireFlags = NULL; - rpmtag = db-db_tagn[dbix]; + he-tag = db-db_tagn[dbix]; + he_t = 0; + he_p.ptr = NULL; + he_c = 0; - switch (rpmtag) { + switch (he-tag) { /* Filter out temporary databases */ case RPMDBI_AVAILABLE: case RPMDBI_ADDED: @@ -3251,7 +3258,7 @@ case RPMDBI_PACKAGES: if (db-db_export != NULL) xx = db-db_export(db, h, 1); - dbi = dbiOpen(db, rpmtag, 0); + dbi = dbiOpen(db, he-tag, 0); if (dbi == NULL)/* XXX shouldn't happen */ continue; xx = dbiCopen(dbi, dbi-dbi_txnid, dbcursor, DB_WRITECURSOR); @@ -3263,7 +3270,7 @@ key-data = (void *) mi_offset; /[EMAIL PROTECTED]@*/ key-size = sizeof(mi_offset.ui); -{ size_t len; + { size_t len; nb = 0; (void) headerGetMagic(h, NULL, nb); len = 0; @@ -3272,7 +3279,7 @@ #ifdef DYING /* XXX this is needed iff headerSizeof() is used instead. */ data-size -= nb;/* XXX HEADER_MAGIC_NO */ #endif -} + } /* Check header digest/signature on blob export. */ if (ts) { @@ -3303,49 +3310,49 @@ continue; /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/ break; case RPMTAG_BASENAMES: /* XXX preserve legacy behavior */ - rpmtype = bnt; - rpmvals = baseNames; - rpmcnt = count; + he_t = bnt; + he_p.argv = baseNames; + he_c = count; /[EMAIL PROTECTED]@*/ break; case RPMTAG_REQUIRENAME: - xx = hge(h, rpmtag, rpmtype, rpmvals, rpmcnt); + xx = hge(h, he-tag, he-t, he-p, he-c); xx = hge(h, RPMTAG_REQUIREFLAGS, NULL, requireFlags, NULL); /[EMAIL PROTECTED]@*/ break; case RPMTAG_NVRA: /* XXX compound header extension. */ - xx = headerGetExtension(h, rpmtag, (hTYP_t)rpmtype, rpmvals, rpmcnt); + xx = headerGetExtension(h, he-tag, he-t, he-p, he-c); /[EMAIL PROTECTED]@*/ break; default: -
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 06-Sep-2007 10:13:26 Branch: HEAD Handle: 2007090609132500 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - rpm.org: permit mire RE's against binary data. Useless ... (#277161). - rpm.org: mire RE against missing data now mis-matches rather than matches. Summary: RevisionChanges Path 1.1619 +2 -0 rpm/CHANGES 1.155 +34 -3 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1618 -r1.1619 CHANGES --- rpm/CHANGES 6 Sep 2007 07:42:22 - 1.1618 +++ rpm/CHANGES 6 Sep 2007 08:13:25 - 1.1619 @@ -1,4 +1,6 @@ 4.5 - 5.0: +- rpm.org: permit mire RE's against binary data. Useless ... (#277161). +- rpm.org: mire RE against missing data now mis-matches rather than matches. - jbj: remove ancient %verifyscript tag != 1079 retrofit. - rpm.org: fix whitespace-in-files issues in find-debuginfo.sh. - rpm.org: new debuginfo script. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.154 -r1.155 rpmdb.c --- rpm/rpmdb/rpmdb.c 6 Sep 2007 00:32:50 - 1.154 +++ rpm/rpmdb/rpmdb.c 6 Sep 2007 08:13:25 - 1.155 @@ -123,6 +123,29 @@ return 0; } +/** + * Convert binary blob to printable hex string. + * @param data binary data + * @param size size of data in bytes + * @return malloc'd hex string + */ +static char * bin2hex(const void *data, size_t size) +{ +static char hex[] = 0123456789abcdef; +const char * s = data; +char * t, * val; +val = t = xmalloc(size * 2 + 1); +while (size-- 0) { + unsigned int i; + i = *s++; + *t++ = hex[ (i 4) 0xf ]; + *t++ = hex[ (i ) 0xf ]; +} +*t = '\0'; + +return val; +} + #ifdef DYING /** * Check key for printable characters. @@ -2138,8 +2161,10 @@ int anymatch; if (!hge(mi-mi_h, mire-tag, t, (void **)u, c)) { - if (mire-tag != RPMTAG_EPOCH) + if (mire-tag != RPMTAG_EPOCH) { + ntags++; continue; + } t = RPM_INT32_TYPE; /[EMAIL PROTECTED]@*/ u.i32p = zero; @@ -2184,8 +2209,14 @@ } } /[EMAIL PROTECTED]@*/ break; - case RPM_NULL_TYPE: case RPM_BIN_TYPE: + { const char * s = bin2hex(u.ptr, c); + rc = mireRegexec(mire, s); + if ((!rc !mire-notmatch) || (rc mire-notmatch)) + anymatch++; + s = _free(s); + } /[EMAIL PROTECTED]@*/ break; + case RPM_NULL_TYPE: default: /[EMAIL PROTECTED]@*/ break; } @@ -2203,9 +2234,9 @@ else u.ptr = hfd(u.ptr, t); - ntags++; if (anymatch) nmatches++; + ntags++; } return (ntags 0 ntags == nmatches ? 0 : 1); @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 06-Sep-2007 02:32:51 Branch: HEAD Handle: 2007090601325000 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - use rpmGetPath() to simplify generating filenames, nuke alloca. Summary: RevisionChanges Path 1.1614 +1 -0 rpm/CHANGES 1.154 +67 -97 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1613 -r1.1614 CHANGES --- rpm/CHANGES 5 Sep 2007 23:08:00 - 1.1613 +++ rpm/CHANGES 6 Sep 2007 00:32:50 - 1.1614 @@ -1,4 +1,5 @@ 4.5 - 5.0: +- jbj: use rpmGetPath() to simplify generating filenames, nuke alloca. - jbj: pubkey headers were misidentified as source, not binary, headers. - rpm.org: report open error on signing explicitly (#155079). - rpm.org: fix for debugedit -l. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.153 -r1.154 rpmdb.c --- rpm/rpmdb/rpmdb.c 19 Aug 2007 17:43:04 - 1.153 +++ rpm/rpmdb/rpmdb.c 6 Sep 2007 00:32:50 - 1.154 @@ -3671,7 +3671,6 @@ { const char *fn; int urltype = urlPath(urlfn, fn); -struct stat buf; /[EMAIL PROTECTED]@*/ if (*fn == '\0') fn = /; @@ -3683,14 +3682,15 @@ case URL_IS_HKP: /* XXX WRONG WRONG WRONG */ case URL_IS_PATH: case URL_IS_UNKNOWN: - if (Stat(fn, buf)) { +{struct stat sb; + if (Stat(fn, sb) 0) { switch(errno) { case ENOENT: case EINVAL: return 0; } } - break; +}break; case URL_IS_DASH: default: return 0; @@ -3706,55 +3706,44 @@ /[EMAIL PROTECTED] h_errno, fileSystem, internalState @*/ /[EMAIL PROTECTED] fileSystem, internalState @*/ { -int i; -char * filename; +const char * fn; int xx; -i = strlen(dbpath); -/[EMAIL PROTECTED] [EMAIL PROTECTED]/ -if (dbpath[i - 1] != '/') { - filename = alloca(i); - strcpy(filename, dbpath); - filename[i] = '/'; - filename[i + 1] = '\0'; - dbpath = filename; -} -/[EMAIL PROTECTED] [EMAIL PROTECTED]/ - -filename = alloca(strlen(prefix) + strlen(dbpath) + 40); - switch (_dbapi) { +default: case 4: /[EMAIL PROTECTED]@*/ case 3: +{char * suffix; + int i; + if (dbiTags != NULL) for (i = 0; i dbiTagsMax; i++) { -/[EMAIL PROTECTED]@*/ - const char * base = tagName(dbiTags[i]); -/[EMAIL PROTECTED]@*/ - sprintf(filename, %s/%s/%s, prefix, dbpath, base); - (void)rpmCleanPath(filename); - if (!rpmioFileExists(filename)) - continue; - xx = Unlink(filename); + fn = rpmGetPath(prefix, dbpath, /, tagName(dbiTags[i]), NULL); + if (rpmioFileExists(fn)) + xx = Unlink(fn); + fn = _free(fn); } + + fn = rpmGetPath(prefix, dbpath, /, __db.000, NULL); + suffix = (char *)(fn + strlen(fn) - (sizeof(000) - 1)); for (i = 0; i 16; i++) { - sprintf(filename, %s/%s/__db.%03d, prefix, dbpath, i); - (void)rpmCleanPath(filename); - if (!rpmioFileExists(filename)) - continue; - xx = Unlink(filename); + snprintf(suffix, sizeof(000), %03d, i); + if (rpmioFileExists(fn)) + xx = Unlink(fn); } - break; + fn = _free(fn); + +}break; case 2: case 1: case 0: break; } -sprintf(filename, %s/%s, prefix, dbpath); -(void)rpmCleanPath(filename); -xx = Rmdir(filename); +fn = rpmGetPath(prefix, dbpath, NULL); +xx = Rmdir(fn); +fn = _free(fn); return 0; } @@ -3766,44 +3755,20 @@ /[EMAIL PROTECTED] h_errno, fileSystem, internalState @*/ /[EMAIL PROTECTED] fileSystem, internalState @*/ { -int i; -char * ofilename, * nfilename; -struct stat * nst = alloca(sizeof(*nst)); +struct stat nsb, * nst = nsb; +const char * ofn, * nfn; int rc = 0; int xx; -i = strlen(olddbpath); -/[EMAIL PROTECTED]@*/ -if (olddbpath[i - 1] != '/') { -
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
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: 30-Jul-2007 19:09:43 Branch: HEAD Handle: 2007073018094300 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: - HEADER_MAGIC_YES always: eliminate HEADER_MAGIC_NO usages. Summary: RevisionChanges Path 1.1529 +1 -0 rpm/CHANGES 1.143 +6 -3 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1528 -r1.1529 CHANGES --- rpm/CHANGES 29 Jul 2007 14:02:32 - 1.1528 +++ rpm/CHANGES 30 Jul 2007 17:09:43 - 1.1529 @@ -1,4 +1,5 @@ 4.5 - 5.0: +- jbj: HEADER_MAGIC_YES always: eliminate HEADER_MAGIC_NO usages. - rse: provide support for GNU binutils ld(1)'s --as-needed via Autoconf option --enable-build-maxextlibdep - jbj: rip CentOS3/x86_64 gcc-3.2.3-49.x86_64 hack-a-round. Fix gcc! - jbj: upgrade to db-4.6.18. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.142 -r1.143 rpmdb.c --- rpm/rpmdb/rpmdb.c 30 Jul 2007 12:30:54 - 1.142 +++ rpm/rpmdb/rpmdb.c 30 Jul 2007 17:09:43 - 1.143 @@ -1812,7 +1812,8 @@ /[EMAIL PROTECTED]@*/key-data = (void *) mi-mi_prevoffset; key-size = sizeof(mi-mi_prevoffset); data-data = headerUnload(mi-mi_h); - data-size = headerSizeof(mi-mi_h, HEADER_MAGIC_NO); + data-size = headerSizeof(mi-mi_h, HEADER_MAGIC_YES); + data-size -= 8;/* XXX HEADER_MAGIC_NO */ /* Check header digest/signature on blob export (if requested). */ if (mi-mi_hdrchk mi-mi_ts) { @@ -3126,7 +3127,8 @@ /* XXX db0: hack to pass sizeof header to fadAlloc */ datap = h; - datalen = headerSizeof(h, HEADER_MAGIC_NO); + datalen = headerSizeof(h, HEADER_MAGIC_YES); + datalen -= 8; /* XXX HEADER_MAGIC_NO */ xx = dbiCopen(dbi, dbi-dbi_txnid, dbcursor, DB_WRITECURSOR); @@ -3241,7 +3243,8 @@ /[EMAIL PROTECTED]@*/ key-size = sizeof(mi_offset.ui); data-data = headerUnload(h); -data-size = headerSizeof(h, HEADER_MAGIC_NO); +data-size = headerSizeof(h, HEADER_MAGIC_YES); +data-size -= 8; /* XXX HEADER_MAGIC_NO */ /* Check header digest/signature on blob export. */ if (hdrchk ts) { @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Ralf S. Engelschall Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 23-Jul-2007 10:45:08 Branch: HEAD Handle: 2007072309450800 Modified files: rpm CHANGES rpm/rpmdb rpmdb.c Log: On --rebuilddb do not keep (currently) unused old database files staying around. This avoids accidental mixed format database situations and hence fixes the following two particular cases: 1. Old database files could let RPM subsequently stumble over them in case an incompatible database format change was done during --rebuilddb (for instance when switching RPM DB backends, e.g. from DB to SQLite or invice versa). 2. This ensures better database format consistency when upgrading to a newer version of RPM (for instance when migrating from RPM 4.2 which used DB 4.1.2 to RPM 5.0 which uses DB 4.5.20), as no files in the older format still stay around and would be reused with the newer backend until another --rebuilddb would be performed (after data is written to the database file again). Summary: RevisionChanges Path 1.1513 +1 -0 rpm/CHANGES 1.141 +8 -2 rpm/rpmdb/rpmdb.c patch -p0 '@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1512 -r1.1513 CHANGES --- rpm/CHANGES 22 Jul 2007 22:10:26 - 1.1512 +++ rpm/CHANGES 23 Jul 2007 08:45:08 - 1.1513 @@ -1,4 +1,5 @@ 4.5 - 5.0: +- rse: on --rebuilddb remove (currently) unused database files to avoid mixed formats on backend upgrades and switches - jbj: adjust signal polling for python exit purposes [EMAIL PROTECTED]. - rse: provide a first cut for an librpmconstant.vers ld(1) version script - jbj: reapply 2.127 with more careful rpmExpand() fix. @@ . patch -p0 '@@ .' Index: rpm/rpmdb/rpmdb.c $ cvs diff -u -r1.140 -r1.141 rpmdb.c --- rpm/rpmdb/rpmdb.c 23 Jul 2007 08:24:09 - 1.140 +++ rpm/rpmdb/rpmdb.c 23 Jul 2007 08:45:08 - 1.141 @@ -3792,11 +3792,17 @@ base = tagName(rpmtag); sprintf(ofilename, %s/%s/%s, prefix, olddbpath, base); (void)rpmCleanPath(ofilename); - if (!rpmioFileExists(ofilename)) - continue; sprintf(nfilename, %s/%s/%s, prefix, newdbpath, base); (void)rpmCleanPath(nfilename); + if (!rpmioFileExists(ofilename)) { + if (rpmioFileExists(nfilename)) { + rpmMessage(RPMMESS_DEBUG, _(removing file \%s\\n), nfilename); + xx = unlink(nfilename); +} + continue; +} + /* * Get uid/gid/mode/mtime. If old doesn't exist, use new. * XXX Yes, the variable names are backwards. @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org