home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 191.lha / Move_v2.4 / move.c < prev    next >
C/C++ Source or Header  |  1988-04-28  |  3KB  |  147 lines

  1. #include "string.h"
  2. #include "dos.h"
  3. #include "stdlib.h"
  4. #include "stdio.h"
  5. #define FMXSIZE (FMSIZE+FMSIZE+11)
  6.  
  7. char src_path[FMSIZE],dst_path[FMSIZE];
  8. unsigned char Diff_Drives;
  9. extern int msflag;
  10.  
  11. main(argc,argv)
  12. char *argv[];
  13. int argc;
  14. {
  15.     char *source;
  16.     int Error,z;
  17.     struct FILEINFO *info,ispace;
  18.     void chkabort();
  19.  
  20.     if (argc!=3)
  21.     {
  22.         printf("\t<Move> version 2.4 by Doug Tittle\n\n");
  23.         printf("\tCorrect usage is \"Move {oldfilename} {newfilename}\"\n\n");
  24.         printf("\tThe oldfilename may use wildcard characters:\n");
  25.         printf("\t    \"*\" - meaning \"Anything or Nothing\" matches\n");
  26.         printf("\t    \"#?\" - also meaning \"Anything or Nothing\" matches\n");
  27.         printf("\t    \"?\" - meaning \"Any Single Character\" matches\n");
  28.         printf("\tOnly the PATH part of the newfilename is used!\n");
  29.         exit(10);
  30.     }
  31.  
  32.     Error=0;
  33.     info=&ispace;
  34.  
  35.     (void) stcgfp(src_path,argv[1]);
  36.     (void) stcgfp(dst_path,argv[2]);
  37.  
  38.     if ((strnicmp(argv[1],argv[2],4)==0) ||
  39.     ((strchr(argv[1],':')==NULL) && (strchr(argv[2],':')==NULL)))
  40.     {
  41.         Diff_Drives=0;
  42.     }
  43.     else
  44.         Diff_Drives=1;
  45.  
  46.     z=strlen(src_path)-1;
  47.     if ((src_path[z]!=':') && (z>0))
  48.     {
  49.         src_path[z+1]='/';
  50.         src_path[z+2]='\0';
  51.     }
  52.  
  53.     z=strlen(dst_path)-1;
  54.     if ((dst_path[z]!=':') && (z>0))
  55.     {
  56.         dst_path[z+1]='/';
  57.         dst_path[z+2]='\0';
  58.     }
  59.  
  60.     if (strchr(argv[1],'#')==NULL)
  61.         msflag=4;
  62.     else
  63.         msflag=0;
  64.     
  65.     if ((stricmp(src_path,dst_path)) == 0)
  66.     {
  67.         printf("Source and Destination Paths are the SAME!\n");
  68.         printf("Useless Move Action Skipped.\n\n");
  69.         exit(10);
  70.     }    
  71.  
  72.     if (dfind(info,argv[1],1)==0)
  73.     {
  74.         if ((info->fib_DirEntryType)<0L)
  75.         {
  76.             source=(char *) (&(info->fib_FileName));
  77.             chkabort();
  78.             (void) Moveit(source);
  79.         }
  80.         else
  81.         {
  82.             printf("%s is a Directory!\n",argv[1]);
  83.             exit(10);
  84.         }
  85.         while (dnext(info)==0)
  86.         {
  87.             if ((info->fib_DirEntryType)<0L)
  88.             {
  89.                 source=(char *) (&(info->fib_FileName));
  90.                 chkabort();
  91.                 (void) Moveit(source);
  92.             }
  93.         }
  94.     }            
  95.     else
  96.     {
  97.         printf("Found no matching files for %s.\n",argv[1]);
  98.     }
  99.  
  100.     return(Error);
  101. }
  102.  
  103. Moveit(source)
  104. char *source;
  105. {
  106.     int syserror;
  107.     static char copy[]="Copy ", to[]=" TO ",delete[]="Delete ";
  108.     static char rename[]="Rename ";
  109.     char cmd[FMXSIZE],src[FMSIZE],dst[FMSIZE];
  110.  
  111.     (void) strcpy(src,src_path);
  112.     (void) strcat(src,source);
  113.  
  114.     (void) strcpy(dst,dst_path);
  115.     (void) strcat(dst,source);
  116.  
  117.     if (Diff_Drives==1)
  118.     (void) strcpy(cmd,copy);
  119.     else
  120.     (void) strcpy(cmd,rename);
  121.  
  122.     (void) strcat(cmd,src);
  123.     (void) strcat(cmd,to);
  124.     (void) strcat(cmd,dst);
  125.  
  126.     syserror=0;
  127.  
  128.     if ((syserror=system(cmd))==0)
  129.     {
  130.         if (Diff_Drives==1)
  131.         {
  132.             printf("Copied File:  %s ==> %s\n",src,dst);
  133.             (void) strcpy(cmd,delete);
  134.             (void) strcat(cmd,src);
  135.             if ((syserror=system(cmd))==0)
  136.             {
  137.                 printf("Removed File: %s\n\n",src);
  138.             }
  139.         }
  140.         else
  141.             printf("Moved File:  %s ==> %s\n",src,dst);
  142.     }
  143.     return(syserror);
  144. }
  145.  
  146.  
  147.