home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / opus / v4 / checkarcs / checkarcs.vzrx
Text File  |  1996-10-11  |  5KB  |  144 lines

  1. /*
  2.    $VER: CheckArc.vzrx 1.02 (10.11.96)
  3.          © 1995-96 by Georg Hörmann UPDATED BY ANOME & SH0CKER
  4.  
  5.    Template: CheckArc.vzrx ARC/A,QUIT/S
  6.  
  7.       ARC:  The filename (with path) of the archive.
  8.       QUIT: If VirusZ has been started from the script, you can
  9.             quit after checking by specifying this option.
  10.  
  11.    If VirusZ is not running, it will be started from the
  12.    script (and quitted afterwards if requested).
  13.  
  14.    Currently the type of archive is determined by the filename
  15.    suffixes ".lha", ".lzh" ".lzx" ".zip" ".dms" and ".exe". 
  16.    This should usually work properly as nobody ever removes 
  17.    the suffixes of archive names.
  18. */
  19.  
  20. /* Filenames of external programs */
  21.  
  22. Prog_VirusZ = "SYS:WbStartup/Virusz"
  23. Prog_LHA = "LHA"
  24. Prog_LZX = "UNLZX"
  25. Prog_ZIP = "UNZIP"
  26. Prog_DMS = "UNDMS"
  27. Prog_Delete = "Delete"
  28.  
  29. TempPath = "RAM:TempArcDir"
  30.  
  31. options results
  32. options failat 99
  33.  
  34. UseQuitFlag = "no"
  35.  
  36. parse upper arg ArcToCheck QuitFlag
  37. if ArcToCheck = "" then do
  38.         say "No archive specified."
  39.         exit
  40.         end
  41.  
  42. TypeFlag = index(ArcToCheck,.LHA) + index(ArcToCheck,.LZH) + index(ArcToCheck,.LZX) + index(ArcToCheck,.ZIP) + index(ArcToCheck,.DMS) + index(ArcToCheck,.EXE)
  43. if TypeFlag = 0 then do
  44.         say "Archive not of required type: "  ArcToCheck
  45.         exit
  46.         end
  47.  
  48. if ~show(ports,VIRUSZ_II.REXX) then do
  49.         say "Starting VirusZ..."
  50.         address command Prog_VirusZ
  51.         UseQuitFlag = "yes"
  52.         StartTime = time(seconds)
  53.         do while ~show(ports,VIRUSZ_II.REXX)
  54.                 if time(seconds) - StartTime > 20 then do
  55.                         say "Error loading VirusZ!"
  56.                         exit
  57.                         end
  58.                 end
  59.         end
  60.  
  61. if exists(TempPath) then do
  62.         /*say "Deleting temporary directory..." */
  63.         address command Prog_Delete ">NIL: <NIL:" TempPath ALL FORCE
  64.         if rc~=0 then do
  65.                 say "Error deleting temporary directory!"
  66.                 signal QuitVirusZ
  67.                 end
  68.         end
  69.  
  70. TypeFlag = index(ArcToCheck,.LHA) + index(ArcToCheck,.LZH)
  71. if TypeFlag ~= 0 then do
  72.         say "Extracting .LHA/.LZH archive... " ArcToCheck
  73.         address command Prog_LHA ">NIL: <NIL: -b256 x "ArcToCheck TempPath"/"
  74.         if rc~=0 then do
  75.                 say "***** Error extracting archive!"
  76.                 signal DeleteTemp
  77.                 end
  78.         end
  79.  
  80. TypeFlag = index(ArcToCheck,.LZX)
  81. if TypeFlag ~= 0 then do
  82.         say "Extracting .LZX archive... " ArcToCheck
  83.         address command Prog_LZX ">NIL: <NIL: -bo256 -bi256 x "ArcToCheck TempPath"/"
  84.         if rc~=0 then do
  85.                 say "***** Error extracting archive!"
  86.                 signal DeleteTemp
  87.                 end
  88.         end
  89.  
  90. TypeFlag = index(ArcToCheck,.ZIP)
  91. if TypeFlag ~= 0 then do
  92.         say "Extracting .ZIP archive... " ArcToCheck
  93.         address command Prog_ZIP ">NIL: <NIL: "ArcToCheck "-d" TempPath"/"
  94.         if rc~=0 then do
  95.                 say "***** Error extracting archive!"
  96.                 signal DeleteTemp
  97.                 end
  98.         end
  99.  
  100. TypeFlag = index(ArcToCheck,.DMS)
  101. if TypeFlag ~= 0 then do
  102.         say "Extracting .DMS archive... " ArcToCheck
  103.         address command Prog_DMS ">NIL: <NIL: "ArcToCheck to FF1":"
  104.         address VIRUSZ_II.REXX CHECKDIR FF1":" DECREXEC DECRDATA
  105.         if rc=0 then say "Archive is clean."
  106.         if rc=5 then say "******************************** ->Archive contains VIRUS(es)!"
  107.         if rc=10 then say "***** Error checking archive!"
  108.                 end
  109.  
  110. TypeFlag = index(ArcToCheck,.EXE)
  111. if TypeFlag ~= 0 then do
  112.         say "Checking .EXE ... " ArcToCheck
  113.         address VIRUSZ_II.REXX CHECKFILE ArcToCheck DECREXEC DECRDATA
  114.         if rc=0 then say "File is clean."
  115.         if rc=5 then say "******************************* ->File contains VIRUS(es)!"
  116.         if rc=10 then say "Error checking file!"
  117.                 end
  118.  
  119. if exists(TempPath) then do
  120.         say "Checking archive contents... "  ArcToCheck
  121.         address VIRUSZ_II.REXX CHECKDIR TempPath DECREXEC DECRDATA
  122.         if rc=0 then say "Archive is clean."
  123.         if rc=5 then say "******************************** ->Archive contains VIRUS(es)!"
  124.         if rc=10 then say "***** Error checking archive!"
  125.         end
  126.  
  127. DeleteTemp:
  128. if exists(TempPath) then do
  129.         /*say "Deleting temporary directory..." */
  130.         address command Prog_Delete ">NIL: <NIL:" TempPath ALL FORCE
  131.         if rc~=0 then do
  132.                 say "Error deleting temporary directory!"
  133.                 signal QuitVirusZ
  134.                 end
  135.         end
  136.  
  137. QuitVirusZ:
  138. if UseQuitFlag = "yes" then do
  139.         if QuitFlag = "QUIT" then do
  140.                 say "Quitting VirusZ..."
  141.                 address VIRUSZ_II.REXX QUIT
  142.                 end
  143.         end
  144.