1 /* charray.c - routines for dealing with char * arrays */
21 *a = (char **) ch_malloc( 2 * sizeof(char *) );
24 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
28 *a = (char **) ch_realloc( (char *) *a,
29 (n + 2) * sizeof(char *) );
32 (*a)[n++] = ch_strdup(s);
44 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
47 for ( nn = 0; s[nn] != NULL; nn++ ) {
51 *a = (char **) ch_realloc( (char *) *a, (n + nn + 1) * sizeof(char *) );
53 for ( i = 0; i < nn; i++ ) {
54 (*a)[n + i] = ch_strdup(s[i]);
60 charray_free( char **array )
64 if ( array == NULL ) {
68 for ( a = array; *a != NULL; a++ ) {
73 free( (char *) array );
84 for ( i = 0; a[i] != NULL; i++ ) {
85 if ( strcasecmp( s, a[i] ) == 0 ) {
94 charray_dup( char **a )
99 for ( i = 0; a[i] != NULL; i++ )
102 new = (char **) ch_malloc( (i + 1) * sizeof(char *) );
104 for ( i = 0; a[i] != NULL; i++ ) {
105 new[i] = ch_strdup( a[i] );
114 charray2str( char **a )
120 if( a == NULL ) return NULL;
122 for( i=0 ; a[i] != NULL ; i++ ) {
123 len += strlen( a[i] );
126 if( len == 0 ) return NULL;
128 s = ch_malloc( len + 1 );
131 for( i=0 ; a[i] != NULL ; i++ ) {
132 len = strlen( a[i] );
133 strncpy( &s[cur], a[i], len );
142 str2charray( char *str, char *brkstr )
149 /* protect the input string from strtok */
150 str = ch_strdup( str );
153 for ( s = str; *s; s++ ) {
154 if ( strchr( brkstr, *s ) != NULL ) {
159 res = (char **) ch_malloc( (i + 1) * sizeof(char *) );
162 for ( s = ldap_pvt_strtok( str, brkstr, &lasts );
164 s = ldap_pvt_strtok( NULL, brkstr, &lasts ) )
166 res[i++] = ch_strdup( s );