home *** CD-ROM | disk | FTP | other *** search
/ Media Share 13 / mediashare_13.zip / mediashare_13 / ZIPPED / PROGRAM / SNPD9404.ZIP / MV.C < prev    next >
C/C++ Source or Header  |  1994-04-03  |  2KB  |  101 lines

  1. .I 6 3
  2. ** modified by Bob Stout,  4 Jun 93
  3. **
  4. ** uses file_copy from SNIPPETS file WB_FCOPY.C
  5. .I 9 1
  6. #include <stdlib.h>
  7. .I 24 4
  8. /*
  9. **  Tell 'em they messed up
  10. */
  11.  
  12. .D 25 3
  13. .I 33 4
  14. /*
  15. **  Simple directory test
  16. */
  17.  
  18. .I 37 5
  19.       /* "Raw" drive specs are always directories     */
  20.  
  21.       if (':' == path[1] && '\0' == path[2])
  22.             return 1;
  23.  
  24. .I 41 44
  25. /*
  26. **  Use rename or copy and delete
  27. */
  28.  
  29. int mv(char *src, char *dest)
  30. {
  31.       int errcount = 0;
  32.       char buf[FILENAME_MAX];
  33.       const char *generr = "ERROR: mv - couldn't %s %s %s\n";
  34.  
  35.       if (':' == dest[1] && *dest != *getcwd(buf, FILENAME_MAX))
  36.       {
  37.             if (file_copy(src, dest))
  38.             {
  39.                   printf(generr, "move", src, dest);
  40.                   ++errcount;
  41.             }
  42.             else if (unlink(src))
  43.             {
  44.                   printf(generr, "delete", src, "");
  45.                   ++errcount;
  46.             }
  47.       }
  48.       else
  49.       {
  50.             if (rename(src, dest))
  51.             {
  52.                   printf(generr, "rename", src, dest);
  53.                   ++errcount;
  54.             }
  55.       }
  56.       return errcount;
  57. }
  58.  
  59. /*
  60. **  Enter here
  61. */
  62.  
  63. int main(int argc, char **argv)
  64. {
  65.       int src, errcount = 0;
  66.       char target[FILENAME_MAX];
  67.  
  68.       puts("mv 1.3 (4 jun 93) - Ray L. McVay/Bob Stout");
  69. .D 42 5
  70. .I 48 5
  71.  
  72.       /*
  73.       **  Handle cases where target is a directory
  74.       */
  75.  
  76. .I 52 2
  77.                   char termch;
  78.  
  79. .I 53 4
  80.                   termch = target[strlen(target) - 1];
  81.                   if ('\\' != termch && ':' != termch)
  82.                         strcat(target, "\\");
  83.  
  84. .D 54 1
  85. .I 59 2
  86.  
  87.                   errcount += mv(argv[src], target);
  88. .D 60 2
  89. .I 63 5
  90.  
  91.       /*
  92.       **  Nothing left except 2 explicit file names
  93.       */
  94.  
  95. .I 64 4
  96.             errcount += mv(argv[1], argv[2]);
  97.  
  98.       return errcount;
  99. }
  100. .D 65 6
  101.