home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OS9_6X09 / ARCHIVERS / lha211c.lzh / notes.doc < prev    next >
Text File  |  1994-05-14  |  17KB  |  341 lines

  1. /* 
  2.  * notes.doc file:
  3.  */
  4. /*
  5.  * LHA v2.11 Copyright (c) Haruyasu Yoshizaki, 1988-91
  6.  *
  7.  * Modified for CoCo OS9.
  8.  * Modifications for LHA OS9 v2.11c (c) 1993-94 by E. M. Krenciglowa
  9.  *
  10.  *
  11.  *   Gene Krenciglowa
  12.  *   April, l994
  13.  */
  14.  
  15.  
  16. -------------------------------------------------------------------------
  17. NOTES ON OS9 LHA
  18. -------------------------------------------------------------------------
  19.  
  20. **** First a quick summary of how OS9 LHA differs from the original LHA
  21.      documentation file 'lha211.doc' in 'doc211.lzh'.
  22.      
  23.      There is no -s command or anything to do with self-extracting archives
  24.      in general.  No tell operator '!', environment variables or
  25.      'authenticity' support either.  Omit the entire section 2: SFX,
  26.      Self-Extracting archives.
  27.      
  28.      There is no -i option or provision for switching the switch character.
  29.      The switch character is '-' and path delimiter is '/'.  Filenames
  30.      beginning with a leading '-' or '@' cannot be processed.  The range for
  31.      any unique name generation with the -m2 option is 0 - 99.  The suffix
  32.      list used in the -z2 option is:
  33.      
  34.           .pak, .zip, .zoo, .arc, .lzh, .lzs, .lha, .arj, .ar, .Z
  35.  
  36.      With OS9 LHA v2.11c if a recursive collection of files is specified,
  37.      then the order of the files as they appear in the archive differs
  38.      from IBM LHA (and OS9 LHA v2.11b).  For a recursive collection with
  39.      a filespec something like,
  40.      
  41.           lha u -r1x arcfile /d1/ *.c *.h
  42.  
  43.      then at any given directory level, all *.c and *.h files are archived
  44.      before proceeding to the next directory level.  On IBM LHA, the
  45.      collection is first all *.c files in all directory levels, then the
  46.      same for *.h files.
  47.  
  48.      The uppercase options are all OS9 specific.
  49.      
  50.      The -a option is somewhat specific to IBM archives, but does come into
  51.      use.  If the archive is an OS9 archive (OS_ID of '9'), extraction is
  52.      not really dependent on the -a option.  Extraction is made if there is
  53.      no conflict with an existing file (or directory).  The file attributes
  54.      are processed according to the following classes:
  55.      
  56.                                                        Value on IBM
  57.      
  58.           FA_DIREC       if directory {                      16
  59.                              {if read and write}
  60.                            else
  61.                              {none}
  62.                          }
  63.                          else {
  64.           FA_RDONLY        if read and not write              1
  65.           FA_ARCH          else if read and write            32
  66.                            else {none}
  67.  
  68.      The above is how OS9 attributes are mapped for processing.  An obvious
  69.      point, a read attribute must be present.  The OS9 file attribute used
  70.      is an image of the attribute in the file descriptor.  Any directories
  71.      created have the standard attributes (d-ewrewr), so any single user 's'
  72.      attribute or other attribute specification in the original directory is
  73.      lost.  If the archive is an IBM archive, then -a option should behave
  74.      as described in the original documentation.
  75.  
  76.      The IBM LHA uses -lh5- compression which is superior to the -lh1-
  77.      compression used in OS9 LHA.  The -o option on IBM, sets up -h0 and
  78.      -lh1- compression.  There are some typos in lha211.doc: -o sets up -h0,
  79.      the default header is -h1 and -m1 gives the newest file.
  80.  
  81.      File and path name conventions, including case, are as appropriate for
  82.      OS9, so this differs from IBM LHA.
  83.  
  84. **** OS9 LHA can be used on any valid .lzh archive.  For example, archives
  85.      produced by IBM LHA can be update also (not just extracted), but
  86.      check out the old style -o option for generic level-0 headers and
  87.      -Y option for lev-0, lev-1 and lev-2 headers.
  88.  
  89. **** Being a computer program, OS9 LHA has checks on the validity of the
  90.      archive data.  If invalid data is detected, there is an immediate exit
  91.      with a 'Broken archive' message.  That's assuming, of course, that the
  92.      invalid data does not cause a crash.  There is one exception to this. 
  93.      If the broken archive is thought to be an LZH10 'extended' header 
  94.      archive, only the list and test commands are enabled.  For any other
  95.      command, there is an exit along with a message informing the user of an
  96.      option to fix the archive.  OS9 LHA will not automatically fix it,
  97.      rather this being left completely at the user's option.
  98.  
  99. **** In the update family of commands, if you want path information stored
  100.      in the arcfile then use the -x option.  Also, note that the base
  101.      directory path is not stored, so that
  102.      
  103.           lha u arcfile testdir/  -x
  104.      and, lha u arcfile testdir/* -x
  105.  
  106.      are different.  Generally, absolute paths should not be used so that
  107.      form
  108.  
  109.           lha u arcfile /d1/   testdir/* -x
  110.  
  111.      is better form than
  112.  
  113.           lha u arcfile /d1/testdir/*  -x
  114.  
  115.      The latter form should be avoided, although OS9 LHA does filter
  116.      absolute path parts out.
  117.  
  118. **** Files can be collected recursively from directories with two different
  119.      kinds of recursion, -r1 and -r2.  Use:
  120.  
  121.           lha u -xr2 arcfile   /d1/     
  122.  
  123.      to duplicate the directory tree structure of the disk in /d1.  Note
  124.      that having filespec with -r2 does not behave as expected, so use only
  125.      the form shown above.  Actually, a filespec goes over to a 'dirspec'
  126.      and -r2 gives all files built from bdir/dirspec.
  127.      
  128. **** File collection is based on the file time stamp (OS9 last modified time).
  129.      If your system does not maintain meaningful file time stamps, then
  130.      explore the -c option to turn this off.  Bad file time stamps are mapped
  131.      to Jan 1, l980 for MSDOS time and Jan 1, 1970 for UNIX time.
  132.  
  133. **** The old style -o option generates a generic level-0 header with no OS9
  134.      specific information included.  A level-1 header (-h1) is the default.
  135.      The level-0, level-1 and level-2 headers generated with the -h0, -h1
  136.      (default), -h2 options all contain OS9 specific information, namely
  137.      the CoCo/OS9 extended header termed 'ccxhdr'.  The -o and -h0 options
  138.      are different.  The -h0 additionally contains an OS9 specific
  139.      simplified header extention.
  140.  
  141. **** For the list command, if the archive is made by OS9 LHA, the P column
  142.      indicates the pack level 1 to 9 or 0 for stored.  The file attributes
  143.      column shows OS9 attributes, MSDOS or generic attributes, as appropiate.
  144.      Except for possible case conversions and directory delimiter mapping,
  145.      the list command shows filenames as they appear in the arcfile, and
  146.      before the filenames are mapped into OS9 filenames.  In processing
  147.      commands however, OS9 LHA uses the mapped names.  So, to process a file
  148.      which appears with the filename '!', say, in a list command, use the
  149.      filename '_' which likely is what '!' is mapped into.
  150.  
  151. **** A shortform for single file archives is introduced as a special case of
  152.      the '@filelist' feature of LHA.  For the full form,
  153.  
  154.          lha u path/filename filename
  155.  
  156.      the shortform,
  157.  
  158.           lha u path/filename @
  159.  
  160.      may be used instead.  The '@' would normally be used in the form
  161.      '@cmdfile' to get the command line from the 'cmdfile'.  The '@' used
  162.      alone specifies that the filespec is to be taken as the filename part
  163.      of the arcfile name.   This seeming oddity reflects back to the design
  164.      in the Unix 'compress' file compressor.  Here, the form
  165.           
  166.           lha m filename @
  167.  
  168.      replaces the uncompressed file 'filename' with the compressed image
  169.      'filename.lzh'.
  170.  
  171. **** On dearchiving, with v2.11c processing ends when the filespec list is
  172.      known to be exhausted, which applies only if the filespec list does not
  173.      contain wildcards and the -x option is not specified.  The -x option is
  174.      implicit with the x and v commands.  This is generally desirable as the
  175.      whole archive is not forced to be scanned, for example, when extracting
  176.      one small 'readme' file at the beginning of an archive containing a
  177.      hundred, say, member files .  On extract, specifying a bogus -r option
  178.      is used to override this forcing the entire arcfile to be scanned.
  179.  
  180. **** Below is a simple shell script to convert en masse a given file archive
  181.      type to .lzh archives.
  182.  
  183.           * Convert .zip to .lzh:  all .zip in data dir to /d1/...lzh
  184.           * The directory TT must already exist on ramdisk /rd.
  185.  
  186.           dr -p *.zip ! call -x "tfr /rd $.zip; (chd /rd/TT; unzip -d /rd/$;
  187.            lha m -h0P9Ytmz2xr2 /d1/$ </w; del /rd/$.zip ! shell t)" ! shell t
  188.  
  189.      Note that the entire command 'dr -p *.zip ... ! shell t' must be on a
  190.      single line.  An extra carriage return is present above for the sake
  191.      of the listing.  Here, /rd is the ramdisk, the 'dr -p' is an 'ls' type
  192.      directory lister producing one filename per line, 'tfr' is a form of
  193.      file copy, and repetative shell commands are generated with the 'call'
  194.      available from CoCo BBSes.
  195.  
  196.      The above script is meant as a guide and can be tailored to other file
  197.      archive types.  While such a script can get the job done, it is by
  198.      no means particularly elegant or even bullet proof, so if used exercise
  199.      caution.
  200.  
  201. **** A custom rename command 'rnm_lha' is supplied merged together with
  202.      the 'xlh' module in the 'xlh' file.  For OS9 LHA use, the 'xlh' file
  203.      should not be altered.  However, the 'rnm_lha' may be used on its
  204.      own right.  The 'rnm_lha' is supplied as it is faster than the stock
  205.      'rename' module, does not alter the file time stamp, and allows OS9
  206.      LHA to pre-load and link the needed modules (xlh and a rename) as
  207.      a single file.  The 'rnm_lha' is functionally similar to the stock
  208.      'rename' command, except that the form is
  209.  
  210.           rnm_lha oldname newname
  211.      or,  rnm_lha path/oldname path/newname
  212.  
  213.      and the file time stamp is unaltered.  If a path is present, the
  214.      same path must be present in both the old and new name parts.
  215.  
  216.  
  217. ---------------------------------------------------------------------------
  218. OS9 OPTIONS
  219. ---------------------------------------------------------------------------
  220.  
  221.      The uppercase options are all OS9 specific.
  222.      
  223. **** The -Pn specifies a pack level criteria for the -lh1- compression
  224.      scheme.  A -P0 is the same as -z1, Store method.  A -P9 is full -lh1-
  225.      compression.  The default pack level is -P6 and represents a middle
  226.      ground compromise between speed and compression efficiency.  From
  227.      limited testing and between -P1 (fastest) and -P9 (best compression),
  228.      there is a 5% to 15% difference in the compressed size and a factor of
  229.      two difference in compression speed.  The default -P6 is half way
  230.      between in terms of speed and -P6 gives about a 1% difference in
  231.      compressed size compared with -P9.  This is based on limited testing
  232.      and the timing and compression performance is for raw compression (xlh
  233.      executing), which does not include the actual size of headers, file
  234.      information gathering time etc.
  235.  
  236. **** The text conversion option -A is fully functional.  MSDOS (CR LF) and
  237.      Unix (LF) end-of-line marks are converted to OS9's (CR).  The tab
  238.      character is expanded to spaces according to the tab stop option
  239.      -Tnn (default nn=4).  The CR character and ascii characters (decimal
  240.      values >= 32 and < 128) are passed unaltered.  All other character
  241.      are converted to a space (decimal 32).
  242.  
  243.      Of course, the -A option should ONLY be used with TEXT files.
  244.  
  245. **** File names are mapped into lower case characters and directory names
  246.      are mapped to upper case, if the arcfile OS_ID is of the MSDOS family. 
  247.      That is, if the arcfile is made on MSDOS, then case conversion takes
  248.      place.  Use the -U option to suppress the case conversion in file
  249.      names.  If the arcfile is made on Unix, OSK, OS9, for example, then
  250.      there is no case conversion.  This is for lev-1 and lev-2 where an
  251.      OS_ID is present.  For lev-0, lower case conversion takes place except
  252.      for OS9 LHA archives.
  253.  
  254. **** The default filename mapping is done through an f$prsnam system call
  255.      algorithm.  Note that the stock rename command may be used to change a
  256.      filename.  If a replacement (but otherwise Microware compatible)
  257.      f$prsnam module is installed, then non-standard OS9 (but acceptable by
  258.      f$prsnam) filenames may be generated.  The -L option forces the
  259.      generation of legal OS9 filenames.  The -L algorithm is as follows.  If
  260.      the first character is not alphabetic, prefix the filename with the
  261.      character 'x'.  Then, any character which is not alphanumeric, '.' or
  262.      '_' is replaced by '_'.  The default f$prsnam algorithm is similiar,
  263.      except that replacement by an '_' takes place only if the character is
  264.      not acceptable to the f$prsnam installed.  The f$prsnam algorithm
  265.      duplicates the -L option for legal OS9 filename mapping when the
  266.      original Microware f$prsnam is installed.  
  267.  
  268.      In any case, the total length of the pathname recorded in the arcfile
  269.      never increases in the mapped pathname.  If the mapping should lead
  270.      to an increase in the total length, the mapped pathname is truncated
  271.      to the original total length.
  272.  
  273. ---------------------------------------------------------------------------
  274. ADDITIONAL OS9 OPTIONS
  275. ---------------------------------------------------------------------------
  276.  
  277.      There are additional OS9 options that are not shown on the usage screen.
  278.  
  279. **** Except for -o (old style) option, the default is that a ccxhdr extended
  280.      header is used.  The -Y option disables the ccxhdr on both read and
  281.      write.  With -h0, OS9 specific information is still left in the lev-0
  282.      header in simplified way.  This is to allow other OS9 lzh processors to
  283.      pick up OS9 information from OS9 LHA produced archives without the
  284.      complexity of the ccxhdr extended header.  This should also allow
  285.      greater compatibility with older, non-OS9, lzh processors.  The -h0
  286.      option is strongly recommended, atleast at the present time, for any
  287.      archives intended for general distribution to the OS9 community.  At
  288.      present, neither UNLZH nor LZH10 process this OS9 specific information,
  289.      principally the file attribute and owner id.
  290.  
  291. **** The timezone option -Znn is for conversion of local time, what the
  292.      clock on the wall says, and Greenwich mean time (GMT), what a clock
  293.      reads in Greenwich (London, England).  The GMT is the reference used
  294.      in UNIX time which is the time used in lev-2 headers.  The timezone
  295.      factor only is important for lev-2 headers and only if the archive
  296.      is processed on another system, like IBM.  All that happens is that
  297.      the file time stamp may be a few hours off when processed on another
  298.      system.  The default timezone is Eastern Standard Time (EST) which
  299.      has a timezone value of 5 (ie -Z5).  The timezone value increases
  300.      by 1 for each timezone crossed as you travel west.  I am not sure
  301.      what happens at the International Dateline.
  302.  
  303. **** The use of the -F option for fixing broken LZH10 'extended' header
  304.      archives is completely at the user's option.  If not otherwise specified,
  305.      an attempt is made to generate the default OS9 LHA level-1 archive, so
  306.      be forwarned that LZH10 cannot process these at present.  OS9 LHA
  307.      level-1 archives, being compliant, are processed just fine by UNLZH7. 
  308.      However, if the -o or -h0 option is used, then an attempt is made to
  309.      generate a level-0 which should be okay to both LZH10 and UNLZH7.
  310.  
  311. ---------------------------------------------------------------------------
  312. HEADERS
  313. ---------------------------------------------------------------------------
  314.  
  315. **** Headers?  What's a header?  What's the difference?  The .lzh file
  316.      format is somewhat complicated by it's amorphous nature.  For some
  317.      reason, the LHA author, H. Yoshizaki, has not moved over to one
  318.      and only one header format for new archives.  Backward compatibility
  319.      generally involves support for extraction of old archives with their
  320.      various headers and compression methods.
  321.  
  322.      The main difference is that the lev-0 header is restricted in size
  323.      to 255 bytes and a 8 bit header check sum is used as a basic check
  324.      on the data.  For lev-1 and lev-2, the header sizes larger than
  325.      255 bytes are possible and a 16 bit CRC is used to check header
  326.      integrity.  The lev-2 header, it turns out, is the simplest and
  327.      has the most security for detection of bad data.
  328.  
  329.      In practical terms, unless pathnames get over 200 characters or so,
  330.      the 255 byte restiction on lev-0 is not so serious.  However, the
  331.      16 bit header CRC is very important from the point of view of an
  332.      internal data integrity check and that alone makes lev-1 and lev-2
  333.      headers much preferred over lev-0.  In addition, the flexible format
  334.      of lev-1 and lev-2 atleast leaves open the door for ready means of
  335.      future expandibility.
  336.  
  337. /*
  338.  * end notes.doc file:
  339.  */
  340.  
  341.