Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.05 KB | None | 0 0
  1. /* argv_copy:¬†copy the argvv struct to a new new argvv_copy.     */
  2. void argv_copy(char ***argvv, char ****argvv_copy)
  3. {
  4.     char ***aux;
  5.     char **argv;
  6.     int argc, argvc;
  7.    
  8.     for (argvc = 0; (argv = argvv[argvc]); argvc++);
  9.     if (argvc == 0)
  10.         return;
  11.     aux = (char ***)malloc(argvc*sizeof(char**)+1);
  12.    
  13.     for (argvc = 0; (argv = argvv[argvc]); argvc++)¬†
  14.     {
  15.         for (argc = 0; argv[argc]; argc++);
  16.         aux[argvc] = (char **)malloc(argc*sizeof(char*)+1);
  17.     }
  18.    
  19.     for (argvc = 0; (argv = argvv[argvc]); argvc++)¬†
  20.     {
  21.         for (argc = 0; argv[argc]; argc++)
  22.         {
  23.             aux[argvc][argc] = NULL;
  24.             if (argv[argc]){
  25.                 aux[argvc][argc] = (char *)malloc(strlen(argv[argc])+1);¬†
  26.                 strcpy(aux[argvc][argc],argv[argc]);
  27.             }
  28.         }
  29.         aux[argvc][argc] = NULL;
  30.     }
  31.    
  32.     aux[argvc] = NULL;
  33.    
  34.     *argvv_copy = aux;
  35.    
  36.     /*****************  Testing **************
  37.      for (argvc = 0; (argv = aux[argvc]); argvc++)¬†
  38.      {
  39.      for (argc = 0; argv[argc]; argc++)
  40.      {
  41.      printf("copy: [%d][%d] -> %s (%p)\n",argvc,argc,argv[argc],argv[argc]);
  42.      }
  43.      printf("argvv[%d][%d] -> NULL\n",argvc,argc);
  44.      printf("\n");
  45.      }
  46.      printf("argvv[%d] -> NULL\n",argvc);
  47.      ******************************************/
  48. }
  49.  
  50. /* argv_free: free the resources used by argvv. */
  51. void argv_free(char ****argvv_copy)
  52. {
  53.    
  54.     char **argv;
  55.     int argc,argvc;
  56.     char ***argvv = *argvv_copy;
  57.     ¬†
  58.     for (argvc = 0; (argv = argvv[argvc]); argvc++)¬†
  59.     {
  60.         for (argc = 0; argv[argc]; argc++)
  61.         {
  62.             free(argv[argc]);
  63.         }
  64.         free(argvv[argvc]);
  65.     }
  66.    
  67.     free(argvv);
  68.     *argvv_copy = NULL;
  69. }
  70.  
  71. /* files_copy: copy the filev struct to a new new filev_copy. . */
  72. void files_copy(char *filev[3], char *filev_copy[3])
  73. {
  74.     int i;¬†
  75.     for (i=0;i<3;i++){
  76.         filev_copy[i] = NULL;
  77.         if (filev[i]){
  78.             filev_copy[i] = (char *)malloc(strlen(filev[i])+1);¬†
  79.             strcpy(filev_copy[i],filev[i]);
  80.         }
  81.     }
  82. }
  83.  
  84. /* files_free: free the resources used by filev. */
  85. void files_free(char *filev_copy[3])
  86. {
  87.     int i;¬†
  88.     for (i=0;i<3;i++){
  89.         if (filev_copy[i]){
  90.             free(filev_copy[i]);
  91.         }
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement