1 /* charray.c - routines for dealing with char * arrays */
8 #include <sys/socket.h>
20 *a = (char **) ch_malloc( 2 * sizeof(char *) );
23 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
27 *a = (char **) ch_realloc( (char *) *a,
28 (n + 2) * sizeof(char *) );
43 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
46 for ( nn = 0; s[nn] != NULL; nn++ ) {
50 *a = (char **) ch_realloc( (char *) *a, (n + nn + 1) * sizeof(char *) );
52 for ( i = 0; i < nn; i++ ) {
59 charray_free( char **array )
63 if ( array == NULL ) {
67 for ( a = array; *a != NULL; a++ ) {
72 free( (char *) array );
83 for ( i = 0; a[i] != NULL; i++ ) {
84 if ( strcasecmp( s, a[i] ) == 0 ) {
93 charray_dup( char **a )
98 for ( i = 0; a[i] != NULL; i++ )
101 new = (char **) ch_malloc( (i + 1) * sizeof(char *) );
103 for ( i = 0; a[i] != NULL; i++ ) {
104 new[i] = strdup( a[i] );
112 str2charray( char *str, char *brkstr )
118 /* protect the input string from strtok */
122 for ( s = str; *s; s++ ) {
123 if ( strchr( brkstr, *s ) != NULL ) {
128 res = (char **) ch_malloc( (i + 1) * sizeof(char *) );
130 for ( s = strtok( str, brkstr ); s != NULL; s = strtok( NULL,
132 res[i++] = strdup( s );