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 *) );
35 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
39 new = (char **) LDAP_REALLOC( (char *) *a,
40 (n + 2) * sizeof(char *) );
43 /* caller is required to call ldap_charray_free(*a) */
50 (*a)[n] = LDAP_STRDUP(s);
52 if( (*a)[n] == NULL ) {
70 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
73 for ( nn = 0; s[nn] != NULL; nn++ ) {
77 aa = (char **) LDAP_REALLOC( (char *) *a, (n + nn + 1) * sizeof(char *) );
84 for ( i = 0; i < nn; i++ ) {
85 (*a)[n + i] = LDAP_STRDUP(s[i]);
87 if( (*a)[n + i] == NULL ) {
88 for( --i ; i >= 0 ; i-- ) {
89 LDAP_FREE( (*a)[n + i] );
101 ldap_charray_free( char **a )
109 for ( p = a; *p != NULL; p++ ) {
115 LDAP_FREE( (char *) a );
126 for ( i = 0; a[i] != NULL; i++ ) {
127 if ( strcasecmp( s, a[i] ) == 0 ) {
136 ldap_charray_dup( char **a )
141 for ( i = 0; a[i] != NULL; i++ )
144 new = (char **) LDAP_MALLOC( (i + 1) * sizeof(char *) );
150 for ( i = 0; a[i] != NULL; i++ ) {
151 new[i] = LDAP_STRDUP( a[i] );
153 if( new[i] == NULL ) {
154 for( --i ; i >= 0 ; i-- ) {
167 ldap_str2charray( char *str, char *brkstr )
174 /* protect the input string from strtok */
175 str = LDAP_STRDUP( str );
181 for ( s = str; *s; s++ ) {
182 if ( strchr( brkstr, *s ) != NULL ) {
187 res = (char **) LDAP_MALLOC( (i + 1) * sizeof(char *) );
196 for ( s = ldap_pvt_strtok( str, brkstr, &lasts );
198 s = ldap_pvt_strtok( NULL, brkstr, &lasts ) )
200 res[i] = LDAP_STRDUP( s );
203 for( --i ; i >= 0 ; i-- ) {