]> git.sur5r.net Git - openldap/commitdiff
introduce ber_bvreplace()
authorPierangelo Masarati <ando@openldap.org>
Thu, 21 Apr 2005 03:40:50 +0000 (03:40 +0000)
committerPierangelo Masarati <ando@openldap.org>
Thu, 21 Apr 2005 03:40:50 +0000 (03:40 +0000)
include/lber.h
include/lber_pvt.h
libraries/liblber/memory.c

index c3c0da6485cabd1187b6984c22e9b0d6198ae4db..93eebc3e486495895ddc3e0c5aca34baab5ca57d 100644 (file)
@@ -597,6 +597,10 @@ LBER_F( char * )
 ber_strdup LDAP_P((
        LDAP_CONST char * ));
 
+LBER_F( struct berval * )
+ber_bvreplace LDAP_P((
+       struct berval *dst, LDAP_CONST struct berval *src ));
+
 LBER_F( void )
 ber_bvarray_free LDAP_P(( BerVarray p ));
 
index a23f33f9c322d4e5127a5144312b7351d6e51f7f..6fd557d230497e242c06fc231f715e93d30d083e 100644 (file)
@@ -135,6 +135,10 @@ LBER_F( char * )
 ber_strdup_x LDAP_P((
        LDAP_CONST char *, void *ctx ));
 
+LBER_F( struct berval * )
+ber_bvreplace_x LDAP_P((
+       struct berval *dst, LDAP_CONST struct berval *src, void *ctx ));
+
 LBER_F( void )
 ber_bvarray_free_x LDAP_P(( BerVarray p, void *ctx ));
 
index ea96e2d6ce745a4ab13fb1a5e5ec9ef996675591..5b4089fec2c1cd756cdafb48438e7f3e5f66bff2 100644 (file)
@@ -713,6 +713,31 @@ ber_strndup( LDAP_CONST char *s, ber_len_t l )
        return ber_strndup_x( s, l, NULL );
 }
 
+/*
+ * dst is resized as required by src and the value of src is copied into dst
+ * dst->bv_val must be NULL (and dst->bv_len must be 0), or it must be
+ * alloc'ed with the context ctx
+ */
+struct berval *
+ber_bvreplace_x( struct berval *dst, LDAP_CONST struct berval *src, void *ctx )
+{
+       assert( dst != NULL );
+
+       if ( dst->bv_len < src->bv_len ) {
+               dst->bv_val = ber_memrealloc_x( dst->bv_val, src->bv_len + 1, ctx );
+       }
+
+       AC_MEMCPY( dst->bv_val, src->bv_val, src->bv_len + 1 );
+
+       return dst;
+}
+
+struct berval *
+ber_bvreplace( struct berval *dst, LDAP_CONST struct berval *src )
+{
+       return ber_bvreplace_x( dst, src, NULL );
+}
+
 void
 ber_bvarray_free_x( BerVarray a, void *ctx )
 {