home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / APPS / dm.lzh / multimove.c < prev    next >
Text File  |  1995-04-07  |  3KB  |  125 lines

  1. /* multimove.c function for DISKMASTER.C      */
  2. /* copyright (c) 1995 by Bob Devries          */
  3. /* email: bdevries@gil.ipswichcity.qld.gov.au */
  4.  
  5. /* moves multiple files to target directory   */
  6.  
  7. #include "diskmaster.h"
  8. #include <stdio.h>
  9. #include <strings.h>
  10. #include <modes.h>
  11. #include <errno.h>
  12.  
  13. int
  14. multimove(numfiles)
  15. int numfiles;
  16. {
  17.     extern char **nameptr;
  18.     extern short *attrptr;
  19.     int dpath, confirm, ask;
  20.     char *movcmd;
  21.     char *olddev, *newdev;
  22.     char *olddir, *newdir;
  23.     char *malloc();
  24.     int ch, success, x;
  25.  
  26.     gotoxy(1,24);
  27.     cleol();
  28.     printf("     %cMove tagged files to: ",7);
  29.     newdir = malloc(256);
  30.     success = lineinput(newdir,80);
  31.     if((success == FAIL) || (*newdir == '\0')) {
  32.         free(newdir);
  33.         return(FAIL);
  34.     }
  35.     gotoxy(1,24);
  36.     cleol();
  37.     printf("     %cConfirm each move? y/N ",7);
  38.     do {
  39.         confirm = toupper(getchar());
  40.         flush_kbd();
  41.     } while ((confirm != 'Y') && (confirm != 'N') && (confirm != '\n'));
  42.     if(confirm == '\n') {
  43.         confirm = 'N';
  44.     }
  45.  
  46.     olddev = malloc(32);
  47.     newdev = malloc(32);
  48.     olddir = malloc(256);
  49.     getcwd(olddir,256);
  50.     dpath = open("@",S_IREAD);
  51.     _gs_devn(dpath,olddev);
  52.     close(dpath);
  53.     if(chdir(newdir) == FAIL) {
  54.         open_err(newdir,errno);
  55.         free(olddev);
  56.         free(newdev);
  57.         free(olddir);
  58.         free(newdir);
  59.         commands();
  60.         return(FAIL);
  61.     }
  62.     dpath = open("@",S_IREAD);
  63.     _gs_devn(dpath,newdev);
  64.     close(dpath);
  65.     if(strcmp(olddev,newdev) != 0) {
  66.         gotoxy(1,24);
  67.         cleol();
  68.         printf("     %cCan't move to different device.",7);
  69.         sleep(1);
  70.         commands();
  71.         chdir(olddir);
  72.         free(olddev);
  73.         free(newdev);
  74.         free(olddir);
  75.         free(newdir);
  76.         return(FAIL);
  77.     }
  78.     
  79.     chdir(olddir);
  80.     movcmd = malloc(256);
  81.     strcpy(movcmd,"move ");
  82.     
  83.     for(x=1;x<=numfiles;x++) {
  84.            if((attrptr[x]&TAG) == TAG) {
  85.                attrptr[x]&=0xFF;
  86.                strcat(movcmd,nameptr[x]);
  87.                strcat(movcmd," ");
  88.                strcat(movcmd,newdir);
  89.                strcat(movcmd," >>>/nil");
  90.                if(confirm == 'Y') {
  91.                    gotoxy(1,24);
  92.                    cleol();
  93.                    printf("     %cMove %s to %s? y/N ",7,nameptr[x],newdir);
  94.                    do {
  95.                        ask = toupper(getchar());
  96.                        flush_kbd();
  97.                    } while ((ask != 'Y') && (ask != 'N') && (ask != '\n'));
  98.                    if(ask == '\n') {
  99.                        ask = 'N';
  100.                    }
  101.                    if(ask == 'Y') {
  102.                        gotoxy(1,24);
  103.                        cleol();
  104.                        printf("     Moving %s to %s...",nameptr[x],newdir);
  105.                        system(movcmd);
  106.                     }
  107.                } else {
  108.                    gotoxy(1,24);
  109.                    cleol();
  110.                    printf("     Moving %s to %s...",nameptr[x],newdir);
  111.                    system(movcmd);
  112.                }
  113.            }
  114.            *(index(movcmd,' ') + 1) = '\0';
  115.     }
  116.     free(olddev);
  117.     free(newdev);
  118.     free(olddir);
  119.     free(newdir);
  120.     free(movcmd);
  121.     commands();
  122.     return(PASS);
  123. }
  124. /* EOF multimove.c */
  125.