home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / UPCHECK / VIRZAP.ZIP / ZZAP.DOC < prev    next >
Text File  |  1991-09-19  |  81KB  |  3,615 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.                    █████████   █████████      ███      ███████   
  25.                     ░░░░░██░░   ░░░░░██░░    ██░██░    ██░░░░██░ 
  26.                         ██░░        ██░░    ██░  ██░   ██░    ██░
  27.                        ██░░        ██░░    ██░    ██░  ██░   ██░░
  28.                       ██░░        ██░░     █████████░  ███████░░ 
  29.                      ██░░        ██░░      ██░░░░░██░  ██░░░░░░  
  30.                     ██░░        ██░░       ██░    ██░  ██░       
  31.                    █████████   █████████   ██░    ██░  ██░       
  32.                     ░░░░░░░░░   ░░░░░░░░░   ░░     ░░   ░░       
  33.  
  34.                                      Version 6.3
  35.  
  36.  
  37.                               ZIP/ZOO/ARC/PAK Converter
  38.                                      (And More!)
  39.  
  40.                                 Copyright (c) 1989,91
  41.                                Ross Neilson Wentworth
  42.                                  All Rights Reserved
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.                                      Chapter One
  53.  
  54.                                   License Agreement
  55.  
  56.  
  57.           In the past I have not requested money to use ZZAP unless it was
  58.           used in a commercial environment.  However, due to its increased
  59.           popularity with the resultant increase in phone calls with
  60.           questions, I am forced to change my licensing policy.  This new
  61.           policy supersedes all previous agreements for the licensing of
  62.           ZZAP.
  63.  
  64.           You may use ZZAP on a trial basis for up to 30 days freely.  You
  65.           may give it away to anyone you wish so long as you do not charge
  66.           for it or use it as an incentive to buy.  If, after the 30 day
  67.           trial period, you wish to continue to use ZZAP, a registration
  68.           fee is required (see the file ORDER.FRM for details).
  69.  
  70.           Payment should be by check or money in U.S. funds drawn on a U.S.
  71.           bank.  I can not be responsible for cash that is sent through the
  72.           mail.  Printing the file "ORDER.FRM" will produce an order form
  73.           that you can use to register ZZAP.  Send your registration and/or
  74.           inquiry to:
  75.  
  76.                          Ross Neilson Wentworth
  77.                          1422 Elkgrove Circle, #3
  78.                          Venice, CA  90291
  79.                          (213)399-1244
  80.  
  81.  
  82.           The latest version of ZZAP can be found on West Los Angeles BBS,
  83.           (213)838-9229 or The Software Resource (1:102/330) at
  84.           (213)214-2018.
  85.  
  86.           Even if you do not wish to register I would appreciate hearing
  87.           from you.  A simple postcard listing your likes, dislikes,
  88.           suggestions, and the version number is all that I ask.
  89.  
  90.           The terms "arc", "archive", "unarc", etc. are used throughout
  91.           this document.  They are considered generic terms for all
  92.           archiving types and formats.  Any declaration that any of these
  93.           terms are proprietary will be construed as a ridiculous statement
  94.           and be properly ignored.
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.           Page 2                               Chapter 1. License Agreement
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.                                      Chapter Two
  169.  
  170.                                  Summary of Features
  171.  
  172.  
  173.               o  Automated conversion between the most common archive types
  174.                  (ARC, ARJ, DWC, ICE, LBR, LZH, MD, PAK, SDN, ZIP, and
  175.                  ZOO).
  176.               o  Automatically converts nested archives including nested
  177.                  archives of different types.  A switch is provided to
  178.                  disable this feature.
  179.               o  Optionally convert archives in multiple subdirectories
  180.                  (subdirectory recursion).
  181.               o  Accepts wild-card designations and multiple file names on
  182.                  the command line.
  183.               o  Repack archives to same type.
  184.               o  Renames or moves corrupted archive for later examination.
  185.               o  User defined arcing and unarcing options.
  186.               o  Deletes old archives by default, options to keep them.
  187.               o  Optional logging of ZZAP activities to a text file.
  188.               o  Optionally create a text file listing the archives
  189.                  converted, suitable for use by filter programs to update
  190.                  the file list as used by BBS programs.
  191.               o  Flag archives containing files with Hidden, System, or
  192.                  ReadOnly attributes as "bad" or optionally strip the funny
  193.                  attributes.
  194.               o  Can automatically check an archive for viruses using the
  195.                  virus scanning program SCAN.EXE (version 39 or later) from
  196.                  McAfee Associates.
  197.               o  The standard input of programs that are executed can be
  198.                  redirected from a file to allow the automatic addition of
  199.                  an archive comment (currently this only works with ZIP
  200.                  files, I think).
  201.               o  Can take advantage of expanded memory (LIM 4.0 driver
  202.                  required) or extended memory (XMS driver required) to
  203.                  reduce the memory overhead while executing the archiving
  204.                  programs.
  205.               o  Processing can be skipped on archives that are more than a
  206.                  configurable number of days old.
  207.               o  External programs can be defined to be executed before
  208.                  and/or after each archive is processed.
  209.               o  Configurable for additional archiving programs.
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.           Chapter 2. Summary of Features                             Page 3
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.           Page 4                             Chapter 2. Summary of Features
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.                                     Chapter Three
  297.  
  298.                                     Running ZZAP
  299.  
  300.  
  301.           The basic syntax of ZZAP is:
  302.  
  303.                     ZZAP [switches] filespec [filespec ...]
  304.  
  305.           Where [options] is any of the optional command line switches and
  306.           filespec is a file name, wilcard specification, or the name of a
  307.           file indicating a list of files.  A "list" file is signified by
  308.           preceding the file name with the '@' character, for example:
  309.  
  310.                     ZZAP @newfiles.lst
  311.  
  312.           You can mix filespecs on the command line, giving a combination
  313.           of specific file names, wildcards, and list files; limited only
  314.           by the length of the command line (80 characters):
  315.  
  316.                     ZZAP AFILE.ZOO *.LZH @UPLOADS.LST
  317.  
  318.           To halt ZZAP press the ESCape key.  Conversion of the current
  319.           archive will be completed and ZZAP will halt.
  320.  
  321.           Every attempt has been made to supply a universally acceptable
  322.           configuration file (ZZAP.CFG).  Everybody, of course, has
  323.           personal preferences so you may wish to modify it for your
  324.           special needs.  Consult the chapter on the configuration file for
  325.           information on customizing ZZAP operations.
  326.  
  327.           If you wish to log the activity of ZZAP you need to specify the
  328.           full path and file name of the log file.  See the chapter Logging
  329.           ZZAP Activity for details.
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.           Chapter 3. Running ZZAP                                    Page 5
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.           Page 6                                    Chapter 3. Running ZZAP
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.                                     Chapter Four
  425.  
  426.                              Archive Programs Supported
  427.  
  428.  
  429.           Currently, there are a multitude of mostly incompatible archiving
  430.           utilities available.  While a standard would be beneficial to the
  431.           BBS community, it's not likely to occur in the near future.
  432.  
  433.           To help cope with the different formats and to make conversion
  434.           from one to another easy I wrote ZZAP.  It allows conversion from
  435.           one format to another, quickly and painlessly.  ZZAP doesn't
  436.           actually do any conversion on its own.  Rather, it acts as a
  437.           shell around the archivers - automating the process.
  438.  
  439.           The archive programs and version numbers tested under are:
  440.  
  441.                ARJ 2.00
  442.                DWC A4.95
  443.                ICE 1.14
  444.                LHARC 1.13
  445.                LUE 2.20 (extraction only)
  446.                MD (unknown version number - tested by user)
  447.                PAK 2.0
  448.                PKPAK/PKUNPAK 3.61 (a.k.a. PKARC/PKXARC)
  449.                PKZIP/PKUNZIP 1.10
  450.                ZOO 2.01
  451.  
  452.           Other formats should work if properly configured but there is no
  453.           guarantee.  If you run across an archiving program that does not
  454.           work under ZZAP I would like to hear about it so I can make the
  455.           necessary modifications.
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.           Chapter 4. Archive Programs Supported                      Page 7
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.           Page 8                      Chapter 4. Archive Programs Supported
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.                                     Chapter Five
  553.  
  554.                                  Configuration File
  555.  
  556.  
  557.           ZZAP relies on a configuration file (ZZAP.CFG) to know how to arc
  558.           and unarc.  There are a number commands allowed in the
  559.           configuration file, three of them are required (ARC=, UNARC=, and
  560.           DEFAULT=) and the rest are optional (BADDIR=, SWITCH=, FIXER=,
  561.           AGE=, PRE=, MID=, POST=, and SCANOPT=).  The order of the
  562.           commands are unimportant.
  563.  
  564.           Each command is on its own line.  Placing multiple commands on a
  565.           single line will result in improper operation.  A configuration
  566.           file is included with this package that may be used "as-is" or
  567.           may be modified for your personal preferences.
  568.  
  569.  
  570.           5.1  ARC=
  571.  
  572.  
  573.           ARC= defines the command used to archive.  This command can
  574.           appear as many times as required to define all of the various
  575.           archive types you may use.  The syntax for this command is:
  576.  
  577.                     ARC=EXT PROGNAME OPTIONS
  578.  
  579.           EXT represents the filename extension used by this particular
  580.           archiver, PKZIP, for example, uses ZIP.  Do NOT include a leading
  581.           period.
  582.  
  583.           PROGNAME is the name of the actual archiving program.  If the
  584.           filename extension is not given the a search will be made for
  585.           both COM and EXE.  Including the extension will improve the
  586.           performance of ZZAP.
  587.  
  588.           OPTIONS is the command line options used to create an archive.
  589.           ZOO, for example, uses "-ADD" while PKPAK uses "-A".  Since some
  590.           archiving programs use both upper and lower case letters to
  591.           represent different actions, this item's case is left intact.
  592.           OPTIONS also may include the "%1" to indicate where the archive
  593.           files name should be placed on the command line.  In previous
  594.           version the archive name was appended to the end of the command
  595.           line if the %1 was omitted.  This is no longer true, now you MUST
  596.           specify the %1 if you wish the archive name on the command line.
  597.  
  598.           If you wish to redirect the standard input or output of the
  599.           archiving program then put the redirection command at the end of
  600.           OPTIONS.  ZZAP allows three types of redirection: > redirects the
  601.           output, < redirects the input, and >> appends redirection to the
  602.           indicated file.
  603.  
  604.  
  605.  
  606.           Chapter 5. Configuration File                              Page 9
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.           The following are all legal ARC= commands:
  614.  
  615.                          ARC=ARC PKPAK -A %1 *.*
  616.                          ARC=DWC DWC.EXE AZ %1 *.*
  617.                          ARC=PAK PAK A %1 *.*
  618.                          ARC=LZH LHARC.EXE a %1 *.*
  619.                          ARC=ZIP PKZIP -A -EX
  620.                          ARC=ZOO ZOO.EXE -ADD %1 * >NUL
  621.                          ARC=ZIP PKZIP.EXE -a -z %1 *.* >NUL <HEADER.ANS
  622.  
  623.           The last two examples have their display output redirected to the
  624.           NUL device, resulting in the normal output to not be displayed.
  625.           The last example has its standard input redirected from the file
  626.           "HEADER.ANS".  THE -z option of PKZIP is the add archive comment
  627.           command.  The contents of the file will be used as the archive
  628.           comment.
  629.  
  630.           Note that if there is an error when attempting to open a file for
  631.           redirection a second attempt will be made to redirect using the
  632.           NUL device.  This is so that PKZIP (and possibly other programs)
  633.           won't sit and wait for input from the keyboard.
  634.  
  635.           See also COMSPEC.
  636.  
  637.  
  638.           5.2  UNARC=
  639.  
  640.  
  641.           The next command is UNARC=.  This is the commands to unarc the
  642.           various types of archives.  This command can appear as many times
  643.           as necessary to define all the archive types you may use.  The
  644.           syntax for this command is:
  645.  
  646.                          UNARC=EXT PROGNAME OPTIONS
  647.  
  648.           EXT is the extension used by this type of archive.
  649.  
  650.           PROGNAME is the name of the program used to extract files in the
  651.           archive.
  652.  
  653.           OPTIONS is the command line options used to extract files from
  654.           the archive.  As with the ARC command, "%1" may also be included
  655.           to indicate the position of the archive file name.
  656.  
  657.           If you wish the display output of the  unarcing program to be
  658.           redirected you should list the redirection command last.
  659.  
  660.           For unarcing to work with ZZAP it MUST extract all files in an
  661.           archive if a filename is not given after the archive name.
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.           Page 10                             Chapter 5. Configuration File
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.           The following are all legal UNARC commands:
  678.  
  679.                          UNARC=ARC PKXARC.EXE
  680.                          UNARC=DWC DWC E %1 *.*
  681.                          UNARC=LZH LHARC.EXE e
  682.                          UNARC=PAK PAK E %1 *.*
  683.                          UNARC=ZIP PKUNZIP.EXE %1 >NUL
  684.                          UNARC=ZOO ZOO -EXTRACT %1 >NUL
  685.  
  686.           The last two examples have their display output redirected to the
  687.           NUL device.
  688.  
  689.           Subdirectories
  690.           It is recommended that you turn on creation of subdirectories if
  691.           the archive format supports storing subdirectories along with
  692.           file names.  This is to allow ZZAP to detect the subdirectories
  693.           and treat the archive as BAD.  If the unarc program allows all
  694.           files to be placed in a single subdirectory a file name conflict
  695.           can arise, resulting in the unarc program stopping and waiting
  696.           for keyboard input to verify a file overwrite.  This could
  697.           potentially stop your computer dead, leaving the BBS system off-
  698.           line until manually continued.
  699.  
  700.           The unarc program MUST allow the subdirectories created to be
  701.           children of the temporary subdirectory.
  702.  
  703.                          UNARC=ZIP PKUNZIP.EXE -d %1 >NUL
  704.  
  705.           This example causes PKUNZIP to create subdirectories if the
  706.           information is stored with the file names.  ZZAP will detect the
  707.           creation of any subdirectories, log the error message, move the
  708.           archive to the BAD subdirectory, and clean up (remove all files
  709.           and subdirectories extracted from the archive).
  710.  
  711.           If the unarc program creates the subdirectores anyplace besides
  712.           in the temporary subdirectory ZZAP will not be able to detect
  713.           them, the contents of the new archive will be incomplete, and the
  714.           subdirectories created will remain on your disk.
  715.  
  716.           See also COMSPEC.
  717.  
  718.  
  719.           5.3  DEFAULT=
  720.  
  721.  
  722.           This is the default extension used to decide which archiving
  723.           format to convert to.  The extension given must match one of the
  724.           extensions given with the ARC= command.  If a match is not found
  725.           the program will halt with an error.  The syntax for this command
  726.           is:
  727.  
  728.                          DEFAULT=ext
  729.  
  730.           where ext is the file extension corresponding to an archive type.
  731.  
  732.  
  733.  
  734.           Chapter 5. Configuration File                             Page 11
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.           The following are legal DEFAULT commands:
  742.  
  743.                          DEFAULT=ZIP
  744.                          DEFAULT=ZOO
  745.                          DEFAULT=.ARC
  746.  
  747.           Note that the preceding period is optional.
  748.  
  749.           You can override DEFAULT= with the command line switch /E.
  750.  
  751.  
  752.           5.4  BADDIR=
  753.  
  754.  
  755.           Whenever an archive fails to unarc properly or fails the virus
  756.           check it will be renamed to so the second character of the
  757.           extension is "!", e.g. "Z!P".  By default the file is kept in its
  758.           original subdirectory.  If you wish bad archives to be placed in
  759.           a special subdirectory you may use the BADDIR= command.  Simply
  760.           name the subdirectory you wish to use.  This subdirectory must
  761.           already exist for this option to work properly.  Example:
  762.  
  763.                          BADDIR=C:\BAD
  764.  
  765.           The defined subdirectory can be on a different drive but if the
  766.           file move is unsuccessful the file will simply be renamed to have
  767.           the normal bad extension (the default mode).
  768.  
  769.  
  770.           5.5  SWITCH=
  771.  
  772.  
  773.           Use this to specify your default command line switches.  For
  774.           example, if you always use the virus checking options you can
  775.           place this in your configuration file:
  776.  
  777.                          SWITCH=/V+
  778.  
  779.           You can always override the options on the command line:
  780.  
  781.                          ZZAP /V- file.ext
  782.  
  783.           The command line always takes precedence over the configuration
  784.           file.
  785.  
  786.  
  787.           5.6  FIXER=
  788.  
  789.  
  790.           Specify the name of your BBS download list fix-up program and
  791.           command line options with this command.  For example, if you are
  792.           running a QuickBBS bulletin board system you can specify
  793.           FIXER=QFIX.EXE (included in this package).
  794.  
  795.  
  796.  
  797.  
  798.           Page 12                             Chapter 5. Configuration File
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.           Include any command line options needed immediately after the
  806.           fix-up program name.  For example, to automatically update the
  807.           4DOS description file the proper syntax would be:
  808.  
  809.                          FIXER=QFIX.EXE DESCRIPT.ION
  810.  
  811.           This command is only needed if you plan on using the /C command
  812.           line switch.
  813.  
  814.           See also COMSPEC.
  815.  
  816.  
  817.           5.7  AGE=
  818.  
  819.  
  820.           If this command is used then only files that are within the
  821.           specified number of days old will be processed.  For example,
  822.           setting the age to 1 (AGE=1) will result in only files that are
  823.           one day old (files with today's date ONLY) to be processed by
  824.           ZZAP.
  825.  
  826.           Sysops who have an "event" at midnight will generally wish to set
  827.           AGE= to 2, allowing files from today and yesterday to be
  828.           processed.  When using this feature you should use the /DO
  829.           command line switch (keep original dates of files).  Assuming you
  830.           stamped the files with the date they are uploaded, this would
  831.           guarantee that only new archives are processed.
  832.  
  833.           Omitting this command or setting AGE=0 results in the age of a
  834.           file to be completely ignored.
  835.  
  836.           See also the /I command line switch.
  837.  
  838.  
  839.           5.8  PRE=
  840.  
  841.  
  842.           If you wish an external program executed to process an archive
  843.           before its files are extracted declare the program name and
  844.           command line options with this command.
  845.  
  846.                PRE=GETCMTS.EXE %1
  847.  
  848.           With the above example the hypothetical program GETCMTS.EXE will
  849.           be execute with the archive name passed as the command line
  850.           parameter.  The specified program will be executed while in the
  851.           same subdirectory as the archive being processed (regardless of
  852.           the command line parameters).
  853.  
  854.           If the DOS return code returned by the PRE= program is exactly
  855.           101 further processing on the file will be skipped.  This could
  856.           be used to run a program that detects for authenticity
  857.           verification information (e.g. -AV option for PKZIP) since ZZAP
  858.           will lose the AV information if it rebuilds an archive.
  859.  
  860.  
  861.  
  862.           Chapter 5. Configuration File                             Page 13
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.           This program, as well as programs defined by MID= and POST= will
  870.           be executed for nested archives as well.  You should avoid
  871.           creating files in the temporary subdirectories ("Z.I_P" is
  872.           created as a child of the subdirectory holding the archive being
  873.           processed) as these files will be added to the new archive
  874.           (unless that is what you wish done).
  875.  
  876.           While testing ZZAP I often use a "PRE=MAPMEM.EXE >\MAP" to get a
  877.           memory map of the system while shelling to an external program.
  878.           This helped me to optimize memory usage so that the maximum
  879.           amount is available.
  880.  
  881.           See also MID=, POST=, and COMSPEC.
  882.  
  883.  
  884.           5.9  MID=
  885.  
  886.  
  887.           If you wish an external program executed after files have been
  888.           extracted from the old archive but before the new archive has
  889.           been created declare the program name and command line options
  890.           with this command.
  891.  
  892.                MID=DIRSORT.EXE NE
  893.  
  894.           With the above example the program DIRSORT.EXE will be executed
  895.           with the command line option of NE.  A batch file declared as the
  896.           MID= program can be used to delete those silly BBS ads that seem
  897.           to propogate unchecked throughout archives.
  898.  
  899.           The specified program will be executed while in the temporary
  900.           subdirectory ZZAP creates to hold the extracted files.  If you
  901.           create any temporary files you should clean up afterwards,
  902.           otherwise the file(s) will be added to the archive when it is
  903.           repacked.
  904.  
  905.           See also PRE=, POST=, and COMSPEC.
  906.  
  907.  
  908.           5.10  POST=
  909.  
  910.  
  911.           If you wish an external program executed to process the new
  912.           archive after it as been created (or repacked) declare the
  913.           program name and command line options with this command.
  914.  
  915.                POST=PUTCMTS.EXE %1
  916.  
  917.           With the above example the hypothetical program PUTCMTS.EXE will
  918.           be executed with the archive name (the new name) as the command
  919.           line parameter.  The specified program will be executed while in
  920.           the same subdirectory as the archive being processed (regardless
  921.           of the command line parameters).
  922.  
  923.  
  924.  
  925.  
  926.           Page 14                             Chapter 5. Configuration File
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.           The main intent of the PRE= and POST= commands is to allow third
  934.           party programmers to create programs that extract archive
  935.           comments from the original archives and then put them into the
  936.           new archives.  Since these are format specific I didn't want to
  937.           program these types of operations into ZZAP.
  938.  
  939.           See also PRE=, MID=, and COMSPEC.
  940.  
  941.  
  942.           5.11  SCANOPT=
  943.  
  944.  
  945.           Place, after this command, any command line options you wish
  946.           passed on to SCAN.EXE when it is executed.  The given options
  947.           will be added after the subdirectory to scan exactly as shown in
  948.           the configuration file.  For example, if you have this in the
  949.           configuration file:
  950.  
  951.                     SCANOPT=/A /NOMEM
  952.  
  953.           SCAN will be executed as:
  954.  
  955.                     SCAN pathname /A /NOMEM
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.           Chapter 5. Configuration File                             Page 15
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.           Page 16                             Chapter 5. Configuration File
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.                                      Chapter Six
  1065.  
  1066.                                 Logging ZZAP Activity
  1067.  
  1068.  
  1069.           If you wish ZZAP to run unattended (see EVENTS below) then you
  1070.           may wish to log its activities.  You must specify the drive full
  1071.           path and file name of the log file in the environment with the
  1072.           ZZAPLOG variable.  In your AUTOEXEC.BAT file you should place
  1073.           this (or something similar):
  1074.  
  1075.                     SET ZZAPLOG=C:\LOG\ZZAP.LOG
  1076.  
  1077.           The actual file name will depend upon your system configuration.
  1078.  
  1079.           The first time the log option is used the log file is created.
  1080.           On subsequent runs new information is appended to the end of the
  1081.           file.
  1082.  
  1083.           The log file is a standard ASCII file that may be viewed, edited,
  1084.           printed, etc..  It will contain information about archives
  1085.           converted, virses detected, corrupted archives, and other error
  1086.           messages, along with the times and dates when they occurred.
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.           Chapter 6. Logging ZZAP Activity                          Page 17
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.           Page 18                          Chapter 6. Logging ZZAP Activity
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.                                     Chapter Seven
  1193.  
  1194.                                   Executing Compsec
  1195.  
  1196.  
  1197.           Any time you declare, in the configuration file, a program to be
  1198.           executed you have the option of using %COMSPEC% to indicate to
  1199.           ZZAP to execute DOS (normally COMMAND.COM).  With this feature
  1200.           you can execute a batch file instead of a single program.  For
  1201.           example:
  1202.  
  1203.                     FIXER=%COMSPEC /C FIXUP %1
  1204.  
  1205.           If FIXUP is a batch file it will be executed with the archive
  1206.           name passed as the parameter.  The /C option is to tell DOS to
  1207.           return to the calling program (ZZAP) when execution has been
  1208.           completed.
  1209.  
  1210.           Caution!  When you execute COMSPEC any error codes returned by
  1211.           programs will be unseen by ZZAP.
  1212.  
  1213.           See also PRE=, MID=, and POST=.
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.           Chapter 7. Executing Compsec                              Page 19
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.           Page 20                              Chapter 7. Executing Compsec
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.                                     Chapter Eight
  1321.  
  1322.                                 Command Line Options
  1323.  
  1324.  
  1325.           There are a number of command line options that allow you to
  1326.           customize the behavior of ZZAP.  These options can also be
  1327.           declared in the configuration file using the SWITCH= statement.
  1328.           Command line options override configuration file options.
  1329.  
  1330.           With the exception of the /E and /D switches, each option is a
  1331.           forward slash (/), a letter, and optionally followed by a plus
  1332.           (+) or minus (-).  If the option is given but the plus or minus
  1333.           is omitted then plus is assumed, e.g. /A is equivalent to /A+.
  1334.           Plus (+) turns the option on and minus (-) turns the option off.
  1335.  
  1336.                    /A          Flag archives with HIDDEN, SYSTEM, or READ-
  1337.                                ONLY files (default ON).
  1338.                    /B          Allow subdirectories.
  1339.                    /C          Call the BBS file description updating
  1340.                                program.
  1341.                    /D          File date stamping.
  1342.                    /E          Extension of archive type to convert to.
  1343.                    /F          Create a list of files that were converted
  1344.                                (default OFF).
  1345.                    /I          Ignore age of files.
  1346.                    /K          Keep the original archive (default OFF).
  1347.                    /N          Convert archives nested within archives
  1348.                                (default ON).
  1349.                    /O          Repack all archives to original archive type
  1350.                                (default OFF)
  1351.                    /P          Prevent overwriting existing archives
  1352.                                (default OFF).
  1353.                    /R          Recurse subdirectories (default OFF).
  1354.                    /S          Strip HIDDEN, SYSTEM, and READ-ONLY
  1355.                                attributes (default OFF).
  1356.                    /T          Test mode only - no repacking (default OFF).
  1357.                    /V          Scan for viruses (default OFF).
  1358.                    /X          Use expanded or  extended memory when
  1359.                                shelling (default ON).
  1360.                    /Z          Enable/disable I/O redirection.
  1361.  
  1362.  
  1363.           8.1  Flag Odd Attributes - /A
  1364.  
  1365.  
  1366.           If this option is ON any archive that contains a file with the
  1367.           HIDDEN, SYSTEM, or READ-ONLY attribute will be treated as a
  1368.           corrupt archive and be renamed to have a "!" as the second
  1369.           character of the extension.  Currently, only PKZIP, LHARC, and
  1370.           ICE support attributes within the archive.
  1371.  
  1372.  
  1373.  
  1374.           Chapter 8. Command Line Options                           Page 21
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.           It is highly recommended that you have on either the /A or /S
  1382.           command at all times since most archiving programs will
  1383.           completely ignore hidden files, possibly resulting in lost files.
  1384.  
  1385.           The /S (strip attributes) command will override this command.
  1386.  
  1387.  
  1388.           8.2  Allow subdirectories - B
  1389.  
  1390.  
  1391.           Some archive formats allow subdirectory information to be
  1392.           imbedded into the archive.  By default, ZZAP treats archives with
  1393.           subdirectory information as BAD archives, leaving them for you to
  1394.           manually examine and process.
  1395.  
  1396.           If the archive format you are converting to supports
  1397.           subdirectories you can have this information automatically
  1398.           included in the conversion process by modifying the program
  1399.           options for the ARC and UNARC programs and including the /B
  1400.           option on the command line (or with the SWITCH= option).
  1401.  
  1402.           It is assumed that subdirectories that are created by the UNARC
  1403.           program will be child directories of ZZAP's temporary work
  1404.           subdirectory ZZAP.  If a subdirectory is created elsewhere it
  1405.           will not be detected and the files contained therein will not be
  1406.           added to the new archive.  Nested archives that are placed in
  1407.           created subdirectories will not be converted by ZZAP.
  1408.  
  1409.           *** WARNING ***  Do not use the /B switch unless you are sure
  1410.           that the default archive configuration is properly configured to
  1411.           allow subdirectory information.  Improper configuration will
  1412.           result in the failure of files to be included in the new
  1413.           subdirectory.  It is URGED that you manually test all possible
  1414.           situations before trusting the /B switch in an unattended mode.
  1415.  
  1416.           The following archive programs can NOT be used to extract
  1417.           subdirectory information.  This limitation is because the
  1418.           programs insist on creating the original subdirectories instead
  1419.           of creating the subdirectories as children of the current
  1420.           directory:
  1421.  
  1422.                     DWC A495
  1423.                     PAK 2.10
  1424.  
  1425.           This limitation may be removed in future versions of these
  1426.           programs or the limitation could be removed by changing the
  1427.           configuration of each of these programs in the ZZAP configuration
  1428.           file.
  1429.  
  1430.           This limitation does not exist for the creation of new archives,
  1431.           however, it should be noted that because the entire path is
  1432.           stored you may not have the subdirectory information that you
  1433.           desire.  *** REPEAT OF WARNING *** allow subdirectory creation
  1434.           with extreme caution.  It is highly recommended that you leave
  1435.  
  1436.  
  1437.  
  1438.           Page 22                           Chapter 8. Command Line Options
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.           out the /B option and handle the subdirectories manual on a
  1446.           case-by-case basis.
  1447.  
  1448.  
  1449.           8.3  Call Update Program - /C
  1450.  
  1451.  
  1452.           Turning this option on causes the fix-up program named in the
  1453.           configuration file (see FIXER=) to be executed after all
  1454.           conversions have been completed.  This removes the necessity to
  1455.           execute the program after running ZZAP.
  1456.  
  1457.           Turning this option on also forces the /F option on as well.
  1458.  
  1459.           This option is ignored when using the Test Only mode (/T).
  1460.  
  1461.  
  1462.           8.4  File Date Stamping - /D
  1463.  
  1464.  
  1465.           ZZAP provides three different options for setting the date and
  1466.           time of the archives after they have been converted.  Immediately
  1467.           follow /D with one of three letters to indicate which stamping
  1468.           method to use:
  1469.  
  1470.                    T           Stamp with the current date and time
  1471.                                (Today).
  1472.                    L           Stamp with the date and time of the most
  1473.                                recent file contained in the archive
  1474.                                (Latest).
  1475.                    O           Keep the original date and time of the
  1476.                                archive (Original).
  1477.  
  1478.           Sysops may wish to use the /DO (original date) option in
  1479.           conjunction with the AGE= configuration file command.  If your
  1480.           daily maintenance event is at midnight you should set AGE=2.
  1481.           After a file is successfully uploaded you should "TOUCH" the file
  1482.           with the current date and time.  When the daily event occurs,
  1483.           only files that are one or two days old will be processed.  Since
  1484.           there shouldn't be any one day old files (assuming a midnight
  1485.           event), only the files uploaded from the previous day will be
  1486.           processed.
  1487.  
  1488.           The default stamping method is /DL.
  1489.  
  1490.  
  1491.           8.5  Target Extension - /E
  1492.  
  1493.  
  1494.           Overrides the DEFAULT= option in the configuration file.  Follow
  1495.           immediately with a three letter extension, for example:
  1496.  
  1497.                     ZZAP /EZIP *.LZH
  1498.  
  1499.  
  1500.  
  1501.  
  1502.           Chapter 8. Command Line Options                           Page 23
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.           The above example will convert all LZH type archives in the
  1510.           current directory to ZIP archives.
  1511.  
  1512.           Unlike the DEFAULT= configuration file option, you must not
  1513.           precede the extension with a period.
  1514.  
  1515.  
  1516.           8.6  File List - /F
  1517.  
  1518.  
  1519.           If the /F+ option is used the text file FILES.FIX will be created
  1520.           that lists each of the files converted.  Each line contains a
  1521.           single entry, first is the full path and file name of the
  1522.           original file, followed by a single space, and finally the new
  1523.           file name (no path), for example:
  1524.  
  1525.                C:\ARCHIVES\MYARC.LZH MYARC.ZIP
  1526.                C:\ARCHIVES\ANOTHER.ZOO ANOTHER.ZIP
  1527.                C:\NEWSTUFF\JUNK.ICE JUNK.ZIP
  1528.  
  1529.           Files that are repacked to the same type (e.g. ZIP to ZIP) will
  1530.           also be listed in this file.  Under some BBS list formats the
  1531.           file size, date, time, etc. are also stored along with the file
  1532.           name and description.  It is up to the programmer of the filter
  1533.           to use or ignore unchanged file names as necessary.
  1534.  
  1535.           This option is ignored when using the Test Only mode (/T).
  1536.  
  1537.           This text file can be used by a filter program to modify any file
  1538.           list as used by most BBS systems to reflect the change of file
  1539.           names.  Included with ZZAP is the program QFIX.EXE that modifies
  1540.           the file list format used by QuickBBS and many other BBS systems
  1541.           as well as the description file used by 4DOS.  See the QFIX
  1542.           document file for additional information.
  1543.  
  1544.           A filter program for TBBS called DIRFIX has been written by Gary
  1545.           W. Funk.  This program is also included with ZZAP by permission.
  1546.  
  1547.           I will be happy to provide some limited assistance in developing
  1548.           filter programs for other BBS list formats.  If you develop a
  1549.           filter program that would be of interest to others, send a copy
  1550.           to me so I can make it available to other sysops.  Appropriate
  1551.           acknowledgments will, of course, be given.
  1552.  
  1553.  
  1554.           8.7  Ignore File Age - /I
  1555.  
  1556.  
  1557.           If you use the AGE= option to ignore files that are more than a
  1558.           specified number of days old you can override this with the /I
  1559.           command.  Enabling the /I option will result in all files
  1560.           (matching the file specification) being processed, regardless of
  1561.           their age.
  1562.  
  1563.  
  1564.  
  1565.  
  1566.           Page 24                           Chapter 8. Command Line Options
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.           8.8  Keeping The Original - /K
  1574.  
  1575.  
  1576.           By default the original archive is deleted after the new archive
  1577.           is successfully created.  To prevent the old archives from being
  1578.           deleted you need to turn ON the /K (keep) option.  For example:
  1579.  
  1580.                          ZZAP /K+ *.ARC
  1581.  
  1582.           This switch can be used in combination with any other option:
  1583.  
  1584.                          ZZAP /K+ /R+ C:\*.ARC
  1585.  
  1586.  
  1587.           8.9  Convert Nested - /N
  1588.  
  1589.  
  1590.           If this option is on, any archives nested within an archive being
  1591.           converted will also be converted.  All nested archive types
  1592.           supported will be converted to the default type.  Nested archives
  1593.           are left unchanged (and untested!) if this option is off.
  1594.  
  1595.  
  1596.           8.10  Keep Original Archive Format - /O
  1597.  
  1598.  
  1599.           When on, all archives are repacked, but they retain their
  1600.           original archive type.  Thus, a ZIP file will be repacked as a
  1601.           ZIP, a LZH file will be repacked as a LZH, etc., regardless of
  1602.           the default archive type.  Nested archives will be converted to
  1603.           the parent archive's type if the /N switch is enabled, otherwise
  1604.           the nested archive will be untouched (and untested!).
  1605.  
  1606.           Using this switch without the AGE= option could result in
  1607.           archives being processed several times if you use a wildcard for
  1608.           the extension.  While this doesn't hurt anything it does waste
  1609.           time unnecessarily.  This problem won't occur if you move
  1610.           archives to a new subdirectory after processing them with ZZAP.
  1611.  
  1612.  
  1613.           8.11  Prevent Overwriting - /P
  1614.  
  1615.  
  1616.           By default an existing archive can be overwritten when
  1617.           converting.  For example, if both TEST.ZIP and TEST.LZH exist and
  1618.           you convert TEST.LZH to a ZIP file, the original TEST.ZIP will be
  1619.           replaced by the new ZIP file (formerly TEST.LZH).  If the /P
  1620.           option is turned on it will prevent this from occurring, in fact,
  1621.           any archive that would cause an overwrite would be completely
  1622.           ignored, without any status message being displayed.
  1623.  
  1624.           This option has no effect when using the Test Only mode (/T).
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.           Chapter 8. Command Line Options                           Page 25
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.           8.12  Subdirectory Recursion - /R
  1638.  
  1639.  
  1640.           If you have multiple subdirectories with archives you need to
  1641.           convert, you can either process each subdirectory individually or
  1642.           use the recursion feature of ZZAP.  Subdirectory recursion means
  1643.           ZZAP will start at a given subdirectory and convert all archives
  1644.           in it and all archives in any child subdirectories.  This feature
  1645.           is especially handy when you have a Bulletin Board System with a
  1646.           large number of specialized file areas.
  1647.  
  1648.           Subdirectory Recursion is invoked by the /R command line options.
  1649.           The following are valid command lines:
  1650.  
  1651.                          ZZAP /R+ \FILES\T*.ZOO
  1652.                          ZZAP /R+ \*.ARC
  1653.                          ZZAP /R *.PAK
  1654.                          ZZAP /R+/V+ *.*
  1655.  
  1656.  
  1657.           8.13  Strip Attributes - /S
  1658.  
  1659.  
  1660.           The /S options will strip the HIDDEN, SYSTEM, and READ-ONLY
  1661.           attributes from all files contained in the archive before adding
  1662.           the files to the new archive.  Note that most archiving programs
  1663.           do not support unusual attributes and will simply ignore files
  1664.           containing these three attributes.  You should use either the /A
  1665.           or /S command if there is any chance of any of these three
  1666.           attributes being run across.
  1667.  
  1668.           Turning this option on will cause the /A option to be turned off.
  1669.  
  1670.           This option has no effect when using the Test Only mode (/T).
  1671.  
  1672.  
  1673.           8.14  Test Only - /T
  1674.  
  1675.  
  1676.           If you merely wish to test the integrity of an archive and
  1677.           possibly run a virus check use the /T switch.  All normal steps
  1678.           will be executed with the exception of the creation of the new
  1679.           archive.
  1680.  
  1681.           The date/time stamp of a archives will not be changed during the
  1682.           Test mode unless a /D command is explicitly stated, either in the
  1683.           configuration file with the OPTIONS= command, or on the command
  1684.           line.
  1685.  
  1686.           This feature would be more useful with SDN archives if PAK would
  1687.           return a nonzero exit code if the security envelope was missing.
  1688.           Unfortunately, as of version 2.10 it returns a code of zero as
  1689.           long as the archive is not corrupted (beyond the missing security
  1690.           envelope).
  1691.  
  1692.  
  1693.  
  1694.           Page 26                           Chapter 8. Command Line Options
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.           8.15  Virus Scan - /V
  1702.  
  1703.  
  1704.           The /V option will enable the virus scan option.  You must have
  1705.           version 39 or greater of McAfee Associates virus scanning program
  1706.           SCAN.EXE placed on your execution PATH.  If a virus is detected
  1707.           the archive will be treated as corrupted and an error message
  1708.           will be displayed and placed in the log file (if enabled).
  1709.  
  1710.           See also the SCANOPT= configuration file command.
  1711.  
  1712.  
  1713.           8.16  Expanded/Extended Memory - /X
  1714.  
  1715.  
  1716.           By default ZZAP will take advantage of expanded or extended
  1717.           memory while shelling to an archive program.  This makes more
  1718.           memory available to the archiver and may mean the difference
  1719.           between success or failure in a tight memory system.  If you do
  1720.           NOT wish expanded to be used include the /X- option on the
  1721.           command line.
  1722.  
  1723.           To use expanded memory a LIM 4.0 driver be installed as well as
  1724.           sufficient EMS to store the bulk of the program and data.
  1725.  
  1726.           To use extended memory an XMS driver such as HIMEM.SYS (available
  1727.           free from Microsoft) must be installed as well as sufficient
  1728.           extended memory to store the bulk of the program and data.
  1729.  
  1730.  
  1731.           8.17  Enable/Disable I/O Redirection - /Z
  1732.  
  1733.  
  1734.           Turning this option off disables all I/O redirection.  ZZAP is
  1735.           configured to redirect all the output of the external programs to
  1736.           the NULL device to keep a clean screen.  When you are having a
  1737.           problem with program configuration it is often helpful to turn
  1738.           off the redirection so you can see each phase of the conversion
  1739.           process.  Using this commmand line switch is much easier than
  1740.           editing the configuration file to remove the redirection
  1741.           commands.
  1742.  
  1743.           This option is ON by default.
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.           Chapter 8. Command Line Options                           Page 27
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.           Page 28                           Chapter 8. Command Line Options
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.                                     Chapter Nine
  1833.  
  1834.                            Locating The Configuration File
  1835.  
  1836.  
  1837.           ZZAP will try it's best to locate the configuration file.  Upon
  1838.           execution it searches for the configuration file in the following
  1839.           order:
  1840.  
  1841.              1.  The current subdirectory.
  1842.              2.  The Subdirectory defined by the environment variable
  1843.                  ZZAP=, e.g. ZZAP=C:\BIN.
  1844.              3.  The subdirectory ZZAP.EXE resides in (DOS 3.x only).
  1845.              4.  Each subdirectory defined by PATH in the environment.
  1846.  
  1847.           If you wish to keep the configuration file in a directory not on
  1848.           the PATH and still be able to execute ZZAP from any subdirectory
  1849.           you should set the environment variable:
  1850.  
  1851.                     SET ZZAP=C:\STUFF
  1852.  
  1853.           If the configuration file can not be found ZZAP will halt with an
  1854.           error.
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.           Chapter 9. Locating The Configuration File                Page 29
  1887.  
  1888.  
  1889.  
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.           Page 30                Chapter 9. Locating The Configuration File
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.                                      Chapter Ten
  1961.  
  1962.                                     Running ZZAP
  1963.  
  1964.  
  1965.           ZZAP is fully configured for the major archiving programs.  The
  1966.           only change in the configuration file you may need to make is the
  1967.           EXT= command to set your preferred default archive type.
  1968.  
  1969.           To run ZZAP, simply type ZZAP followed by the filename (wild-
  1970.           cards allowed).  The filename MUST have an extension.  If the
  1971.           extension is wild (*) then all archive types defined by UNARC=
  1972.           commands will be converted to the new archive type as defined by
  1973.           ARC=.  The following are legal:
  1974.  
  1975.                     ZZAP *.ZOO
  1976.  
  1977.           Converts all ZOO files in the default subdirectory to the new
  1978.           archive type or repacks ZOO files if that is the default
  1979.           extension.
  1980.  
  1981.                     ZZAP \UPLOADS\AFILE.ZIP
  1982.  
  1983.           Converts AFILE.ZIP, located in the \UPLOADS subdirectory, to the
  1984.           new archiving type.
  1985.  
  1986.                     ZZAP *.*
  1987.  
  1988.           Converts all archive types that are not the default format, in
  1989.           the current subdirectory, to the new archive type.
  1990.  
  1991.           When using a wild-card for the extension archives with the
  1992.           default extension will be ignored.  To repack archives to the
  1993.           same type, e.g. ZIP to ZIP, you must explicitly state the
  1994.           extension.
  1995.  
  1996.                     ZZAP *.ZIP
  1997.  
  1998.           If you wish to repack an archive to the same type you must
  1999.           explicitly name the extension as the default archive type is
  2000.           ignored when doing a wild card conversion (this is to avoid
  2001.           repacking the same archives every time you run ZZAP).
  2002.  
  2003.           If your default archive type is LZH simply give that as the
  2004.           extension to convert:
  2005.  
  2006.                     ZZAP *.LZH
  2007.  
  2008.           When repacking an archive, all archive and file comments are
  2009.           lost.
  2010.  
  2011.  
  2012.  
  2013.  
  2014.           Chapter 10. Running ZZAP                                  Page 31
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.           Note that the /P and /K options are ignored when doing a repack.
  2022.  
  2023.           ZZAP can also accept multiple file names on the command line:
  2024.  
  2025.                     ZZAP /V *.ZIP *.*
  2026.  
  2027.           Assuming a default archive type of ZIP, this example first
  2028.           repacks all ZIP files (and does a virus check) then converts all
  2029.           other types to ZIP format, also with a virus check.  If the order
  2030.           had been changed, "ZZAP /V *.* *.ZIP", all archives would be
  2031.           converted to ZIP format then all ZIP files would be repacked,
  2032.           clearly not the intention.
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.           Page 32                                  Chapter 10. Running ZZAP
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.                                    Chapter Eleven
  2089.  
  2090.                                    Nested Archives
  2091.  
  2092.  
  2093.           It is not uncommon to find archives nested inside an archive.  A
  2094.           program that includes source code may have the source code
  2095.           archived and placed within the main archive.  ZZAP will properly
  2096.           handle this situation and convert the nested archives to the new
  2097.           format.  If fact, it will even convert nested archives of a
  2098.           differing types.  Theoretically, an unlimited amount of nesting
  2099.           can be handled, only limited by available memory, but this has
  2100.           only been tested one deep.
  2101.  
  2102.           If you do not wish nested archives to be converted you should use
  2103.           the /N- option on the command line or place it in the
  2104.           configuration file using the SWITCH= command.
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.           Chapter 11. Running ZZAP                                  Page 33
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.           Page 34                               Chapter 11. Nested Archives
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.                                    Chapter Twelve
  2217.  
  2218.                                When Good Files Go Bad
  2219.  
  2220.  
  2221.           If a file is found to be corrupted further processing on that
  2222.           file is halted and the archive is renamed to have a "!" as the
  2223.           second character of the extension, for example, "Z!P".  If the
  2224.           corrupted archive is nested only the parent archive is renamed.
  2225.           You will have to manually unarc the archive to find the actual
  2226.           problem.
  2227.  
  2228.           ZZAP assumes that a file is corrupted when the "EXIT CODE" for
  2229.           the unarc program is nonzero.
  2230.  
  2231.           PAK version 1.0 is known to not return a proper error code so
  2232.           ZZAP will not work with it.  I'm not sure which version they
  2233.           fixed the bug in.  I do know that it works properly with PAK
  2234.           version 1.6.
  2235.  
  2236.           Just because ZZAP says an archive is corrupted does not
  2237.           necessarily mean it is true.  When the archiving program returns
  2238.           a nonzero exit code ZZAP has know way of knowing what the code
  2239.           represents.  Some of the reasons an archive might be flagged as
  2240.           bad are:
  2241.  
  2242.               o  Archive is truly corrupted.
  2243.  
  2244.               o  Insufficient memory, there was enough memory to execute
  2245.                  the archiving program but not enough for the archiving
  2246.                  program to properly process the archive.
  2247.  
  2248.               o  Insufficient disk space.  A very large archive can quickly
  2249.                  eat up disk space.  Even a seemingly small archive can
  2250.                  suddenly expand into a big file.  Font files, for example,
  2251.                  typically compress to only 5% of the original size.  A 72
  2252.                  point font can take more than 1Meg of disk space while
  2253.                  requiring less than 100k when compressed.  Keep in mind
  2254.                  that ZZAP requires enough disk space to hold the original
  2255.                  archive, the expanded files, and the new archive.
  2256.                  Therefore, a 100k archive that expands to 500k and
  2257.                  recompresses to 75k will temporarily require 675k of disk
  2258.                  space.
  2259.  
  2260.               o  Invalid archive version.  When a new version of an archive
  2261.                  program is released it often includes improved
  2262.                  compresssion techniques that older versions of the program
  2263.                  can not handle.  Upgrade your archive software.
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269.  
  2270.           Chapter 12. When Good Files Go Bad                        Page 35
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.               o  Command line options as defined in the configuration file
  2278.                  are incorrect.  Double check each ARC= and UNARC= command
  2279.                  in the configuration file.
  2280.  
  2281.               o  Archive program is corrupted.  Make sure that your
  2282.                  archiving programs are working properly.
  2283.  
  2284.               o  Disk error.  If your disk has a bad sector it could result
  2285.                  in a unsuccessful archiving or unarchiving.
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.           Page 36                        Chapter 12. When Good Files Go Bad
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.                                   Chapter Thirteen
  2345.  
  2346.                               External Event Conversion
  2347.  
  2348.  
  2349.           Some bulletin board systems support timed "events".  These events
  2350.           are used to automate the operation of the board.  Using an event
  2351.           can make it possible for the bulletin board to automatically
  2352.           handle the conversion of any archive type to the type supported
  2353.           by the board.  A BBS that automatically converts archive types
  2354.           could allow the callers to upload archives of virtually any type.
  2355.  
  2356.           Under FrontDoor, for example, you can use an external event for
  2357.           this process.  An external event causes FrontDoor to terminate
  2358.           with a specified error level.  The error level can then be
  2359.           queried to decide what should be done.
  2360.  
  2361.           Follows is a fragment from a possible batch file to do just this.
  2362.           This example assumes all new uploads are placed in the
  2363.           subdirectory "C:\UPLOADS".
  2364.  
  2365.                IF ERRORLEVEL 87 GOTO do_this
  2366.                IF ERRORLEVEL 86 GOTO arc_convert
  2367.                IF ERRORLEVEL 85 GOTO do_that
  2368.  
  2369.                REM convert all archive types to ZIP files
  2370.                :arc_convert
  2371.                  zzap /f+ c:\uploads\*.*
  2372.  
  2373.                GOTO run_fd
  2374.  
  2375.           There is one problem with this type of system - what happens to
  2376.           the descriptions?  Some BBS programs automatically place the file
  2377.           name and description in an ASCII file.  If the file is then
  2378.           converted the filename is changed and would no longer match the
  2379.           name given with the description.  The /F option and the QFIX
  2380.           program (included) handle the conversion for QuickBBS format file
  2381.           list.
  2382.  
  2383.           See QFIX.DOC for further information.  See also the description
  2384.           of the /C options as well as the configuration file option FIXER=
  2385.           and other related options.
  2386.  
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.           Chapter 13. When Good Files Go Bad                        Page 37
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.           Page 38                     Chapter 13. External Event Conversion
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.                                      Appendix A
  2473.  
  2474.                                 Sysop Recommendations
  2475.  
  2476.  
  2477.           If your BBS supports them, the following system is recommended:
  2478.  
  2479.               -  When a new file is uploaded set its date to "Today's
  2480.                  date", using a TOUCH program (or whatever means).
  2481.  
  2482.               -  Set up an midnight "event" to process all new uploads.
  2483.  
  2484.               -  Use the AGE=2 command in ZZAP.CFG.
  2485.  
  2486.               -  Run ZZAP with /T /DO to test files already in the default
  2487.                  archive format and retain the original date.
  2488.  
  2489.               -  Run ZZAP with /DO to convert all archives to the default
  2490.                  format and retain the original date.
  2491.  
  2492.           An alternate configuration is:
  2493.  
  2494.               -  Create a subdirectory to hold of "Today's" uploads.
  2495.  
  2496.               -  Create a subdirectory to hold all New (or this month's)
  2497.                  uploads.
  2498.  
  2499.               -  Set your system to convert/test archives at any desired
  2500.                  time.
  2501.  
  2502.               -  At conversion/test time:
  2503.  
  2504.                      *  Run ZZAP with /T to test all files already in the
  2505.                         default archive format.  Use your preferred date
  2506.                         (/D) option.
  2507.  
  2508.                      *  Run ZZAP to convert all archives to the default
  2509.                         format. Use your preferred date (/D) option.
  2510.  
  2511.               -  Alternately:
  2512.  
  2513.                      *  Use the /O switch to repack all archives, keeping
  2514.                         their original archive formats.  Use your prefered
  2515.                         /D date/time option.
  2516.  
  2517.               -  Move all freshly tested/converted archive to the
  2518.                  Monthly/New uploads subdirectory.
  2519.  
  2520.  
  2521.  
  2522.  
  2523.  
  2524.  
  2525.  
  2526.           Appendix A. Sysop Recommendations                         Page 39
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589.  
  2590.           Page 40                         Appendix A. Sysop Recommendations
  2591.  
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.                                      Appendix B
  2601.  
  2602.                                      Exit Codes
  2603.  
  2604.  
  2605.           ZZAP will return exit codes upon termination.  These exit codes
  2606.           can be used by a batch file to decide what steps should be taken
  2607.           after running ZZAP.  The exit codes are
  2608.  
  2609.                    0           Normal termination - no errors, viruses, or
  2610.                                corrupted archives.
  2611.                    1           Virus detected.
  2612.                    2           Corrupted archive.
  2613.                    3           Configuration file not found.
  2614.                    4           Not configured for given target extension.
  2615.                                If you use the /O option ZZAP will continue
  2616.                                processing other archives.  This is so other
  2617.                                archive types can still be repacked.
  2618.                    5           Couldn't create temporary directory.
  2619.                    6           Other fatal error.
  2620.  
  2621.           There is a possibility for both a corrupted archive and a virused
  2622.           archive to have been detected (bad day!).  In this case an exit
  2623.           code of 1 (virus detected) will be returned, specifying the more
  2624.           critical situation.
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.           Appendix B. Exit Codes                                    Page 41
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.           Page 42                                    Appendix B. Exit Codes
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.                                      Appendix C
  2729.  
  2730.                                    Acknowledgments
  2731.  
  2732.  
  2733.           Thanks to:
  2734.  
  2735.               o  Ken Doebler and Dan Geatons for their many suggestions.
  2736.  
  2737.               o  Randall Greylock (1:321/202.4) for pointing out an oddity
  2738.                  with ZOO and many fine suggestions which were implemented.
  2739.  
  2740.               o  Charles Falconer (1:141/488) for pointing out that I
  2741.                  didn't handle unusual file attributes (which LHARC and
  2742.                  PKZIP archives may retain) and other suggestions.
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.           Appendix C. Acknowledgments                               Page 43
  2783.  
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.  
  2805.  
  2806.  
  2807.  
  2808.  
  2809.  
  2810.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.  
  2821.  
  2822.  
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.  
  2846.           Page 44                               Appendix C. Acknowledgments
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856.                                      Appendix D
  2857.  
  2858.                                My Lawyer Made Me Do It
  2859.  
  2860.  
  2861.               -  DWC is copyright (c)1986,87,88 Dean W. Cooper.
  2862.               -  LHARC and ICE are copyright (c)1988,89 Haruyasu
  2863.                  Yoshizaki-san.
  2864.               -  LUE is copyright (c)1985 Vernon D. Buerg.
  2865.               -  PAK is copyright (c)1988,89 NoGate Consulting
  2866.               -  GSARC is copyright (c)1988 NoGate Consulting
  2867.               -  PKARC/PKXARC and PKPAK/PKUNPAK are copyright (c)1986,87,88
  2868.                  PKWare, Inc.
  2869.               -  PKZIP/PKUNZIP are copyright (c)1989 PkWare, Inc.
  2870.               -  ZOO is copyright (c)1988 Rahul Dhesi
  2871.               -  FrontDoor is copyright (c)1988,89 Scandinavian PC Systems
  2872.                  and InterZone Software, Inc.
  2873.               -  DIRFIX is copyright (c)1990 Gary W. Funk.
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.           Appendix D. My Lawyer Made Me Do It                       Page 45
  2911.  
  2912.  
  2913.  
  2914.  
  2915.  
  2916.  
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.           Page 46                       Appendix D. My Lawyer Made Me Do It
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.                                      Appendix E
  2985.  
  2986.                                    Version History
  2987.  
  2988.  
  2989.           Version 6.3 Changes
  2990.           ===================
  2991.  
  2992.               -  Added the /O option (different from the older date related
  2993.                  switch).
  2994.  
  2995.           Version 6.2 Changes
  2996.           ===================
  2997.  
  2998.               -  The log file must now be specified in the environment.
  2999.                  This allows ZZAP to log errors before the configuration
  3000.                  file is read.
  3001.               -  Can now read a file containing a list of files to convert.
  3002.               -  Corrected an error in initialization that caused the /C+
  3003.                  switch to be ignored in some cases.
  3004.  
  3005.           Version 6.1 Changes
  3006.           ===================
  3007.  
  3008.               -  Added the /B command line switch and support for
  3009.                  subdirectory information in archives.
  3010.               -  Slightly changed the way temporary files are handled to
  3011.                  improve support on networked multi-line BBS's.
  3012.  
  3013.           Version 6.0 Changes
  3014.           ===================
  3015.  
  3016.               -  Added the PRE=, MID=, and POST= configuration file
  3017.                  commands.
  3018.               -  Added support for %COMSPEC% when declaring programs to
  3019.                  execute.
  3020.               -  Added support for >> type output redirection.
  3021.               -  Changed /T to /D.
  3022.               -  A new test mode has been added.  Using /T now initiates a
  3023.                  test mode, no new archives are created.
  3024.               -  The date/time stamp is left unaltered when using the /T
  3025.                  command unless a /D option is explicitly stated.
  3026.               -  Instead of searching the path for all of the UNARC
  3027.                  programs at start-up, which can be a slow process if more
  3028.                  than a few are defined, ZZAP now only searches for the
  3029.                  programs when actually required.  The full path, if found,
  3030.                  is saved so that subsequent searches are not required.
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.           Appendix E. Version History                               Page 47
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.           Version 5.9 Changes
  3046.           ===================
  3047.  
  3048.               -  Changed the way temporary files are handled, ZZAP can now
  3049.                  work with archive programs that insist on using a specific
  3050.                  extension.
  3051.                  Duplicate archives are not deleted until the new archive
  3052.                  has been successfully created.
  3053.               -  Added a few new error messages in the log file.
  3054.               -  When I added input redirection capabilities I also
  3055.                  introduced a bug that would could cause the wrong files to
  3056.                  be closed when turning off redirection after an execute.
  3057.                  This is now fixed.
  3058.  
  3059.           Version 5.8 Changes
  3060.           ===================
  3061.  
  3062.               -  Removed the /O command line option and replaced it with
  3063.                  the more versatile /T option.
  3064.               -  Added the /I (ignore file age) command to the command line
  3065.                  switches.
  3066.               -  Added the AGE= command to the configuration file.  ZZAP
  3067.                  can now be configured to skip processing of files that are
  3068.                  more than a specified number of days old.
  3069.               -  Added an index to the documents
  3070.               -  ZZAP is now DesqView aware.
  3071.  
  3072.           Version 5.7 Changes
  3073.           ===================
  3074.  
  3075.               -  Added support for redirection of input for called
  3076.                  programs.  This will allow you to automatically add
  3077.                  archives comments when converting to some archive formats.
  3078.               -  Deleted the FIXOPT= configuration file command.  Now the
  3079.                  FIXER= command does double duty - defining the program
  3080.                  name and options.
  3081.  
  3082.  
  3083.  
  3084.  
  3085.  
  3086.  
  3087.  
  3088.  
  3089.  
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.           Page 48                               Appendix E. Version History
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.           Version 5.6 Changes
  3110.           ===================
  3111.  
  3112.               -  Corrected a bug where a bad archive could not be
  3113.                  successfully moved to a "bad directory" as defined by the
  3114.                  BADDIR= configuration option.
  3115.               -  If an archive contains subdirectory information and you
  3116.                  have the unarc option set to create subdirectories, ZZAP
  3117.                  will now handle this in a graceful manner by deleting the
  3118.                  subdirectories that were created, treating the archive as
  3119.                  bad, and logging an appropriate message.  Formerly, ZZAP
  3120.                  would crash when it was unable to remove its temporary
  3121.                  work subdirectory.
  3122.               -  When an archive nested inside another archive is found to
  3123.                  be corrupt, only the parent archive (containing the
  3124.                  corrupt child archive) will be moved to BADDIR instead of
  3125.                  both the parent and child archives.
  3126.               -  Stamped a new bug where a nested archive would be stored
  3127.                  with its temporary name (*.Z!Z) as well as the old
  3128.                  extension, resulting in larger archives.
  3129.  
  3130.           Version 5.5 Changes
  3131.           ===================
  3132.  
  3133.               -  Due to a bug in my code the error code returned by
  3134.                  SCAN.EXE was not being processed correctly.  This could
  3135.                  allow archives with infected programs to slip by.
  3136.               -  Cleaned up the display of error and warning messages.
  3137.               -  The log file is now only date/time stamped if something is
  3138.                  actually done.
  3139.               -  The number of files skipped due to the /P+ option is now
  3140.                  displayed with other status information.
  3141.  
  3142.           Version 5.4 Changes
  3143.           ===================
  3144.  
  3145.               -  Added the /C command line option.
  3146.               -  Added the FIXER=, FIXOPT= and SCANOPT= configuration file
  3147.                  commands.
  3148.               -  Corrupted archives are renamed to have a "!" as the second
  3149.                  character of the extension instead of "BAD" being the
  3150.                  extension.
  3151.  
  3152.  
  3153.  
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.           Appendix E. Version History                               Page 49
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.           Version 5.3 Changes
  3174.           ===================
  3175.  
  3176.               -  Added support for "%1" to allow the archive file names to
  3177.                  be in any position on the command line.
  3178.               -  Corrected a bug where the /N command line switch was being
  3179.                  ignored.
  3180.               -  Bug corrected where the state of Keep (/K+) and/or
  3181.                  PreventOverwrite (/P+) could be lost if more than one file
  3182.                  is given on the command line.
  3183.               -  On the switch status line, "on" is displayed in high-
  3184.                  intensity.
  3185.               -  Completely changed the way the /F option works and added
  3186.                  the QFIX program.
  3187.               -  Conversion of all archive types by indicating the wild-
  3188.                  card extension (e.g. '*.*' was not working, corrected as
  3189.                  of 5.3b.
  3190.  
  3191.           Version 5.2 Changes
  3192.           ===================
  3193.  
  3194.               -  Fixed a bug where the stack would overflow and trash some
  3195.                  internal data.
  3196.               -  Fixed a bug where if /X- was used it wouldn't properly
  3197.                  execute the external programs.
  3198.               -  Removed the ZZAPARC= environmental variable, it is not
  3199.                  longer needed with the addition of the /E command line
  3200.                  switch.
  3201.               -  Added the /N switch (convert nested archives).  Default
  3202.                  ON.
  3203.  
  3204.           Version 5.1 Changes
  3205.           ===================
  3206.  
  3207.               -  Added the SWITCH= configuration file option.
  3208.               -  Changed the way command line options are used.
  3209.  
  3210.           Version 5.0 Changes
  3211.           ===================
  3212.  
  3213.               -  Completely rewrote most of the file searching routines.
  3214.               -  Now supports repacking any archive type, e.g. ZIP to ZIP.
  3215.               -  Added a switch to prevent overwriting of existing
  3216.                  archives.
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.           Page 50                               Appendix E. Version History
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.           Version 4.8 Changes
  3238.           ===================
  3239.  
  3240.               -  Added support for output redirection.
  3241.               -  ZZAP always thought the bad archive directory (BADDIR=)
  3242.                  didn't exist - whether it did or not.
  3243.               -  Now supports moving a BAD archive to a different drive.
  3244.               -  If BADDIR is defined and the subdirectory exists the file
  3245.                  will be moved their and the extension will NOT be changed
  3246.                  to .BAD.  The extension will be changed to .BAD if BADDIR
  3247.                  is not defined or does not exist.
  3248.  
  3249.           Version 4.7 Changes
  3250.           ===================
  3251.  
  3252.               -  Added the DEFAULT= command in the configuration file.
  3253.               -  Changed the ZZAPARC environmental variable so that it only
  3254.                  requires the file extension.
  3255.               -  Changed the ARC= command in the configuration file so that
  3256.                  multiple archiving programs can be listed.
  3257.               -  Added the /S (strip attributes) command line option.
  3258.               -  Added support for extended memory during archive program
  3259.                  executing.
  3260.               -  The BBS list routine was not working properly if the
  3261.                  filenames in the list file were not uppercase.
  3262.  
  3263.           Version 4.6 Changes
  3264.           ===================
  3265.  
  3266.               -  Added support for virus scanning using McAfee Associates
  3267.                  SCAN.EXE program.
  3268.               -  Added the BADDIR configuration option.
  3269.               -  Improved the error detection code.
  3270.  
  3271.           Version 4.5 Changes
  3272.           ===================
  3273.  
  3274.               -  Added support for multiple file names on the command line.
  3275.               -  Removed bug where ZZAP returned an error message if no
  3276.                  file name was given on the command line.
  3277.  
  3278.           Version 4.4 Changes
  3279.           ===================
  3280.  
  3281.               -  ZZAP wasn't properly reading the exit code of the unarcing
  3282.                  programs.  This resulting in some bad archives slipping
  3283.                  by.
  3284.  
  3285.           Version 4.3 Changes
  3286.           ===================
  3287.  
  3288.               -  Cosmetic changes and code optimization.
  3289.  
  3290.  
  3291.  
  3292.  
  3293.  
  3294.           Appendix E. Version History                               Page 51
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.           Version 4.2 Changes
  3302.           ===================
  3303.  
  3304.               -  Trivial B.S. hardly worth mentioning.
  3305.  
  3306.           Version 4.1 Changes
  3307.           ===================
  3308.  
  3309.               -  Corrected a fatal bug introduced in 4.0 that would cause
  3310.                  ZZAP to lose files under PKARC/PKPAK.
  3311.               -  Removed a bug which resulted in the "home" path (DOS 3.x
  3312.                  only) not being located properly.
  3313.  
  3314.           Version 4.0 Changes
  3315.           ===================
  3316.  
  3317.               -  Changed the "/I" option to "/A" - makes more sense.
  3318.                  Log more information about nonstandard file attributes in
  3319.                  the log file.
  3320.               -  Now supports expanded memory (LIM 4.0 only) when shelling,
  3321.                  thus making available more conventional memory when
  3322.                  running the archiving programs.
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.           Page 52                               Appendix E. Version History
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.                                         Index
  3369.  
  3370.  
  3371.           A                                  Filter 24
  3372.           AGE= 24                            Fix-up program 12
  3373.           Archive Programs Supported 6
  3374.           Attributes 21                      H
  3375.             Flag funny 21, 26                Halting ZZAP 5
  3376.             Strip 21, 22, 26
  3377.                                              I
  3378.           B                                  I/O redirection 21
  3379.           BBS download list 12
  3380.                                              K
  3381.           C                                  Keep 21, 24
  3382.           Command Line Options 20
  3383.           Command line options               L
  3384.             /A 21                            License Agreement 1
  3385.             /B 21, 22                        List 21, 24
  3386.             /C 21, 23                        Locating The Configuration
  3387.             /D 13, 21, 23                      File 28
  3388.             /E 21, 23                        Log 17
  3389.             /F 21, 23, 24                    Logging ZZAP Activity 16
  3390.             /I 13, 21, 24
  3391.             /K 21, 24                        M
  3392.             /N 21, 25                        MID= 14
  3393.             /O 21, 25
  3394.             /P 21, 25                        N
  3395.             /R 21, 25                        Nested Archives 21, 33
  3396.             /S 21, 26
  3397.             /T 21, 26                        O
  3398.             /V 21, 26                        Original Format 21
  3399.             /X 21, 27
  3400.             /Z 21, 27                        P
  3401.           Configuration File 8               Path 29
  3402.           Configuration File 29              POST= 15
  3403.                                              PRE= 15
  3404.           D                                  Prevent overwrite 21
  3405.           Default Extension 11, 21, 23
  3406.           Description fix-up 21, 23          Q
  3407.           DIRFIX 24                          QuickBBS 12
  3408.  
  3409.           E                                  R
  3410.           Environment 29                     Redirection 9, 10, 11
  3411.           Escape 5                           Redirection error 10
  3412.           Executing Compsec 18               Repack 31
  3413.           Expanded Memory 21, 27             Running ZZAP 4, 30
  3414.           Extended Memory 21, 27
  3415.           External Event Conversion 37       S
  3416.                                              SCANV 15, 21, 26
  3417.           F                                  Subdirecties 21, 22
  3418.           File date stamping 13, 21          Subdirectories 11
  3419.  
  3420.  
  3421.  
  3422.           Index                                                     Page 53
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.           Subdirectory recursion 21          W
  3430.           Summary of Features 2              When Good Files Go Bad 34
  3431.           Switches 12, 21                    Wild-cards 31
  3432.  
  3433.           T                                  Z
  3434.           Temporary subdirectory 14          ZZAPLOG= 17
  3435.           Test mode 21, 23, 24, 25, 26
  3436.  
  3437.           V
  3438.           Viruses 15, 21, 26
  3439.  
  3440.  
  3441.  
  3442.  
  3443.  
  3444.  
  3445.  
  3446.  
  3447.  
  3448.  
  3449.  
  3450.  
  3451.  
  3452.  
  3453.  
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.           Page 54                                                     Index
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495.  
  3496.                                     Contents
  3497.  
  3498.  
  3499.  
  3500.                Chapter 1  License Agreement                          1
  3501.  
  3502.                Chapter 2  Summary of Features                        3
  3503.  
  3504.                Chapter 3  Running ZZAP                               5
  3505.  
  3506.                Chapter 4  Archive Programs Supported                 7
  3507.  
  3508.                Chapter 5  Configuration File                         9
  3509.                   5.1  ARC=  . . . . . . . . . . . . . . . . . . . . 9
  3510.                   5.2  UNARC=  . . . . . . . . . . . . . . . . . .  10
  3511.                   5.3  DEFAULT=  . . . . . . . . . . . . . . . . .  11
  3512.                   5.4  BADDIR= . . . . . . . . . . . . . . . . . .  12
  3513.                   5.5  SWITCH= . . . . . . . . . . . . . . . . . .  12
  3514.                   5.6  FIXER=  . . . . . . . . . . . . . . . . . .  12
  3515.                   5.7  AGE=  . . . . . . . . . . . . . . . . . . .  13
  3516.                   5.8  PRE=  . . . . . . . . . . . . . . . . . . .  13
  3517.                   5.9  MID=  . . . . . . . . . . . . . . . . . . .  14
  3518.                   5.10  POST=  . . . . . . . . . . . . . . . . . .  14
  3519.                   5.11  SCANOPT= . . . . . . . . . . . . . . . . .  15
  3520.  
  3521.                Chapter 6  Logging ZZAP Activity                     17
  3522.  
  3523.                Chapter 7  Executing Compsec                         19
  3524.  
  3525.                Chapter 8  Command Line Options                      21
  3526.                   8.1  Flag Odd Attributes - /A  . . . . . . . . .  21
  3527.                   8.2  Allow subdirectories - B  . . . . . . . . .  22
  3528.                   8.3  Call Update Program - /C  . . . . . . . . .  23
  3529.                   8.4  File Date Stamping - /D . . . . . . . . . .  23
  3530.                   8.5  Target Extension - /E . . . . . . . . . . .  23
  3531.                   8.6  File List - /F  . . . . . . . . . . . . . .  24
  3532.                   8.7  Ignore File Age - /I  . . . . . . . . . . .  24
  3533.                   8.8  Keeping The Original - /K . . . . . . . . .  25
  3534.                   8.9  Convert Nested - /N . . . . . . . . . . . .  25
  3535.                   8.10  Keep Original Archive Format - /O  . . . .  25
  3536.                   8.11  Prevent Overwriting - /P . . . . . . . . .  25
  3537.                   8.12  Subdirectory Recursion - /R  . . . . . . .  26
  3538.                   8.13  Strip Attributes - /S  . . . . . . . . . .  26
  3539.                   8.14  Test Only - /T . . . . . . . . . . . . . .  26
  3540.                   8.15  Virus Scan - /V  . . . . . . . . . . . . .  27
  3541.                   8.16  Expanded/Extended Memory - /X  . . . . . .  27
  3542.                   8.17  Enable/Disable I/O Redirection - /Z  . . .  27
  3543.  
  3544.                Chapter 9  Locating The Configuration File           29
  3545.  
  3546.                Chapter 10  Running ZZAP                             31
  3547.  
  3548.  
  3549.  
  3550.                                           i
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.                Chapter 11  Nested Archives                          33
  3558.  
  3559.                Chapter 12  When Good Files Go Bad                   35
  3560.  
  3561.                Chapter 13  External Event Conversion                37
  3562.  
  3563.                Appendix A  Sysop Recommendations                    39
  3564.  
  3565.                Appendix B  Exit Codes                               41
  3566.  
  3567.                Appendix C  Acknowledgments                          43
  3568.  
  3569.                Appendix D  My Lawyer Made Me Do It                  45
  3570.  
  3571.                Appendix E  Version History                          47
  3572.  
  3573.                Index                                                53
  3574.  
  3575.  
  3576.  
  3577.  
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.  
  3603.  
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611.  
  3612.  
  3613.  
  3614.                                          ii
  3615.