[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c

2011-02-13 Thread Per �yvind Karlsen
  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

2011-02-12 Thread Per �yvind Karlsen
  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

2010-12-16 Thread Jeff Johnson
  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

2010-11-02 Thread Jeff Johnson
  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

2010-11-01 Thread Per �yvind Karlsen
  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

2010-08-13 Thread Jeff Johnson
  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

2010-01-30 Thread Jeff Johnson
  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

2010-01-04 Thread Jeff Johnson
  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

2010-01-03 Thread Jeff Johnson
  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

2009-12-09 Thread Jeff Johnson
  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

2009-12-09 Thread Jeff Johnson
  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

2009-12-08 Thread Jeff Johnson
  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

2009-12-04 Thread Jeff Johnson
  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

2009-12-04 Thread Jeff Johnson
  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

2009-12-03 Thread Jeff Johnson
  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

2009-11-15 Thread Jeff Johnson
  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

2009-11-13 Thread Jeff Johnson
  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

2009-11-11 Thread Jeff Johnson
  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

2009-11-09 Thread Jeff Johnson
  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

2009-11-07 Thread Jeff Johnson
  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

2009-11-07 Thread Jeff Johnson
  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

2009-11-07 Thread Jeff Johnson
  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...

2009-06-25 Thread Jeff Johnson
  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...

2009-05-29 Thread Jeff Johnson
  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

2009-05-25 Thread Jeff Johnson
  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

2009-05-13 Thread Jeff Johnson
  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...

2009-03-29 Thread Jeff Johnson
  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

2009-03-24 Thread Jeff Johnson
  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...

2009-03-20 Thread Jeff Johnson
  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

2009-02-19 Thread Jeff Johnson
  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

2008-08-18 Thread Alexey Tourbin
  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

2008-05-09 Thread Jeff Johnson
  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

2008-05-09 Thread Jeff Johnson
  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

2008-05-09 Thread Jeff Johnson
  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

2008-03-12 Thread Jeff Johnson
  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

2008-01-28 Thread Ralf S. Engelschall
  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

2007-12-03 Thread Jeff Johnson
  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

2007-11-18 Thread Jeff Johnson
  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

2007-11-01 Thread Jeff Johnson
  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

2007-10-12 Thread Jeff Johnson
  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

2007-10-07 Thread Jeff Johnson
  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

2007-09-06 Thread Jeff Johnson
  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

2007-09-05 Thread Jeff Johnson
  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

2007-07-30 Thread Jeff Johnson
  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

2007-07-23 Thread Ralf S. Engelschall
  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