]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldbm/init.c
Add system schema flags to backends supporting system schema.
[openldap] / servers / slapd / back-ldbm / init.c
index 8054d1a6d28b151f3644619fe7a97c4e6b84223a..1fe1335666f1de3fcd9f0662710ded8a981b3aca 100644 (file)
@@ -1,7 +1,7 @@
 /* init.c - initialize ldbm backend */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
@@ -54,14 +54,14 @@ ldbm_back_initialize(
        bi->bi_db_destroy = ldbm_back_db_destroy;
 
        bi->bi_op_bind = ldbm_back_bind;
-       bi->bi_op_unbind = ldbm_back_unbind;
+       bi->bi_op_unbind = 0;
        bi->bi_op_search = ldbm_back_search;
        bi->bi_op_compare = ldbm_back_compare;
        bi->bi_op_modify = ldbm_back_modify;
        bi->bi_op_modrdn = ldbm_back_modrdn;
        bi->bi_op_add = ldbm_back_add;
        bi->bi_op_delete = ldbm_back_delete;
-       bi->bi_op_abandon = ldbm_back_abandon;
+       bi->bi_op_abandon = 0;
 
        bi->bi_extended = ldbm_back_extended;
 
@@ -69,6 +69,7 @@ ldbm_back_initialize(
        bi->bi_acl_group = ldbm_back_group;
        bi->bi_acl_attribute = ldbm_back_attribute;
        bi->bi_chk_referrals = ldbm_back_referrals;
+       bi->bi_operational = ldbm_back_operational;
 
        /*
         * hooks for slap tools
@@ -103,9 +104,6 @@ ldbm_back_open(
 {
        int rc;
 
-       struct ldbm_backend_info *lbi
-               = (struct ldbm_backend_info *) bi->bi_private;
-
        /* initialize the underlying database system */
        rc = ldbm_initialize( NULL );
        return rc;
@@ -128,6 +126,9 @@ ldbm_back_db_init(
 {
        struct ldbminfo *li;
 
+       /* indicate system schema supported */
+       be->be_flags |= SLAP_BFLAG_ALIASES|SLAP_BFLAG_REFERRALS;
+
        /* allocate backend-database-specific stuff */
        li = (struct ldbminfo *) ch_calloc( 1, sizeof(struct ldbminfo) );
 
@@ -218,7 +219,8 @@ ldbm_back_db_destroy(
        /* should free/destroy every in be_private */
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
 
-       ldbm_shutdown_env(li->li_dbenv);
+       if (li->li_dbenv)
+           ldbm_shutdown_env(li->li_dbenv);
 
        free( li->li_directory );
        attr_index_destroy( li->li_attrs );