[BACK]Return to util.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / cvs

Diff for /src/usr.bin/cvs/util.c between version 1.72 and 1.73

version 1.72, 2006/03/17 13:40:41 version 1.73, 2006/03/27 06:13:51
Line 1052 
Line 1052 
  * Split a string <str> of <sep>-separated values and allocate   * Split a string <str> of <sep>-separated values and allocate
  * an argument vector for the values found.   * an argument vector for the values found.
  */   */
 char **  struct cvs_argvector *
 cvs_strsplit(char *str, const char *sep)  cvs_strsplit(char *str, const char *sep)
 {  {
         char **argv, **nargv;          struct cvs_argvector *av;
           char **nargv;
         char *cp, *p;          char *cp, *p;
         int i = 0;          int i = 0;
   
         cp = xstrdup(str);          cp = xstrdup(str);
         argv = (char **)xmalloc((i+1) * sizeof(char *));          av = xmalloc(sizeof(struct cvs_argvector));
           av->str = cp;
           av->argv = (char **)xmalloc((i+1) * sizeof(char *));
   
         while ((p = strsep(&cp, sep)) != NULL) {          while ((p = strsep(&cp, sep)) != NULL) {
                 argv[i++] = p;                  av->argv[i++] = p;
                 nargv = (char **)xrealloc((void *)argv, (i+1) * sizeof(char *));                  nargv = (char **)xrealloc((void *)av->argv,
                 argv = nargv;                      (i+1) * sizeof(char *));
                   av->argv = nargv;
         }          }
         argv[i] = NULL;          av->argv[i] = NULL;
   
         return (argv);          return (av);
   }
   
   /*
    * cvs_argv_destroy()
    *
    * Free an argument vector previously allocated by cvs_strsplit().
    */
   void
   cvs_argv_destroy(struct cvs_argvector *av)
   {
           xfree(av->str);
           xfree(av->argv);
           xfree(av);
 }  }

Legend:
Removed from v.1.72  
changed lines
  Added in v.1.73