2 * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
3 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
5 /* charray.c - routines for dealing with char * arrays */
11 #include <ac/string.h>
12 #include <ac/socket.h>
25 *a = (char **) LDAP_MALLOC( 2 * sizeof(char *) );
28 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
32 *a = (char **) LDAP_REALLOC( (char *) *a,
33 (n + 2) * sizeof(char *) );
40 (*a)[n] = LDAP_STRDUP(s);
42 if( (*a)[n] == NULL ) {
60 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
63 for ( nn = 0; s[nn] != NULL; nn++ ) {
67 aa = (char **) LDAP_REALLOC( (char *) *a, (n + nn + 1) * sizeof(char *) );
74 for ( i = 0; i < nn; i++ ) {
75 (*a)[n + i] = LDAP_STRDUP(s[i]);
77 if( (*a)[n + i] == NULL ) {
78 for( --i ; i >= 0 ; i-- ) {
79 LDAP_FREE( (*a)[n + i] );
91 ldap_charray_free( char **a )
99 for ( p = a; *p != NULL; p++ ) {
105 LDAP_FREE( (char *) a );
116 for ( i = 0; a[i] != NULL; i++ ) {
117 if ( strcasecmp( s, a[i] ) == 0 ) {
126 ldap_charray_dup( char **a )
131 for ( i = 0; a[i] != NULL; i++ )
134 new = (char **) LDAP_MALLOC( (i + 1) * sizeof(char *) );
140 for ( i = 0; a[i] != NULL; i++ ) {
141 new[i] = LDAP_STRDUP( a[i] );
143 if( new[i] == NULL ) {
144 for( --i ; i >= 0 ; i-- ) {
157 ldap_str2charray( char *str, char *brkstr )
164 /* protect the input string from strtok */
165 str = LDAP_STRDUP( str );
171 for ( s = str; *s; s++ ) {
172 if ( strchr( brkstr, *s ) != NULL ) {
177 res = (char **) LDAP_MALLOC( (i + 1) * sizeof(char *) );
186 for ( s = ldap_pvt_strtok( str, brkstr, &lasts );
188 s = ldap_pvt_strtok( NULL, brkstr, &lasts ) )
190 res[i] = LDAP_STRDUP( s );
193 for( --i ; i >= 0 ; i-- ) {