]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldbm/index.c
error message from be_entry_put tool backend function
[openldap] / servers / slapd / back-ldbm / index.c
index c93717813598ed69e8ed3967a1cd877b9787b924..cd1c685fecd34737efa8a8a92dab878de15531cb 100644 (file)
@@ -1,7 +1,7 @@
 /* index.c - routines for dealing with attribute indexes */
 /* $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
  */
 
@@ -39,12 +39,7 @@ static slap_mask_t index_mask(
                /* has language tag */
                attr_mask( be->be_private, desc->ad_type->sat_ad, &mask );
 
-               if( mask & SLAP_INDEX_AUTO_LANG ) {
-                       *atname = desc->ad_cname;
-                       *dbname = desc->ad_type->sat_cname.bv_val;
-                       return mask;
-               }
-               if( mask & SLAP_INDEX_LANG ) {
+               if( !( mask & SLAP_INDEX_NOLANG ) ) {
                        *atname = desc->ad_type->sat_cname;
                        *dbname = desc->ad_type->sat_cname.bv_val;
                        return mask;
@@ -64,7 +59,7 @@ static slap_mask_t index_mask(
                        *dbname = at->sat_cname.bv_val;
                        return mask;
                }
-               if( mask & SLAP_INDEX_SUBTYPES ) {
+               if( !( mask & SLAP_INDEX_NOSUBTYPES ) ) {
                        *atname = at->sat_cname;
                        *dbname = at->sat_cname.bv_val;
                        return mask;
@@ -93,7 +88,7 @@ int index_param(
                return LDAP_INAPPROPRIATE_MATCHING;
        }
 
-       switch(ftype) {
+       switch( ftype ) {
        case LDAP_FILTER_PRESENT:
                if( IS_SLAP_INDEX( mask, SLAP_INDEX_PRESENT ) ) {
                        goto done;
@@ -134,7 +129,7 @@ static int indexer(
        Backend *be,
        char *dbname,
        struct berval *atname,
-       struct berval **vals,
+       BVarray vals,
        ID id,
        int op,
        slap_mask_t mask )
@@ -143,7 +138,7 @@ static int indexer(
        const char *text;
     DBCache    *db;
        AttributeDescription *ad = NULL;
-       struct berval **keys;
+       struct berval *keys;
 
        assert( mask );
 
@@ -180,10 +175,10 @@ static int indexer(
                        atname, vals, &keys );
 
                if( rc == LDAP_SUCCESS && keys != NULL ) {
-                       for( i=0; keys[i] != NULL; i++ ) {
-                               key_change( be, db, keys[i], id, op );
+                       for( i=0; keys[i].bv_val != NULL; i++ ) {
+                               key_change( be, db, &keys[i], id, op );
                        }
-                       ber_bvecfree( keys );
+                       bvarray_free( keys );
                }
        }
 
@@ -196,10 +191,10 @@ static int indexer(
                        atname, vals, &keys );
 
                if( rc == LDAP_SUCCESS && keys != NULL ) {
-                       for( i=0; keys[i] != NULL; i++ ) {
-                               key_change( be, db, keys[i], id, op );
+                       for( i=0; keys[i].bv_val != NULL; i++ ) {
+                               key_change( be, db, &keys[i], id, op );
                        }
-                       ber_bvecfree( keys );
+                       bvarray_free( keys );
                }
        }
 
@@ -212,10 +207,10 @@ static int indexer(
                        atname, vals, &keys );
 
                if( rc == LDAP_SUCCESS && keys != NULL ) {
-                       for( i=0; keys[i] != NULL; i++ ) {
-                               key_change( be, db, keys[i], id, op );
+                       for( i=0; keys[i].bv_val != NULL; i++ ) {
+                               key_change( be, db, &keys[i], id, op );
                        }
-                       ber_bvecfree( keys );
+                       bvarray_free( keys );
                }
        }
 
@@ -227,7 +222,7 @@ static int index_at_values(
        Backend *be,
        AttributeType *type,
        struct berval *lang,
-       struct berval **vals,
+       BVarray vals,
        ID id,
        int op,
        char ** dbnamep,
@@ -235,7 +230,6 @@ static int index_at_values(
 {
        slap_mask_t mask = 0;
        slap_mask_t tmpmask = 0;
-       int lindex = 0;
 
        if( type->sat_sup ) {
                /* recurse */
@@ -246,8 +240,9 @@ static int index_at_values(
        }
 
        /* If this type has no AD, we've never used it before */
-       if (type->sat_ad)
+       if( type->sat_ad ) {
                attr_mask( be->be_private, type->sat_ad, &mask );
+       }
 
        if( mask ) {
                *dbnamep = type->sat_cname.bv_val;
@@ -271,30 +266,23 @@ static int index_at_values(
                lname.bv_val = NULL;
 
                desc = ad_find_lang(type, lang);
-               if (desc)
+               if( desc ) {
                        attr_mask( be->be_private, desc, &tmpmask );
+               }
 
                if( tmpmask ) {
                        dbname = desc->ad_cname.bv_val;
                        lname = desc->ad_cname;
                        mask = tmpmask;
-               } else if ( mask & SLAP_INDEX_AUTO_LANG ) {
-                       dbname = *dbnamep;
-                       lname.bv_len = type->sat_cname.bv_len+lang->bv_len + 1;
-                       lname.bv_val = ch_malloc( lname.bv_len + 1 );
-
-                       strcpy(lname.bv_val, type->sat_cname.bv_val);
-                       lname.bv_val[type->sat_cname.bv_len] = ';';
-                       strcpy(lname.bv_val+type->sat_cname.bv_len+1,
-                               lang->bv_val);
                }
 
                if( dbname != NULL ) {
                        indexer( be, dbname, &lname,
                                vals, id, op,
                                mask );
-                       if (!tmpmask)
+                       if( !tmpmask ) {
                                ch_free( lname.bv_val );
+                       }
                }
        }
 
@@ -304,7 +292,7 @@ static int index_at_values(
 int index_values(
        Backend *be,
        AttributeDescription *desc,
-       struct berval **vals,
+       BVarray vals,
        ID id,
        int op )
 {
@@ -319,14 +307,12 @@ int index_values(
        return LDAP_SUCCESS;
 }
 
-
 int
 index_entry(
     Backend    *be,
        int op,
-    Entry      *e,
-       Attribute *ap
-)
+    Entry *e,
+       Attribute *ap )
 {
 #ifdef NEW_LOGGING
        LDAP_LOG(( "index", LDAP_LEVEL_ENTRY,
@@ -339,7 +325,6 @@ index_entry(
                e->e_id, e->e_dn );
 #endif
 
-
        /* add each attribute to the indexes */
        for ( ; ap != NULL; ap = ap->a_next ) {
                index_values( be, ap->a_desc, ap->a_vals, e->e_id, op );
@@ -354,7 +339,6 @@ index_entry(
                e->e_id, e->e_dn );
 #endif
 
-
        return LDAP_SUCCESS;
 }