home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma23.dms / ma23.adf / Filer / Rexx / TTar.filer < prev    next >
Text File  |  1993-11-26  |  4KB  |  149 lines

  1. /*
  2.     $VER: TTar.filer 1.1 (26.11.93)
  3.  
  4.     Author:
  5.         Michael Böhnisch (billy@uni-paderborn.de)    (mb)
  6.  
  7.     Function:
  8.         Basic Tar/SCSI Tape interface for Filer.  Combined with BTN
  9.         Tape   handler,  "tape.filer"  and  tar  (included  in  BTN
  10.         distrib.)  it's  very  easy  to  make Filer act as a simple
  11.         backup program.
  12.  
  13.     Requires:
  14.         BTN Handler installed (from Fish Disk #558)
  15.         tar (from BTN distribution)
  16.         Streamer device
  17.  
  18.     Call:
  19.         TTar READ    Tape tar archive --> selected directory
  20.         TTar WRITE    Selected files/dirs --> Tape tar archive
  21.         TTar LIST    List tape tar archive
  22.         TTar DIFF    Compare tape tar archive <--> selected dir
  23.  
  24.     Example for Filer.RC:
  25.         XBUTTON 2,0,0,5,">>> Tape","TTar WRITE"
  26.         XBUTTON 2,1,0,5,"Tape >>>","TTar READ"
  27.         XBUTTON 2,2,0,7,"List","TTar LIST"
  28.         XBUTTON 2,3,0,1,"Verify","TTar DIFF"
  29.  
  30.         (see also "tape.filer")
  31.  
  32.     History:
  33.         23.09.93    1.0 Initial Release (mb)
  34.         26.11.93    1.1 Review for Filer 3.10 Gamma 2 (mb)
  35. */
  36.  
  37. PARSE ARG Cmd
  38. OPTIONS RESULTS                /* aquire results        */
  39. ADDRESS 'FilerRexx'            /* default to Filer's ReXX port    */
  40. PANEL OFF                /* switch command buttons off    */
  41.  
  42. tmpfile    = "T:ToTape.filer.tmp"
  43.  
  44. quote    = "22"X
  45. condev    = "CON:"
  46. size    = "0/16/680/384/"
  47. title    = "TTar output    press CTRL-C to abort"
  48.  
  49. GETSCREENNAME
  50. IF RESULT = "RESULT" THEN EXIT 5
  51. screen  = RESULT
  52. flags    = "/AUTO/CLOSE/SCREEN" || screen
  53.  
  54. winfile = quote ||  condev || size || title || flags || quote
  55.  
  56. ALERTBOX "Please insert medium into tape drive!"
  57.  
  58. SELECT
  59.  
  60.   /* ------------------------------------------------------------------ */
  61.   /* Read Tar archive from Tape to selected directory            */
  62.   /* ------------------------------------------------------------------ */
  63.  
  64.     WHEN Cmd = 'READ' THEN DO
  65.       GETSOURCEPATH
  66.       IF RESULT = 'RESULT' THEN EXIT 5
  67.       dir = RESULT
  68.       PRAGMA('D', dir)
  69.  
  70.       GETNUMENTRIES
  71.       IF RESULT = 'RESULT' THEN EXIT 5
  72.       Anzahl = RESULT
  73.  
  74.       SHELL COMMAND "Tar xvR >" winfile
  75.  
  76.       UPDATESOURCEDIR
  77.  
  78.       HISTORY "TTar: Tar Archiv extracted to" dir
  79.     END
  80.  
  81.     /* ---------------------------------------------------------------- */
  82.     /* Write selected files/archives from source directory to Tape tar    */
  83.     /* archive                                */
  84.     /* ---------------------------------------------------------------- */
  85.  
  86.     WHEN Cmd = 'WRITE' THEN DO
  87.       GETSOURCEPATH
  88.       IF RESULT = 'RESULT' THEN EXIT 5
  89.       dir = RESULT
  90.       PRAGMA('D', dir)
  91.  
  92.       GETNUMENTRIES
  93.       IF RESULT = 'RESULT' THEN EXIT 5
  94.       Anzahl = RESULT
  95.  
  96.       OPEN('TMP', tmpfile, 'WRITE')
  97.  
  98.       DO i = 1 TO Anzahl
  99.         GETNAME i
  100.         IF RESULT = 'RESULT' THEN EXIT 5
  101.         Eintrag = RESULT
  102.  
  103.         Type = LEFT(Eintrag, 1)        /* parse filetype (f, d, F, D)    */
  104.         Name = SUBSTR(Eintrag, 2)    /* parse filename        */
  105.  
  106.         IF Type = 'd' | Type = 'f' THEN DO
  107.           WRITELN('TMP', Name)
  108.           TOGGLEENTRY i
  109.           HISTORY "TTar: adding" Name "to TAPE tar archive"
  110.         END
  111.       END
  112.  
  113.       CLOSE('TMP')
  114.  
  115.       SHELL COMMAND "Tar cvRT" tmpfile ">" winfile
  116.       SHELL COMMAND "Delete" tmpfile
  117.     END
  118.  
  119.     /* ---------------------------------------------------------------- */
  120.     /* List files in tar Tape archive                    */
  121.     /* ---------------------------------------------------------------- */
  122.  
  123.     WHEN Cmd = 'LIST' THEN DO
  124.       SHELL COMMAND "Tar tvR >" winfile
  125.     END
  126.  
  127.     /* ---------------------------------------------------------------- */
  128.     /* Compare tar archive to filesystem data                */
  129.     /* ---------------------------------------------------------------- */
  130.  
  131.     WHEN Cmd = 'DIFF' THEN DO
  132.       GETSOURCEPATH
  133.       IF RESULT = 'RESULT' THEN EXIT 5
  134.       dir = RESULT
  135.       PRAGMA('D', dir)
  136.         SHELL COMMAND "Tar dvR >" winfile
  137.       END
  138.  
  139.     /* ---------------------------------------------------------------- */
  140.     /* Just in case someone calls this from Shell/CLI            */
  141.     /* ---------------------------------------------------------------- */
  142.  
  143.     OTHERWISE DO
  144.       SAY "Use from Filer® only!"
  145.     END
  146. END
  147.  
  148. PANEL ON
  149.