X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-bdb%2Fattr.c;h=07bfc92cabec4f606fb32f8d4c53b8e3466a4c4e;hb=23efa07a994c94c4e78a9495ac6e2981b87b4ba0;hp=6ce4fbb00be63274f9cb4cfabb73f4227a1e859f;hpb=5160da05e533ead252525894414dfead55300ff8;p=openldap diff --git a/servers/slapd/back-bdb/attr.c b/servers/slapd/back-bdb/attr.c index 6ce4fbb00b..07bfc92cab 100644 --- a/servers/slapd/back-bdb/attr.c +++ b/servers/slapd/back-bdb/attr.c @@ -1,7 +1,7 @@ /* attr.c - backend routines for dealing with attributes */ /* $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 */ @@ -15,73 +15,51 @@ #include "slap.h" #include "back-bdb.h" -#if BDB_CONFIG_INDICES - /* for the cache of attribute information (which are indexed, etc.) */ typedef struct bdb_attrinfo { -#ifdef SLAPD_USE_AD - AttributeDescription *ai_desc; /* attribute description cn;lang-en */ -#else - char *ai_desc; -#endif + AttributeDescription *ai_desc; /* attribute description cn;lang-en */ slap_mask_t ai_indexmask; /* how the attr is indexed */ } AttrInfo; static int ainfo_type_cmp( -#ifdef SLAPD_USE_AD AttributeDescription *desc, -#else - char *desc, -#endif - AttrInfo *a + AttrInfo *a ) { -#ifdef SLAPD_USE_AD - return ad_cmp( desc, a->ai_desc ); -#else - return( strcasecmp( desc, a->ai_desc ) ); -#endif + return desc - a->ai_desc; } static int ainfo_cmp( - AttrInfo *a, - AttrInfo *b + AttrInfo *a, + AttrInfo *b ) { -#ifdef SLAPD_USE_AD - return ad_cmp( a->ai_desc, b->ai_desc ); -#else - return( strcasecmp( a->ai_desc, b->ai_desc ) ); -#endif + return a->ai_desc - b->ai_desc; } void bdb_attr_mask( - struct bdb_info *bdb, -#ifdef SLAPD_USE_AD + struct bdb_info *bdb, AttributeDescription *desc, -#else - const char *desc, -#endif - slap_mask_t *indexmask ) + slap_mask_t *indexmask ) { AttrInfo *a; a = (AttrInfo *) avl_find( bdb->bi_attrs, desc, - (AVL_CMP) ainfo_type_cmp ); + (AVL_CMP) ainfo_type_cmp ); *indexmask = a != NULL ? a->ai_indexmask : 0; } int bdb_attr_index_config( - struct bdb_info *bdb, - const char *fname, - int lineno, - int argc, - char **argv ) + struct bdb_info *bdb, + const char *fname, + int lineno, + int argc, + char **argv ) { int rc; int i; @@ -89,7 +67,7 @@ bdb_attr_index_config( char **attrs; char **indexes = NULL; - attrs = str2charray( argv[0], "," ); + attrs = ldap_str2charray( argv[0], "," ); if( attrs == NULL ) { fprintf( stderr, "%s: line %d: " @@ -99,7 +77,7 @@ bdb_attr_index_config( } if ( argc > 1 ) { - indexes = str2charray( argv[1], "," ); + indexes = ldap_str2charray( argv[1], "," ); if( indexes == NULL ) { fprintf( stderr, "%s: line %d: " @@ -130,7 +108,7 @@ bdb_attr_index_config( } } - if( !mask ) { + if( !mask ) { fprintf( stderr, "%s: line %d: " "no indexes selected\n", fname, lineno ); @@ -203,22 +181,16 @@ bdb_attr_index_config( } #ifdef NEW_LOGGING - LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1, - "attr_index_config: index %s 0x%04x\n", - ad->ad_cname->bv_val, mask )); + LDAP_LOG( BACK_BDB, DETAIL1, + "attr_index_config: index %s 0x%04lx\n", + ad->ad_cname.bv_val, mask, 0 ); #else - Debug( LDAP_DEBUG_CONFIG, "index %s 0x%04x\n", - ad->ad_cname->bv_val, mask, 0 ); + Debug( LDAP_DEBUG_CONFIG, "index %s 0x%04lx\n", + ad->ad_cname.bv_val, mask, 0 ); #endif -#ifdef SLAPD_USE_AD a->ai_desc = ad; -#else - a->ai_desc = ch_strdup( ad->ad_cname->bv_val ); - ad_free( ad, 1 ); -#endif - a->ai_indexmask = mask; rc = avl_insert( &bdb->bi_attrs, (caddr_t) a, @@ -227,35 +199,21 @@ bdb_attr_index_config( if( rc ) { fprintf( stderr, "%s: line %d: duplicate index definition " "for attr \"%s\" (ignored)\n", - fname, lineno, attrs[i] ); + fname, lineno, attrs[i] ); return LDAP_PARAM_ERROR; } } - charray_free( attrs ); - if ( indexes != NULL ) charray_free( indexes ); + ldap_charray_free( attrs ); + if ( indexes != NULL ) ldap_charray_free( indexes ); return LDAP_SUCCESS; } - -static void -ainfo_free( void *attr ) -{ - AttrInfo *ai = attr; -#ifdef SLAPD_USE_AD - ad_free( ai->ai_desc, 1 ); -#else - free( ai->ai_desc ); -#endif - free( ai ); -} - void bdb_attr_index_destroy( Avlnode *tree ) { - avl_free( tree, ainfo_free ); + avl_free( tree, free ); } -#endif