home *** CD-ROM | disk | FTP | other *** search
/ swCHIP 1991 January / swCHIP_95-1.bin / dos / crush18 / manual.doc < prev    next >
Text File  |  1995-12-09  |  45KB  |  998 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                        _________________________________
  13.  
  14.                                    CRUSH v1.8
  15.  
  16.                            **** Shareware Manual ****
  17.  
  18.                        __________________________________
  19.  
  20.  
  21.  
  22.                              File Compression Tool
  23.             CRUSH (TM) Copyright Jeff Rollason, PocketWare (TM) 1994
  24.                               All Rights Reserved
  25.  
  26.  
  27.  
  28.  
  29.                         All Trademarks Are Acknowledged
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.           No part of this publication may be reproduced, transmitted,
  39.           transcribed,  stored in  a retrieval system, or  translated
  40.           into any other language in whole or in part, in any form or
  41.           by  any  means,  whether  it  be  electronic,   mechanical,
  42.           magnetic,  optical,  manual  or  otherwise,  without  prior
  43.           written consent of PocketWare.
  44.  
  45.             PocketWare PO Box 2369, Hendon, London NW4 1NR, England.
  46.              CIS 100031,3537.  Internet 100031.3537@compuserve.com
  47.  
  48.  
  49.    __________________________________________________________________________
  50.    Contents:
  51.  
  52.  
  53.    CONTENTS:                                                             Page
  54.  
  55.    Getting Started: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  56.  
  57.    The CRUSH program: . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  58.  
  59.         Default use of PKZIP  . . . . . . . . . . . . . . . . . . . . . . . 3
  60.         -j    Use ARJ . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  61.         -o    Use ZOO . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  62.         -l    Use LHA . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  63.         -h    Use HA  . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  64.         -u    Use UC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  65.         -U    Create CRU files only . . . . . . . . . . . . . . . . . . . . 3
  66.         -m    Moves file to archive . . . . . . . . . . . . . . . . . . . . 4
  67.         -c    Compare with and without CRUSH  . . . . . . . . . . . . . . . 4
  68.         -f    Optimise until 5 failed attempts to improve compression . . . 4
  69.         -f<n> Optimise until "n" failed attempts to improve compression . . 4
  70.         -t    Only create CRUSH archive if 5% improvement . . . . . . . . . 4
  71.         -t<n> Only create CRUSH archive if "n"% improvement . . . . . . . . 4
  72.         -r    Recurse subdirectories  . . . . . . . . . . . . . . . . . . . 4
  73.         -:    Set range(s) of dates . . . . . . . . . . . . . . . . . . . . 5
  74.         -x    Exclude pathspecs . . . . . . . . . . . . . . . . . . . . . . 6
  75.         -y    Answer YES to all questions . . . . . . . . . . . . . . . . . 6
  76.         -z    Add CRUSH archive comment . . . . . . . . . . . . . . . . . . 6
  77.         -v    Show files for adding without CRUSHing  . . . . . . . . . . . 6
  78.         -Ln   Set limit for files per archive . . . . . . . . . . . . . . . 7
  79.         -n    Store files without paths . . . . . . . . . . . . . . . . . . 7
  80.         -Q    Query each file to be archived. . . . . . . . . . . . . . . . 7
  81.         -q    QUIET mode, no output . . . . . . . . . . . . . . . . . . . . 7
  82.         -a    Create an additional index  . . . . . . . . . . . . . . . . . 7
  83.         -e    Use the existing archive for comparison . . . . . . . . . . . 8
  84.         -C    Colour off  . . . . . . . . . . . . . . . . . . . . . . . . . 8
  85.         -C<n> Set colour  . . . . . . . . . . . . . . . . . . . . . . . . . 8
  86.         -s    Minimise temporary disk space (slow!) . . . . . . . . . . . . 8
  87.         -i<n> Control information type  . . . . . . . . . . . . . . . . . . 8
  88.         -2    Set display of times to 24 hour clock . . . . . . . . . . . . 8
  89.  
  90.  
  91.    The UNCRUSH Program: . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  92.  
  93.         -v    Display without uncompressing . . . . . . . . . . . . . . . .10
  94.         -V    Display archive comment only  . . . . . . . . . . . . . . . .10
  95.         -o    Overwrite files without query . . . . . . . . . . . . . . . .10
  96.         -u    Uncompress NEWER or NEW files . . . . . . . . . . . . . . . .10
  97.         -a    Uncompress NEW files  . . . . . . . . . . . . . . . . . . . .10
  98.         -i    Ignore paths in CRUSH file  . . . . . . . . . . . . . . . . .10
  99.         -I    Only ignore drives in paths . . . . . . . . . . . . . . . . .10
  100.         -q    Quiet mode: No output at all  . . . . . . . . . . . . . . . .11
  101.         -z    Only suppress output of archiver  . . . . . . . . . . . . . .11
  102.         -e    Extract even if not CRUSH archive . . . . . . . . . . . . . .11
  103.         -l    Only display a simple file list . . . . . . . . . . . . . . .11
  104.         -2    Display times as 24-hour clock  . . . . . . . . . . . . . . .11
  105.  
  106.    Worked Examples: . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
  107.    The UNDO and UNDO2 Programs: . . . . . . . . . . . . . . . . . . . . . .13
  108.    Configuration (including using other archivers): . . . . . . . . . . . .14
  109.    Technical Details: . . . . . . . . . . . . . . . . . . . . . . . . . . .15
  110.  
  111.    _________________________________________________________________________
  112.    Getting Started                                                   Page  1
  113.  
  114.    ____________________________________
  115.    Installation
  116.  
  117.    CRUSH installation is very simple. The user need only copy the contents of
  118.    the  release disk to the desired directory. A file INSTALL.BAT is provided
  119.    to  do  this for you. Your  chosen directory should be within your  search
  120.    path (See the PATH variable in your DOS documentation).
  121.  
  122.    In  order  to be able to  use  CRUSH, you must have one of  the  archivers
  123.    PKZIP, ARJ, LHA, ZOO, HA and UC; or your own particular archiver.
  124.  
  125.    ____________________________________
  126.    What is CRUSH?
  127.  
  128.    CRUSH  is a command-line tool that uses your existing archiver PKZIP, ARJ,
  129.    LHA,  ZOO, HA or UC to generate smaller archives than it could alone. With
  130.    many  applications  this improvement  may  be less than 5%,  but  dramatic
  131.    improvements  of  10%-70%  are  much  more typical. A block  test  of  128
  132.    archives  totalling 2349 wordprocessing files (see README) averaged a  47%
  133.    improvement  (100k ZIP reduced to 53k CRUSH!). CRUSH is ideally suited  to
  134.    users  who regularly archive material or who just need to save disk space.
  135.    There  is  no other compression tool  for DOS (as of June 1994)  that  can
  136.    match the compression performance of CRUSH, and most do not come close.
  137.  
  138.    ____________________________________
  139.    CRUSH and other Archivers
  140.  
  141.    CRUSH is used from the command-line in much the same way as archivers such
  142.    as  PKZIP and ARJ. If you are already familiar with these, then you should
  143.    be  able to adapt to CRUSH with very little difficulty. If you are a  ZOO,
  144.    LHA  or  HA user, then you  will observe some changes, but will  find  the
  145.    basic operation of CRUSH very similar.
  146.  
  147.    ____________________________________
  148.    Simple use of CRUSH
  149.  
  150.    To  create a CRUSH archive called  BACKUP containing all the files in  the
  151.    current directory requires the following simple command:
  152.  
  153.         CRUSH BACKUP
  154.  
  155.    This  will create the file BACKUP.ZIP (PKZIP must be available). The  user
  156.    can be more selective by adding filespecs, as follows:
  157.  
  158.         CRUSH BACKUP *.DOC README MAN*.*
  159.  
  160.    This  will only save files with the specified filespecs. The user may also
  161.    want  to  receive some feedback about  how much space is being saved.  The
  162.    "-c" (compare) option will allow a comparison to be made:
  163.  
  164.         CRUSH -c BACKUP *.DOC README MAN*.*
  165.  
  166.    Once  created, a CRUSH archive  can be uncompressed using UNCRUSH in  much
  167.    the  same  way as PKUNZIP  is used. e.g.  UNCRUSH BACKUP *.DOC. This  only
  168.    extracts  files  matching *.DOC. The  user is advised to read the  "Worked
  169.    Examples"  section  for more details  of CRUSH usage, and also the  README
  170.    file.  Simply type "CRUSH" to obtain on-line help.
  171.  
  172.  
  173.    _________________________________________________________________________
  174.    The CRUSH program                                                 Page  2
  175.  
  176.  
  177.    This  is the program that will replace the use of PKZIP, LHA, ARJ, ZOO, HA
  178.    and UC. Whichever of these you already use will still be needed, but CRUSH
  179.    will  run it for you. The command-line syntax of CRUSH is, for most cases,
  180.    identical to PKZIP usage. CRUSH preserves dates, times and attributes.
  181.  
  182.    USAGE:    CRUSH [opts] archive [pathspecs] [@lists] [>outfile]
  183.  
  184.    Where:
  185.  
  186.    [opts]         These  are options that control CRUSH's behaviour. e.g.  -r
  187.                   causes CRUSH to search subdirectories. These can be grouped
  188.                   together for brevity or specified one-by-one, e.g.
  189.  
  190.                   -rca      is equivalent to:      -r -c -a
  191.  
  192.                   The  user  can  choose  to  use  "/" in place  of  "-"  for
  193.                   preference. e.g. -r and /r are equivalent.
  194.  
  195.    archive        This  is the name of the archive to be created e.g.  BACKUP
  196.                   or  BACKUP.001 etc. If no extension is specified, then  the
  197.                   default  extension  for the  archiver used will be  adopted
  198.                   (default  PKZIP). If the  special name "[]" is given  (e.g.
  199.                   CRUSH []),  then CRUSH will generate a unique archive  name
  200.                   based  on the current date and time (assuming that archives
  201.                   are not created within 2 seconds of each other).
  202.  
  203.    [pathspecs]    These  are  the files  to be compressed (defaulting to  all
  204.                   files in the current directory). e.g.
  205.  
  206.                        CRUSH SAVE \WP\*.DOC *.TXT
  207.  
  208.                   This  will compress into SAVE.ZIP all files matching  *.DOC
  209.                   from  the directory \WP  and all files matching *.TXT  from
  210.                   the current directory. The path \WP\ will also be stored in
  211.                   the  archive,  to  be  re-created by UNCRUSH.  UNCRUSH  can
  212.                   optionally ignore stored pathnames.
  213.  
  214.                   CRUSH  uses proper rather than DOS wildcards. e.g. the  DOS
  215.                   wildcard  *FRED.*  will  match  a file called  JOE  because
  216.                   *FRED.*  and  *.* are  treated by DOS as equivalent.  CRUSH
  217.                   interprets  "*"  as  any sequence of characters,  including
  218.                   zero length.  See also the "-x" EXCLUSION filespecs.
  219.  
  220.    [@lists]       CRUSH  will accept response files containing lists of files
  221.                   to be processed. These should contain one pathspec per line
  222.                   and can contain comments starting with ";" e.g.
  223.  
  224.                        *.EXE
  225.                        \WP\*.DOC ; save my docs
  226.                        ; Fred's stuff here onwards
  227.                        \BIN\*.EXE
  228.  
  229.                   Unlike PKZIP, the response file can be of any length (PKZIP
  230.                   limits the user to 500 filespecs).
  231.  
  232.    [>outfile]     CRUSH  can  generate a  response file by  re-directing  the
  233.                   output to a file for later use e.g. CRUSH DOCS >SAVE
  234.  
  235.  
  236.    __________________________________________________________________________
  237.    CRUSH Options                                                      Page  3
  238.  
  239.  
  240.    CRUSH  will  default  to  using  PKZIP  unless  -j, -o, -l, -h  or  -u  is
  241.    specified.  PKZIP is the world's best known archiver, written by Paul Katz
  242.    and  marketed as Shareware by PKWARE. CRUSH will work with any version  of
  243.    PKZIP,  but  the user is recommended  to use PKZIP v2.04 or  later,  which
  244.    achieves significantly better compression than v1.x.
  245.  
  246.    ____________________________________
  247.    -j    Use ARJ
  248.  
  249.         This  instructs CRUSH to use Robert K Jung's "ARJ" program instead of
  250.         PKZIP.  This  can be specified  as a general default using the  CRUSH
  251.         environment variable e.g. SET CRUSH=-j
  252.  
  253.    ____________________________________
  254.    -o    Use ZOO
  255.  
  256.         This will use the ZOO program, creating ZOO files.
  257.  
  258.    ____________________________________
  259.    -l    Use LHA
  260.  
  261.         This will use Haruyasu Yoshizaki's "LHA" program, creating LZH files.
  262.  
  263.    ____________________________________
  264.    -h    Use HA
  265.  
  266.         This  will  use Harri Hirvola's  "HA" program, creating HA files.  HA
  267.         produces very small archives, but is quite slow.
  268.  
  269.    ____________________________________
  270.    -u    Use UC2
  271.  
  272.         This  uses Ad Infinitum Programs's "UC" program. This uses a great of
  273.         DOS  memory  and will probably  require the added program  US.EXE  to
  274.         allow CRUSH access to the 80k it needs. e.g. US CRUSH -u SAVE
  275.  
  276.    ____________________________________
  277.    -U    Create CRU file only
  278.  
  279.         This  will only create a CRU file rather than go on to compress using
  280.         PKZIP  or  similar. This is  of benefit to Stacker,  DoubleSpace  and
  281.         SuperStore users which will result the the best possible compression.
  282.  
  283.    ____________________________________
  284.    -m    Moves file to archive
  285.  
  286.         This deletes the files after they have been successfully compressed.
  287.  
  288.    ____________________________________
  289.    -c    Compare with and without CRUSH
  290.  
  291.         This  allows CRUSH to show how much filespace has been saved over the
  292.         archiver  alone.  This  will  make  CRUSH  slower  as  an  additional
  293.         compression  is  needed in order  to make a comparison (unless -e  is
  294.         also  used).  The  results  are  displayed as a bar  graph,  plotting
  295.         archive  and CRUSH sizes. The original file size can also be  plotted
  296.         by adding the option -i2.
  297.  
  298.    __________________________________________________________________________
  299.    CRUSH Options                                                      Page  4
  300.  
  301.    ____________________________________
  302.    -f    Optimise until 5 failed attempts to improve compression
  303.  
  304.         This  will make CRUSH experiment with different orderings to  improve
  305.         the compression. CRUSH will end when it has failed 5 times to find an
  306.         improvement.  This will increase the run time of CRUSH by at least  5
  307.         times.   Each  time  it  provides  an  improvement,  the  time  taken
  308.         increases.  CRUSH is unlikely to  take more than 15 times the  normal
  309.         compress time.
  310.  
  311.         The  results of this trial  are displayed as two bar graphs,  showing
  312.         the size of the first and best CRUSH compression. (See option "-s").
  313.  
  314.    ____________________________________
  315.    -f<n> Optimise until "n" failed attempts to improve compression
  316.  
  317.         As  "-f",  but  allowing the  user  to specify how long CRUSH  is  to
  318.         continue the trial before giving up e.g.
  319.  
  320.              CRUSH -f2 BACKUP         will give up after only 2 failures.
  321.  
  322.              CRUSH -f100 BACKUP       will give up after 100 failures.
  323.  
  324.    ____________________________________
  325.    -t    Only create CRUSH archive if 5% improvement
  326.  
  327.         This  creates a CRUSH archive only if it can improve the archive size
  328.         by 5%, otherwise it creates a conventional archive. It invokes the -c
  329.         option,  which adds to the run time, as it needs to run the  archiver
  330.         without CRUSH for comparison.
  331.  
  332.    ____________________________________
  333.    -t<n> Only create CRUSH archive if "n"% improvement
  334.  
  335.         As "-t", but allowing the user to set the threshold e.g.
  336.  
  337.              CRUSH -t10 BACKUP        CRUSH only if 10% better
  338.  
  339.    ____________________________________
  340.    -r    Recurse subdirectories
  341.  
  342.         This  will search subdirectories from the specified directories, also
  343.         storing paths in the archive. Unlike PKZIP, CRUSH defaults to storing
  344.         pathnames  with the files. However  this is done in a very  efficient
  345.         manner and so does not significantly increase the archive size (PKZIP
  346.         uses  a space-consuming format for this e.g. searching a subdirectory
  347.         DOCUMENT\MYDOCS  with  100 files  would require an extra 1660  bytes,
  348.         whereas CRUSH would require just 16). Example:
  349.  
  350.              CRUSH -r BACKUP \WP\DOCS\*.WP *.TXT
  351.  
  352.         This will search \WP\DOCS and all its subdirectories for the filespec
  353.         *.WP,  and  the current  directory and its subdirectories for  *.TXT.
  354.         CRUSH will store the full path e.g. \WP\DOCS\HOME\DOC.WP etc.
  355.  
  356.         See  also the CRUSH option "-n" and UNCRUSH options "-i" and "-I" for
  357.         ignoring paths and drives.
  358.  
  359.  
  360.    __________________________________________________________________________
  361.    CRUSH Options                                                      Page  5
  362.  
  363.    ____________________________________
  364.    -:    Set range(s) of dates
  365.  
  366.         DATE  OPTIONS.  These  are  used  to specify a date  range  for  file
  367.         matching.  If  a  single  date  is specified then this  will  be  the
  368.         earliest  date  to be included.  If a second date is specified,  then
  369.         this  is  taken  as  the  as  the  end date. Dates can  be  mixed  in
  370.         "absolute" and "relative" format. The full syntax is:
  371.  
  372.                  [!]:[=]<date>
  373.  
  374.          Where:  !   inverts  the  meaning  of  the  range set.  e.g.  "range
  375.                      1st-2nd" becomes "outside 1st-2nd"
  376.  
  377.                  =   sets both the start and end date to the date following.
  378.  
  379.          and <date> can be:
  380.                                                                 Example:
  381.            DD/MM/YY  absolute UK date                           21/2/94
  382.            MM/DD/YY  absolute US date (CRUSH determines which)  2/21/94
  383.            YY/MM/DD  absolute JAPAN date ( " )                  94/2/21
  384.            DDMonYY   absolute date in alternative format        21feb94
  385.            DDMon     absolute date (current year)               21feb
  386.            -DD       number of days before current date, OR     -3
  387.            m-MM      number of months OR                        m-2
  388.            y-YY      number of years (truncates to 83 years)    y-1
  389.            .name     where date is taken from file/dir "name"   .LASTBAC
  390.  
  391.         The  four  date  formats  can be mixed, e.g.  -:y-2:-5  (or /:y-2:-5)
  392.         specifies  files  created/modified between  2 years and 5  days  ago.
  393.         -:y-99:5jan  will  select  all  files  created on or  before  5th Jan
  394.         (current  year).  -!:=-1 selects  all files except  yesterday's.  The
  395.         ".name"  option allows compression of files relative to the date  and
  396.         time of an existing file. The latter feature allows the user to issue
  397.         commands  such  as "compress  all files modified/created  since  last
  398.         backup", using commands such as:
  399.  
  400.              CRUSH -:.BACKTAG BACKUP
  401.              REM>BACKTAG
  402.  
  403.         The  REM>BACKTAG will create an empty file with the current date  and
  404.         time,  so that the next backup  will start with the date and time  of
  405.         that file.
  406.  
  407.         General Examples: (all use the archive name "BACK")
  408.  
  409.         CRUSH -:11feb BACK       Compressing  files  modified/created  on  or
  410.                                  after February 11th of this year.
  411.  
  412.         CRUSH -:-3 BACK          Files modified/created today or during the 3
  413.                                  previous days.
  414.  
  415.         CRUSH -:-0 BACK          As above, but today only.
  416.  
  417.         CRUSH -!:y-3 BACK        Not files created during the last 3 years.
  418.  
  419.         CRUSH -:m-4:m-3 BACK     Will compress files modified/created between
  420.                                  4 and 3 months ago.
  421.  
  422.    __________________________________________________________________________
  423.    CRUSH Options                                                      Page  6
  424.  
  425.    ____________________________________
  426.    -x    Exclude pathspecs
  427.  
  428.         In programs such as PKZIP and ARJ, the exclusion pathspecs can appear
  429.         in  any  position in the  command-line. With CRUSH they  MUST  appear
  430.         AFTER  the  archive name with  the other pathspecs. CRUSH limits  the
  431.         user to 300 exclusion filespecs.
  432.  
  433.         Examples: (pathspecs are all case-insensitive)
  434.  
  435.         CRUSH BACKUP *.EXE -xTEST*.* *.COM
  436.  
  437.         This  will compress all files matching *.EXE and *.COM, but not those
  438.         matching TEST*.*. The order of these filespecs is irrelevant.
  439.  
  440.         CRUSH -r BACKUP -xDOC\*.BAK -x*.TMP
  441.  
  442.         This  will  recurse, searching  for files to compress, but  excluding
  443.         files  that match the path and  name DOC\*.BAK, or the name *.TMP  in
  444.         any subdirectory.
  445.  
  446.         CRUSH -r BACKUP -x@NOTTHIS -x@ORTHIS
  447.  
  448.         This  will recurse, searching for file to compress, but excluding any
  449.         pathspecs in the response files NOTTHIS or ORTHIS.
  450.  
  451.    ____________________________________
  452.    -y    Answer YES to all questions
  453.  
  454.         This  will allow CRUSH to compress without pausing for queries,  such
  455.         as permission to overwrite an existing file.
  456.  
  457.    ____________________________________
  458.    -z    Add CRUSH archive comment
  459.  
  460.         This  will prompt the user for an archive comment to add to the CRUSH
  461.         file.  Ths will be displayed by UNCRUSH when uncrushing or  verifying
  462.         an archive.
  463.  
  464.         The  user  can  automatically  provide  a CRUSH comment  without  the
  465.         program pausing for input by using the DOS echo command. e.g.
  466.  
  467.              ECHO My Comment|CRUSH -z BACKUP
  468.  
  469.         which will give the archive the comment "My Comment".
  470.  
  471.    ____________________________________
  472.    -v    Show files for adding without CRUSHing
  473.  
  474.         This  will  show which  files CRUSH would compress  without  actually
  475.         compressing,  with a summary at the end. If the output is re-directed
  476.         to a file, then the re-directed file will hold a simple list of files
  477.         (equivalent to PKZIP option "-@") e.g.
  478.  
  479.              CRUSH -v BACK > LIST          Creating  a list of matching files
  480.                                            that would be archived.
  481.  
  482.         The archive name specified will be ignored.
  483.  
  484.    __________________________________________________________________________
  485.    CRUSH Options                                                      Page  7
  486.  
  487.    ____________________________________
  488.    -Ln   Set limit for files per archive
  489.  
  490.         This will allow the user to limit the number of files per archive. By
  491.         default CRUSH will limit each file to 1000 files, after which it will
  492.         create  multiple  archives. The user  can force CRUSH to set a  lower
  493.         limit.  This  has  the  advantage  of reducing  the  temporary  space
  494.         required  when  compressing  many  files.  It  also  creates  smaller
  495.         archives that can be more easily copied to floppy disk.
  496.  
  497.    ____________________________________
  498.    -n    Store files without paths
  499.  
  500.         This allows the user to prevent pathnames from being stored e.g.
  501.  
  502.              CRUSH -n BACKUP MYDOC\*.DOC
  503.  
  504.         would store files matching *.DOC, but without the path MYDOC\.
  505.  
  506.    ____________________________________
  507.    -Q    Query each file to be archived
  508.  
  509.         This allows the user to choose on-line which files are to be included
  510.         in the archive e.g.
  511.  
  512.              CRUSH -Qr DOC *.WP
  513.  
  514.         will  search recursively (-r) for  all files matching *.WP and  query
  515.         whether  each is to be added to the archive. The user has the  option
  516.         to accept or reject all the remaining files at any point, or to abort
  517.         the  compression.  This option provides  an easy way to  construct  a
  518.         response file, e.g. the following expanded example:
  519.  
  520.              CRUSH -Qr DOC *.WP *.TXT > SAVE
  521.  
  522.         would  allow  the user  to  select files for compression  while  also
  523.         creating a response file SAVE for future use, e.g. CRUSH DOC @SAVE.
  524.  
  525.    ____________________________________
  526.    -q    QUIET mode, no output
  527.  
  528.         This will run CRUSH without any display output, unless CRUSH needs to
  529.         prompt  the  user with a  question (inhibited by -y). This is  useful
  530.         where CRUSH is called within BAT scripts or another program.
  531.  
  532.    ____________________________________
  533.    -a    Create an additional index
  534.  
  535.         The price paid for creating CRUSH archives is that, although programs
  536.         such  as PocketD Plus can still browse the contents of the  archives,
  537.         searching for files inside CRUSH archives would be prohibitively slow
  538.         if  each  CRUSH  archive  had to be temporarily  decompressed  whilst
  539.         scanning.  The  -a option will  force CRUSH to create  an  additional
  540.         external  index with the extension ".CRI". PocketD Plus will use this
  541.         for  searching (and also browsing)  to allow files to be searched  or
  542.         selected  very  quickly. This  will  have  an associated  disk  space
  543.         overhead, but this would not be significant where the CRUSH saving is
  544.         already substantial (i.e. more than 10%)
  545.  
  546.    __________________________________________________________________________
  547.    CRUSH Options                                                      Page  8
  548.    ____________________________________
  549.    -e    Use the existing archive for comparison
  550.  
  551.         This  will allow the user to test the compression improvement without
  552.         re-creating  the  original archive  for comparison. CRUSH will  still
  553.         need  the files for compression to be available in uncompressed form.
  554.         The  option  -c must also be  used. Make sure that the archive to  be
  555.         compared is not already a CRUSH archive!
  556.    ____________________________________
  557.    -C    Colour off
  558.  
  559.         This will use whatever colour is currently in use rather than forcing
  560.         white on blue. This normally means white on black.
  561.  
  562.    ____________________________________
  563.    -C<n> Set colour
  564.  
  565.         This  will  allow the user to  override the colour of the  bar  graph
  566.         displayed  during compression. "n" is the normal colour attribute  in
  567.         the range 0 to 7.
  568.    ____________________________________
  569.    -s    Minimise temporary disk space (slow!)
  570.  
  571.         CRUSH  will  normally use about  25% extra temporary disk space  when
  572.         running  with the -f optimise  option. If you do not have  sufficient
  573.         space  to run CRUSH with this option, then "-s" will reduce the space
  574.         CRUSH uses, but at the cost of a longer compression time. This option
  575.         is  not  recommended for routine  use unless you are normally  always
  576.         short  of disk space. CRUSH does not make use of extended or expanded
  577.         memory.
  578.    ____________________________________
  579.    -i<n>  Control information type
  580.  
  581.         By default, CRUSH will display a bar graph.
  582.  
  583.         If -i1  is  specified,  a  more  comprehensive table  will  be  shown
  584.         instead, giving more information.
  585.  
  586.         If -i2  is specified, CRUSH will still show a bar graph, but when  -c
  587.         is  selected it will simultaneously plot the file size, archive  size
  588.         and  CRUSH size, rather than just archive and CRUSH. This will  allow
  589.         all  three sizes to be compared, but will give limited resolution  of
  590.         the difference between just the archive and CRUSH.
  591.  
  592.         Note: CRUSH plots to a resolution of 1 in 114 (using the special half
  593.         width character "221")
  594.  
  595.    ____________________________________
  596.    -2    Set display of times to 24 hour clock
  597.  
  598.         This will force the display of 24 hour clock times instead of 12 hour
  599.         during browsing.
  600.  
  601.  
  602.    __________________________________________________________________________
  603.    The UNCRUSH Program                                                Page  9
  604.  
  605.  
  606.    The  UNCRUSH program is used for uncompressing or viewing CRUSH  archives.
  607.    It requires access to the corresponding uncompressing programs used by the
  608.    base  archiver e.g. PKUNZIP for PKZIP files and ARJ for ARJ files.  Unlike
  609.    CRUSH,  UNCRUSH is copyrighted FREEWARE. You may use and distribute freely
  610.    providing  that  its intended  use  is not mis-represented and it  is  not
  611.    modified in any way.
  612.  
  613.    USAGE:    UNCRUSH [opts] archive [destination] [pathspecs] [>outfile]
  614.  
  615.    Where:
  616.  
  617.    [opts]         These are options that control UNCRUSH's behaviour. e.g. -v
  618.                   causes  CRUSH to display the names of the compressed  files
  619.                   without  uncompressing them. These can be grouped  together
  620.                   for brevity or specified one-by-one, e.g.
  621.  
  622.                   -ioq      is equivalent to:      -i -o -q
  623.  
  624.                   The  user  can  choose  to  use  "/" in place  of  "-"  for
  625.                   preference e.g. -i and /i are equivalent.
  626.  
  627.    archive        This  is  the name of  the archive to be uncompressed  e.g.
  628.                   BACKUP  or  BACKUP.001 etc.  If no extension is  specified,
  629.                   then  UNCRUSH will look  for known extensions that use  the
  630.                   specified  name in the order CRU, CRI, ZIP, ARJ, LZH,  ZOO,
  631.                   HA   then  UC2.  UNCRUSH  cannot  uncompress   files   with
  632.                   non-standard  extensions.  Such  files  will  need  to   be
  633.                   re-named  before using UNCRUSH, or uncompressed first using
  634.                   PKUNZIP etc.
  635.  
  636.    [destination]  This  is  the  destination  path  where  files  are  to  be
  637.                   uncompressed.  This  must be  terminated by ":" or  "\"  to
  638.                   allow  it to be  distinguished from normal pathspecs  (same
  639.                   operation  as  PKUNZIP). Paths  within the archive will  be
  640.                   combined with any specified destination path, e.g.
  641.  
  642.                        CRUSH BACKUP \WP\*.DOC            followed by:
  643.  
  644.                        UNCRUSH BACKUP MYDOC\HOME\
  645.  
  646.                   will uncompress to MYDOC\HOME\WP\*.DOC
  647.  
  648.    [pathspecs]    These  are the files to be uncompressed (defaulting to  all
  649.                   files). These can include paths e.g.
  650.  
  651.                        UNCRUSH SAVE \WP\*.DOC *.TXT
  652.  
  653.                   This will uncompress pathspecs from SAVE matching \WP\*.DOC
  654.                   and  any pathspecs with the filespec *.TXT. i.e. *.TXT will
  655.                   match  *.TXT and \WP\*.TXT,  but \WP\*.DOC would not  match
  656.                   *.DOC.  UNCRUSH  can  be  set to optionally  ignore  stored
  657.                   pathnames. As  with CRUSH, UNCRUSH uses proper rather  than
  658.                   DOS wildcards (See CRUSH for details).
  659.  
  660.    [>outfile]     UNCRUSH  will allow the user to create response or  summary
  661.                   files using re-directed output. See -v, -V and -l.
  662.  
  663.  
  664.    __________________________________________________________________________
  665.    UNCRUSH Options:                                                   Page 10
  666.  
  667.    ____________________________________
  668.    -v    Display without uncompressing
  669.  
  670.         This  will cause UNCRUSH to  report the pathspecs inside the  archive
  671.         without  uncompressing.  This gives  a sorted output reporting  size,
  672.         date  and time of the file stored. Attributes are not displayed, even
  673.         though stored.
  674.  
  675.    ____________________________________
  676.    -V    Display archive comment only
  677.  
  678.         This  will  simply display the  archive comment and the name  of  the
  679.         archive.  This  is  useful  for  cataloging purposes,  allowing  this
  680.         information to be appended to a reference file e.g.
  681.  
  682.              UNCRUSH -V FRED >> REFFILE
  683.  
  684.    ____________________________________
  685.    -o    Overwrite files without query
  686.  
  687.         This  will force UNCRUSH to overwrite files regardless of whether the
  688.         file  already exists. UNCRUSH would normally inform the user if files
  689.         already  exist with an option to skip or overwrite the file.  UNCRUSH
  690.         helpfully also informs the user whether the file to be overwritten is
  691.         NEWER, OLDER, IDENTICAL or SAME DATE, DIFFERENT SIZE.
  692.  
  693.    ____________________________________
  694.    -u    Uncompress NEWER or NEW files
  695.  
  696.         This will only uncompress NEW or NEWER files from within the archive.
  697.         This will still prompt for overwrites, unless -o is also specified.
  698.  
  699.    ____________________________________
  700.    -a    Uncompress NEW files
  701.  
  702.         This will only uncompress NEW files.
  703.  
  704.    ____________________________________
  705.    -i    Ignore paths in CRUSH file
  706.  
  707.         This  will  ignore all  paths inside the archive, therefore  possibly
  708.         generating  an  overwrite  warning if WP\FRED.DOC and  \DOC2\FRED.DOC
  709.         exist in the same CRUSH file.
  710.    ____________________________________
  711.    -I    Only ignore drives in paths
  712.  
  713.         As "-i", but only ignoring drive names stored in the CRUSH file. This
  714.         accommodates situations where a CRUSH command such as:
  715.  
  716.              CRUSH BACKUP S:\WP\*.DOC
  717.  
  718.         is  run,  storing a network drive  letter with the path. A user on  a
  719.         non-networked  PC would then be  unable to uncompress the CRUSH  file
  720.         without losing the path. The -I option allows this to be overridden.
  721.  
  722.  
  723.  
  724.    __________________________________________________________________________
  725.    UNCRUSH Options                                                    Page 11
  726.  
  727.    ____________________________________
  728.    -q    Quiet mode: No output at all
  729.  
  730.         This  will  inhibit  all  output from UNCRUSH, except  where  UNCRUSH
  731.         queries an overwrite.
  732.  
  733.    ____________________________________
  734.    -z    Only suppress output of archiver
  735.  
  736.         This  will only suppress the output of the unarchiver run by UNCRUSH.
  737.         e.g.  UNCRUSH  may call  PKUNZIP which normally displays  information
  738.         while  uncompressing.  This option  will inhibit this. This  may  not
  739.         always  be  safe if the  unarchiver has an unusual problem, in  which
  740.         case the error message the archiver displays will not be visible.
  741.  
  742.    ____________________________________
  743.    -e    Extract even if not CRUSH archive
  744.  
  745.         This  is convenient if the user  wants to use UNCRUSH to process  any
  746.         archives,  whether  CRUSH  or  not. This will support  any  pathspecs
  747.         given, but will not support specified destination directories.
  748.  
  749.    ____________________________________
  750.    -l    Only display a simple file list
  751.  
  752.         This  will replace the normal display  by a simple list of files  and
  753.         pathnames.  This is most usefully used with -v to generate a response
  754.         file.
  755.  
  756.    ____________________________________
  757.    -2    Display times as 24-hour clock
  758.  
  759.         This  is only a cosmetic detail, but many users are firmly  committed
  760.         to 12 or 24 hour clocks, in which case UNCRUSH will allow the default
  761.         12 hour clock file times to be replaced by a 24 hour clock times.
  762.  
  763.  
  764.    __________________________________________________________________________
  765.    Worked Examples                                                    Page 12
  766.  
  767.  
  768.    There  are many routine archiving tasks that CRUSH could be used for.  The
  769.    following  selects  a few that  either take particular advantage of  CRUSH
  770.    facilities,  or that may be particularly relevant when first using  CRUSH.
  771.    For simple examples see "Getting Started" at the beginning of this manual.
  772.  
  773.    ____________________________________
  774.    Generating a Response File for Future Backups
  775.  
  776.    Most archivers allow the user to use a "response" file containing file and
  777.    path  specifications  to  be  used  in addition to (or instead  of)  CRUSH
  778.    command-line  parameters.  This is convenient  when a list is very  large.
  779.    CRUSH  allows the user to choose files for archiving on-line using the  -Q
  780.    option. e.g.
  781.  
  782.         CRUSH -rQv TEST *.C *.ASM >RESPLIST
  783.  
  784.    This  will search all subdirectories (-r), querying each file found  (-Q),
  785.    but  without actually creating an archive (-v). The output is directed  to
  786.    the  file RESPLIST. The user can then use this for future CRUSH  archiving
  787.    in a command of the form:
  788.  
  789.         CRUSH BACKUP @RESPLIST
  790.  
  791.    ____________________________________
  792.    Backing up to multiple disks
  793.  
  794.    Because  of  the  way  that  CRUSH works, the incremental  creation  of  a
  795.    multi-disk  archive is not practical. However you can store a large  CRUSH
  796.    archive  on multiple disks by using the facilities of your archiver,  e.g.
  797.    PKZIP -& -e0 A:MULTI CRUSHED.ZIP   This will create a multi-part archive.
  798.  
  799.    ____________________________________
  800.    Performing Archival Backups
  801.  
  802.    CRUSH's  option  to  backup files  dated  on or after a  named  file  (not
  803.    supported  by PKZIP etc.) makes it possible to create backups of all files
  804.    modified  since  the previous backup.  This can be combined  with  CRUSH's
  805.    ability to automatically generate a unique filename, as follows:
  806.  
  807.    BACK.BAT containing:
  808.  
  809.         CRUSH -r:.LASTBAC [] *.DOC *.C *.H
  810.         IF ERRORLEVEL 1 ECHO Error occurred!
  811.         IF ERRORLEVEL 1 GOTO EXIT
  812.         REM>LASTBAC
  813.         :EXIT
  814.  
  815.    The  "[]"  parameter replaces  the  normal archive name by a  unique  name
  816.    generated  using the current date and time (e.g. 1CD29E33.ZIP, which  uses
  817.    the  hexadecimal value of the  combined 32-bit date and time). CRUSH  will
  818.    then  search  all subdirectories for  all files matching *.DOC *.C or  *.H
  819.    modified  since the date and time of the file LASTBAC and add them to  the
  820.    archive. If the archive step fails (e.g. out of memory etc.), the error is
  821.    reported and the command sequence ended. If successful, then "REM>LASTBAC"
  822.    will  create an empty file with the current date and time for reference by
  823.    the  next  backup. On the next  occasion that the command "BACK"  is  run,
  824.    CRUSH will only search for files modified since the last backup.
  825.  
  826.  
  827.    __________________________________________________________________________
  828.    Worked Examples                                                    Page 13
  829.  
  830.  
  831.    ____________________________________
  832.    Converting all Existing Archives to CRUSH
  833.  
  834.    This  would  be a potentially  mammoth task that would benefit  from  some
  835.    automation, unless you are willing to convert each file one-by-one. A good
  836.    choice for this task would be PocketD Plus v4.1 (D.EXE), as follows:
  837.  
  838.         MD TMP
  839.         CD TMP
  840.         D .ZIP/W[PKUNZIP -d $w//CRUSH -ert $w//PAUSE//D /zd]Rq
  841.  
  842.    This  example  converts ZIP  files  by running a command sequence  of  the
  843.    following type for each archive found:
  844.  
  845.         PKUNZIP -d \C\BATS.ZIP       Uncompress with subdirectories into TMP.
  846.         CRUSH -ert \C\BATS.ZIP       (See below).
  847.         PAUSE                        Allow inspection of result.
  848.         D /zd                        Delete uncompressed files/dirs from TMP.
  849.  
  850.    The CRUSH command compares the new CRUSH archive with the existing archive
  851.    (-e),  but  will  not replace  it  unless the new archive is at  least  5%
  852.    smaller  (-t). The files originally compressed may also include paths, and
  853.    so  CRUSH uses -r to search all uncompressed subdirectories created by the
  854.    "PKUNZIP -d"  command.  For those  with a cautious disposition, the  D.EXE
  855.    command-line  includes  the "q" option,  allowing the user to  confirm  or
  856.    select  each archive to be processed. The PAUSE command allows the user to
  857.    examine  the output of CRUSH before the command "D /zd" deletes the  files
  858.    and subdirectories temporarily uncompressed.
  859.  
  860.  
  861.    ____________________________________
  862.    The UNDO and UNDO2 Programs
  863.  
  864.    The  registered version of  CRUSH.EXE comes with two additional  programs,
  865.    UNDO.EXE and UNDO2.EXE, which provide tiny alternatives to UNCRUSH.EXE for
  866.    unpacking an uncompressed CRUSH archive.
  867.  
  868.    USAGE:    UNDO crushname
  869.              UNDO2 crushname
  870.  
  871.  
  872.    UNDO.EXE  is 3.8k and ignores any path information. UNDO2.EXE is 4.3k  and
  873.    will  also  re-construct embedded  paths. These programs can  be  included
  874.    within  distribution  archives  that  hold CRUSH archives,  providing  the
  875.    smallest  package that will allow UNCRUSHing without additional  programs.
  876.    Ideally  UNDO.EXE  and  a  CRU  archive could be embedded  inside  an  SFX
  877.    archive, e.g. using LHA:
  878.  
  879.         CRUSH -l DEMO ! *.DOC
  880.         LHA A DEMO UNDO.EXE
  881.         LHA S DEMO
  882.  
  883.    The "!" parameter above is the file "!" which contains a message displayed
  884.    when  the  archive DEMO.EXE is  run.  This can contain details of  how  to
  885.    uncompress  the  CRUSH archive, e.g.  "Unpack the CRUSH archive by  typing
  886.    UNDO DEMO.CRU after the DEMO.EXE executable has finished decompression."
  887.  
  888.    The  user  may  choose  to  rename  UNDO2.EXE to UNDO.EXE  or  some  other
  889.    convenient  name.  Note  that  distribution of CRUSH archives  requires  a
  890.    distribution licence (see REGISTER.DOC).
  891.  
  892.  
  893.    __________________________________________________________________________
  894.    Configuration                                                      Page 14
  895.  
  896.  
  897.    __________________________________
  898.    Configuration of CRUSH and UNCRUSH
  899.  
  900.    CRUSH  and  UNCRUSH  can  be  configured using environment  variables,  as
  901.    follows:
  902.  
  903.    The CRUSH variable:
  904.  
  905.         This  is particularly important if you decide not to use the  default
  906.         PKZIP used by CRUSH e.g.
  907.  
  908.              SET CRUSH=-j
  909.  
  910.         will force CRUSH to always use ARJ by default. Other options can also
  911.         be added e.g.
  912.  
  913.              SET CRUSH=-jCc
  914.  
  915.         will  also  force  the  normal  display  colour and  always  force  a
  916.         comparison between ARJ and CRUSH when creating a CRUSH file.
  917.  
  918.  
  919.    The UNCRUSH variable:
  920.  
  921.         This is less critical, but an example usage might be:
  922.  
  923.              SET UNCRUSH=-2e
  924.  
  925.         which  would use the 24 hour clock and also allow UNCRUSH to be  used
  926.         for uncompressing ordinary PKZIP, ARJ, LHA, ZOO, HA and UC archives.
  927.  
  928.  
  929.    Using CRUSH with other archivers:
  930.  
  931.         The  user can allow CRUSH to use other archivers by configuring using
  932.         environment variables, as follows:
  933.  
  934.              SET CRADD=pkzip -ex %s %s %s} nul
  935.              SET CRMOV=pkzip -mex %s %s} nul
  936.              SET CREXT=.ZIP
  937.  
  938.         These examples show how PKZIP would be added to CRUSH, if it were not
  939.         already  supported.  This  overrides  the default archiver.  The  "}"
  940.         symbol  is  replaced  by  ">"  when running. The user  can  use  this
  941.         facility to change the default options used by the archiver they wish
  942.         to use, e.g. to turn off full compression etc.
  943.  
  944.         UNCRUSH is configured in much the same way, as follows:
  945.  
  946.              SET CRUN=pkunzip %s
  947.  
  948.  
  949.    Environment  variables should be set in your AUTOEXEC.BAT, otherwise  they
  950.    will be lost next time the system is re-booted.
  951.  
  952.    __________________________________________________________________________
  953.    Technical Details                                                  Page 15
  954.  
  955.  
  956.    This  information is only of interest to 3rd party developers who may want
  957.    to provide support for CRUSH archives.
  958.  
  959.    __________________________________
  960.    Structure of CRUSH file (.CRU)
  961.  
  962.    Address Length in Bytes   Description
  963.  
  964.    000000  14               CRUSH v1.8
  965.    00000E  2                Chksum
  966.    000010  2                Number of paths (only 0-255 supported)
  967.    000012  2                Number of files
  968.    000014  2                Reserved
  969.    000016  4                Totalsize of files + header length(26)
  970.    00001A  "totalsize"      Data
  971.  
  972.    ; directory held at offset "Totalsize of files + header length(26)"
  973.    000000  1                Path number
  974.    000001  1                Attribute
  975.    000002  2                Time
  976.    000004  2                Date
  977.    000006  4                Size
  978.    00000A  13               Name
  979.    000017  1                Reserved
  980.    (above repeated "Number of files" times)
  981.  
  982.    ; "n" Paths
  983.    path1                    Each terminated by NULL
  984.    path2
  985.    ..
  986.  
  987.    ; Archive comment
  988.    comment                  Terminated by NULL
  989.  
  990.    __________________________________
  991.    Structure of CRUSH fast Index (.CRI)
  992.  
  993.    As CRU but with Totalsize field set to 0 + Headerlen(26)
  994.  
  995.    000016  4                Header length(26)
  996.  
  997.  
  998.