- rc = db->bdi_db->open( db->bdi_db,
- file, name,
- DB_BTREE, DB_CREATE|DB_THREAD,
- bdb->bi_dbenv_mode );
+ rc = db->bdi_db->set_pagesize( db->bdi_db, BDB_PAGESIZE );
+#ifdef BDB_INDEX_USE_HASH
+ rc = db->bdi_db->set_h_hash( db->bdi_db, bdb_db_hash );
+#endif
+ rc = db->bdi_db->set_flags( db->bdi_db, DB_DUP | DB_DUPSORT );
+
+ file = ch_malloc( db->bdi_name.bv_len + sizeof(BDB_SUFFIX) );
+ strcpy( file, db->bdi_name.bv_val );
+ strcpy( file+db->bdi_name.bv_len, BDB_SUFFIX );
+
+#ifdef HAVE_EBCDIC
+ __atoe( file );
+#endif
+ flags = DB_CREATE | DB_THREAD;
+#ifdef DB_AUTO_COMMIT
+ if ( !( slapMode & SLAP_TOOL_QUICK ))
+ flags |= DB_AUTO_COMMIT;
+#endif
+ /* Cannot Truncate when Transactions are in use */
+ if ( (slapMode & (SLAP_TOOL_QUICK|SLAP_TRUNCATE_MODE)) ==
+ (SLAP_TOOL_QUICK|SLAP_TRUNCATE_MODE))
+ flags |= DB_TRUNCATE;
+
+ rc = DB_OPEN( db->bdi_db,
+ file, NULL /* name */,
+ BDB_INDEXTYPE, bdb->bi_db_opflags | flags, bdb->bi_dbenv_mode );