Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Friday, October 16, 2026

Diff for libcfg+/src/platon/str/strdyn.c between version 1.7 and 1.8

version 1.7, 2001/10/23 00:05:18 version 1.8, 2001/11/30 02:10:27
Line 6 
Line 6 
 #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;

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top