mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-03-07 14:18:15 +08:00
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:
parent
2d22e02ef9
commit
6aa3637545
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user