}
if ( l == 0 ) {
- return value_add_one( bva, ber_bvstr( "0" ) );
+ struct berval bv = BER_BVC("0");
+ return value_add_one( bva, &bv );
}
return mask_to_verbs( loglevel_ops, l, bva );
Entry *e,
int rw )
{
+ int rc = LDAP_SUCCESS;
+
if ( !e->e_private ) {
- entry_free( e );
+ BackendDB *be = op->o_bd;
+ CfBackInfo *cfb = be->be_private;
+ BackendInfo *bi = cfb->cb_db.bd_info;
+
+ if ( bi && bi->bi_entry_release_rw ) {
+ op->o_bd = &cfb->cb_db;
+ rc = bi->bi_entry_release_rw( op, e, rw );
+ op->o_bd = be;
+ } else {
+ entry_free( e );
+ }
}
- return LDAP_SUCCESS;
+ return rc;
}
/* return LDAP_SUCCESS IFF we can retrieve the specified entry.
return NOID;
}
+static ID
+config_tool_dn2id_get( Backend *be, struct berval *dn )
+{
+ CfBackInfo *cfb = be->be_private;
+ BackendInfo *bi = cfb->cb_db.bd_info;
+
+ if ( bi && bi->bi_tool_dn2id_get )
+ return bi->bi_tool_dn2id_get( &cfb->cb_db, dn );
+
+ return NOID;
+}
+
static Entry *
config_tool_entry_get( BackendDB *be, ID id )
{
return NOID;
}
+static ID
+config_tool_entry_modify( BackendDB *be, Entry *e, struct berval *text )
+{
+ CfBackInfo *cfb = be->be_private;
+ BackendInfo *bi = cfb->cb_db.bd_info;
+ CfEntryInfo *ce, *last;
+ ConfigArgs ca = {0};
+
+ ce = config_find_base( cfb->cb_root, &e->e_nname, &last );
+
+ if ( ce && bi && bi->bi_tool_entry_modify )
+ return bi->bi_tool_entry_modify( &cfb->cb_db, e, text );
+
+ return NOID;
+}
+
static struct {
char *name;
AttributeDescription **desc;
bi->bi_tool_entry_first = config_tool_entry_first;
bi->bi_tool_entry_first_x = config_tool_entry_first_x;
bi->bi_tool_entry_next = config_tool_entry_next;
+ bi->bi_tool_dn2id_get = config_tool_dn2id_get;
bi->bi_tool_entry_get = config_tool_entry_get;
bi->bi_tool_entry_put = config_tool_entry_put;
+ bi->bi_tool_entry_modify = config_tool_entry_modify;
ca.argv = argv;
argv[ 0 ] = "slapd";