1 /* charray.c - routines for dealing with char * arrays */
6 #include <sys/socket.h>
18 *a = (char **) ch_malloc( 2 * sizeof(char *) );
21 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
25 *a = (char **) ch_realloc( (char *) *a,
26 (n + 2) * sizeof(char *) );
41 for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
44 for ( nn = 0; s[nn] != NULL; nn++ ) {
48 *a = (char **) ch_realloc( (char *) *a, (n + nn + 1) * sizeof(char *) );
50 for ( i = 0; i < nn; i++ ) {
57 charray_free( char **array )
61 if ( array == NULL ) {
65 for ( a = array; *a != NULL; a++ ) {
70 free( (char *) array );
81 for ( i = 0; a[i] != NULL; i++ ) {
82 if ( strcasecmp( s, a[i] ) == 0 ) {
91 charray_dup( char **a )
96 for ( i = 0; a[i] != NULL; i++ )
99 new = (char **) ch_malloc( (i + 1) * sizeof(char *) );
101 for ( i = 0; a[i] != NULL; i++ ) {
102 new[i] = strdup( a[i] );
110 str2charray( char *str, char *brkstr )
116 /* protect the input string from strtok */
120 for ( s = str; *s; s++ ) {
121 if ( strchr( brkstr, *s ) != NULL ) {
126 res = (char **) ch_malloc( (i + 1) * sizeof(char *) );
128 for ( s = strtok( str, brkstr ); s != NULL; s = strtok( NULL,
130 res[i++] = strdup( s );