]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/entry.c
reduce code duplication
[openldap] / servers / slapd / entry.c
index ff2b3574a80478496caf2eb9aa283a0d397b0f6d..e94aa20d98e993a92d341dee392668e969ea9c6a 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2009 The OpenLDAP Foundation.
+ * Copyright 1998-2010 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -936,19 +936,27 @@ int entry_decode(EntryHeader *eh, Entry **e)
        return 0;
 }
 
-Entry *entry_dup( Entry *e )
+Entry *
+entry_dup2( Entry *dest, Entry *source )
 {
-       Entry *ret;
+       assert( dest != NULL );
+       assert( source != NULL );
 
-       ret = entry_alloc();
+       assert( dest->e_private == NULL );
 
-       ret->e_id = e->e_id;
-       ber_dupbv( &ret->e_name, &e->e_name );
-       ber_dupbv( &ret->e_nname, &e->e_nname );
-       ret->e_attrs = attrs_dup( e->e_attrs );
-       ret->e_ocflags = e->e_ocflags;
+       dest->e_id = source->e_id;
+       ber_dupbv( &dest->e_name, &source->e_name );
+       ber_dupbv( &dest->e_nname, &source->e_nname );
+       dest->e_attrs = attrs_dup( source->e_attrs );
+       dest->e_ocflags = source->e_ocflags;
 
-       return ret;
+       return dest;
+}
+
+Entry *
+entry_dup( Entry *e )
+{
+       return entry_dup2( entry_alloc(), e );
 }
 
 #if 1