]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-bdb/id2entry.c
if continuation line starts with a tab, rewrite it to a space
[openldap] / servers / slapd / back-bdb / id2entry.c
index 04b27ea1b2b346a15d43bad772bc4fd710a16caf..51751c230cf41dc441a671241072761c405ac847 100644 (file)
@@ -13,7 +13,7 @@
 #include "back-bdb.h"
 
 int bdb_id2entry_add(
-       Backend *be,
+       BackendDB *be,
        DB_TXN *tid,
        Entry *e )
 {
@@ -41,8 +41,37 @@ int bdb_id2entry_add(
        return rc;
 }
 
+int bdb_id2entry_update(
+       BackendDB *be,
+       DB_TXN *tid,
+       Entry *e )
+{
+       struct bdb_info *bdb = (struct bdb_info *) be->be_private;
+       DB *db = bdb->bi_id2entry->bdi_db;
+       DBT key, data;
+       struct berval *bv;
+       int rc;
+
+       DBTzero( &key );
+       key.data = (char *) &e->e_id;
+       key.size = sizeof(ID);
+
+       rc = entry_encode( e, &bv );
+       if( rc != LDAP_SUCCESS ) {
+               return -1;
+       }
+
+       DBTzero( &data );
+       bv2DBT( bv, &data );
+
+       rc = db->put( db, tid, &key, &data, 0 );
+
+       ber_bvfree( bv );
+       return rc;
+}
+
 int bdb_id2entry(
-       Backend *be,
+       BackendDB *be,
        DB_TXN *tid,
        ID id,
        Entry **e )
@@ -73,12 +102,16 @@ int bdb_id2entry(
 
        rc = entry_decode( &bv, e );
 
+       if( rc == 0 ) {
+               (*e)->e_id = id;
+       }
+
        ch_free( data.data );
        return rc;
 }
 
 int bdb_id2entry_delete(
-       Backend *be,
+       BackendDB *be,
        DB_TXN *tid,
        ID id )
 {
@@ -99,7 +132,7 @@ int bdb_id2entry_delete(
 }
 
 int bdb_entry_return(
-       Backend *be,
+       BackendDB *be,
        Entry *e )
 {
        entry_free( e );