static int db_init(dbiIndex dbi, const char * dbhome, DB_ENV ** dbenvp)
{
- rpmdb rpmdb = dbi->dbi_rpmdb;
DB_ENV *dbenv = NULL;
int eflags;
int rc, xx;
rc = db->set_pagesize(db, dbi->dbi_pagesize);
rc = cvtdberr(dbi, "db->set_pagesize", rc, _debug);
}
- if (rc == 0 && oflags & DB_CREATE) {
- switch(dbi->dbi_type) {
- default:
- case DB_HASH:
- if (dbi->dbi_h_ffactor) {
- rc = db->set_h_ffactor(db, dbi->dbi_h_ffactor);
- rc = cvtdberr(dbi, "db->set_h_ffactor", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_h_nelem) {
- rc = db->set_h_nelem(db, dbi->dbi_h_nelem);
- rc = cvtdberr(dbi, "db->set_h_nelem", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_h_flags) {
- rc = db->set_flags(db, dbi->dbi_h_flags);
- rc = cvtdberr(dbi, "db->set_h_flags", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_h_hash_fcn) {
- rc = db->set_h_hash(db, dbi->dbi_h_hash_fcn);
- rc = cvtdberr(dbi, "db->set_h_hash", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_h_dup_compare_fcn) {
- rc = db->set_dup_compare(db, dbi->dbi_h_dup_compare_fcn);
- rc = cvtdberr(dbi, "db->set_dup_compare", rc, _debug);
- if (rc) break;
- }
- break;
- case DB_BTREE:
- if (dbi->dbi_bt_flags) {
- rc = db->set_flags(db, dbi->dbi_bt_flags);
- rc = cvtdberr(dbi, "db->set_bt_flags", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_bt_minkey) {
- rc = db->set_bt_minkey(db, dbi->dbi_bt_minkey);
- rc = cvtdberr(dbi, "db->set_bt_minkey", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_bt_compare_fcn) {
- rc = db->set_bt_compare(db, dbi->dbi_bt_compare_fcn);
- rc = cvtdberr(dbi, "db->set_bt_compare", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_bt_dup_compare_fcn) {
- rc = db->set_dup_compare(db, dbi->dbi_bt_dup_compare_fcn);
- rc = cvtdberr(dbi, "db->set_dup_compare", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_bt_prefix_fcn) {
- rc = db->set_bt_prefix(db, dbi->dbi_bt_prefix_fcn);
- rc = cvtdberr(dbi, "db->set_bt_prefix", rc, _debug);
- if (rc) break;
- }
- break;
- case DB_RECNO:
- if (dbi->dbi_re_delim) {
- rc = db->set_re_delim(db, dbi->dbi_re_delim);
- rc = cvtdberr(dbi, "db->set_re_selim", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_re_len) {
- rc = db->set_re_len(db, dbi->dbi_re_len);
- rc = cvtdberr(dbi, "db->set_re_len", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_re_pad) {
- rc = db->set_re_pad(db, dbi->dbi_re_pad);
- rc = cvtdberr(dbi, "db->set_re_pad", rc, _debug);
- if (rc) break;
- }
- if (dbi->dbi_re_source) {
- rc = db->set_re_source(db, dbi->dbi_re_source);
- rc = cvtdberr(dbi, "db->set_re_source", rc, _debug);
- if (rc) break;
- }
- break;
- case DB_QUEUE:
- if (dbi->dbi_q_extentsize) {
- rc = db->set_q_extentsize(db, dbi->dbi_q_extentsize);
- rc = cvtdberr(dbi, "db->set_q_extentsize", rc, _debug);
- if (rc) break;
- }
- break;
- }
- }
if (rc == 0) {
const char *dbpath = dbi->dbi_file;
{ "pagesize", 0,POPT_ARG_INT, &staticdbi.dbi_pagesize, 0,
NULL, NULL },
-/* XXX bt_minkey */
-/* XXX bt_compare */
-/* XXX bt_dup_compare */
-/* XXX bt_prefix */
- { "bt_dup", 0,POPT_BIT_SET, &staticdbi.dbi_bt_flags, DB_DUP,
- NULL, NULL },
- { "bt_dupsort",0,POPT_BIT_SET, &staticdbi.dbi_bt_flags, DB_DUPSORT,
- NULL, NULL },
- { "bt_recnum", 0,POPT_BIT_SET, &staticdbi.dbi_bt_flags, DB_RECNUM,
- NULL, NULL },
- { "bt_revsplitoff", 0,POPT_BIT_SET, &staticdbi.dbi_bt_flags, DB_REVSPLITOFF,
- NULL, NULL },
-
- { "h_dup", 0,POPT_BIT_SET, &staticdbi.dbi_h_flags, DB_DUP,
- NULL, NULL },
- { "h_dupsort", 0,POPT_BIT_SET, &staticdbi.dbi_h_flags, DB_DUPSORT,
- NULL, NULL },
- { "h_ffactor", 0,POPT_ARG_INT, &staticdbi.dbi_h_ffactor, 0,
- NULL, NULL },
- { "h_nelem", 0,POPT_ARG_INT, &staticdbi.dbi_h_nelem, 0,
- NULL, NULL },
-
- { "re_renumber", 0,POPT_BIT_SET, &staticdbi.dbi_re_flags, DB_RENUMBER,
- NULL, NULL },
- { "re_snapshot",0,POPT_BIT_SET, &staticdbi.dbi_re_flags, DB_SNAPSHOT,
- NULL, NULL },
- { "re_delim", 0,POPT_ARG_INT, &staticdbi.dbi_re_delim, 0,
- NULL, NULL },
- { "re_len", 0,POPT_ARG_INT, &staticdbi.dbi_re_len, 0,
- NULL, NULL },
- { "re_pad", 0,POPT_ARG_INT, &staticdbi.dbi_re_pad, 0,
- NULL, NULL },
- { "re_source", 0,POPT_ARG_STRING, &staticdbi.dbi_re_source, 0,
- NULL, NULL },
-
- { "q_extentsize", 0,POPT_ARG_INT, &staticdbi.dbi_q_extentsize, 0,
- NULL, NULL },
-
POPT_TABLEEND
};
{
if (dbi) {
dbi->dbi_file = _free(dbi->dbi_file);
- dbi->dbi_re_source = _free(dbi->dbi_re_source);
dbi->dbi_stats = _free(dbi->dbi_stats);
dbi = _free(dbi);
}
dbi->dbi_cachesize = 1 * 1024 * 1024;
}
- if ((dbi->dbi_bt_flags | dbi->dbi_h_flags) & DB_DUP)
- dbi->dbi_permit_dups = 1;
-
/* FIX: *(rdbOptions->arg) reachable */
return dbi;
}
int dbi_cachesize; /*!< (128Kb) */
/* dbinfo parameters */
int dbi_pagesize; /*!< (fs blksize) */
- /* hash access parameters */
- unsigned int dbi_h_ffactor; /*!< */
- unsigned int (*dbi_h_hash_fcn) (DB *, const void *bytes,
- unsigned int length);
- unsigned int dbi_h_nelem; /*!< */
- unsigned int dbi_h_flags; /*!< DB_DUP, DB_DUPSORT */
- int (*dbi_h_dup_compare_fcn) (DB *, const DBT *, const DBT *);
- /* btree access parameters */
- int dbi_bt_flags;
- int dbi_bt_minkey;
- int (*dbi_bt_compare_fcn) (DB *, const DBT *, const DBT *);
- int (*dbi_bt_dup_compare_fcn) (DB *, const DBT *, const DBT *);
- size_t (*dbi_bt_prefix_fcn) (DB *, const DBT *, const DBT *);
- /* recno access parameters */
- int dbi_re_flags;
- int dbi_re_delim;
- unsigned int dbi_re_len;
- int dbi_re_pad;
- char * dbi_re_source;
- /* queue access parameters */
- unsigned int dbi_q_extentsize;
rpmdb dbi_rpmdb; /*!< the parent rpm database */
rpmTag dbi_rpmtag; /*!< rpm tag used for index */