X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fcharray.c;h=768c167fd53c43c72da28424f3f29fbb298cafb0;hb=3d9377f76404965d483c210a95e4e55386ff98a3;hp=4c61238b3a57572266102aad2b5914442b913f3b;hpb=743c402265e56c084d7fa4517e1257bc3457daeb;p=openldap diff --git a/servers/slapd/charray.c b/servers/slapd/charray.c index 4c61238b3a..768c167fd5 100644 --- a/servers/slapd/charray.c +++ b/servers/slapd/charray.c @@ -1,7 +1,7 @@ /* charray.c - routines for dealing with char * arrays */ /* $OpenLDAP$ */ /* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ @@ -229,41 +229,20 @@ slap_strcopy( return a-1; } -void -bvarray_add( - struct berval **a, - struct berval *bv -) -{ - int n; - - if ( *a == NULL ) { - *a = (struct berval *) ch_malloc( 2 * sizeof(struct berval) ); - n = 0; - } else { - for ( n = 0; *a != NULL && (*a)[n].bv_val != NULL; n++ ) { - ; /* NULL */ - } - - *a = (struct berval *) ch_realloc( (char *) *a, - (n + 2) * sizeof(struct berval) ); - } - - ber_dupbv( (*a)+n, bv ); - n++; - (*a)[n].bv_val = NULL; -} - -void -bvarray_free( - struct berval *a +/* strncopy is like strcpy except it returns a pointer to the trailing NUL of + * the result string. This allows fast construction of catenated strings + * without the overhead of strlen/strcat. + */ +char * +slap_strncopy( + char *a, + const char *b, + size_t n ) { - int i; - - if (a) { - for (i=0; a[i].bv_val; i++) - free(a[i].bv_val); - free(a); - } + if (!a || !b || n == 0) + return a; + + while ((*a++ = *b++) && n-- > 0) ; + return a-1; }