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

2011-01-25 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:   25-Jan-2011 15:50:56
  Branch: HEAD Handle: 2011012514505600

  Modified files:
rpm/rpmdb   db3.c

  Log:
sync max number of locks with DB_CONFIG

  Summary:
RevisionChanges Path
1.161   +1  -1  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.160 -r1.161 db3.c
  --- rpm/rpmdb/db3.c   17 Jan 2011 23:29:53 -  1.160
  +++ rpm/rpmdb/db3.c   25 Jan 2011 14:50:56 -  1.161
  @@ -899,7 +899,7 @@
   }
   
   /*  Locking: */
  -#define  _RPMDB_NLOCKS   8192
  +#define  _RPMDB_NLOCKS   16384
   if (eflags  DB_INIT_LOCK) {
uint32_t _lk_max_lockers = _RPMDB_NLOCKS;
uint32_t _lk_max_locks = _RPMDB_NLOCKS;
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2011-01-17 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:   18-Jan-2011 00:29:54
  Branch: HEAD Handle: 2011011723295300

  Modified files:
rpm/rpmdb   db3.c

  Log:
always set log directory

  Summary:
RevisionChanges Path
1.160   +9  -11 rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.159 -r1.160 db3.c
  --- rpm/rpmdb/db3.c   13 Jan 2011 06:39:05 -  1.159
  +++ rpm/rpmdb/db3.c   17 Jan 2011 23:29:53 -  1.160
  @@ -920,20 +920,18 @@
   }
   
   /*  Logging: */
  -if (eflags  DB_INIT_LOG) {
  - const char *logdir;
  +const char *logdir;
   
  - logdir = rpmGetPath(dbhome, /, log, NULL);
  - /*
  -  * Create the /var/lib/rpm/log directory if it doesn't exist (root 
only).
  -  */
  - rpmioMkpath(logdir, 0755, getuid(), getgid());
  +logdir = rpmGetPath(dbhome, /, log, NULL);
  +/*
  + * Create the /var/lib/rpm/log directory if it doesn't exist (root only).
  + */
  +rpmioMkpath(logdir, 0755, getuid(), getgid());
   
  - xx = dbenv-set_lg_dir(dbenv, logdir);
  - xx = cvtdberr(dbi, dbenv-set_lg_dir, xx, _debug);
  +xx = dbenv-set_lg_dir(dbenv, logdir);
  +xx = cvtdberr(dbi, dbenv-set_lg_dir, xx, _debug);
   
  - _free(logdir);
  -}
  +_free(logdir);
   
   /*  Memory pool: */
   if (eflags  DB_INIT_MPOOL) {
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2010-09-12 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-Sep-2010 00:23:56
  Branch: HEAD Handle: 201009135600

  Modified files:
rpm/rpmdb   db3.c

  Log:
- isolate sunrpc code w test for DB_RPCCLIENT.

  Summary:
RevisionChanges Path
1.154   +11 -8  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.153 -r1.154 db3.c
  --- rpm/rpmdb/db3.c   17 Jul 2010 19:56:48 -  1.153
  +++ rpm/rpmdb/db3.c   12 Sep 2010 22:23:56 -  1.154
  @@ -32,10 +32,6 @@
   extern int logio_dispatch(DB_ENV * dbenv, DBT * dbt, DB_LSN * lsn, db_recops 
op)
/*...@*/;
   
  -#if !defined(DB_CLIENT)  /* XXX db-4.2.42 retrofit */
  -#define  DB_CLIENT   DB_RPCCLIENT
  -#endif
  -
   #define  DBIDEBUG(_dbi, _list)   if ((_dbi)-dbi_debug) fprintf _list
   
   /*...@access rpmdb @*/
  @@ -780,8 +776,10 @@
dbhome, dbfile, prDbiOpenFlags(eflags, 1));
   
   /* XXX Can't do RPC w/o host. */
  +#if defined(DB_RPCCLIENT)
   if (dbi-dbi_host == NULL)
  - dbi-dbi_ecflags = ~DB_CLIENT;
  + dbi-dbi_ecflags = ~DB_RPCCLIENT;
  +#endif
   
   rc = db_env_create(dbenv, dbi-dbi_ecflags);
   rc = cvtdberr(dbi, db_env_create, rc, _debug);
  @@ -809,7 +807,8 @@
   
/* dbenv-set_paniccall(???) */
   
  -if ((dbi-dbi_ecflags  DB_CLIENT)  dbi-dbi_host) {
  +#if defined(DB_RPCCLIENT)
  +if ((dbi-dbi_ecflags  DB_RPCCLIENT)  dbi-dbi_host) {
const char * home;
int retry = 0;
   
  @@ -825,7 +824,9 @@
break;
(void) sleep(15);
}
  -} else {
  +} else
  +#endif
  +{
   
{   size_t _lo =  16 * 1024 * 1024;
size_t _hi = 512 * 1024 * 1024;
  @@ -2475,7 +2476,9 @@
 * glibc/kernel combinations.
 */
if (rc == 0  dbi-dbi_lockdbfd 
  - !((dbi-dbi_ecflags  DB_CLIENT)  dbi-dbi_host) 
  +#if defined(DB_RPCCLIENT)
  + !((dbi-dbi_ecflags  DB_RPCCLIENT)  dbi-dbi_host) 
  +#endif
(!dbi-dbi_use_dbenv || _lockdbfd++ == 0))
{
int fdno = -1;
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c fprint.c header.c poptDB.c rpmd...

2010-01-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:   29-Jan-2010 22:02:32
  Branch: HEAD Handle: 2010012921023100

  Modified files:
rpm/rpmdb   db3.c dbconfig.c fprint.c header.c poptDB.c
rpmdb.c rpmdb.h

  Log:
- splint fiddles.

  Summary:
RevisionChanges Path
1.150   +6  -0  rpm/rpmdb/db3.c
1.77+2  -2  rpm/rpmdb/dbconfig.c
1.36+16 -9  rpm/rpmdb/fprint.c
1.196   +1  -1  rpm/rpmdb/header.c
1.17+2  -0  rpm/rpmdb/poptDB.c
1.383   +16 -8  rpm/rpmdb/rpmdb.c
1.139   +1  -2  rpm/rpmdb/rpmdb.h
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.149 -r1.150 db3.c
  --- rpm/rpmdb/db3.c   27 Jan 2010 20:08:18 -  1.149
  +++ rpm/rpmdb/db3.c   29 Jan 2010 21:02:31 -  1.150
  @@ -795,11 +795,13 @@
   if (dbenv == NULL || rc)
goto errxit;
   
  +/*...@-noeffectuncon@*/
   /*...@-castfcnptr@*/
   dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall);
   /*...@=castfcnptr@*/
   dbenv-set_errfile(dbenv, rpmdb-db_errfile);
   dbenv-set_errpfx(dbenv, rpmdb-db_errpfx);
  +/*...@=noeffectuncon@*/
   
/* 4.1: dbenv-set_alloc(???) */
/* 4.1: dbenv-set_data_dir(???) */
  @@ -937,7 +939,9 @@
   
   #if (DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 5)
   /* XXX capture dbenv-falchk output on stderr. */
  +/*...@-noeffectuncon@*/
   dbenv-set_msgfile(dbenv, rpmdb-db_errfile);
  +/*...@=noeffectuncon@*/
   if (dbi-dbi_thread_count = 8) {
xx = dbenv-set_thread_count(dbenv, dbi-dbi_thread_count);
xx = cvtdberr(dbi, dbenv-set_thread_count, xx, _debug);
  @@ -1497,6 +1501,7 @@
   {
   int rc = ENOTSUP;;
   
  +#if !defined(__LCLINT__)
   /*...@-moduncon@*/ /* FIX: annotate db3 methods */
   #if (DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 8)
   DB * db = dbi-dbi_db;
  @@ -1505,6 +1510,7 @@
   rc = db-associate_foreign(db, secondary, callback, flags);
   #endif
   /*...@=moduncon@*/
  +#endif   /* !defined(__LCLINT__) */
   rc = cvtdberr(dbi, db-associate_foreign, rc, _debug);
   
   if (dbi-dbi_debug || dbisecondary-dbi_debug) {
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/dbconfig.c
  
  $ cvs diff -u -r1.76 -r1.77 dbconfig.c
  --- rpm/rpmdb/dbconfig.c  14 Dec 2009 01:52:10 -  1.76
  +++ rpm/rpmdb/dbconfig.c  29 Jan 2010 21:02:31 -  1.77
  @@ -19,7 +19,7 @@
   /*...@access dbiindex...@*/
   
   /*...@unchecked@*/
  -int _dbi_debug;
  +extern int _dbi_debug;
   
   #if defined(WITH_DB) || defined(WITH_SQLITE)
   
  @@ -439,7 +439,7 @@
   /*...@=compmempass =immediatetrans =exportlocal =exportheadervar =t...@*/
   
   static void dbiFini(void * _dbi)
  - /*...@modifies _dbi @*/
  + /*...@*/
   {
   dbiIndex dbi = _dbi;
   if (dbi) {
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/fprint.c
  
  $ cvs diff -u -r1.35 -r1.36 fprint.c
  --- rpm/rpmdb/fprint.c29 Jan 2010 19:23:59 -  1.35
  +++ rpm/rpmdb/fprint.c29 Jan 2010 21:02:31 -  1.36
  @@ -297,6 +297,7 @@
   
   static inline /*...@null@*/
   struct fingerPrint_s * __rpmfiFpsIndex(rpmfi fi, int ix)
  + /*...@*/
   {
   struct fingerPrint_s * fps = NULL;
   if (fi != NULL  fi-fps != NULL  ix = 0  ix  (int)fi-fc) {
  @@ -307,12 +308,14 @@
   
   static inline
   int __rpmfiFX(rpmfi fi)
  + /*...@*/
   {
   return (fi != NULL ? fi-i : -1);
   }
   
   static inline
   int __rpmfiSetFX(rpmfi fi, int fx)
  + /*...@*/
   {
   int i = -1;
   
  @@ -326,6 +329,7 @@
   
   static inline
   const char * __rpmfiFLink(rpmfi fi)
  + /*...@*/
   {
   const char * flink = NULL;
   
  @@ -338,6 +342,7 @@
   
   static inline
   rpmfi __rpmteFI(rpmte te, rpmTag tag)
  + /*...@*/
   {
   /*...@-compdef -refcounttrans -retalias -retexpose -usereleased @*/
   if (te == NULL)
  @@ -362,7 +367,9 @@
* 3) rstrscat(NULL,NULL) returns NULL
* 4) *dest and argument strings can overlap
*/
  -static char * rstrscat(char **dest, const char *arg, ...)
  +static
  +char * rstrscat(char **dest, const char *arg, ...)
  + /*...@modifies *dest @*/
   {
   va_list ap;
   size_t arg_size, dst_size;
  @@ -437,12 +444,12 @@
   current_fp.subDir = endsubdir = NULL; // no subDir for now
   
   while (endbasename  currentsubdir + 

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

2010-01-27 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:   27-Jan-2010 21:08:19
  Branch: HEAD Handle: 2010012720081800

  Modified files:
rpm/rpmdb   db3.c

  Log:
- db3: fix: revert buggy change to increment _r-size for single keys.

  Summary:
RevisionChanges Path
1.149   +9  -11 rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.148 -r1.149 db3.c
  --- rpm/rpmdb/db3.c   26 Jan 2010 23:40:36 -  1.148
  +++ rpm/rpmdb/db3.c   27 Jan 2010 20:08:18 -  1.149
  @@ -1826,8 +1826,7 @@
if (he-c == 1) {
_ube = _hton_ui(*_u);   /* XXX network order integer keys */
/* XXX is it worth avoiding the realloc here? */
  - if (loadDBT(_r, he-tag, _ube, _ulen))
  - _r-size++;
  + xx = loadDBT(_r, he-tag, _ube, _ulen);
break;
}
_r-flags = DB_DBT_MULTIPLE | DB_DBT_APPMALLOC;
  @@ -1854,8 +1853,7 @@
if (he-c == 1) {
_ube = _hton_ul(*_u);   /* XXX network order integer keys */
/* XXX is it worth avoiding the realloc here? */
  - if (loadDBT(_r, he-tag, _u, _ulen))
  - _r-size++;
  + xx = loadDBT(_r, he-tag, _u, _ulen);
break;
}
_r-flags = DB_DBT_MULTIPLE | DB_DBT_APPMALLOC;
  @@ -1877,21 +1875,21 @@
   case RPM_BIN_TYPE:
s = he-p.ptr; ns = he-c;
/* XXX is it worth avoiding the realloc here? */
  - if (ns  0  loadDBT(_r, he-tag, s, ns))
  - _r-size++;
  + if (ns  0) /* No  empty keys please. */
  + xx = loadDBT(_r, he-tag, s, ns);
break;
  -case RPM_I18NSTRING_TYPE:   /* XXX never occurs */
  +case RPM_I18NSTRING_TYPE:/* XXX never occurs */
   case RPM_STRING_TYPE:
s = he-p.str; ns = strlen(s);
/* XXX is it worth avoiding the realloc here? */
  - if (ns  0  loadDBT(_r, he-tag, s, ns))
  - _r-size++;
  + if (ns  0) /* No  empty keys please. */
  + xx = loadDBT(_r, he-tag, s, ns);
break;
   case RPM_STRING_ARRAY_TYPE:
if (he-c == 1) {
s = he-p.argv[0]; ns = strlen(s);
  - if (ns  0  loadDBT(_r, he-tag, s, ns))
  - _r-size++;
  + if (ns  0) /* No  empty keys please. */
  + xx = loadDBT(_r, he-tag, s, ns);
} else {
static double e = 1.0e-4;
size_t m = 0;
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2009-12-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:   29-Dec-2009 23:39:00
  Branch: HEAD Handle: 200912292239

  Modified files:
rpm/rpmdb   db3.c

  Log:
- db3: don't bother with DB_IMMUTABLE_KEY performance yet.

  Summary:
RevisionChanges Path
1.144   +4  -0  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.143 -r1.144 db3.c
  --- rpm/rpmdb/db3.c   29 Dec 2009 04:27:47 -  1.143
  +++ rpm/rpmdb/db3.c   29 Dec 2009 22:39:00 -  1.144
  @@ -2573,7 +2573,11 @@
dbiIndex Pdbi = NULL;
int (*_callback)(DB *, const DBT *, const DBT *, DBT *)
= db3Acallback;
  +#ifdef   NOTYET  /* XXX KISS for now */
int _flags = DB_IMMUTABLE_KEY;
  +#else
  + int _flags = 0;
  +#endif
   assert(Ptag == RPMDBI_PACKAGES  Ptag != rpmtag);
Pdbi = dbiOpen(rpmdb, Ptag, 0);
   assert(Pdbi != NULL);
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2009-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:   17-Dec-2009 04:50:00
  Branch: HEAD Handle: 2009121703495900

  Modified files:
rpm/rpmdb   db3.c rpmdb.c

  Log:
- rpmdb: tune the rpmbf parameters to a given {n,e}.

  Summary:
RevisionChanges Path
1.142   +6  -4  rpm/rpmdb/db3.c
1.375   +7  -4  rpm/rpmdb/rpmdb.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.141 -r1.142 db3.c
  --- rpm/rpmdb/db3.c   15 Dec 2009 21:10:23 -  1.141
  +++ rpm/rpmdb/db3.c   17 Dec 2009 03:49:59 -  1.142
  @@ -1878,10 +1878,12 @@
if (ns  0) /* No  empty keys please. */
(void) loadDBT(_r, he-tag, s, ns);
} else {
  - size_t _jiggery = 2;/* XXX todo: Bloom filter tuning? */
  - size_t _k = _jiggery * 8;
  - size_t _m = _jiggery * (3 * he-c * _k) / 2;
  - rpmbf bf = rpmbfNew(_m, _k, 0);
  + static double e = 1.0e-4;
  + size_t m = 0;
  + size_t k = 0;
  + rpmbf bf;
  + rpmbfParams(he-c, e, m, k);
  + bf = rpmbfNew(m, k, 0);
   
_r-flags = DB_DBT_MULTIPLE | DB_DBT_APPMALLOC;
_r-data = A = xcalloc(he-c, sizeof(*A));
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/rpmdb.c
  
  $ cvs diff -u -r1.374 -r1.375 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 15 Dec 2009 21:11:26 -  1.374
  +++ rpm/rpmdb/rpmdb.c 17 Dec 2009 03:49:59 -  1.375
  @@ -2277,10 +2277,13 @@
   if (!rc) {
int i;
if (mi-mi_bf == NULL) {
  - size_t _jiggery = 2;/* XXX todo: Bloom filter tuning? */
  - size_t _k = _jiggery * 8;
  - size_t _m = _jiggery * (3 * nHdrNums * _k) / 2;
  - mi-mi_bf = rpmbfNew(_m, _k, 0);
  + static size_t nRemoves = 8192;  /* XXX population estimate */
  + static double e = 1.0e-4;
  + size_t m = 0;
  + size_t k = 0;
  + rpmbf bf;
  + rpmbfParams(nRemoves, e, m, k);
  + mi-mi_bf = rpmbfNew(m, k, 0);
}
for (i = 0; i  nHdrNums; i++) {
uint32_t mi_offset = _hton_ui(hdrNums[i]);
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2009-12-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-Dec-2009 22:10:23
  Branch: HEAD Handle: 2009121521102300

  Modified files:
rpm/rpmdb   db3.c

  Log:
- db3: fiddle with DB_RECOVER automation a bit more.

  Summary:
RevisionChanges Path
1.141   +21 -7  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.140 -r1.141 db3.c
  --- rpm/rpmdb/db3.c   15 Dec 2009 02:39:12 -  1.140
  +++ rpm/rpmdb/db3.c   15 Dec 2009 21:10:23 -  1.141
  @@ -784,14 +784,11 @@
   if (dbenv == NULL || rc)
goto errxit;
   
  -/*...@-noeffectuncon@*/ /* FIX: annotate db3 methods */
  -
   /*...@-castfcnptr@*/
   dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall);
   /*...@=castfcnptr@*/
   dbenv-set_errfile(dbenv, rpmdb-db_errfile);
   dbenv-set_errpfx(dbenv, rpmdb-db_errpfx);
  -/*...@=noeffectuncon@*/
   
/* 4.1: dbenv-set_alloc(???) */
/* 4.1: dbenv-set_data_dir(???) */
  @@ -860,12 +857,21 @@
uint32_t _lk_max_lockers = 8192;
uint32_t _lk_max_locks = 8192;
uint32_t _lk_max_objects = 8192;
  +
xx = dbenv-set_lk_max_lockers(dbenv, _lk_max_lockers);
xx = cvtdberr(dbi, dbenv-set_lk_max_lockers, xx, _debug);
xx = dbenv-set_lk_max_locks(dbenv, _lk_max_locks);
xx = cvtdberr(dbi, dbenv-set_lk_max_locks, xx, _debug);
xx = dbenv-set_lk_max_objects(dbenv, _lk_max_objects);
xx = cvtdberr(dbi, dbenv-set_lk_max_objects, xx, _debug);
  +
  +#ifdef   NOTYET  /* XXX unclear if necessary atm. */
  +  {  uint32_t _max = 8192;
  + xx = dbenv-mutex_set_max(dbenv, _max);
  + xx = cvtdberr(dbi, dbenv-mutex_set_max, xx, _debug);
  +  }
  +#endif
  +
   }
   
   /*  Logging: */
  @@ -920,16 +926,21 @@
   
   #if (DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 5)
   /* XXX capture dbenv-falchk output on stderr. */
  -/*...@-noeffectuncon@*/
   dbenv-set_msgfile(dbenv, rpmdb-db_errfile);
  -/*...@=noeffectuncon@*/
   if (dbi-dbi_thread_count = 8) {
xx = dbenv-set_thread_count(dbenv, dbi-dbi_thread_count);
xx = cvtdberr(dbi, dbenv-set_thread_count, xx, _debug);
   }
   #endif
   
  -if (eflags  DB_RECOVER) eflags |= DB_CREATE;
  +/* XXX Attempt db_recover -ev (i.e. dbenv w DB_INIT_LOCK) */
  +if (eflags  DB_RECOVER) {
  +#ifdef   DYING   /* XXX this should not be necessary. */
  + eflags |= DB_CREATE;
  +#endif
  + xx = dbenv-set_verbose(dbenv, DB_VERB_RECOVERY, 1);
  + xx = cvtdberr(dbi, dbenv-set_verbose, xx, _debug);
  +}
   
   #if (DB_VERSION_MAJOR == 3  DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 
4)
   rc = (dbenv-open)(dbenv, dbhome, eflags, dbi-dbi_perms);
  @@ -2234,12 +2245,15 @@
default:
break;
case DB_RUNRECOVERY:
  + if (getuid() != 0)
  + break;
rpmlog(RPMLOG_NOTICE, _(Re-opening dbenv with DB_RECOVER 
...\n));
  + /* XXX Attempt db_recover -ev (i.e. dbenv w DB_INIT_LOCK) */
dbi-dbi_eflags |= DB_RECOVER;
rc = db_init(dbi, dbhome, dbfile, dbsubfile, dbenv);
dbi-dbi_eflags = ~DB_RECOVER;
if (rc) {
  - rpmlog(RPMLOG_ERR, _(\nrecovery failed. Exiting ...\n));
  + rpmlog(RPMLOG_NOTICE, _(\nrecovery failed. Exiting 
...\n));
exit(EXIT_FAILURE);
}
rpmlog(RPMLOG_NOTICE, _(.\nrecovery succeeded.\n));
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2009-12-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-Dec-2009 17:17:09
  Branch: HEAD Handle: 2009121316170900

  Modified files:
rpm/rpmdb   db3.c

  Log:
- rpmdb: attempt to default important tunables, scaling from physmem.

  Summary:
RevisionChanges Path
1.135   +113 -10rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.134 -r1.135 db3.c
  --- rpm/rpmdb/db3.c   13 Dec 2009 01:04:46 -  1.134
  +++ rpm/rpmdb/db3.c   13 Dec 2009 16:17:09 -  1.135
  @@ -615,6 +615,68 @@
   }
   #endif
   
  +/*==*/
  +
  +/* HAVE_SYS_SYSCTL_H */
  +#if defined(HAVE_PHYSMEM_SYSCTL) || defined(HAVE_NCPU_SYSCTL)
  +#include sys/sysctl.h
  +#endif
  +
  +static uint64_t physmem(void)
  + /*...@*/
  +{
  +static uint64_t _physmem = 0;
  +static int oneshot = 0;
  +
  +if (!oneshot) {
  +#if defined(HAVE_PHYSMEM_SYSCONF)
  + const long _pagesize = sysconf(_SC_PAGESIZE);
  + const long _pages = sysconf(_SC_PHYS_PAGES);
  + if (_pagesize != -1 || _pages != -1)
  + _physmem = (uint64_t)(_pagesize) * (uint64_t)(_pages);
  +#elif defined(HAVE_PHYSMEM_SYSCTL)
  + int name[2] = { CTL_HW, HW_PHYSMEM };
  + unsigned long mem;
  + size_t mem_ptr_size = sizeof(mem);
  + if (!sysctl(name, 2, mem, mem_ptr_size, NULL, 0)) {
  + if (mem_ptr_size != sizeof(mem)) {
  + if (mem_ptr_size == sizeof(unsigned int))
  + _physmem = *(unsigned int *)(mem);
  + } else {
  + _physmem = mem;
  + }
  + }
  +#endif
  + oneshot++;
  +}
  +return _physmem;
  +}
  +
  +static size_t ncores(void)
  + /*...@*/
  +{
  +static size_t _ncores = 1;
  +static int oneshot = 0;
  +
  +if (!oneshot) {
  +#if defined(HAVE_NCPU_SYSCONF)
  + const long cpus = sysconf(_SC_NPROCESSORS_ONLN);
  +#elif defined(HAVE_NCPU_SYSCTL)
  + int name[2] = { CTL_HW, HW_NCPU };
  + int cpus = 0;
  + size_t cpus_size = sizeof(cpus);
  + if (sysctl(name, 2, cpus, cpus_size, NULL, 0)
  +  || cpus_size != sizeof(cpus))
  + cpus = 0;
  +#endif
  + if (cpus  (int)_ncores)
  + _ncores = (size_t)(cpus);
  + oneshot++;
  +}
  +return _ncores;
  +}
  +
  +/*==*/
   /*...@-moduncon@*/ /* FIX: annotate db3 methods */
   static int db_init(dbiIndex dbi, const char * dbhome,
/*...@null@*/ const char * dbfile,
  @@ -625,6 +687,8 @@
/*...@modifies dbi, *dbenvp, fileSystem, internalState @*/
   {
   static int oneshot = 0;
  +uint64_t _physmem = physmem();
  +size_t _ncores = ncores();
   rpmdb rpmdb = dbi-dbi_rpmdb;
   DB_ENV *dbenv = NULL;
   int eflags;
  @@ -632,6 +696,8 @@
   int xx;
   
   if (!oneshot) {
  + rpmlog(RPMLOG_DEBUG, D_(rpmdb: cpus %u physmem %uMb\n),
  + (unsigned)_ncores, (unsigned)(_physmem/(1024 * 1024)));
   #if (DB_VERSION_MAJOR == 3  DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 
4)
xx = db_env_set_func_open((int (*)(const char *, int, ...))Open);
xx = cvtdberr(dbi, db_env_set_func_open, xx, _debug);
  @@ -663,15 +729,6 @@
   if (dbi-dbi_host == NULL)
dbi-dbi_ecflags = ~DB_CLIENT;
   
  -/* XXX Set a default shm_key. */
  -if ((dbi-dbi_eflags  DB_SYSTEM_MEM)  dbi-dbi_shmkey == 0) {
  -#if defined(HAVE_FTOK)
  - dbi-dbi_shmkey = ftok(dbhome, 0);
  -#else
  - dbi-dbi_shmkey = 0x44631380;
  -#endif
  -}
  -
   rc = db_env_create(dbenv, dbi-dbi_ecflags);
   rc = cvtdberr(dbi, db_env_create, rc, _debug);
   if (dbenv == NULL || rc)
  @@ -719,6 +776,15 @@
}
   } else {
   
  + {   size_t _lo =  16 * 1024 * 1024;
  + size_t _hi = 512 * 1024 * 1024;
  + size_t _mp_mmapsize = _physmem / 2;
  + if (_mp_mmapsize  _lo) _mp_mmapsize = _lo;
  + if (_mp_mmapsize  _hi) _mp_mmapsize = _hi;
  + xx = dbenv-set_mp_mmapsize(dbenv, _mp_mmapsize);
  + xx = cvtdberr(dbi, dbenv-set_mp_mmapsize, xx, _debug);
  + }
  +
if (dbi-dbi_tmpdir) {
const char * root;
const char * tmpdir;
  @@ -736,8 +802,36 @@
   }
   
   /*  Locking: */
  +if (eflags  DB_INIT_LOCK) {
  + uint32_t _lk_max_lockers = 8192;
  + uint32_t _lk_max_locks = 8192;
  + uint32_t _lk_max_objects = 8192;
  + xx = 

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

2009-12-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-Dec-2009 21:15:25
  Branch: HEAD Handle: 2009121320152500

  Modified files:
rpm/rpmdb   db3.c

  Log:
- add a note to self.

  Summary:
RevisionChanges Path
1.136   +1  -0  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.135 -r1.136 db3.c
  --- rpm/rpmdb/db3.c   13 Dec 2009 16:17:09 -  1.135
  +++ rpm/rpmdb/db3.c   13 Dec 2009 20:15:25 -  1.136
  @@ -1755,6 +1755,7 @@
   
   h = headerLink(rpmdb-db_h);
   if (h == NULL) {
  + /* XXX needs PROT_READ somewhen. */
h = headerLoad(data-data);
if (h == NULL) {
rpmlog(RPMLOG_ERR,
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/rpmdb/ db3.c 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:   08-Dec-2009 19:30:02
  Branch: HEAD Handle: 2009120818300200

  Modified files:
rpm/rpmdb   db3.c rpmdb.c

  Log:
- rpmdb: cruft up the usual swabbing prior to making integer indices
big endian.

  Summary:
RevisionChanges Path
1.130   +63 -0  rpm/rpmdb/db3.c
1.350   +64 -26 rpm/rpmdb/rpmdb.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.129 -r1.130 db3.c
  --- rpm/rpmdb/db3.c   8 Dec 2009 17:46:40 -   1.129
  +++ rpm/rpmdb/db3.c   8 Dec 2009 18:30:02 -   1.130
  @@ -43,6 +43,69 @@
   /*...@access dbiIndex @*/
   /*...@access dbiIndexSet @*/
   
  +union _dbswap {
  +uint64_t ul;
  +uint32_t ui;
  +uint16_t us;
  +uint8_t uc[8];
  +};
  +static union _dbswap _endian = { .ui = 0x11223344 };
  +
  +static inline uint64_t _ntoh_ul(uint64_t ul)
  + /*...@*/
  +{
  +union _dbswap _a;
  +_a.ul = ul;
  +if (_endian.uc[0] == 0x44) {
  + uint8_t _b, *_c = _a.uc; \
  + _b = _c[7]; _c[7] = _c[0]; _c[0] = _b; \
  + _b = _c[6]; _c[6] = _c[1]; _c[1] = _b; \
  + _b = _c[5]; _c[5] = _c[2]; _c[2] = _b; \
  + _b = _c[4]; _c[4] = _c[3]; _c[3] = _b; \
  +}
  +return _a.ul;
  +}
  +static inline uint64_t _hton_ul(uint64_t ul)
  + /*...@*/
  +{
  +return _ntoh_ul(ul);
  +}
  +
  +static inline uint32_t _ntoh_ui(uint32_t ui)
  + /*...@*/
  +{
  +union _dbswap _a;
  +_a.ui = ui;
  +if (_endian.uc[0] == 0x44) {
  + uint8_t _b, *_c = _a.uc; \
  + _b = _c[3]; _c[3] = _c[0]; _c[0] = _b; \
  + _b = _c[2]; _c[2] = _c[1]; _c[1] = _b; \
  +}
  +return _a.ui;
  +}
  +static inline uint32_t _hton_ui(uint32_t ui)
  + /*...@*/
  +{
  +return _ntoh_ui(ui);
  +}
  +
  +static inline uint16_t _ntoh_us(uint16_t us)
  + /*...@*/
  +{
  +union _dbswap _a;
  +_a.us = us;
  +if (_endian.uc[0] == 0x44) {
  + uint8_t _b, *_c = _a.uc; \
  + _b = _c[1]; _c[1] = _c[0]; _c[0] = _b; \
  +}
  +return _a.us;
  +}
  +static inline uint16_t _hton_us(uint16_t us)
  + /*...@*/
  +{
  +return _ntoh_us(us);
  +}
  +
   #ifdef   NOTNOW
   static const char * bfstring(unsigned int x, const char * xbf)
   {
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/rpmdb.c
  
  $ cvs diff -u -r1.349 -r1.350 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 8 Dec 2009 15:37:24 -   1.349
  +++ rpm/rpmdb/rpmdb.c 8 Dec 2009 18:30:02 -   1.350
  @@ -321,34 +321,72 @@
   }
   
   union _dbswap {
  -rpmuint32_t ui;
  -unsigned char uc[4];
  +uint64_t ul;
  +uint32_t ui;
  +uint16_t us;
  +uint8_t uc[8];
   };
   static union _dbswap _endian = { .ui = 0x11223344 };
   
  -#define  _DBSWAP(_a) \
  -  { unsigned char _b, *_c = (_a).uc; \
  -_b = _c[3]; _c[3] = _c[0]; _c[0] = _b; \
  -_b = _c[2]; _c[2] = _c[1]; _c[1] = _b; \
  -  }
  -
  -static inline uint32_t _ntohl(uint32_t ui)
  -{
  -union _dbswap mi_offset;
  -mi_offset.ui = ui;
  -if (_endian.uc[0] == 0x44)
  - _DBSWAP(mi_offset);
  -return mi_offset.ui;
  +static inline uint64_t _ntoh_ul(uint64_t ul)
  + /*...@*/
  +{
  +union _dbswap _a;
  +_a.ul = ul;
  +if (_endian.uc[0] == 0x44) {
  + uint8_t _b, *_c = _a.uc; \
  + _b = _c[7]; _c[7] = _c[0]; _c[0] = _b; \
  + _b = _c[6]; _c[6] = _c[1]; _c[1] = _b; \
  + _b = _c[5]; _c[5] = _c[2]; _c[2] = _b; \
  + _b = _c[4]; _c[4] = _c[3]; _c[3] = _b; \
  +}
  +return _a.ul;
  +}
  +static inline uint64_t _hton_ul(uint64_t ul)
  + /*...@*/
  +{
  +return _ntoh_ul(ul);
  +}
  +
  +static inline uint32_t _ntoh_ui(uint32_t ui)
  + /*...@*/
  +{
  +union _dbswap _a;
  +_a.ui = ui;
  +if (_endian.uc[0] == 0x44) {
  + uint8_t _b, *_c = _a.uc; \
  + _b = _c[3]; _c[3] = _c[0]; _c[0] = _b; \
  + _b = _c[2]; _c[2] = _c[1]; _c[1] = _b; \
  +}
  +return _a.ui;
  +}
  +static inline uint32_t _hton_ui(uint32_t ui)
  + /*...@*/
  +{
  +return _ntoh_ui(ui);
  +}
  +
  +static inline uint16_t _ntoh_us(uint16_t us)
  + /*...@*/
  +{
  +union _dbswap _a;
  +_a.us = us;
  +if (_endian.uc[0] == 0x44) {
  + uint8_t _b, *_c = _a.uc; \
  + _b = _c[1]; _c[1] = _c[0]; _c[0] = _b; \
  +}
  +return _a.us;
   }
  -static inline uint32_t _htonl(uint32_t ui)
  +static inline uint16_t _hton_us(uint16_t us)
  + /*...@*/
   {
  

[CVS] RPM: rpm/rpmdb/ db3.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:   08-Dec-2009 19:49:25
  Branch: HEAD Handle: 2009120818492500

  Modified files:
rpm/rpmdb   db3.c

  Log:
- fix: don't pass DB_AUTO_COMMIT to DB-associate().

  Summary:
RevisionChanges Path
1.131   +1  -2  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.130 -r1.131 db3.c
  --- rpm/rpmdb/db3.c   8 Dec 2009 18:30:02 -   1.130
  +++ rpm/rpmdb/db3.c   8 Dec 2009 18:49:25 -   1.131
  @@ -2415,8 +2415,7 @@
if (dbi-dbi_index) {
int (*_callback)(DB *, const DBT *, const DBT *, DBT *)
= db3Acallback;
  - int _flags = (rpmdb-_dbi[0]-dbi_eflags  DB_INIT_TXN)
  - ? DB_AUTO_COMMIT : 0;
  + int _flags = DB_IMMUTABLE_KEY;
if (oflags  (DB_CREATE|DB_TRUNCATE)) _flags |= DB_CREATE;
xx = db3associate(rpmdb-_dbi[0], dbi, _callback, _flags);
}
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

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:04:27
  Branch: HEAD Handle: 2009120404042700

  Modified files:
rpm/rpmdb   db3.c

  Log:
- print the primary key in hex to sort endianness issues.

  Summary:
RevisionChanges Path
1.125   +1  -1  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.124 -r1.125 db3.c
  --- rpm/rpmdb/db3.c   19 Nov 2009 20:19:34 -  1.124
  +++ rpm/rpmdb/db3.c   4 Dec 2009 04:04:27 -   1.125
  @@ -356,7 +356,7 @@
} else {
switch (_nu) {
default: break;
  - case 4: sprintf(te, \t%u, *(uint32_t *)_u); break;
  + case 4: sprintf(te, \t0x%08x, *(uint32_t *)_u); break;
}
}
   
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/rpmdb/ db3.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:28:34
  Branch: HEAD Handle: 2009110914283300

  Modified files:
rpm/rpmdb   db3.c

  Log:
- rpmdb: oops, both the seqno record and the Seqno table need to be
closed.

  Summary:
RevisionChanges Path
1.122   +1  -2  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.121 -r1.122 db3.c
  --- rpm/rpmdb/db3.c   10 Oct 2009 18:55:30 -  1.121
  +++ rpm/rpmdb/db3.c   9 Nov 2009 14:28:33 -   1.122
  @@ -1336,11 +1336,10 @@
rc = cvtdberr(dbi, seq-close, rc, _debug);
seq = dbi-dbi_seq = NULL;
   
  - rpmlog(RPMLOG_DEBUG, D_(closed   db sequence%s/%s\n),
  + rpmlog(RPMLOG_DEBUG, D_(closed   db seqno   %s/%s\n),
dbhome, (dbfile ? dbfile : dbiBN));
   
   }
  -
   if (db) {
rc = db-close(db, 0);
/* XXX ignore not found error messages. */
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2009-10-10 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:   10-Oct-2009 15:58:20
  Branch: HEAD Handle: 2009101013581900

  Modified files:
rpm/rpmdb   db3.c

  Log:
- db3: set open/associate flag automagically.

  Summary:
RevisionChanges Path
1.120   +4  -1  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.119 -r1.120 db3.c
  --- rpm/rpmdb/db3.c   7 Oct 2009 18:27:33 -   1.119
  +++ rpm/rpmdb/db3.c   10 Oct 2009 13:58:19 -  1.120
  @@ -2255,6 +2255,8 @@
   #endif   /* PLD_CHROOT */
   #endif   /* HACK */
   
  + if (rpmdb-_dbi[0]-dbi_eflags  DB_INIT_TXN)
  + oflags |= DB_AUTO_COMMIT;
   #if (DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 1)
rc = (db-open)(db, _txnid, dbpath, dbsubfile,
dbi_type, oflags, dbi-dbi_perms);
  @@ -2348,7 +2350,8 @@
if (dbi-dbi_index) {
int (*_callback)(DB *, const DBT *, const DBT *, DBT *)
= db3Acallback;
  - int _flags = 0;
  + int _flags = (rpmdb-_dbi[0]-dbi_eflags  DB_INIT_TXN)
  + ? DB_AUTO_COMMIT : 0;
xx = db3associate(rpmdb-_dbi[0], dbi, _callback, _flags);
}
if (dbi-dbi_seq_id) {
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/rpmdb/ db3.c librpmdb.vers logio.h logio_rec.c rpmdb.h

2009-10-10 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:   10-Oct-2009 20:55:30
  Branch: HEAD Handle: 2009101018553000

  Modified files:
rpm/rpmdb   db3.c librpmdb.vers logio.h logio_rec.c rpmdb.h

  Log:
- dbi: add additional system calls to logs, wired on main RPM code
paths.

  Summary:
RevisionChanges Path
1.121   +20 -8  rpm/rpmdb/db3.c
1.71+5  -0  rpm/rpmdb/librpmdb.vers
1.4 +2  -0  rpm/rpmdb/logio.h
1.4 +83 -0  rpm/rpmdb/logio_rec.c
1.112   +91 -0  rpm/rpmdb/rpmdb.h
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.120 -r1.121 db3.c
  --- rpm/rpmdb/db3.c   10 Oct 2009 13:58:19 -  1.120
  +++ rpm/rpmdb/db3.c   10 Oct 2009 18:55:30 -  1.121
  @@ -29,6 +29,10 @@
   
   #include debug.h
   
  +extern int logio_dispatch(DB_ENV * dbenv, DBT * dbt, DB_LSN * lsn, db_recops 
op)
  + /*...@*/;
  +
  +
   #if !defined(DB_CLIENT)  /* XXX db-4.2.42 retrofit */
   #define  DB_CLIENT   DB_RPCCLIENT
   #endif
  @@ -550,6 +554,8 @@
   /* Try to join, rather than create, the environment. */
   /* XXX DB_JOINENV is defined to 0 in db-4.5.20 */
   if (eflags  DB_JOINENV) eflags = DB_JOINENV;
  +/* XXX DB_RECOVER needs automagic */
  +if (!(eflags  DB_INIT_TXN)) eflags = ~DB_RECOVER;
   
   if (dbfile)
rpmlog(RPMLOG_DEBUG, D_(opening  db environment %s/%s %s\n),
  @@ -575,11 +581,6 @@
   
   /*...@-noeffectuncon@*/ /* FIX: annotate db3 methods */
   
  - /* 4.1: dbenv-set_app_dispatch(???) */
  - /* 4.1: dbenv-set_alloc(???) */
  - /* 4.1: dbenv-set_data_dir(???) */
  - /* 4.1: dbenv-set_encrypt(???) */
  -
   /*...@-castfcnptr@*/
   dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall);
   /*...@=castfcnptr@*/
  @@ -587,6 +588,10 @@
   dbenv-set_errpfx(dbenv, rpmdb-db_errpfx);
   /*...@=noeffectuncon@*/
   
  + /* 4.1: dbenv-set_alloc(???) */
  + /* 4.1: dbenv-set_data_dir(???) */
  + /* 4.1: dbenv-set_encrypt(???) */
  +
/* 4.1: dbenv-set_feedback(???) */
/* 4.1: dbenv-set_flags(???) */
   
  @@ -639,6 +644,10 @@
   /*  Replication: */
   /*  Sequences: */
   /*  Transactions: */
  +if (eflags  DB_INIT_TXN) {
  + xx = dbenv-set_app_dispatch(dbenv, logio_dispatch);
  + xx = cvtdberr(dbi, dbenv-set_app_dispatch, xx, _debug);
  +}
   
   /*  Other: */
   if (dbi-dbi_no_fsync) {
  @@ -1965,6 +1974,10 @@
   #endif
}
}
  + /* ... transactionally protected open's need DB_AUTO_COMMIT ... */
  + if (rpmdb-_dbi[0]
  +   rpmdb-_dbi[0]-dbi_eflags  DB_INIT_TXN)
  + oflags |= DB_AUTO_COMMIT;
dbf = _free(dbf);
}
   }
  @@ -2255,8 +2268,6 @@
   #endif   /* PLD_CHROOT */
   #endif   /* HACK */
   
  - if (rpmdb-_dbi[0]-dbi_eflags  DB_INIT_TXN)
  - oflags |= DB_AUTO_COMMIT;
   #if (DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 1)
rc = (db-open)(db, _txnid, dbpath, dbsubfile,
dbi_type, oflags, dbi-dbi_perms);
  @@ -2340,7 +2351,8 @@
   }
   
   dbi-dbi_db = db;
  -db-app_private = dbi;
  +if (db)
  + db-app_private = dbi;
   
   DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%p) dbi %p rc %d %s\n, __FUNCTION__, 
rpmdb, tagName(rpmtag), dbip, dbi, rc, _OFLAGS(dbi-dbi_oflags)));
   
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/librpmdb.vers
  
  $ cvs diff -u -r1.70 -r1.71 librpmdb.vers
  --- rpm/rpmdb/librpmdb.vers   10 Oct 2009 15:03:56 -  1.70
  +++ rpm/rpmdb/librpmdb.vers   10 Oct 2009 18:55:30 -  1.71
  @@ -81,7 +81,12 @@
   headerVerifyInfo;
   hGetColor;
   _init;
  +logio_Link_log;
   logio_Mkdir_log;
  +logio_Mkfifo_log;
  +logio_Mknod_log;
  +logio_Rmdir_log;
  +logio_Symlink_log;
   _pkgio_debug;
   prDbiOpenFlags;
   rdbOptions;
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/logio.h
  
  $ cvs diff -u -r1.3 -r1.4 logio.h
  --- rpm/rpmdb/logio.h 9 Oct 2009 00:06:43 -   1.3
  +++ rpm/rpmdb/logio.h 10 Oct 2009 18:55:30 -  1.4
  @@ -69,6 +69,8 @@
   
   #undef   _LOGIO_PROTO
   
  +int logio_dispatch(DB_ENV * dbenv, DBT * dbt, DB_LSN * lsn, db_recops op);
  +
   int logio_init_print __P((DB_ENV *, DB_DISTAB *));
   
   #endif /* !H_LOGIO */
  @@ .
  patch -p0 

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

2009-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:  j...@rpm5.org
  Module: rpm  Date:   07-Oct-2009 20:27:33
  Branch: HEAD Handle: 2009100718273300

  Modified files:
rpm/rpmdb   db3.c rpmdb.c

  Log:
- dbi: initialize new variables, rescusitate DB_RECOVER.

  Summary:
RevisionChanges Path
1.119   +1  -0  rpm/rpmdb/db3.c
1.325   +4  -0  rpm/rpmdb/rpmdb.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.118 -r1.119 db3.c
  --- rpm/rpmdb/db3.c   7 Oct 2009 00:50:24 -   1.118
  +++ rpm/rpmdb/db3.c   7 Oct 2009 18:27:33 -   1.119
  @@ -666,6 +666,7 @@
   }
   #endif
   
  +if (eflags  DB_RECOVER) eflags |= DB_CREATE;
   #if (DB_VERSION_MAJOR == 3  DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 
4)
   rc = (dbenv-open)(dbenv, dbhome, eflags, dbi-dbi_perms);
   #else
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/rpmdb.c
  
  $ cvs diff -u -r1.324 -r1.325 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 7 Oct 2009 00:50:25 -   1.324
  +++ rpm/rpmdb/rpmdb.c 7 Oct 2009 18:27:33 -   1.325
  @@ -1177,7 +1177,11 @@
   db-db_nbits = 0;
   db-db_next = NULL;
   db-db_opens = 0;
  +
   db-db_dbenv = NULL;
  +db-db_txnid = NULL;
  +db-db_logc = NULL;
  +db-db_mpf = NULL;
   
   dbiTagsInit(db-db_tags, db-db_ndbi);
   db-_dbi = xcalloc(db-db_ndbi, sizeof(*db-_dbi));
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c rpmdb.h

2009-10-06 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-Oct-2009 01:04:13
  Branch: HEAD Handle: 2009100623041300

  Modified files:
rpm/rpmdb   db3.c dbconfig.c rpmdb.c rpmdb.h

  Log:
- dbi: use the dbiTxnid() getter wrapper consistently.

  Summary:
RevisionChanges Path
1.117   +58 -23 rpm/rpmdb/db3.c
1.74+16 -16 rpm/rpmdb/dbconfig.c
1.323   +18 -16 rpm/rpmdb/rpmdb.c
1.107   +133 -2 rpm/rpmdb/rpmdb.h
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.116 -r1.117 db3.c
  --- rpm/rpmdb/db3.c   5 Oct 2009 22:48:48 -   1.116
  +++ rpm/rpmdb/db3.c   6 Oct 2009 23:04:13 -   1.117
  @@ -162,6 +162,36 @@
   
   #define _ENTRY(_v)  { DB_##_v, #_v, }
   
  +static KEY DBeflags[] = {
  +_ENTRY(INIT_CDB),
  +_ENTRY(INIT_LOCK),
  +_ENTRY(INIT_LOG),
  +_ENTRY(INIT_MPOOL),
  +_ENTRY(INIT_REP),
  +_ENTRY(INIT_TXN),
  +_ENTRY(RECOVER),
  +_ENTRY(RECOVER_FATAL),
  +_ENTRY(USE_ENVIRON),
  +_ENTRY(USE_ENVIRON_ROOT),
  +_ENTRY(CREATE),
  +_ENTRY(LOCKDOWN),
  +_ENTRY(FAILCHK),
  +_ENTRY(PRIVATE),
  +_ENTRY(REGISTER),
  +_ENTRY(SYSTEM_MEM),
  +_ENTRY(THREAD),
  +};
  +static size_t nDBeflags = sizeof(DBeflags) / sizeof(DBeflags[0]);
  +static const char * fmtDBeflags(uint32_t flags)
  +{
  +static char buf[BUFSIZ];
  +char * te = buf;
  +te = stpcpy(te, \n\tflags: );
  +(void) fmtBits(flags, DBeflags, nDBeflags, te);
  +return buf;
  +}
  +#define  _EFLAGS(_eflags)fmtDBeflags(_eflags)
  +
   static KEY DBoflags[] = {
   _ENTRY(AUTO_COMMIT),
   _ENTRY(CREATE),
  @@ -182,7 +212,7 @@
   (void) fmtBits(flags, DBoflags, nDBoflags, te);
   return buf;
   }
  -#define  _OFLAGS(_dbi)   fmtDBoflags((_dbi)-dbi_oflags)
  +#define  _OFLAGS(_oflags)fmtDBoflags(_oflags)
   
   static KEY DBaflags[] = {
   _ENTRY(CREATE),
  @@ -213,7 +243,7 @@
   (void) fmtBits(flags, DBafflags, nDBafflags, te);
   return buf;
   }
  -#define  _AFFLAGS(_afflags)  fmtDBaflags(_afflags)
  +#define  _AFFLAGS(_afflags)  fmtDBafflags(_afflags)
   
   static KEY DBCflags[] = {
   _ENTRY(AFTER),   /* Dbc.put */
  @@ -420,6 +450,7 @@
   
   rc = dbenv-close(dbenv, 0);
   rc = cvtdberr(dbi, dbenv-close, rc, _debug);
  +rpmdb-db_dbenv = NULL;
   
   if (dbfile)
rpmlog(RPMLOG_DEBUG, D_(closed   db environment %s/%s\n),
  @@ -498,7 +529,6 @@
   int rc;
   int xx;
   
  -DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%s,%s,%p)\n, __FUNCTION__, dbi, 
dbhome, dbfile, dbsubfile, dbenvp));
   if (!oneshot) {
   #if (DB_VERSION_MAJOR == 3  DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 
4)
xx = db_env_set_func_open((int (*)(const char *, int, ...))Open);
  @@ -667,6 +697,8 @@
   
   *dbenvp = dbenv;
   
  +DBIDEBUG(dbi, (stderr, -- %s(%p(%s),%s,%s,%s,%p) dbenv %p %s\n, 
__FUNCTION__, dbi, tagName(dbi-dbi_rpmtag), dbhome, dbfile, dbsubfile, dbenvp, 
dbenv, _EFLAGS(eflags)));
  +
   return 0;
   
   errxit:
  @@ -721,19 +753,19 @@
   /*...@=mustmod@*/
   
   /*...@-mustmod@*/
  -static int db3truncate(dbiIndex dbi, DB_TXN * txnid, unsigned int * countp,
  - unsigned int flags)
  +static int db3truncate(dbiIndex dbi, unsigned int * countp, unsigned int 
flags)
/*...@globals fileSystem @*/
/*...@modifies *countp, fileSystem @*/
   {
   DB * db = dbi-dbi_db;
  +DB_TXN * _txnid = dbiTxnid(dbi);
   int rc;
   
   assert(db != NULL);
  -rc = db-truncate(db, txnid, countp, flags);
  +rc = db-truncate(db, _txnid, countp, flags);
   rc = cvtdberr(dbi, db-truncate, rc, _debug);
   
  -DBIDEBUG(dbi, (stderr, -- %s(%p,%p,%p,0x%x) rc %d\n, __FUNCTION__, dbi, 
txnid, countp, flags, rc));
  +DBIDEBUG(dbi, (stderr, -- %s(%p,%p,0x%x) rc %d\n, __FUNCTION__, dbi, 
countp, flags, rc));
   
   return rc;
   }
  @@ -808,7 +840,7 @@
/*...@modifies fileSystem @*/
   {
   DB * db = dbi-dbi_db;
  -DB_TXN * _txnid = NULL;
  +DB_TXN * _txnid = dbiTxnid(dbi);
   int _printit;
   int rc;
   
  @@ -830,7 +862,7 @@
/*...@modifies *seqnop, fileSystem @*/
   {
   DB * db = dbi-dbi_db;
  -DB_TXN * _txnid = NULL;
  +DB_TXN * _txnid = dbiTxnid(dbi);
   DB_SEQUENCE * seq = dbi-dbi_seq;
   int32_t _delta = 1;
   db_seq_t seqno = 0;
  @@ -939,12 +971,13 @@
/*...@modifies fileSystem @*/
   {
   DB * db = dbi-dbi_db;
  +   

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

2009-10-06 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-Oct-2009 02:50:25
  Branch: HEAD Handle: 2009100700502401

  Modified files:
rpm/rpmdb   db3.c rpmdb.c

  Log:
- dbi: sanitize DB_THREAD for non-root lusers.

  Summary:
RevisionChanges Path
1.118   +30 -18 rpm/rpmdb/db3.c
1.324   +0  -2  rpm/rpmdb/rpmdb.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.117 -r1.118 db3.c
  --- rpm/rpmdb/db3.c   6 Oct 2009 23:04:13 -   1.117
  +++ rpm/rpmdb/db3.c   7 Oct 2009 00:50:24 -   1.118
  @@ -1005,10 +1005,10 @@
   int _printit;
   int rc;
   
  -assert(db != NULL);
  +assert(db != NULL);
   if (dbcursor == NULL) {
/* XXX duplicates require cursors. */
  - rc = db-get(db, _txnid, key, data, 0);
  + rc = db-get(db, _txnid, key, data, flags);
/* XXX DB_NOTFOUND can be returned */
_printit = (rc == DB_NOTFOUND ? 0 : _debug);
rc = cvtdberr(dbi, db-get, rc, _printit);
  @@ -1042,25 +1042,32 @@
/*...@modifies *dbcursor, *key, *data, fileSystem @*/
   {
   DB * db = dbi-dbi_db;
  +DB_TXN * _txnid = dbiTxnid(dbi);
   int _printit;
   int rc;
   
  -assert(db != NULL);
  -assert(dbcursor != NULL);
  -
  +assert(db != NULL);
  +if (dbcursor == NULL) {
  + /* XXX duplicates require cursors. */
  + rc = db-pget(db, _txnid, key, pkey, data, flags);
  + /* XXX DB_NOTFOUND can be returned */
  + _printit = (rc == DB_NOTFOUND ? 0 : _debug);
  + rc = cvtdberr(dbi, db-pget, rc, _printit);
  +} else {
   #if (DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 6)
  -/* XXX db3 does DB_FIRST on uninitialized cursor */
  -rc = dbcursor-pget(dbcursor, key, pkey, data, flags);
  -/* XXX DB_NOTFOUND can be returned */
  -_printit = (rc == DB_NOTFOUND ? 0 : _debug);
  -rc = cvtdberr(dbi, dbcursor-pget, rc, _printit);
  + /* XXX db3 does DB_FIRST on uninitialized cursor */
  + rc = dbcursor-pget(dbcursor, key, pkey, data, flags);
  + /* XXX DB_NOTFOUND can be returned */
  + _printit = (rc == DB_NOTFOUND ? 0 : _debug);
  + rc = cvtdberr(dbi, dbcursor-pget, rc, _printit);
   #else
  -/* XXX db3 does DB_FIRST on uninitialized cursor */
  -rc = dbcursor-c_pget(dbcursor, key, pkey, data, flags);
  -/* XXX DB_NOTFOUND can be returned */
  -_printit = (rc == DB_NOTFOUND ? 0 : _debug);
  -rc = cvtdberr(dbi, dbcursor-c_pget, rc, _printit);
  + /* XXX db3 does DB_FIRST on uninitialized cursor */
  + rc = dbcursor-c_pget(dbcursor, key, pkey, data, flags);
  + /* XXX DB_NOTFOUND can be returned */
  + _printit = (rc == DB_NOTFOUND ? 0 : _debug);
  + rc = cvtdberr(dbi, dbcursor-c_pget, rc, _printit);
   #endif
  +}
   
   DBIDEBUG(dbi, (stderr, -- %s(%p,%p,%p,%p,%p,0x%x) rc %d %s%s\n, 
__FUNCTION__, dbi, dbcursor, key, pkey, data, flags, rc, _DBCFLAGS(flags), 
_KEYDATA(key, data, NULL)));
   return rc;
  @@ -1077,7 +1084,7 @@
   DB_TXN * _txnid = dbiTxnid(dbi);
   int rc;
   
  -assert(db != NULL);
  +assert(db != NULL);
   if (dbcursor == NULL) {
rc = db-del(db, _txnid, key, flags);
rc = cvtdberr(dbi, db-del, rc, _debug);
  @@ -1898,6 +1905,7 @@
   
/* dbhome is unwritable, don't attempt DB_CREATE on DB-open ... */
oflags = ~DB_CREATE;
  + oflags = ~DB_AUTO_COMMIT;
   
/* ... but DBENV-open might still need DB_CREATE ... */
if (dbi-dbi_eflags  DB_PRIVATE) {
  @@ -1905,7 +1913,9 @@
} else {
dbi-dbi_eflags |= DB_JOINENV;
dbi-dbi_oeflags = ~DB_CREATE;
  +#ifdef   DYING
dbi-dbi_oeflags = ~DB_THREAD;
  +#endif
/* ... but, unless DB_PRIVATE is used, skip DBENV. */
dbi-dbi_use_dbenv = 0;
}
  @@ -1949,7 +1959,9 @@
} else {
dbi-dbi_eflags |= DB_JOINENV;
dbi-dbi_oeflags = ~DB_CREATE;
  +#ifdef   DYING
dbi-dbi_oeflags = ~DB_THREAD;
  +#endif
}
}
dbf = _free(dbf);
  @@ -2107,7 +2119,7 @@
   /* 4.1: db-set_errcall(dbenv, rpmdb-db_errcall); */
   /* 4.1: db-set_errfile(dbenv, rpmdb-db_errfile); */
   /* 4.1: db-set_errpfx(dbenv, rpmdb-db_errpfx); */
  - /* 4.1: db-set_feedback(???) */
  +/* 4.1: db-set_feedback(???) */
   
if (rc == 0  dbi-dbi_lorder) {
rc = db-set_lorder(db, dbi-dbi_lorder);
  @@ 

[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.h

2009-10-05 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-Oct-2009 16:21:40
  Branch: HEAD Handle: 2009100514214000

  Modified files:
rpm/rpmdb   db3.c dbconfig.c rpmdb.h

  Log:
- dbi: wire up DB_SEQUENCE configuration.

  Summary:
RevisionChanges Path
1.114   +89 -1  rpm/rpmdb/db3.c
1.72+8  -3  rpm/rpmdb/dbconfig.c
1.104   +11 -7  rpm/rpmdb/rpmdb.h
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.113 -r1.114 db3.c
  --- rpm/rpmdb/db3.c   5 Oct 2009 03:42:29 -   1.113
  +++ rpm/rpmdb/db3.c   5 Oct 2009 14:21:40 -   1.114
  @@ -1175,6 +1175,7 @@
   const char * dbfile;
   const char * dbsubfile;
   DB * db = dbi-dbi_db;
  +DB_SEQUENCE * seq = dbi-dbi_seq;
   const char * dbiBN = mapTagName(rpmdb, dbi);
   int _printit;
   int rc = 0, xx;
  @@ -1210,6 +1211,16 @@
   #endif
   }
   
  +if (seq) {
  + rc = seq-close(seq, 0);  
  + rc = cvtdberr(dbi, seq-close, rc, _debug);
  + seq = dbi-dbi_seq = NULL;
  +
  + rpmlog(RPMLOG_DEBUG, D_(closed   db seqno   %s/%s\n),
  + dbhome, (dbfile ? dbfile : dbiBN));
  +
  +}
  +
   if (db) {
rc = db-close(db, 0);
/* XXX ignore not found error messages. */
  @@ -1598,6 +1609,74 @@
   return rc;
   }
   
  +static int seqid_init(dbiIndex dbi, const char * keyp, size_t keylen,
  + DB_SEQUENCE ** seqp)
  +{
  +DB * db = dbi-dbi_db;
  +DBT k = {0};
  +DB_TXN * txnid = NULL;
  +DB_SEQUENCE * seq = NULL;
  +db_seq_t _rangemin = -922337203685477600LL;
  +db_seq_t _rangemax =  922337203685477600LL;
  +db_seq_t _value = 0;
  +int32_t _cachesize = 0;
  +uint32_t _flags = DB_SEQ_INC;
  +uint32_t _oflags = DB_CREATE;
  +int rc;
  +
  +assert(db != NULL);
  +if (seqp) *seqp = NULL;
  +
  +rc = db_sequence_create(seq, db, 0);
  +rc = cvtdberr(dbi, db_sequence_create, rc, _debug);
  +if (rc) goto exit;
  +
  +if (dbi-dbi_seq_cachesize) {
  + _cachesize = dbi-dbi_seq_cachesize;
  + rc = seq-set_cachesize(seq, _cachesize);
  + rc = cvtdberr(dbi, seq-set_cachesize, rc, _debug);
  + if (rc) goto exit;
  +}
  +
  +if (dbi-dbi_seq_initial)
  + _value = dbi-dbi_seq_initial;
  +rc = seq-initial_value(seq, _value);
  +rc = cvtdberr(dbi, seq-initial_value, rc, _debug);
  +if (rc) goto exit;
  +
  +if (dbi-dbi_seq_min)
  + _rangemin = dbi-dbi_seq_min;
  +if (dbi-dbi_seq_max)
  + _rangemin = dbi-dbi_seq_max;
  +rc = seq-set_range(seq, _rangemin, _rangemax);
  +rc = cvtdberr(dbi, seq-set_range, rc, _debug);
  +if (rc) goto exit;
  +
  +if (dbi-dbi_seq_flags)
  + _flags = dbi-dbi_seq_flags;
  +rc = seq-set_flags(seq, _flags);
  +rc = cvtdberr(dbi, seq-set_flags, rc, _debug);
  +if (rc) goto exit;
  +
  +k.data = (void *)keyp;
  +k.size = (u_int32_t) (keylen  0 ? keylen : strlen(keyp));
  +rc = seq-open(seq, txnid, k, _oflags);
  +rc = cvtdberr(dbi, seq-open, rc, _debug);
  +if (rc) goto exit;
  +
  +exit:
  +if (rc == 0  seqp != NULL)
  + *seqp = seq;
  +else {
  + int xx = seq-close(seq, 0);  
  + xx = cvtdberr(dbi, seq-close, xx, _debug);
  +}
  +
  +DBIDEBUG(dbi, (stderr, -- %s(%p,%p[%u],%p) seq %p rc %d\n, __FUNCTION__, 
dbi, keyp, keylen, seqp, (seqp ? *seqp : NULL), rc));
  +
  +return rc;
  +}
  +
   /**
* Return handle for an index database.
* @param rpmdb rpm database
  @@ -2157,7 +2236,16 @@
int (*_callback)(DB *, const DBT *, const DBT *, DBT *)
= db3Acallback;
int _flags = 0;
  - (void) db3associate(rpmdb-_dbi[0], dbi, _callback, _flags);
  + xx = db3associate(rpmdb-_dbi[0], dbi, _callback, _flags);
  + }
  + if (dbi-dbi_seq_id) {
  + char * end = NULL;
  + uint32_t u = (uint32_t) strtoll(dbi-dbi_seq_id, end, 0);
  +
  + if (*end == '\0')
  + xx = seqid_init(dbi,(const char *)u, sizeof(u), dbi-dbi_seq);
  + else
  + xx = seqid_init(dbi, dbi-dbi_seq_id, 0, dbi-dbi_seq);
}
   } else {
dbi-dbi_verify_on_close = 0;
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/dbconfig.c
  
  $ cvs diff -u -r1.71 -r1.72 dbconfig.c
  --- rpm/rpmdb/dbconfig.c  4 Oct 2009 17:42:14 -   1.71
  +++ rpm/rpmdb/dbconfig.c

[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.h

2009-10-05 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:   06-Oct-2009 00:48:49
  Branch: HEAD Handle: 2009100522484800

  Modified files:
rpm/rpmdb   db3.c dbconfig.c rpmdb.h

  Log:
- dbi: stub-in per-table Bloom filters.
- dbi: better debugging for DB-associate_foreign().

  Summary:
RevisionChanges Path
1.116   +39 -4  rpm/rpmdb/db3.c
1.73+3  -0  rpm/rpmdb/dbconfig.c
1.106   +5  -1  rpm/rpmdb/rpmdb.h
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.115 -r1.116 db3.c
  --- rpm/rpmdb/db3.c   5 Oct 2009 20:31:50 -   1.115
  +++ rpm/rpmdb/db3.c   5 Oct 2009 22:48:48 -   1.116
  @@ -184,6 +184,37 @@
   }
   #define  _OFLAGS(_dbi)   fmtDBoflags((_dbi)-dbi_oflags)
   
  +static KEY DBaflags[] = {
  +_ENTRY(CREATE),
  +_ENTRY(IMMUTABLE_KEY),
  +};
  +static size_t nDBaflags = sizeof(DBaflags) / sizeof(DBaflags[0]);
  +static const char * fmtDBaflags(uint32_t flags)
  +{
  +static char buf[BUFSIZ];
  +char * te = buf;
  +te = stpcpy(te, \n\tflags: );
  +(void) fmtBits(flags, DBaflags, nDBaflags, te);
  +return buf;
  +}
  +#define  _AFLAGS(_aflags)fmtDBaflags(_aflags)
  +
  +static KEY DBafflags[] = {
  +_ENTRY(FOREIGN_ABORT),
  +_ENTRY(FOREIGN_CASCADE),
  +_ENTRY(FOREIGN_NULLIFY),
  +};
  +static size_t nDBafflags = sizeof(DBafflags) / sizeof(DBafflags[0]);
  +static const char * fmtDBafflags(uint32_t flags)
  +{
  +static char buf[BUFSIZ];
  +char * te = buf;
  +te = stpcpy(te, \n\tflags: );
  +(void) fmtBits(flags, DBafflags, nDBafflags, te);
  +return buf;
  +}
  +#define  _AFFLAGS(_afflags)  fmtDBaflags(_afflags)
  +
   static KEY DBCflags[] = {
   _ENTRY(AFTER),   /* Dbc.put */
   _ENTRY(APPEND),  /* Db.put */
  @@ -1139,11 +1170,9 @@
   rc = cvtdberr(dbi, db-associate, rc, _debug);
   
   if (dbi-dbi_debug || dbisecondary-dbi_debug) {
  - const char * tag1 = xstrdup(tagName(dbi-dbi_rpmtag));
const char * tag2 = xstrdup(tagName(dbisecondary-dbi_rpmtag));
  -fprintf(stderr, -- %s(%p(%s),%p(%s),%p,0x%x) rc %d\n, __FUNCTION__, dbi, 
tag1, dbisecondary, tag2, callback, flags, rc);
  +fprintf(stderr, -- %s(%p(%s),%p(%s),%p,0x%x) rc %d %s\n, __FUNCTION__, 
dbi, tagName(dbi-dbi_rpmtag), dbisecondary, tag2, callback, flags, rc, 
_AFLAGS(flags));
tag2 = _free(tag2);
  - tag1 = _free(tag1);
   }
   
   return rc;
  @@ -1161,7 +1190,6 @@
   DB * secondary = dbisecondary-dbi_db;
   int rc;
   
  -DBIDEBUG(dbi, (stderr, -- %s(%p,%p,%p,0x%x)\n, __FUNCTION__, dbi, 
dbisecondary, callback, flags));
   /*...@-moduncon@*/ /* FIX: annotate db3 methods */
   #if (DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 8)
   assert(db != NULL);
  @@ -1171,6 +1199,13 @@
   #endif
   /*...@=moduncon@*/
   rc = cvtdberr(dbi, db-associate_foreign, rc, _debug);
  +
  +if (dbi-dbi_debug || dbisecondary-dbi_debug) {
  + const char * tag2 = xstrdup(tagName(dbisecondary-dbi_rpmtag));
  +fprintf(stderr, -- %s(%p(%s),%p(%s),%p,0x%x) rc %d %s\n, __FUNCTION__, 
dbi, tagName(dbi-dbi_rpmtag), dbisecondary, tag2, callback, flags, rc, 
_AFFLAGS(flags));
  + tag2 = _free(tag2);
  +}
  +
   return rc;
   }
   /*...@=mustmod@*/
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/dbconfig.c
  
  $ cvs diff -u -r1.72 -r1.73 dbconfig.c
  --- rpm/rpmdb/dbconfig.c  5 Oct 2009 14:21:40 -   1.72
  +++ rpm/rpmdb/dbconfig.c  5 Oct 2009 22:48:48 -   1.73
  @@ -466,9 +466,12 @@
dbi-dbi_file = _free(dbi-dbi_file);
dbi-dbi_subfile = _free(dbi-dbi_subfile);
dbi-dbi_tmpdir = _free(dbi-dbi_tmpdir);
  + dbi-dbi_bf = rpmbfFree(dbi-dbi_bf);
dbi-dbi_host = _free(dbi-dbi_host);
dbi-dbi_errpfx = _free(dbi-dbi_errpfx);
  + dbi-dbi_seq_id = _free(dbi-dbi_seq_id);
dbi-dbi_re_source = _free(dbi-dbi_re_source);
  + dbi-dbi_foreign = _free(dbi-dbi_foreign);
dbi-dbi_stats = _free(dbi-dbi_stats);
   }
   }
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/rpmdb.h
  
  $ cvs diff -u -r1.105 -r1.106 rpmdb.h
  --- rpm/rpmdb/rpmdb.h 5 Oct 2009 20:31:50 -   1.105
  +++ rpm/rpmdb/rpmdb.h 5 Oct 2009 22:48:48 -   1.106
  @@ -54,6 +54,7 @@
   
   #if defined(_RPMDB_INTERNAL)
   #include rpmio.h
  +#include rpmbf.h
   #include 

[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c rpmdb.h sqlite.c

2009-10-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-Oct-2009 19:42:14
  Branch: HEAD Handle: 2009100417421400

  Modified files:
rpm/rpmdb   db3.c dbconfig.c rpmdb.c rpmdb.h sqlite.c

  Log:
- dbi: add version strings.
- dbi: haul the coprolites out of dbiOpen. hmmm, maybe ebay instead?
- dbi: re-add thread_count config syntax for now, copying DB_CONFIG is a 
PITA.

  Summary:
RevisionChanges Path
1.110   +8  -3  rpm/rpmdb/db3.c
1.71+3  -0  rpm/rpmdb/dbconfig.c
1.319   +41 -82 rpm/rpmdb/rpmdb.c
1.102   +5  -3  rpm/rpmdb/rpmdb.h
1.42+4  -1  rpm/rpmdb/sqlite.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.109 -r1.110 db3.c
  --- rpm/rpmdb/db3.c   4 Oct 2009 05:28:29 -   1.109
  +++ rpm/rpmdb/db3.c   4 Oct 2009 17:42:14 -   1.110
  @@ -647,6 +647,10 @@
   /*...@-noeffectuncon@*/
   dbenv-set_msgfile(dbenv, rpmdb-db_errfile);
   /*...@=noeffectuncon@*/
  +if (dbi-dbi_thread_count = 8) {
  + xx = dbenv-set_thread_count(dbenv, dbi-dbi_thread_count);
  + xx = cvtdberr(dbi, dbenv-set_thread_count, xx, _debug);
  +}
   #endif
   
   #if (DB_VERSION_MAJOR == 3  DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 
4)
  @@ -664,7 +668,7 @@
goto errxit;
   
   #if (DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 5)
  -if (!rpmdb-db_verifying  !rpmdb-db_rebuilding) {
  +if (!rpmdb-db_verifying  !rpmdb-db_rebuilding  
dbi-dbi_thread_count = 8) {
/* XXX Set pid/tid is_alive probe. */
xx = dbenv-set_isalive(dbenv, db3is_alive);
xx = cvtdberr(dbi, dbenv-set_isalive, xx, _debug);
  @@ -2074,6 +2078,8 @@
   dbi-dbi_db = db;
   db-app_private = dbi;
   
  +DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%p) dbi %p rc %d %s\n, __FUNCTION__, 
rpmdb, tagName(rpmtag), dbip, dbi, rc, _OFLAGS(dbi)));
  +
   if (rc == 0  dbi-dbi_db != NULL  dbip != NULL) {
dbi-dbi_vec = db3vec;
*dbip = dbi;
  @@ -2091,7 +2097,6 @@
   
   urlfn = _free(urlfn);
   
  -DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%p) dbi %p rc %d %s\n, __FUNCTION__, 
rpmdb, tagName(rpmtag), dbip, dbi, rc, _OFLAGS(dbi)));
   /*...@-nullstate -compmemp...@*/
   return rc;
   /*...@=nullstate =compmemp...@*/
  @@ -2102,7 +2107,7 @@
   /*...@-exportheadervar@*/
   /*...@observer@*/ /*...@unchecked@*/
   struct _dbiVec db3vec = {
  -DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
  +DB_VERSION_STRING, DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
   db3open, db3close, db3sync, db3associate, db3associate_foreign, db3join,
   db3copen, db3cclose, db3cdup, db3cdel, db3cget, db3cpget, db3cput, 
db3ccount,
   db3byteswapped, db3stat
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/dbconfig.c
  
  $ cvs diff -u -r1.70 -r1.71 dbconfig.c
  --- rpm/rpmdb/dbconfig.c  4 Oct 2009 05:28:29 -   1.70
  +++ rpm/rpmdb/dbconfig.c  4 Oct 2009 17:42:14 -   1.71
  @@ -334,6 +334,9 @@
{ region_init, 0,POPT_ARG_VAL,db3dbi.dbi_region_init, 1,
NULL, NULL },
   
  + { thread_count, 0,POPT_ARG_INT,  db3dbi.dbi_thread_count, 0,
  + NULL, NULL },
  +
   #endif
   
   /*  Locking: */
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/rpmdb.c
  
  $ cvs diff -u -r1.318 -r1.319 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 4 Oct 2009 05:28:29 -   1.318
  +++ rpm/rpmdb/rpmdb.c 4 Oct 2009 17:42:14 -   1.319
  @@ -294,11 +294,11 @@
   dbiIndex dbiOpen(rpmdb db, rpmTag tag, /*...@unused@*/ unsigned int flags)
   {
   static int _oneshot = 0;
  +static int _dbapi_rebuild;
   size_t dbix;
   tagStore_t dbiTag;
  -const char * dbiBN;
   dbiIndex dbi = NULL;
  -int _dbapi, _dbapi_rebuild, _dbapi_wanted;
  +int _dbapi;
   int rc = 0;
   
   /* Insure that stdin/stdout/stderr are open, lest stderr end up in 
rpmdb. */
  @@ -315,99 +315,56 @@
(void) checkfd(_devnull, STDERR_FILENO, O_WRONLY);
   #endif
   /*...@=noeffect@*/
  +_dbapi_rebuild = 
rpmExpandNumeric(%{?_dbapi_rebuild}%{!?_dbapi_rebuild:4});
  +assert(_dbapi_rebuild == 3 || _dbapi_rebuild == 4);
_oneshot++;
  }
   
  -/*...@-modfilesys@*/
  -if (_rpmdb_debug)
  -fprintf(stderr, == dbiOpen(%p, %s(%u), 0x%x)\n, db, tagName(tag), tag, 
flags);
  -/*...@=modfilesys@*/
  -
  -if (db == NULL)
  - return 

[CVS] RPM: rpm/rpmdb/ db3.c rpmdb.h sqlite.c

2009-10-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-Oct-2009 04:13:45
  Branch: HEAD Handle: 2009100502134400

  Modified files:
rpm/rpmdb   db3.c rpmdb.h sqlite.c

  Log:
- dbi: stub-in wrappers for DB-{remove,rename,truncate,upgrade,verify}.
- dbi: add dbiExists() wrapper.

  Summary:
RevisionChanges Path
1.111   +123 -48rpm/rpmdb/db3.c
1.103   +30 -0  rpm/rpmdb/rpmdb.h
1.43+19 -0  rpm/rpmdb/sqlite.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.110 -r1.111 db3.c
  --- rpm/rpmdb/db3.c   4 Oct 2009 17:42:14 -   1.110
  +++ rpm/rpmdb/db3.c   5 Oct 2009 02:13:44 -   1.111
  @@ -39,54 +39,6 @@
   /*...@access dbiIndex @*/
   /*...@access dbiIndexSet @*/
   
  -/** \ingroup dbi
  - * Hash database statistics.
  - */
  -/*...@-fielduse@*/
  -struct dbiHStats_s {
  -unsigned int hash_magic; /*! hash database magic number. */
  -unsigned int hash_version;   /*! version of the hash database. */
  -unsigned int hash_nkeys; /*! no. of unique keys in the database. */
  -unsigned int hash_ndata; /*! no. of key/data pairs in the database. */
  -unsigned int hash_pagesize;  /*! db page (and bucket) size, in 
bytes. */
  -unsigned int hash_nelem; /*! estimated size of the hash table. */
  -unsigned int hash_ffactor;   /*! no. of items per bucket. */
  -unsigned int hash_buckets;   /*! no. of hash buckets. */
  -unsigned int hash_free;  /*! no. of pages on the free list. */
  -unsigned int hash_bfree; /*! no. of bytes free on bucket pages. */
  -unsigned int hash_bigpages;  /*! no. of big key/data pages. */
  -unsigned int hash_big_bfree;/*! no. of bytes free on big item pages. */
  -unsigned int hash_overflows;/*! no. of overflow pages. */
  -unsigned int hash_ovfl_free;/*! no. of bytes free on overflow pages. */
  -unsigned int hash_dup;   /*! no. of duplicate pages. */
  -unsigned int hash_dup_free;  /*! no. bytes free on duplicate pages. 
*/
  -};
  -
  -/** \ingroup dbi
  - * B-tree database statistics.
  - */
  -struct dbiBStats_s {
  -unsigned int bt_magic;   /*! btree database magic. */
  -unsigned int bt_version; /*! version of the btree database. */
  -unsigned int bt_nkeys;   /*! no. of unique keys in the database. */
  -unsigned int bt_ndata;   /*! no. of key/data pairs in the database. */
  -unsigned int bt_pagesize;/*! database page size, in bytes. */
  -unsigned int bt_minkey;  /*! minimum keys per page. */
  -unsigned int bt_re_len;  /*! length of fixed-length records. */
  -unsigned int bt_re_pad;  /*! padding byte for fixed-length records. */
  -unsigned int bt_levels;  /*! no. of levels in the database. */
  -unsigned int bt_int_pg;  /*! no. of database internal pages. */
  -unsigned int bt_leaf_pg; /*! no. of database leaf pages. */
  -unsigned int bt_dup_pg;  /*! no. of database duplicate pages. */
  -unsigned int bt_over_pg; /*! no. of database overflow pages. */
  -unsigned int bt_free;/*! no. of pages on the free list. */
  -unsigned int bt_int_pgfree;  /*! no. of bytes free in internal 
pages. */
  -unsigned int bt_leaf_pgfree;/*! no. of bytes free in leaf pages. */
  -unsigned int bt_dup_pgfree;  /*! no. of bytes free in duplicate 
pages. */
  -unsigned int bt_over_pgfree;/*! no. of bytes free in overflow pages. */
  -};
  -/*...@=fielduse@*/
  -
   #ifdef   NOTNOW
   static const char * bfstring(unsigned int x, const char * xbf)
   {
  @@ -695,6 +647,107 @@
   }
   /*...@=moduncon@*/
   
  +#ifdef   NOTYET
  +/*...@-mustmod@*/
  +static int db3remove(dbiIndex dbi, /*...@null@*/ const char * dbfile,
  + /*...@unused@*/ /*...@null@*/ const char * dbsubfile,
  + unsigned int flags)
  + /*...@globals fileSystem @*/
  + /*...@modifies dbi, fileSystem @*/
  +{
  +DB * db = dbi-dbi_db;
  +int rc;
  +
  +assert(db != NULL);
  +rc = db-remove(db, dbfile, dbsubfile, flags);
  +rc = cvtdberr(dbi, db-remove, rc, _debug);
  +
  +DBIDEBUG(dbi, (stderr, -- %s(%p,%s,%s,0x%x) rc %d\n, __FUNCTION__, dbi, 
dbfile, dbsubfile, flags, rc));
  +
  +return rc;
  +}
  +/*...@=mustmod@*/
  +
  +/*...@-mustmod@*/
  +static int db3rename(dbiIndex dbi, /*...@null@*/ const char * dbfile,
  + /*...@unused@*/ /*...@null@*/ const char * dbsubfile,
  + /*...@unused@*/ /*...@null@*/ const char * newname,
  +

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

2009-10-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-Oct-2009 04:48:47
  Branch: HEAD Handle: 2009100502484600

  Modified files:
rpm/rpmdb   db3.c

  Log:
- dbi: use the (otherwise pointless) db3verify() wrapper.

  Summary:
RevisionChanges Path
1.112   +5  -9  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.111 -r1.112 db3.c
  --- rpm/rpmdb/db3.c   5 Oct 2009 02:13:44 -   1.111
  +++ rpm/rpmdb/db3.c   5 Oct 2009 02:48:46 -   1.112
  @@ -726,6 +726,7 @@
   return rc;
   }
   /*...@=mustmod@*/
  +#endif   /* NOTYET */
   
   /*...@-mustmod@*/
   static int db3verify(dbiIndex dbi, /*...@null@*/ const char * dbfile,
  @@ -746,7 +747,6 @@
   return rc;
   }
   /*...@=mustmod@*/
  -#endif   /* NOTYET */
   
   static int db3sync(dbiIndex dbi, unsigned int flags)
/*...@globals fileSystem @*/
  @@ -1262,7 +1262,7 @@
}

eflags = DB_CREATE | DB_INIT_MPOOL | DB_PRIVATE | DB_USE_ENVIRON;
  - rc = (dbenv-open)(dbenv, dbhome, eflags, 0);
  + rc = (dbenv-open) (dbenv, dbhome, eflags, 0);
rc = cvtdberr(dbi, dbenv-open, rc, _debug);
if (rc) goto exit;
   
  @@ -1274,20 +1274,16 @@
if (db != NULL) {
/*...@-mods@*/
const char * dbf = rpmGetPath(dbhome, /, dbfile, NULL);
  + const char * _dbsubfile = NULL;
  + FILE * _fp = NULL;
/*...@=mods@*/
   
  - rc = db-verify(db, dbf, NULL, NULL, flags);
  - rc = cvtdberr(dbi, db-verify, rc, _debug);
  + rc = db3verify(dbi, dbf, _dbsubfile, _fp, flags);
   
rpmlog(RPMLOG_DEBUG, D_(verified db index   %s/%s\n),
(dbhome ? dbhome : ),
(dbfile ? dbfile : dbiBN));
   
  - /*
  -  * The DB handle may not be accessed again after
  -  * DB-verify is called, regardless of its return.
  -  */
  - db = NULL;
dbf = _free(dbf);
}
xx = dbenv-close(dbenv, 0);
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c

2009-10-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-Oct-2009 23:00:17
  Branch: HEAD Handle: 2009100321001600

  Modified files:
rpm/rpmdb   db3.c dbconfig.c rpmdb.c

  Log:
- dbi: refactor join key ducks-in-a-row code prior to using
DB-join().

  Summary:
RevisionChanges Path
1.106   +83 -57 rpm/rpmdb/db3.c
1.68+3  -2  rpm/rpmdb/dbconfig.c
1.315   +121 -80rpm/rpmdb/rpmdb.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.105 -r1.106 db3.c
  --- rpm/rpmdb/db3.c   2 Oct 2009 16:05:17 -   1.105
  +++ rpm/rpmdb/db3.c   3 Oct 2009 21:00:16 -   1.106
  @@ -1247,48 +1247,45 @@
   return '\0';
   }
   
  -static int _loadArgvTag(DBT * _r, HE_t he, uint32_t i)
  +static int loadDBT(DBT * _r, rpmTag tag, const void * _s, size_t ns)
   {
  -const char * s = he-p.argv[i];
  -size_t ns = strlen(s);
  -uint8_t * t = NULL;
  +const char * s = _s;
   void * data = NULL;
   size_t size = 0;
  +uint8_t * t = NULL;
  +uint32_t i;
   int xx;
   
  -switch (he-tag) {
  +if (ns == 0) ns = strlen(s);
  +switch (tag) {
   case RPMTAG_FILEDIGESTS:
  - /* Filter out empty and odd file digests. */
  + /* Convert hex to binary, filter out odd hex strings. */
if (ns  0  !(ns  1)) {
  - /* Convert hex to binary. */
  - size = ns / 2;
  - data = t = xmalloc(size);
  - for (i = 0; i  size; i++, t++, s += 2)
  + ns /= 2;
  + data = t = xmalloc(ns);
  + for (i = 0; i  ns; i++, t++, s += 2) {
  + if (!(isxdigit(s[0])  isxdigit(s[1])))
  + break;
*t = (uint8_t) (nibble(s[0])  4) | nibble(s[1]);
  + }
  + if (i == ns)
  + size = ns;
  + else
  + data = _free(data);
}
break;
   case RPMTAG_PUBKEYS:
/* Extract pubkey id from the base64 blob. */
  - data = t = xmalloc(32);
  - if ((size = xx = pgpExtractPubkeyFingerprint(s, t)) = 0)
  - data = t = _free(t);
  + t = xmalloc(32);
  + if ((xx = pgpExtractPubkeyFingerprint(s, t))  0) {
  + data = t;
  + size = xx;
  + } else
  + t = _free(t);
break;
  -case RPMTAG_CONFLICTYAMLENTRY:   
  -case RPMTAG_OBSOLETEYAMLENTRY:
  -case RPMTAG_PROVIDEYAMLENTRY:
  -case RPMTAG_REQUIREYAMLENTRY:
  - /* Skip the YAML - ... lead-in mark up if present. */
  - if (s[0] == '-'  s[1] == ' ') {
  - s += 2;
  - ns -= 2;
  - }
  - /*...@fallthrough@*/
   default:
  - /* Filter out empty strings. */
  - if (*s  ns  0) {
  - data = (void *) xstrdup(s);
  - size = ns;
  - }
  + data = (void *) memcpy(xmalloc(ns), _s, ns);
  + size = ns;
break;
   }
   if ((_r-data = data) != NULL) _r-flags |= DB_DBT_APPMALLOC;
  @@ -1316,10 +1313,15 @@
   {
   HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he));
   HE_t Fhe = memset(alloca(sizeof(*Fhe)), 0, sizeof(*Fhe));
  +#ifdef   NOTYET
  +HE_t FMhe = memset(alloca(sizeof(*FMhe)), 0, sizeof(*FMhe));
  +#endif
   dbiIndex dbi = db-app_private;
   rpmdb rpmdb = NULL;
   Header h = NULL;
   DBT * A = NULL;
  +const char * s = NULL;
  +size_t ns = 0;
   int rc = DB_DONOTINDEX;  /* assume no-op */
   uint32_t i;
   
  @@ -1341,8 +1343,17 @@
   switch (he-tag) {
   default:
break;
  +#ifdef   NOTYET
  +case RPMTAG_BASENAMES:
  +case RPMTAG_FILEPATHS:
  + /* Add the pesky trailing '/' to directories. */
  + FMhe-tag = RPMTAG_FILEMODES;
  + (void) headerGet(h, FMhe, 0);
  + break;
  +#endif
   case RPMTAG_REQUIREYAMLENTRY:
   case RPMTAG_REQUIRENAME:
  + /* The Requires: F is needed to filter install context dependencies. */
Fhe-tag = RPMTAG_REQUIREFLAGS;
(void) headerGet(h, Fhe, 0);
break;
  @@ -1383,9 +1394,8 @@
break;
}
if (he-c == 1) {
  - _r-flags = DB_DBT_APPMALLOC;
  - _r-data = _u;
  - _r-size = _ulen;
  + /* XXX is it worth avoiding the realloc here? */
  + (void) loadDBT(A, he-tag, _u, _ulen);
break;
}
_r-flags = DB_DBT_MULTIPLE | DB_DBT_APPMALLOC;
  @@ -1397,21 +1407,18 @@
/* Don't add identical (key,val) item to secondary. */
if (i  0  _u[-1] == _u[0])

[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c

2009-10-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-Oct-2009 00:17:49
  Branch: HEAD Handle: 2009100322174900

  Modified files:
rpm/rpmdb   db3.c dbconfig.c rpmdb.c

  Log:
- dbi: permit RPMTAG_DIRNAMES with DB_DUPSORT and 4b join key.

  Summary:
RevisionChanges Path
1.107   +1  -1  rpm/rpmdb/db3.c
1.69+0  -3  rpm/rpmdb/dbconfig.c
1.316   +10 -28 rpm/rpmdb/rpmdb.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.106 -r1.107 db3.c
  --- rpm/rpmdb/db3.c   3 Oct 2009 21:00:16 -   1.106
  +++ rpm/rpmdb/db3.c   3 Oct 2009 22:17:49 -   1.107
  @@ -304,7 +304,7 @@
   static size_t nDBTflags = sizeof(DBTflags) / sizeof(DBTflags[0]);
   static char * fmtDBT(const DBT * K, char * te)
   {
  -static size_t keymax = 40;
  +static size_t keymax = 35;
   int unprintable;
   uint32_t i;
   
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/dbconfig.c
  
  $ cvs diff -u -r1.68 -r1.69 dbconfig.c
  --- rpm/rpmdb/dbconfig.c  3 Oct 2009 21:00:16 -   1.68
  +++ rpm/rpmdb/dbconfig.c  3 Oct 2009 22:17:49 -   1.69
  @@ -645,9 +645,6 @@
   default:
dbi-dbi_jlen = 1 * sizeof(rpmuint32_t);
break;
  -#ifndef  DYING
  -case RPMTAG_DIRNAMES:
  -#endif
   case RPMTAG_BASENAMES:
dbi-dbi_jlen = 2 * sizeof(rpmuint32_t);
break;
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/rpmdb.c
  
  $ cvs diff -u -r1.315 -r1.316 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 3 Oct 2009 21:00:16 -   1.315
  +++ rpm/rpmdb/rpmdb.c 3 Oct 2009 22:17:49 -   1.316
  @@ -1636,25 +1636,7 @@
   if (bingo  (dbi = dbiOpen(db, RPMTAG_DIRNAMES, 0)) != NULL) {
dbiIndexSet dnset = NULL;
   
  - /* Load the dirnames index set. */
  - dbcursor = NULL;
  - xx = dbiCopen(dbi, dbi-dbi_txnid, dbcursor, 0);
  -
  -/*...@-temptrans@*/
  -key-data = (void *) dirName;
  -/*...@=temptrans@*/
  -key-size = (UINT32_T) strlen(dirName);
  -if (key-size == 0) key-size++; /* XXX / fixup. */
  -
  - rc = dbiGet(dbi, dbcursor, key, data, DB_SET);
  - if (rc  0) {
  - rpmlog(RPMLOG_ERR,
  - _(error(%d) getting records from %s index\n),
  - rc, tagName(dbi-dbi_rpmtag));
  - }
  - if (rc == 0)
  - (void) dbt2set(dbi, data, dnset);
  - xx = dbiCclose(dbi, dbcursor, 0);
  + rc = _joinKeys(dbi, dirName, strlen(dirName), dnset);
   
/* If dnset is non-empty, then attempt Plan A intersection. */
if (rc == 0  dnset  dnset-count  0) {
  @@ -3630,6 +3612,12 @@
xx = headerGet(h, he, 0);
   /*...@=compmempass@*/
/*...@switchbreak@*/ break;
  + case RPMTAG_DIRNAMES:
  + case RPMTAG_TRIGGERNAME:
  + xx = headerGet(h, he, 0);
  + if (he-c  1)
  + qsort(he-p.argv, he-c, sizeof(he-p.argv[0]), argvCmp);
  + /*...@switchbreak@*/ break;
default:
   /*...@-compmempass@*/
xx = headerGet(h, he, 0);
  @@ -3688,16 +3676,10 @@
  isInstallPreReq(requireFlags.ui32p[i]))
/*...@innercontinue@*/ continue;
/*...@switchbreak@*/ break;
  + case RPMTAG_DIRNAMES:
case RPMTAG_TRIGGERNAME:
  - if (i) {/* don't add duplicates */
  - int j;
  - for (j = 0; j  i; j++) {
  - if (!strcmp(he-p.argv[i], he-p.argv[j]))
  - /*...@innerbreak@*/ break;
  - }
  - if (j  i)
  - /*...@innercontinue@*/ continue;
  - }
  + if (i  0  !strcmp(he-p.argv[i], he-p.argv[i-1]))
  + /*...@innercontinue@*/ continue;
/*...@switchbreak@*/ break;
default:
/*...@switchbreak@*/ break;
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2009-09-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:   20-Sep-2009 02:31:26
  Branch: HEAD Handle: 2009092000312600

  Modified files:
rpm/rpmdb   db3.c

  Log:
- oops, get the right file checked in.

  Summary:
RevisionChanges Path
1.96+0  -5  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.95 -r1.96 db3.c
  --- rpm/rpmdb/db3.c   20 Aug 2009 15:54:09 -  1.95
  +++ rpm/rpmdb/db3.c   20 Sep 2009 00:31:26 -  1.96
  @@ -1376,11 +1376,6 @@
} else {
   assert(rpmdb  rpmdb-db_dbenv);
dbenv = rpmdb-db_dbenv;
  -#define  PLD_CHROOT
  -#ifdef   PLD_CHROOT
  - if (rpmdb-db_chrootDone)
  - xx = dbenv-set_data_dir(dbenv, dbhome);
  -#endif
rpmdb-db_opens++;
}
/*...@=mods@*/
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.h sqlite.c

2009-09-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:   20-Sep-2009 04:00:51
  Branch: HEAD Handle: 2009092002005100

  Modified files:
rpm/rpmdb   db3.c dbconfig.c rpmdb.h sqlite.c

  Log:
- rpmdb: remove redundant parameters with DB_CONFIG.

  Summary:
RevisionChanges Path
1.100   +0  -86 rpm/rpmdb/db3.c
1.63+0  -14 rpm/rpmdb/dbconfig.c
1.97+0  -1  rpm/rpmdb/rpmdb.h
1.40+2  -0  rpm/rpmdb/sqlite.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.99 -r1.100 db3.c
  --- rpm/rpmdb/db3.c   20 Sep 2009 01:33:55 -  1.99
  +++ rpm/rpmdb/db3.c   20 Sep 2009 02:00:51 -  1.100
  @@ -395,88 +395,12 @@
   }
   
   /*  Locking: */
  - /* dbenv-set_lk_conflicts(???) */
  -if (dbi-dbi_lk_detect) {
  - xx = dbenv-set_lk_detect(dbenv, dbi-dbi_lk_detect);
  - xx = cvtdberr(dbi, dbenv-set_lk_detect, xx, _debug);
  -}
  -#if !(DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 1)
  -if (dbi-dbi_lk_max_lockers) {
  - xx = dbenv-set_lk_max_lockers(dbenv, dbi-dbi_lk_max_lockers);
  - xx = cvtdberr(dbi, dbenv-set_lk_max_lockers, xx, _debug);
  -}
  -if (dbi-dbi_lk_max_locks) {
  - xx = dbenv-set_lk_max_locks(dbenv, dbi-dbi_lk_max_locks);
  - xx = cvtdberr(dbi, dbenv-set_lk_max_locks, xx, _debug);
  -}
  -if (dbi-dbi_lk_max_objects) {
  - xx = dbenv-set_lk_max_objects(dbenv, dbi-dbi_lk_max_objects);
  - xx = cvtdberr(dbi, dbenv-set_lk_max_objects, xx, _debug);
  -}
   /*  Logging: */
  -if (dbi-dbi_lg_bsize) {
  - xx = dbenv-set_lg_bsize(dbenv, dbi-dbi_lg_bsize);
  - xx = cvtdberr(dbi, dbenv-set_lg_bsize, xx, _debug);
  -}
  -if (dbi-dbi_lg_dir) {
  - xx = dbenv-set_lg_dir(dbenv, dbi-dbi_lg_dir);
  - xx = cvtdberr(dbi, dbenv-set_lg_dir, xx, _debug);
  -}
  -if (dbi-dbi_lg_filemode) {
  - xx = dbenv-set_lg_filemode(dbenv, dbi-dbi_lg_filemode);
  - xx = cvtdberr(dbi, dbenv-set_lg_filemode, xx, _debug);
  -}
  -if (dbi-dbi_lg_max) {
  - xx = dbenv-set_lg_max(dbenv, dbi-dbi_lg_max);
  - xx = cvtdberr(dbi, dbenv-set_lg_max, xx, _debug);
  -}
  -if (dbi-dbi_lg_regionmax) {
  - xx = dbenv-set_lg_regionmax(dbenv, dbi-dbi_lg_regionmax);
  - xx = cvtdberr(dbi, dbenv-set_lg_regionmax, xx, _debug);
  -}
  -#endif
  -
   /*  Memory pool: */
  -
   /*  Mutexes: */
  -if (dbi-dbi_mutex_align) {
  - xx = dbenv-mutex_set_align(dbenv, dbi-dbi_mutex_align);
  - xx = cvtdberr(dbi, dbenv-mutex_set_align, xx, _debug);
  -}
  -if (dbi-dbi_mutex_increment) {
  - xx = dbenv-mutex_set_increment(dbenv, dbi-dbi_mutex_increment);
  - xx = cvtdberr(dbi, dbenv-mutex_set_increment, xx, _debug);
  -}
  -if (dbi-dbi_mutex_max) {
  - xx = dbenv-mutex_set_max(dbenv, dbi-dbi_mutex_max);
  - xx = cvtdberr(dbi, dbenv-mutex_set_max, xx, _debug);
  -}
  -if (dbi-dbi_mutex_tas_spins) {
  - xx = dbenv-mutex_set_tas_spins(dbenv, dbi-dbi_mutex_tas_spins);
  - xx = cvtdberr(dbi, dbenv-mutex_set_tas_spins, xx, _debug);
  -}
  -
   /*  Replication: */
  -/* dbenv-rep_set_config */
  -/* dbenv-rep_set_limit */
  -/* dbenv-rep_set_nsites */
  -/* dbenv-rep_set_priority */
  -/* dbenv-rep_set_timeout */
  -/* dbenv-rep_set_transport */
  -
   /*  Sequences: */
  -
   /*  Transactions: */
  -if (dbi-dbi_tx_max) {
  - xx = dbenv-set_tx_max(dbenv, dbi-dbi_tx_max);
  - xx = cvtdberr(dbi, dbenv-set_tx_max, xx, _debug);
  -}
  -/* XXX dbenv-txn_checkpoint */
  -/* XXX dbenv-txn_recover */
  -/* XXX dbenv-txn_stat */
  - /* 4.1 dbenv-set_timeout(???) */
  - /* 4.1: dbenv-set_tx_timestamp(???) */
  -
   
   /*  Other: */
   if (dbi-dbi_no_fsync) {
  @@ -982,16 +906,6 @@
dbenv-set_errpfx(dbenv, rpmdb-db_errpfx);
/*  dbenv-set_paniccall(???) */
/*...@=noeffectuncon@*/
  -#if !(DB_VERSION_MAJOR == 4  DB_VERSION_MINOR = 3)
  - xx = dbenv-set_verbose(dbenv, DB_VERB_CHKPOINT,
  - (dbi-dbi_verbose  DB_VERB_CHKPOINT));
  -#endif
  - xx = dbenv-set_verbose(dbenv, DB_VERB_DEADLOCK,
  - (dbi-dbi_verbose  DB_VERB_DEADLOCK));
  - xx = dbenv-set_verbose(dbenv, DB_VERB_RECOVERY,
  - (dbi-dbi_verbose  DB_VERB_RECOVERY));
  - xx = dbenv-set_verbose(dbenv, DB_VERB_WAITSFOR,
  - (dbi-dbi_verbose  DB_VERB_WAITSFOR));
   
if (dbi-dbi_tmpdir) {
/*...@-mods@*/
  @@ .
  patch -p0 '@@ .'
  

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

2009-08-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-Aug-2009 17:54:09
  Branch: HEAD Handle: 2009082015540900

  Modified files:
rpm/rpmdb   db3.c

  Log:
- balance curly brckets wrto #ifdef's.

  Summary:
RevisionChanges Path
1.95+3  -2  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.94 -r1.95 db3.c
  --- rpm/rpmdb/db3.c   23 May 2009 15:48:44 -  1.94
  +++ rpm/rpmdb/db3.c   20 Aug 2009 15:54:09 -  1.95
  @@ -1242,10 +1242,11 @@
long size = -1;
if (stat(dbf, sb) == 0)
size = (long)sb.st_size;
  - if (access(dbf, F_OK) == -1 || size == 0) {
  + if (access(dbf, F_OK) == -1 || size == 0)
   #else
  - if (access(dbf, F_OK) == -1) {
  + if (access(dbf, F_OK) == -1)
   #endif
  + {
/* ... non-existent (or unwritable) DBENV, will create ... */
dbi-dbi_oeflags |= DB_CREATE;
dbi-dbi_eflags = ~DB_JOINENV;
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c rpmdb.c rpmdb.h

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 08:16:08
  Branch: HEAD Handle: 2008081806160800

  Modified files:
rpm/rpmdb   db3.c dbconfig.c rpmdb.c rpmdb.h

  Log:
rpmdb: minor changes

  Summary:
RevisionChanges Path
1.92+4  -4  rpm/rpmdb/db3.c
1.55+1  -1  rpm/rpmdb/dbconfig.c
1.263   +10 -11 rpm/rpmdb/rpmdb.c
1.81+1  -1  rpm/rpmdb/rpmdb.h
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.91 -r1.92 db3.c
  --- rpm/rpmdb/db3.c   2 Aug 2008 16:36:10 -   1.91
  +++ rpm/rpmdb/db3.c   18 Aug 2008 06:16:08 -  1.92
  @@ -505,7 +505,7 @@
xx = dbenv-set_tx_max(dbenv, dbi-dbi_tx_max);
xx = cvtdberr(dbi, dbenv-set_tx_max, xx, _debug);
   }
  -/* XXX dbenv-txn_checkpoint */
  +/* XXX dbenv-txn_checkpoint */
   /* XXX dbenv-txn_recover */
   /* XXX dbenv-txn_stat */
/* 4.1 dbenv-set_timeout(???) */
  @@ -839,7 +839,7 @@
   int rc = 0;
   
   if (db != NULL) {
  -#if (DB_VERSION_MAJOR == 3  DB_VERSION_MINOR == 3  DB_VERSION_PATCH == 
11) \
  +#if (DB_VERSION_MAJOR == 3  DB_VERSION_MINOR == 3  DB_VERSION_PATCH = 
11) \
|| (DB_VERSION_MAJOR == 4)
int isswapped = 0;
rc = db-get_byteswapped(db, isswapped);
  @@ -1062,7 +1062,7 @@
(dbhome ? dbhome : ),
(dbfile ? dbfile : dbiBN));
   
  - /*
  + /*
 * The DB handle may not be accessed again after
 * DB-verify is called, regardless of its return.
 */
  @@ -1564,7 +1564,7 @@
   #endif
   
if (rc == 0  dbi_type == DB_UNKNOWN) {
  -#if (DB_VERSION_MAJOR == 3  DB_VERSION_MINOR == 3  DB_VERSION_PATCH == 
11) \
  +#if (DB_VERSION_MAJOR == 3  DB_VERSION_MINOR == 3  DB_VERSION_PATCH = 
11) \
|| (DB_VERSION_MAJOR == 4)
xx = db-get_type(db, dbi_type);
if (xx == 0)
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/dbconfig.c
  
  $ cvs diff -u -r1.54 -r1.55 dbconfig.c
  --- rpm/rpmdb/dbconfig.c  31 Jul 2008 16:58:56 -  1.54
  +++ rpm/rpmdb/dbconfig.c  18 Aug 2008 06:16:08 -  1.55
  @@ -176,7 +176,7 @@
   DB_DSYNC_DB
   DB_DSYNC_LOG
   DB_LOG_AUTOREMOVE
  -DB_LOG_BUFFER_FULL   ???
  +DB_LOG_BUFFER_FULL   /* ??? */
   DB_LOG_INMEMORY
   DB_NOLOCKING
   DB_MULTIVERSION
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/rpmdb.c
  
  $ cvs diff -u -r1.262 -r1.263 rpmdb.c
  --- rpm/rpmdb/rpmdb.c 8 Aug 2008 03:19:31 -   1.262
  +++ rpm/rpmdb/rpmdb.c 18 Aug 2008 06:16:08 -  1.263
  @@ -1158,7 +1158,7 @@
   /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
   
   if (!oneshot) {
  - _db_filter_dups = rpmExpandNumeric(%{_filterdbdups});
  + _db_filter_dups = rpmExpandNumeric(%{?_filterdbdups});
oneshot = 1;
   }
   
  @@ -1177,7 +1177,7 @@
   db-db_root = rpmdbURIPath( (root  *root ? root : _DB_ROOT) );
   db-db_home = rpmdbURIPath( (home  *home ? home : _DB_HOME) );
   
  -if (!(db-db_home  db-db_home[0])) {
  +if (!(db-db_home  db-db_home[0]  db-db_home[0] != '%')) {
rpmlog(RPMLOG_ERR, _(no dbpath has been set\n));
db-db_root = _free(db-db_root);
db-db_home = _free(db-db_home);
  @@ -1322,7 +1322,7 @@
   /* XXX python/rpmmodule.c */
   int rpmdbOpen (const char * prefix, rpmdb *dbp, int mode, int perms)
   {
  -int _dbapi = rpmExpandNumeric(%{_dbapi});
  +int _dbapi = rpmExpandNumeric(%{?_dbapi});
   return rpmdbOpenDatabase(prefix, NULL, _dbapi, dbp, mode, perms, 0);
   }
   
  @@ -2878,6 +2878,7 @@
   
if (db-db_tags != NULL)
for (dbix = 0; dbix  db-db_ndbi; dbix++) {
  + dbiIndex dbi;
DBC * dbcursor = NULL;
DBT k = DBT_INIT;
DBT v = DBT_INIT;
  @@ -2887,7 +2888,6 @@
rpmTag rpmtag = dbiTag-tag;
const char * dbiBN = (dbiTag-str != NULL
? dbiTag-str : tagName(rpmtag));
  - dbiIndex dbi;
rpmuint8_t * bin = NULL;
int i;
   
  @@ -2939,7 +2939,6 @@
if (!xx)
continue;
/[EMAIL PROTECTED]@*/ break;
  -
}

  dbi = dbiOpen(db, he-tag, 0);
  @@ -3065,7 +3064,7 @@
   
   if (k.size == 0) k.size = (UINT32_T) strlen((char 

[CVS] RPM: rpm/rpmdb/ db3.c dbconfig.c

2007-07-25 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:   25-Jul-2007 17:04:33
  Branch: HEAD Handle: 2007072516043200

  Modified files:
rpm/rpmdb   db3.c dbconfig.c

  Log:
add new 4.6.18 functionality.

  Summary:
RevisionChanges Path
1.70+8  -0  rpm/rpmdb/db3.c
1.42+13 -0  rpm/rpmdb/dbconfig.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.69 -r1.70 db3.c
  --- rpm/rpmdb/db3.c   25 Jul 2007 14:40:50 -  1.69
  +++ rpm/rpmdb/db3.c   25 Jul 2007 15:04:32 -  1.70
  @@ -375,6 +375,14 @@
   #endif
xx = dbenv-set_verbose(dbenv, DB_VERB_WAITSFOR,
(dbi-dbi_verbose  DB_VERB_WAITSFOR));
  +#if defined(DB_VERB_FILEOPS)
  + xx = dbenv-set_verbose(dbenv, DB_VERB_FILEOPS,
  + (dbi-dbi_verbose  DB_VERB_FILEOPS));
  +#endif
  +#if defined(DB_VERB_FILEOPS_ALL)
  + xx = dbenv-set_verbose(dbenv, DB_VERB_FILEOPS_ALL,
  + (dbi-dbi_verbose  DB_VERB_FILEOPS_ALL));
  +#endif
   
if (dbi-dbi_mmapsize) {
xx = dbenv-set_mp_mmapsize(dbenv, dbi-dbi_mmapsize);
  @@ .
  patch -p0 '@@ .'
  Index: rpm/rpmdb/dbconfig.c
  
  $ cvs diff -u -r1.41 -r1.42 dbconfig.c
  --- rpm/rpmdb/dbconfig.c  16 Jul 2007 01:32:32 -  1.41
  +++ rpm/rpmdb/dbconfig.c  25 Jul 2007 15:04:32 -  1.42
  @@ -145,6 +145,10 @@
{ use_environ, 0,POPT_BIT_SET,db3dbi.dbi_eflags, DB_USE_ENVIRON,
NULL, NULL },
   #endif
  +#if defined(WITH_DB)  defined(DB_IGNORE_LEASE)
  + { ignore_lease, 0,POPT_BIT_SET,   db3dbi.dbi_eflags, DB_IGNORE_LEASE,
  + NULL, NULL },
  +#endif
   
   #if defined(WITH_DB)  defined(DB_TXN_SYNC)
{ txn_sync,   0,POPT_BIT_SET, db3dbi.dbi_tflags, DB_TXN_SYNC,
  @@ -154,6 +158,10 @@
{ txn_nowait,0,POPT_BIT_SET,  db3dbi.dbi_tflags, DB_TXN_NOWAIT,
NULL, NULL },
   #endif
  +#if defined(WITH_DB)  defined(DB_TXN_WAIT)
  + { txn_wait,0,POPT_BIT_SET,db3dbi.dbi_tflags, DB_TXN_WAIT,
  + NULL, NULL },
  +#endif
   
   #if defined(WITH_DB)  defined(NOTYET)
   DB_AUTO_COMMIT
  @@ -421,6 +429,11 @@
   #endif
   
   /* XXX DB_ENV-set_timeout */
  +#if defined(WITH_DB)  defined(NOTYET)
  +DB_SET_LOCK_TIMEOUT
  +DB_SET_TXN_NOW
  +DB_SET_TXN_TIMEOUT
  +#endif
   /* XXX DB_ENV-get_timeout */
   
   /*  Logging: */
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2007-07-10 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:   10-Jul-2007 19:55:54
  Branch: HEAD Handle: 2007071018555400

  Modified files:
rpm/rpmdb   db3.c

  Log:
db3.c: db_errcall has changed with later Berkeley DB.

  Summary:
RevisionChanges Path
1.67+2  -2  rpm/rpmdb/db3.c
  

  patch -p0 '@@ .'
  Index: rpm/rpmdb/db3.c
  
  $ cvs diff -u -r1.66 -r1.67 db3.c
  --- rpm/rpmdb/db3.c   9 Jul 2007 22:31:57 -   1.66
  +++ rpm/rpmdb/db3.c   10 Jul 2007 17:55:54 -  1.67
  @@ -323,7 +323,7 @@
/* 4.1: dbenv-set_data_dir(???) */
/* 4.1: dbenv-set_encrypt(???) */
   
  -dbenv-set_errcall(dbenv, rpmdb-db_errcall);
  +dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall);
   dbenv-set_errfile(dbenv, rpmdb-db_errfile);
   dbenv-set_errpfx(dbenv, rpmdb-db_errpfx);
   /[EMAIL PROTECTED]@*/
  @@ -944,7 +944,7 @@
if (rc || dbenv == NULL) goto exit;
   
/[EMAIL PROTECTED]@*/ /* FIX: annotate db3 methods */
  - dbenv-set_errcall(dbenv, rpmdb-db_errcall);
  + dbenv-set_errcall(dbenv, (void *)rpmdb-db_errcall);
dbenv-set_errfile(dbenv, rpmdb-db_errfile);
dbenv-set_errpfx(dbenv, rpmdb-db_errpfx);
/*  dbenv-set_paniccall(???) */
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org