/* 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
*/
return( 0 );
}
-int
-bvec_inlist(
- struct berval **a,
- struct berval *s
-)
-{
- int i;
-
- if( a == NULL ) return 0;
-
- for ( i = 0; a[i] != NULL; i++ ) {
- if ( a[i]->bv_len != s->bv_len) continue;
- if ( strcasecmp( s->bv_val, a[i]->bv_val ) == 0 ) {
- return( 1 );
- }
- }
-
- return( 0 );
-}
-
char **
charray_dup( char **a )
{
return( res );
}
-/* Convert a delimited string into an array of bervals; Add on
- * to an existing array if it was given.
- */
-struct berval **
-str2bvec( struct berval **vec, const char *in, const char *brkstr )
-{
- char *str;
- struct berval **res;
- char *s;
- char *lasts;
- int i, old;
-
- /* protect the input string from strtok */
- str = ch_strdup( in );
-
- for (old = 0; vec && vec[old]; old++);
-
- i = 1;
- for ( s = str; *s; s++ ) {
- if ( strchr( brkstr, *s ) != NULL ) {
- i++;
- }
- }
-
- if (vec) {
- res = (struct berval **) ch_realloc( vec, (old + i + 1) * sizeof(struct berval *) );
- vec = res + old;
- } else {
- res = (struct berval **) ch_malloc( (i + 1) * sizeof(struct berval *) );
- vec = res;
- }
- i = 0;
-
- for ( s = ldap_pvt_strtok( str, brkstr, &lasts );
- s != NULL;
- s = ldap_pvt_strtok( NULL, brkstr, &lasts ) )
- {
- vec[i++] = ber_bvstrdup( s );
- }
-
- vec[i] = NULL;
-
- free( str );
- return( res );
-}
-
-
int
charray_strcmp( const char **a1, const char **a2 )
{
return a-1;
}
-void
+/* Unlike charray_add, bvarray_add does not make a new copy of the
+ * source string. Typically it is used where ber_bvecadd was before,
+ * and ber_bvecadd didn't duplicate its source either.
+ */
+int
bvarray_add(
struct berval **a,
struct berval *bv
*a = (struct berval *) ch_realloc( (char *) *a,
(n + 2) * sizeof(struct berval) );
}
+ if ( *a == NULL ) return -1;
- ber_dupbv( (*a)+n, bv );
- n++;
+ (*a)[n++] = *bv;
(*a)[n].bv_val = NULL;
+
+ return 0;
}
void