Added SLAP_TOOL_READMAIN and SLAP_TOOL_READONLY slapMode flags. The rw

arg to tool_entry_open comes too late for back-bdb to use.
This commit is contained in:
Howard Chu 2003-05-11 07:03:48 +00:00
parent 2d22e02ef9
commit 6aa3637545
4 changed files with 23 additions and 1 deletions

View File

@ -333,7 +333,7 @@ bdb_db_open( BackendDB *be )
}
}
flags = DB_THREAD | DB_CREATE | bdb->bi_db_opflags;
flags = DB_THREAD | bdb->bi_db_opflags;
bdb->bi_databases = (struct bdb_db_info **) ch_malloc(
BDB_INDICES * sizeof(struct bdb_db_info *) );
@ -363,17 +363,32 @@ bdb_db_open( BackendDB *be )
bdb_bt_compare );
rc = db->bdi_db->set_pagesize( db->bdi_db,
BDB_ID2ENTRY_PAGESIZE );
if ( slapMode & SLAP_TOOL_READMAIN ) {
flags |= DB_RDONLY;
} else {
flags |= DB_CREATE;
}
} else {
rc = db->bdi_db->set_flags( db->bdi_db,
DB_DUP | DB_DUPSORT );
#ifndef BDB_HIER
rc = db->bdi_db->set_dup_compare( db->bdi_db,
bdb_bt_compare );
if ( slapMode & SLAP_TOOL_READONLY ) {
flags |= DB_RDONLY;
} else {
flags |= DB_CREATE;
}
#else
rc = db->bdi_db->set_dup_compare( db->bdi_db,
bdb_dup_compare );
rc = db->bdi_db->set_bt_compare( db->bdi_db,
bdb_bt_compare );
if ( slapMode & (SLAP_TOOL_READONLY|SLAP_TOOL_READMAIN) ) {
flags |= DB_RDONLY;
} else {
flags |= DB_CREATE;
}
#endif
rc = db->bdi_db->set_pagesize( db->bdi_db,
BDB_PAGESIZE );
@ -410,6 +425,7 @@ bdb_db_open( BackendDB *be )
return rc;
}
flags &= ~(DB_CREATE | DB_RDONLY);
db->bdi_name = bdbi_databases[i].name;
bdb->bi_databases[i] = db;
}

View File

@ -454,6 +454,8 @@ done:
e->e_id = NOID;
}
bdb_entry_release( &op, e, 0 );
TXN_CHECKPOINT( bi->bi_dbenv,
bi->bi_txn_cp_kbyte, bi->bi_txn_cp_min, 0 );
return rc;
}

View File

@ -1219,6 +1219,8 @@ LDAP_SLAPD_V (int) slapMode;
#define SLAP_MODE 0x0003
#define SLAP_TRUNCATE_MODE 0x0100
#define SLAP_TOOL_READMAIN 0x0200
#define SLAP_TOOL_READONLY 0x0400
struct slap_replica_info {
char *ri_host; /* supersedes be_replica */

View File

@ -105,10 +105,12 @@ slap_tool_init(
case SLAPINDEX:
options = "b:cd:f:n:v";
mode |= SLAP_TOOL_READMAIN;
break;
case SLAPCAT:
options = "b:cd:f:l:n:s:v";
mode |= SLAP_TOOL_READMAIN | SLAP_TOOL_READONLY;
break;
default: