/* $VER: TTar.filer 1.3 (14.8.95) Author: Michael Böhnisch (mb) Matthias Scheler (ms) Function: Basic Tar/SCSI Tape interface for Filer. Combined with BTN Tape handler, "tape.filer" and tar (included in BTN distrib.) it's very easy to make Filer act as a simple backup program. Requires: BTN Handler installed (from Fish Disk #558) tar (from BTN distribution) Streamer device Call: TTar READ Tape tar archive --> selected directory TTar WRITE Selected files/dirs --> Tape tar archive TTar LIST List tape tar archive TTar DIFF Compare tape tar archive <--> selected dir Example for Filer.RC: XBUTTON 2,0,0,5,">>> Tape","TTar WRITE" XBUTTON 2,1,0,5,"Tape >>>","TTar READ" XBUTTON 2,2,0,7,"List","TTar LIST" XBUTTON 2,3,0,1,"Verify","TTar DIFF" (see also "tape.filer") History: 23.09.93 1.0 Initial Release (mb) 26.11.93 1.1 Review for Filer 3.10 Gamma 2 (mb) 19.06.95 1.2 removed some flaws (ms) 14.08.95 1.3 added "QUIET" to "DELETE" call (ms) */ PARSE ARG Cmd OPTIONS RESULTS /* aquire results */ PANEL OFF /* switch command buttons off */ TEMPFILENAME tmpfile = RESULT ALERTBOX "Please insert medium into tape drive!" SELECT /* ------------------------------------------------------------------ */ /* Read Tar archive from Tape to selected directory */ /* ------------------------------------------------------------------ */ WHEN Cmd = 'READ' THEN DO GETSOURCEPATH IF RESULT = 'RESULT' THEN DO PANEL ON EXIT 5 END dir = RESULT PRAGMA('D', dir) GETNUMENTRIES IF RESULT = 'RESULT' THEN DO PANEL ON EXIT 5 END Anzahl = RESULT "EXEC Tar xvR" UPDATESOURCEDIR HISTORY "TTar: Tar Archiv extracted to" dir END /* ---------------------------------------------------------------- */ /* Write selected files/archives from source directory to Tape tar */ /* archive */ /* ---------------------------------------------------------------- */ WHEN Cmd = 'WRITE' THEN DO GETSOURCEPATH IF RESULT = 'RESULT' THEN DO PANEL ON EXIT 5 END dir = RESULT PRAGMA('D', dir) GETNUMENTRIES IF RESULT = 'RESULT' THEN DO PANEL ON EXIT 5 END Anzahl = RESULT OPEN('TMP', tmpfile, 'WRITE') DO i = 1 TO Anzahl GETNAME i IF RESULT = 'RESULT' THEN DO PANEL ON EXIT 5 END Eintrag = RESULT Type = LEFT(Eintrag, 1) /* parse filetype (f, d, F, D) */ Name = SUBSTR(Eintrag, 2) /* parse filename */ IF Type = 'd' | Type = 'f' THEN DO WRITELN('TMP', Name) TOGGLEENTRY i HISTORY "TTar: adding" Name "to TAPE tar archive" END END CLOSE('TMP') "EXEC Tar cvRT" tmpfile "EXEC Delete" tmpfile "QUIET" END /* ---------------------------------------------------------------- */ /* List files in tar Tape archive */ /* ---------------------------------------------------------------- */ WHEN Cmd = 'LIST' THEN DO "EXEC Tar tvR" END /* ---------------------------------------------------------------- */ /* Compare tar archive to filesystem data */ /* ---------------------------------------------------------------- */ WHEN Cmd = 'DIFF' THEN DO GETSOURCEPATH IF RESULT = 'RESULT' THEN DO PANEL ON EXIT 5 END dir = RESULT PRAGMA('D', dir) "EXEC Tar dvR" END /* ---------------------------------------------------------------- */ /* Just in case someone calls this from Shell/CLI */ /* ---------------------------------------------------------------- */ OTHERWISE DO SAY "Use from Filer® only!" END END PANEL ON