| version 1.7, 2001/10/23 00:05:18 |
version 1.8, 2001/11/30 02:10:27 |
|
|
| #include "strplus.h" |
#include "strplus.h" |
| #include "strdyn.h" |
#include "strdyn.h" |
| |
|
| void strdyn_free(char **ar) { |
void strdyn_free(char **ar) |
| |
{ |
| register int i; |
register int i; |
| |
|
| for (i = 0; ar[i] != NULL; i++) |
for (i = 0; ar[i] != NULL; i++) |
| Line 15 void strdyn_free(char **ar) { |
|
| Line 16 void strdyn_free(char **ar) { |
|
| free(ar); |
free(ar); |
| } |
} |
| |
|
| int strdyn_get_size(char **ar) { |
int strdyn_get_size(char **ar) |
| |
{ |
| register int i; |
register int i; |
| |
|
| for (i = 0; ar[i] != NULL; i++) |
for (i = 0; ar[i] != NULL; i++) |
| Line 24 int strdyn_get_size(char **ar) { |
|
| Line 26 int strdyn_get_size(char **ar) { |
|
| return i; |
return i; |
| } |
} |
| |
|
| char **strdyn_create(void) { |
char **strdyn_create(void) |
| |
{ |
| register char **ar; |
register char **ar; |
| |
|
| if ((ar = (char **) malloc(1 * sizeof(char *))) == NULL) |
if ((ar = (char **) malloc(1 * sizeof(char *))) == NULL) |
| Line 35 char **strdyn_create(void) { |
|
| Line 38 char **strdyn_create(void) { |
|
| return ar; |
return ar; |
| } |
} |
| |
|
| char **strdyn_create_va(char *s1, ...) { |
char **strdyn_create_va(char *s1, ...) |
| |
{ |
| register char **ar; |
register char **ar; |
| |
|
| if ((ar = strdyn_create()) == NULL) |
if ((ar = strdyn_create()) == NULL) |
| Line 60 char **strdyn_create_va(char *s1, ...) { |
|
| Line 64 char **strdyn_create_va(char *s1, ...) { |
|
| return ar; |
return ar; |
| } |
} |
| |
|
| char **strdyn_add(char **ar, const char *s) { |
char **strdyn_create_ar(char **ar) |
| |
{ |
| |
register int i; |
| |
register char **new_ar; |
| |
|
| |
if ((new_ar = (char**) malloc((strdyn_get_size(ar) + 1) |
| |
* sizeof(char*))) == NULL) |
| |
return NULL; |
| |
|
| |
for (i = 0; ar[i] != NULL; i++) |
| |
new_ar[i] = strdup(ar[i]); |
| |
|
| |
new_ar[i] = NULL; |
| |
|
| |
return new_ar; |
| |
} |
| |
|
| |
char **strdyn_add(char **ar, const char *s) |
| |
{ |
| register int count; |
register int count; |
| |
|
| if (ar == NULL) |
if (ar == NULL) |
| Line 78 char **strdyn_add(char **ar, const char |
|
| Line 100 char **strdyn_add(char **ar, const char |
|
| return ar; |
return ar; |
| } |
} |
| |
|
| char **strdyn_add_va(char **ar, ...) { |
char **strdyn_add_va(char **ar, ...) |
| |
{ |
| register char *s; |
register char *s; |
| va_list ap; |
va_list ap; |
| |
|
| Line 97 char **strdyn_add_va(char **ar, ...) { |
|
| Line 120 char **strdyn_add_va(char **ar, ...) { |
|
| return ar; |
return ar; |
| } |
} |
| |
|
| char **strdyn_add_ar(char **ar, char * const *s_ar) { |
char **strdyn_add_ar(char **ar, char * const *s_ar) |
| |
{ |
| register int k; |
register int k; |
| |
|
| for (k = 0; s_ar[k] != NULL; k++) { |
for (k = 0; s_ar[k] != NULL; k++) |
| if ((ar = strdyn_add(ar, s_ar[k])) == NULL) |
if ((ar = strdyn_add(ar, s_ar[k])) == NULL) |
| return NULL; |
return NULL; |
| } |
|
| |
|
| return ar; |
return ar; |
| } |
} |
| |
|
| char **strdyn_duplicate(char **ar) { |
char **strdyn_remove_empty(char **ar) |
| register int i; |
{ |
| register char **new_ar; |
|
| |
|
| if ((new_ar = (char**) malloc((strdyn_get_size(ar) + 1) |
|
| * sizeof(char*))) == NULL) |
|
| return NULL; |
|
| |
|
| for (i = 0; ar[i] != NULL; i++) |
|
| new_ar[i] = strdup(ar[i]); |
|
| |
|
| new_ar[i] = NULL; |
|
| |
|
| return new_ar; |
|
| } |
|
| |
|
| char **strdyn_remove_empty(char **ar) { |
|
| register int i, j; |
register int i, j; |
| |
|
| for (i = 0; ar[i] != NULL; ) { |
for (i = 0; ar[i] != NULL; ) { |
| Line 145 char **strdyn_remove_empty(char **ar) { |
|
| Line 153 char **strdyn_remove_empty(char **ar) { |
|
| return ar; |
return ar; |
| } |
} |
| |
|
| char **strdyn_explode_chr(char *str, char sep) { |
char **strdyn_explode_chr(char *str, char sep) |
| |
{ |
| char sep_str[2]; |
char sep_str[2]; |
| |
|
| sep_str[0] = sep; |
sep_str[0] = sep; |
| Line 154 char **strdyn_explode_chr(char *str, cha |
|
| Line 163 char **strdyn_explode_chr(char *str, cha |
|
| return strdyn_explode_str(str, sep_str); |
return strdyn_explode_str(str, sep_str); |
| } |
} |
| |
|
| char **strdyn_explode2_chr(char *str, char sep) { |
char **strdyn_explode2_chr(char *str, char sep) |
| |
{ |
| |
|
| return strdyn_remove_empty(strdyn_explode_chr(str, sep)); |
return strdyn_remove_empty(strdyn_explode_chr(str, sep)); |
| } |
} |
| |
|
| char **strdyn_explode_str(char *str, char *sep) { |
char **strdyn_explode_str(char *str, char *sep) |
| |
{ |
| register char **ar; |
register char **ar; |
| register char *s; |
register char *s; |
| register int ar_size, s_size, sep_size, i; |
register int ar_size, s_size, sep_size, i; |
| Line 194 char **strdyn_explode_str(char *str, cha |
|
| Line 205 char **strdyn_explode_str(char *str, cha |
|
| |
|
| } |
} |
| |
|
| char **strdyn_explode2_str(char *str, char *sep) { |
char **strdyn_explode2_str(char *str, char *sep) |
| |
{ |
| |
|
| return strdyn_remove_empty(strdyn_explode_str(str, sep)); |
return strdyn_remove_empty(strdyn_explode_str(str, sep)); |
| } |
} |
| |
|
| char *strdyn_implode_chr(char **ar, char sep) { |
char *strdyn_implode_chr(char **ar, char sep) |
| |
{ |
| char sep_str[2]; |
char sep_str[2]; |
| |
|
| sep_str[0] = sep; |
sep_str[0] = sep; |
| Line 208 char *strdyn_implode_chr(char **ar, char |
|
| Line 221 char *strdyn_implode_chr(char **ar, char |
|
| return strdyn_implode_str(ar, sep_str); |
return strdyn_implode_str(ar, sep_str); |
| } |
} |
| |
|
| char *strdyn_implode2_chr(char **ar, char sep) { |
char *strdyn_implode2_chr(char **ar, char sep) |
| |
{ |
| register char **new_ar; |
register char **new_ar; |
| register char *s; |
register char *s; |
| |
|
| Line 221 char *strdyn_implode2_chr(char **ar, cha |
|
| Line 235 char *strdyn_implode2_chr(char **ar, cha |
|
| return s; |
return s; |
| } |
} |
| |
|
| char *strdyn_implode_str(char **ar, char *sep) { |
char *strdyn_implode_str(char **ar, char *sep) |
| |
{ |
| register int i, str_size, sep_size; |
register int i, str_size, sep_size; |
| register char *str, *s; |
register char *str, *s; |
| |
|
| Line 245 char *strdyn_implode_str(char **ar, char |
|
| Line 260 char *strdyn_implode_str(char **ar, char |
|
| return str; |
return str; |
| } |
} |
| |
|
| char *strdyn_implode2_str(char **ar, char *str) { |
char *strdyn_implode2_str(char **ar, char *str) |
| |
{ |
| register char **new_ar; |
register char **new_ar; |
| register char *s; |
register char *s; |
| |
|
| Line 258 char *strdyn_implode2_str(char **ar, cha |
|
| Line 274 char *strdyn_implode2_str(char **ar, cha |
|
| return s; |
return s; |
| } |
} |
| |
|
| char **strdyn_conjunct(char **ar1, char **ar2) { |
char **strdyn_conjunct(char **ar1, char **ar2) |
| |
{ |
| register int i; |
register int i; |
| register char **ar; |
register char **ar; |
| |
|
| Line 275 char **strdyn_conjunct(char **ar1, char |
|
| Line 292 char **strdyn_conjunct(char **ar1, char |
|
| return ar; |
return ar; |
| } |
} |
| |
|
| char **strdyn_consolide(char **ar1, char **ar2) { |
char **strdyn_consolide(char **ar1, char **ar2) |
| |
{ |
| register int i; |
register int i; |
| register char **ar; |
register char **ar; |
| |
|
| Line 299 char **strdyn_consolide(char **ar1, char |
|
| Line 317 char **strdyn_consolide(char **ar1, char |
|
| return ar; |
return ar; |
| } |
} |
| |
|
| int strdyn_search(char **ar, char *s) { |
int strdyn_search(char **ar, char *s) |
| |
{ |
| register int i; |
register int i; |
| |
|
| for (i = 0; ar[i] != NULL; i++) |
for (i = 0; ar[i] != NULL; i++) |
| |
/* printf("COMPARING '%s' vs. '%s'\n", ar[i], s); */ |
| if (! strcmp(ar[i], s)) |
if (! strcmp(ar[i], s)) |
| return i; |
return i; |
| |
|
| return -1; |
return -1; |
| } |
} |
| |
|
| int strdyn_compare(char **ar, char *s) { |
int strdyn_compare(char **ar, char *s) |
| |
{ |
| return strdyn_search(ar, s) < 0 ? -1 : 0; |
return strdyn_search(ar, s) < 0 ? -1 : 0; |
| } |
} |
| |
|
| int strdyn_compare_all(char **ar, char *s) { |
int strdyn_compare_all(char **ar, char *s) |
| |
{ |
| register int i; |
register int i; |
| |
|
| for (i = 0; ar[i] != NULL; i++) |
for (i = 0; ar[i] != NULL; i++) |
| Line 329 int strdyn_compare_all(char **ar, char * |
|
| Line 351 int strdyn_compare_all(char **ar, char * |
|
| #define TESTSEP1 '_' |
#define TESTSEP1 '_' |
| #define TESTSEP2 "__" |
#define TESTSEP2 "__" |
| |
|
| int main(void) { |
int main(void) |
| |
{ |
| |
|
| register int i; |
register int i; |
| char **ar1, **ar2, **ar_join, **ar_intersect; |
char **ar1, **ar2, **ar_join, **ar_intersect; |