#include "slap.h"
#include "back-ldbm.h"
-struct dbcache *ldbm_cache_open();
-extern Datum ldbm_cache_fetch();
-IDList *idl_fetch();
-
int
id2children_add(
Backend *be,
memset( &data, 0, sizeof( data ) );
#endif
- Debug( LDAP_DEBUG_TRACE, "=> id2children_add( %d, %d )\n", p ? p->e_id
- : 0, e->e_id, 0 );
+ Debug( LDAP_DEBUG_TRACE, "=> id2children_add( %lu, %lu )\n",
+ p ? p->e_id : 0, e->e_id, 0 );
if ( (db = ldbm_cache_open( be, "id2children", LDBM_SUFFIX,
LDBM_WRCREAT )) == NULL ) {
return( 0 );
}
+
+int
+id2children_remove(
+ Backend *be,
+ Entry *p,
+ Entry *e
+)
+{
+ struct dbcache *db;
+ Datum key;
+ int len, rc;
+ IDList *idl;
+ char buf[20];
+
+ Debug( LDAP_DEBUG_TRACE, "=> id2children_remove( %lu, %lu )\n", p ? p->e_id
+ : 0, e->e_id, 0 );
+
+ if ( (db = ldbm_cache_open( be, "id2children", LDBM_SUFFIX,
+ LDBM_WRCREAT )) == NULL ) {
+ Debug( LDAP_DEBUG_ANY,
+ "<= id2children_remove -1 could not open \"id2children%s\"\n",
+ LDBM_SUFFIX, 0, 0 );
+ return( -1 );
+ }
+
+ memset( &key, 0, sizeof(key) );
+ sprintf( buf, "%c%ld", EQ_PREFIX, p ? p->e_id : 0 );
+ key.dptr = buf;
+ key.dsize = strlen( buf ) + 1;
+
+ if ( idl_delete_key( be, db, key, e->e_id ) != 0 ) {
+ Debug( LDAP_DEBUG_TRACE, "<= id2children_remove -1 (idl_insert)\n",
+ 0, 0, 0 );
+ ldbm_cache_close( be, db );
+ return( -1 );
+ }
+
+ ldbm_cache_close( be, db );
+
+ Debug( LDAP_DEBUG_TRACE, "<= id2children_remove 0\n", 0, 0, 0 );
+ return( 0 );
+}
+
int
has_children(
Backend *be,
memset( &key, 0, sizeof( key ) );
#endif
- Debug( LDAP_DEBUG_TRACE, "=> has_children( %d )\n", p->e_id , 0, 0 );
+ Debug( LDAP_DEBUG_TRACE, "=> has_children( %lu )\n", p->e_id , 0, 0 );
if ( (db = ldbm_cache_open( be, "id2children", LDBM_SUFFIX,
LDBM_WRCREAT )) == NULL ) {