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-Dec-2009 00:06:06 Branch: HEAD Handle: 2009121323060501 Modified files: rpm CHANGES rpm/rpmdb db3.c librpmdb.vers rpmdb.c Log: - rpmdb: permit patterns on (little used) secondary indices. - rpmdb: stub-in an event_notify callback. - rpmdb: wire up DB_RECOVER progress feedback callback. Summary: Revision Changes Path 1.3198 +3 -0 rpm/CHANGES 1.137 +54 -4 rpm/rpmdb/db3.c 1.82 +1 -0 rpm/rpmdb/librpmdb.vers 1.367 +6 -0 rpm/rpmdb/rpmdb.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/CHANGES ============================================================================ $ cvs diff -u -r1.3197 -r1.3198 CHANGES --- rpm/CHANGES 13 Dec 2009 22:05:10 -0000 1.3197 +++ rpm/CHANGES 13 Dec 2009 23:06:05 -0000 1.3198 @@ -1,5 +1,8 @@ 5.2b1 -> 5.3a1 + - jbj: rpmdb: permit patterns on (little used) secondary indices. + - jbj: rpmdb: stub-in an event_notify callback. + - jbj: rpmdb: wire up DB_RECOVER progress feedback callback. - jbj: rpmlio: Register logio dispatch handler with db_recover. - jbj: rpmdb: Switch to inplace rpmtsRebuildDB(), eliminate rpmdbRebuild(). - jbj: rpmmi: Eliminate rpmmiSetHdrChk(), get ts out of the rpmdb layer. @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/db3.c ============================================================================ $ cvs diff -u -r1.136 -r1.137 db3.c --- rpm/rpmdb/db3.c 13 Dec 2009 20:15:25 -0000 1.136 +++ rpm/rpmdb/db3.c 13 Dec 2009 23:06:06 -0000 1.137 @@ -32,7 +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 @@ -677,6 +676,53 @@ } /*==============================================================*/ +#define _TABLE(_v) { #_v, DB_EVENT_##_v } +static struct _events_s { + const char * n; + uint32_t v; +} _events[] = { + _TABLE(NO_SUCH_EVENT), /* 0 */ + _TABLE(PANIC), /* 1 */ + _TABLE(REG_ALIVE), /* 2 */ + _TABLE(REG_PANIC), /* 3 */ + _TABLE(REP_CLIENT), /* 4 */ + _TABLE(REP_ELECTED), /* 5 */ + _TABLE(REP_MASTER), /* 6 */ + _TABLE(REP_NEWMASTER), /* 7 */ + _TABLE(REP_PERM_FAILED), /* 8 */ + _TABLE(REP_STARTUPDONE), /* 9 */ + _TABLE(WRITE_FAILED), /* 10 */ + _TABLE(NO_SUCH_EVENT), /* 11 */ + _TABLE(NO_SUCH_EVENT), /* 12 */ + _TABLE(NO_SUCH_EVENT), /* 13 */ + _TABLE(NO_SUCH_EVENT), /* 14 */ + _TABLE(NO_SUCH_EVENT), /* 15 */ +}; +#undef _TABLE + +static void +rpmdbe_event_notify(DB_ENV * dbenv, u_int32_t event, void * event_info) +{ + void * o = (dbenv ? dbenv->app_private : NULL); +fprintf(stderr, "==> %s(%p, %s(%u), %p) app_private %p\n", __FUNCTION__, dbenv, _events[event & 0xf].n, event, event_info, o); +} + +static void +rpmdbe_feedback(DB_ENV * dbenv, u_int32_t opcode, int percent) + /*...@*/ +{ + dbenv = NULL; + dbenv = dbenv; + switch (opcode) { + case DB_RECOVER: + fprintf(stderr, "\rrecovery %d%% complete", percent); + (void)fflush(stderr); /* XXX unnecessary? */ + /*...@fallthrough@*/ + default: + break; + } +} + /*...@-moduncon@*/ /* FIX: annotate db3 methods */ static int db_init(dbiIndex dbi, const char * dbhome, /*...@null@*/ const char * dbfile, @@ -747,7 +793,11 @@ /* 4.1: dbenv->set_data_dir(???) */ /* 4.1: dbenv->set_encrypt(???) */ - /* 4.1: dbenv->set_feedback(???) */ + xx = dbenv->set_feedback(dbenv, rpmdbe_feedback); + xx = cvtdberr(dbi, "dbenv->set_feedback", xx, _debug); + xx = dbenv->set_event_notify(dbenv, rpmdbe_event_notify); + xx = cvtdberr(dbi, "dbenv->set_event_notify", xx, _debug); + /* 4.1: dbenv->set_flags(???) */ /* dbenv->set_paniccall(???) */ @@ -778,7 +828,7 @@ { size_t _lo = 16 * 1024 * 1024; size_t _hi = 512 * 1024 * 1024; - size_t _mp_mmapsize = _physmem / 2; + size_t _mp_mmapsize = _physmem; /* XXX default value? */ if (_mp_mmapsize < _lo) _mp_mmapsize = _lo; if (_mp_mmapsize > _hi) _mp_mmapsize = _hi; xx = dbenv->set_mp_mmapsize(dbenv, _mp_mmapsize); @@ -820,7 +870,7 @@ uint32_t _lo = 16 * 1024 * 1024; uint32_t _hi = 512 * 1024 * 1024; uint32_t _gb = 0; - uint32_t _bytes = _physmem; + uint32_t _bytes = _physmem; /* XXX default value? */ int _ncache = 4; if (_bytes < _lo) _bytes = _lo; if (_bytes > _hi) _bytes = _hi; @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/librpmdb.vers ============================================================================ $ cvs diff -u -r1.81 -r1.82 librpmdb.vers --- rpm/rpmdb/librpmdb.vers 13 Dec 2009 04:21:09 -0000 1.81 +++ rpm/rpmdb/librpmdb.vers 13 Dec 2009 23:06:06 -0000 1.82 @@ -81,6 +81,7 @@ headerVerifyInfo; hGetColor; _init; + logio_dispatch; logio_Chmod_log; logio_Chown_log; logio_Creat_log; @@ . patch -p0 <<'@@ .' Index: rpm/rpmdb/rpmdb.c ============================================================================ $ cvs diff -u -r1.366 -r1.367 rpmdb.c --- rpm/rpmdb/rpmdb.c 13 Dec 2009 20:19:00 -0000 1.366 +++ rpm/rpmdb/rpmdb.c 13 Dec 2009 23:06:06 -0000 1.367 @@ -2482,6 +2482,11 @@ tag = RPMTAG_NVRA; /*...@fallthrough@*/ case RPMTAG_NVRA: + case RPMTAG_NAME: + case RPMTAG_VERSION: + case RPMTAG_RELEASE: + case RPMTAG_ARCH: + case RPMTAG_OS: case RPMTAG_GROUP: usePatterns = 1; break; @@ -2490,6 +2495,7 @@ tag = RPMTAG_FILEPATHS; /*...@fallthrough@*/ case RPMTAG_FILEPATHS: + case RPMTAG_DIRNAMES: usePatterns = 1; break; } @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org