From 5b0e434d935421581a208e58bbe25da30dba181f Mon Sep 17 00:00:00 2001 From: Juan Gomez Date: Tue, 15 Jun 1999 20:06:16 +0000 Subject: [PATCH] Enabled deletion of stale index entries. (EXPERIMENTAL) --- servers/slapd/back-ldbm/index.c | 49 ++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/servers/slapd/back-ldbm/index.c b/servers/slapd/back-ldbm/index.c index c7bc9c1135..b27327dccb 100644 --- a/servers/slapd/back-ldbm/index.c +++ b/servers/slapd/back-ldbm/index.c @@ -193,7 +193,54 @@ delete_value( ) { - return 0; + int rc; + Datum key; + /* XXX do we need idl ??? */ + ID_BLOCK *idl = NULL; + char *tmpval = NULL; + char *realval = val; + char buf[BUFSIZ]; + + char prefix = index2prefix( indextype ); + + ldbm_datum_init( key ); + + Debug( LDAP_DEBUG_TRACE, + "=> delete_value( \"%c%s\" )\n", + prefix, val, 0 ); + + if ( prefix != UNKNOWN_PREFIX ) { + unsigned int len = strlen( val ); + + if ( (len + 2) < sizeof(buf) ) { + realval = buf; + } else { + /* value + prefix + null */ + tmpval = (char *) ch_malloc( len + 2 ); + realval = tmpval; + } + realval[0] = prefix; + strcpy( &realval[1], val ); + } + + key.dptr = realval; + key.dsize = strlen( realval ) + 1; + + rc = idl_delete_key( be, db, key, id ); + + if ( tmpval != NULL ) { + free( tmpval ); + } + + if( idl != NULL ) { + idl_free( idl ); + } + + ldap_pvt_thread_yield(); + + Debug( LDAP_DEBUG_TRACE, "<= delete_value %d\n", rc, 0, 0 ); + + return( rc ); }/* static int delete_value() */ -- 2.39.5