| version 1.6, 2001/10/21 16:44:22 |
version 1.7, 2001/10/23 00:05:18 |
|
|
| #include "strplus.h" |
#include "strplus.h" |
| #include "strdyn.h" |
#include "strdyn.h" |
| |
|
| char **strdyn_create(void) { |
void strdyn_free(char **ar) { |
| register char **ar; |
register int i; |
| |
|
| if ((ar = (char **) malloc(1 * sizeof(char *))) == NULL) |
|
| return NULL; |
|
| |
|
| ar[0] = NULL; |
for (i = 0; ar[i] != NULL; i++) |
| |
free(ar[i]); |
| |
|
| return ar; |
free(ar); |
| } |
} |
| |
|
| char **strdyn_add_va(char **ar, ...) { |
int strdyn_get_size(char **ar) { |
| register char *s; |
register int i; |
| va_list ap; |
|
| |
|
| if (ar == NULL) |
for (i = 0; ar[i] != NULL; i++) |
| if ((ar = strdyn_create()) == NULL) |
; |
| return NULL; |
|
| |
|
| va_start(ap, ar); |
return i; |
| |
} |
| |
|
| while ((s = va_arg(ap, char *)) != NULL) |
char **strdyn_create(void) { |
| if ((ar = strdyn_add(ar, s)) == NULL) |
register char **ar; |
| return NULL; |
|
| |
|
| va_end(ap); |
if ((ar = (char **) malloc(1 * sizeof(char *))) == NULL) |
| |
return NULL; |
| |
|
| |
ar[0] = NULL; |
| |
|
| return ar; |
return ar; |
| } |
} |
| Line 61 char **strdyn_create_va(char *s1, ...) { |
|
| Line 60 char **strdyn_create_va(char *s1, ...) { |
|
| return ar; |
return ar; |
| } |
} |
| |
|
| |
char **strdyn_add(char **ar, const char *s) { |
| |
register int count; |
| |
|
| void strdyn_free(char **ar) { |
if (ar == NULL) |
| register int i; |
if ((ar = strdyn_create()) == NULL) |
| |
return NULL; |
| |
|
| for (i = 0; ar[i] != NULL; i++) |
count = strdyn_get_size(ar); |
| free(ar[i]); |
|
| |
|
| free(ar); |
if ((ar = (char **) realloc(ar, (count + 2) * sizeof(char *))) == NULL) |
| |
return NULL; |
| |
|
| |
ar[count] = strdup(s); |
| |
ar[count + 1] = NULL; |
| |
|
| |
return ar; |
| } |
} |
| |
|
| int strdyn_get_size(char **ar) { |
char **strdyn_add_va(char **ar, ...) { |
| register int i; |
register char *s; |
| |
va_list ap; |
| |
|
| for (i = 0; ar[i] != NULL; i++) |
if (ar == NULL) |
| ; |
if ((ar = strdyn_create()) == NULL) |
| |
return NULL; |
| |
|
| return i; |
va_start(ap, ar); |
| |
|
| |
while ((s = va_arg(ap, char *)) != NULL) |
| |
if ((ar = strdyn_add(ar, s)) == NULL) |
| |
return NULL; |
| |
|
| |
va_end(ap); |
| |
|
| |
return ar; |
| |
} |
| |
|
| |
char **strdyn_add_ar(char **ar, char * const *s_ar) { |
| |
register int k; |
| |
|
| |
for (k = 0; s_ar[k] != NULL; k++) { |
| |
if ((ar = strdyn_add(ar, s_ar[k])) == NULL) |
| |
return NULL; |
| |
} |
| |
|
| |
return ar; |
| } |
} |
| |
|
| char **strdyn_duplicate(char **ar) { |
char **strdyn_duplicate(char **ar) { |
| Line 211 char *strdyn_implode_str(char **ar, char |
|
| Line 239 char *strdyn_implode_str(char **ar, char |
|
| |
|
| if (ar[i + 1] != NULL) |
if (ar[i + 1] != NULL) |
| strcpy(s, sep); |
strcpy(s, sep); |
| s += sep_size; |
s += sep_size; |
| } |
} |
| |
|
| return str; |
return str; |
| Line 269 char **strdyn_consolide(char **ar1, char |
|
| Line 297 char **strdyn_consolide(char **ar1, char |
|
| } |
} |
| |
|
| return ar; |
return ar; |
| } |
|
| |
|
| char **strdyn_add(char **ar, const char *s) { |
|
| register int count; |
|
| |
|
| if (ar == NULL) |
|
| if ((ar = strdyn_create()) == NULL) |
|
| return NULL; |
|
| |
|
| count = strdyn_get_size(ar); |
|
| |
|
| if ((ar = (char **) realloc(ar, (count + 2) * sizeof(char *))) == NULL) |
|
| return NULL; |
|
| |
|
| ar[count] = strdup(s); |
|
| ar[count + 1] = NULL; |
|
| |
|
| return ar; |
|
| } |
|
| |
|
| char **strdyn_add_ar(char **ar, char * const *s_ar) { |
|
| register int k; |
|
| |
|
| for (k = 0; s_ar[k] != NULL; k++) { |
|
| if ((ar = strdyn_add(ar, s_ar[k])) == NULL) |
|
| return NULL; |
|
| } |
|
| |
|
| return ar; |
|
| } |
} |
| |
|
| int strdyn_search(char **ar, char *s) { |
int strdyn_search(char **ar, char *s) { |