home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / podstawy / os2 / archive / lh222.exe / LH2.INF (.txt) < prev    next >
OS/2 Help File  |  1993-01-29  |  35KB  |  864 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Title Screen ΓòÉΓòÉΓòÉ
  3.  
  4.        LH/2 converts a set of files into a single file. This single "file
  5.        archive" is smaller than the sum of the original files, since data
  6.        compression is used. LH/2 can later be used to extract the files in
  7.                               their original form.
  8.  
  9.        Since the "file archive" created by LH/2 stores related files in a
  10.       single package, it is particularly well suited for transferring files
  11.          through a modem. This will ensure that all necessary files are
  12.         included, and that none were forgotten. Since LH/2 keeps a "check
  13.       sum", it will also verify that the files were received correctly. As
  14.         an added bonus, since the files are compressed, it will take less
  15.                              time to send the file.
  16.  
  17.         If the person on the receiving end does not have LH/2, the person
  18.          sending may choose to turn the archive into a "self-extracting"
  19.                                executable program.
  20.  
  21.  
  22. ΓòÉΓòÉΓòÉ 2. Copyright Notices ΓòÉΓòÉΓòÉ
  23.  
  24.  
  25.                         (c) 1991-93 A:WARE Incorporated.
  26.                               by Peter Fitzsimmons
  27.                               All Rights Reserved.
  28.  
  29.       All commercial restrictions have been lifted with this 2.20 release.
  30.        Although A:WARE Inc. still owns the source code, the executable is
  31.     completely public domain.  Any person or company can use it for internal
  32.             use,  software installation or distribution, backup, etc.
  33.  
  34.           A:WARE Inc. may soon,  however,  sell a "compression kit" for
  35.        those companies that insist on having source code,  or that want to
  36.     build compression into their own OS/2 software installation/distribution
  37.                                     programs.
  38.  
  39.                                    A:WARE Inc.
  40.                               6056 Cayeswood Court
  41.                                Mississauga Ontario
  42.                                  Canada L5V-1B1
  43.  
  44.                               Voice: (416)858-3222
  45.                                FidoNet: 1:250/292
  46.                              BBS Sol3: (416)858-8488
  47.  
  48.  
  49. ΓòÉΓòÉΓòÉ 2.1. Disclaimer ΓòÉΓòÉΓòÉ
  50.  
  51. DISCLAIMER
  52.  
  53. The Program is supplied "AS IS" without any warranty of any kind,
  54. either expressed or  implied,  including, but not limited to, the
  55. implied warranties of merchantability and fitness for a particular
  56. purpose.
  57.  
  58. In  no  event  shall A:WARE INC be liable for any damages, either
  59. direct or  consequential,  caused by the use, or inability to use,
  60. this program, even  if A:WARE INC has been advised of the
  61. possibility of such damages.
  62.  
  63.  
  64. ΓòÉΓòÉΓòÉ 3. General Overview ΓòÉΓòÉΓòÉ
  65.  
  66.  
  67. ΓòÉΓòÉΓòÉ 3.1. Mandate, 32 bit version ΓòÉΓòÉΓòÉ
  68.  
  69. Mandate, 32 bit version.
  70.  
  71.  
  72.  - Maintain the lh/2 tradition of an easy to use,  free,  public domain
  73.   file format based archiver for OS/2.  One of the reasons I wrote
  74.   LH-ANSIC in the first place was because ARC/PAK/ZIP/ZOO/LHA were too
  75.   complicated. I have resisted adding not-completely-necessary features
  76.   in order to keep the "syntax screen" very small.
  77.  
  78.   Despite the drastic internal changes to LH/2,  I am very pleased to
  79.   report that I only added one command line switch (/E).
  80.  
  81.  - All commercial restrictions have been lifted with the 2.20 release.
  82.   Although A:WARE Inc. still owns the source code, the executable will
  83.   be completely public domain.  Any person or company can use it for
  84.   internal use,  software installation or distribution, backup, etc.
  85.  
  86.   I may soon,  however,  sell a "compression kit" for those companies
  87.   that insist on having source code,  or that want to build compression
  88.   into their own OS/2 software installation/distribution programs.
  89.  
  90.  
  91. ΓòÉΓòÉΓòÉ 3.2. Program History ΓòÉΓòÉΓòÉ
  92.  
  93.  
  94. LH/2 V2.19 32 bit beta.  92/12/17
  95.  
  96. Pre-Release 32 bit beta.  Program history for this release will be covered
  97. under 'New Features' etc.
  98.  
  99. LH 2.14 Mon  03-30-1992
  100.  
  101. Wow;  two releases in the same month.  Bending to popular demand (all
  102. two of you!),  Lh2 will now preserve case.  LH2 is still case
  103. insensitive when searching for files however.
  104.  
  105. In compatability mode (/c),  file names are stored in upper case.
  106.  
  107. LH 2.13 Tue  03-10-1992
  108.  
  109. So solve a few problems with it's interaction with Squish,  LH will
  110. now exit with a non-zero ERRORLEVEL if:
  111.  
  112.   1) No files are extracted.
  113.   2) An invalid LZH header is encountered.
  114.  
  115. Archives with -lh4- type files are now supported (for decompression) by
  116. using the -lh5- code,  which seems to work fine.
  117.  
  118. A new option: /m.  This will cause only files with their archive bits
  119. set to be stored (during an ADD or MOVE operation).  The archive bit is
  120. reset if all goes well.
  121.  
  122. LH 2.12
  123.  
  124. During compression,  LH 2.12 will recognize that there is no space left
  125. on a disk for '-lh5-' compression.  (It always worked correctly for
  126. -lh1-).
  127.  
  128. If a file with an unknown stowage is encountered,  LH 2.12 will no
  129. longer stop at a prompt if the /o option is specified.
  130.  
  131. Wed  05-22-1991
  132.  
  133. Version 2.11 is a very small bug fix.  When Adding/Moving files,
  134. LH.EXE will now correctly exit with an ERROREVEL of 0 if successful.
  135.  
  136.  
  137. Original 2.00 Documentation (LH2.DOC), Mon  04-29-1991
  138.  
  139. Welcome to version 2.00 of LH2.  The last version that most of you
  140. had access to was 0.80.  I've jumped all the way to 2.00 so that an
  141. association can be made with LHA 2.x,  the DOS program which LH2 is
  142. a clone of.  With 0.80,  I thought LH2 was "functionally stable";
  143. But then Haruhiko Okumura had to go and create a better compression
  144. algorithm!  This new version, 2.00,  supports that new compression
  145. method and has a few other small changes as well.
  146.  
  147. Notes:
  148.  
  149.  o This new version is (on many files) faster than the old version
  150.   while compressing.  It is always faster at decompression (2 to
  151.   3 times faster).  Files that contain many repeated bytes/strings
  152.   (such as text files) compress the fastest (almost as fast as Zip
  153.   imploding).  Files that are more random compress slower;  a very
  154.   large and very random file may compress slower than the old
  155.   version of LH.
  156.  
  157.  o It is coded all in C, and is therefore slower than Yoshi's DOS
  158.   version (LHA.EXE) which is coded in mostly assembly.  My tests
  159.   show LH2 to be a little more than 1/2 the speed while
  160.   compressing, and about 2/3 the speed at decompressing.  I can
  161.   live with it.
  162.  
  163.  o /c causes LH2 to use the old -lh1- compression method that prior
  164.   versions of LH2, and LHARC 1.x, used.
  165.  
  166.  o the new 'D' command erases files from an *.lzh archive.
  167.  
  168.  o When extracting files from an archive,  the disk space for the
  169.   destination file is allocated at the time the file is opened.
  170.   This ensures that as little fragmentation as possible will occur
  171.   on the file.
  172.  
  173.  o Specifying a drive with no directory (LH A FOO.LZH C:*.*) will
  174.   use the root directory,  rather than the current directory on
  175.   that drive.  Fixed.
  176.  
  177.  o The size of LH.EXE has grown quite a bit (from 38k to 48k) since
  178.   it now has to support both the old and new
  179.   compression/decompression code.
  180.  
  181.  o I've moved.  My new phone number is near the bottom of this
  182.   document.  I've also added a disclaimer there.
  183.  
  184.  o The new compression code (for -lh5- compression) was lifted from
  185.   AR02.LZH,  by Haruhiko Okumura.  Thanks once again Haruhiko!  I
  186.   can't make heads or tails of Yoshi's code.
  187.  
  188.  
  189. LH2.DOC, Mon  03-11-1991
  190. Version 1.00 fixes a small bug:  If you tried to L)ist the contents
  191. of an *.lzh file that did not exist,  no error message was printed.
  192.  
  193. LH2.DOC, Tue  01-08-1991
  194.  
  195. This version, 0.80,  is the first release that supports EAs
  196. (Extended Attributes) and (to some degree) 'long' file names.  If
  197. there are no problems with it,  it will be renamed 1.00 and
  198. forgotten about.
  199.  
  200. EAs are supported in the following manner.  During the file search
  201. stage (where LH creates a list of all matching files to be sorted),
  202. a pseudo-archive named EA.LZH is created,  if needed.  Using the
  203. same names as the original files,  EA.LZH contains the associated
  204. extended attributes.  EA.LZH is placed in the archive along with the
  205. other files.  Therefore,  anyone who does not have this version of
  206. LH2 can still apply the EAs to their respective files by using the
  207. OS/2 EAUTIL.EXE file.  A file named '!readme.ea' is imbedded in
  208. EA.LZH,  which supplies instructions to achieve this.
  209.  
  210. If you use this version of LH2 to extract archives (and do not use
  211. the /i switch),  EA.LZH will be extracted automatically and applied
  212. to the files,  then erased.
  213.  
  214.  
  215. Notes:
  216.  
  217.   o This version,  and future versions,  require OS/2 1.20 or newer.
  218.  
  219.   o Wildcards should work just like 1.20 wildcards.  (Let me know
  220.    if you find an inconsistency).
  221.  
  222.   o t = test option is new.
  223.  
  224.   o /i.  This option causes EAs not to be stored for the Add and
  225.    Move commands.  When used with the eXtract command, /i causes
  226.    EA.LZH to be extracted,  but not applied or erased.
  227.  
  228.   o LH2 does not support directory EAs,  only file EAs.
  229.  
  230.   o do NOT update an lzh file that was already stored with EAs
  231.    (since ea.lzh will already be in the lzh file).
  232.  
  233.   o The EAs are applied after ALL of the files have been extracted.
  234.    A side effect: If you do not extract a file that has an EA,  by
  235.    answering 'n' to the "File '<file>' already exists. Overwrite?"
  236.    prompt,  the EA WILL STILL BE JOINED to the old file on your
  237.    disk.
  238.  
  239.   o Longnames are supported -- sort of.  The total length of a file
  240.    name (including path) must be less than or equal to 74 bytes.
  241.    Longnames are stored without modification in the lzh header,
  242.    therefore they will fail to extract on a FAT partition and/or
  243.    under DOS. Therefore, the onus is on the user to enforce normal
  244.    (8.3) file names,  so as not to inconvenience other users. It is
  245.    HIGHLY recommended that you don't use longnames in files you
  246.    upload to BBS's.
  247.  
  248.  
  249. LH2.DOC, Tue  03-06-1990
  250.  
  251. LH2 is an OS/2 clone of the MSDOS program LHARC.
  252.  
  253. It is based on the source code I released as "LH-ANSIC.LZH",  the
  254. ansi-c version of a simplified LHARC compatible compressor/decompressor.
  255. This program is the same as LH-ANSIC.LZH,  with the following exceptions:
  256.  
  257.  o The Move command has been added.  (ADD files, then erase them).
  258.  
  259.  o Wildcards are supported from the command line during an ADD/MOVE
  260.   function.
  261.  
  262.  o The /s command will cause LH2 to "walk" down directory trees.
  263.  
  264. For a complete list of functions, run LH.EXE without any arguments.
  265.  
  266. NOTE: OS/2 1.20's long file names and EAs are *NOT* supported in
  267. this release.  This would make the program incompatible with the
  268. original LHARC.  I may change this in the near future though.
  269.  
  270. Trying to "BIND" this program will cause unpredictable results when
  271. run in DOS mode.  (DosFindFirst()/Next() can not be supported in DOS
  272. mode if used recursively).
  273.  
  274.  
  275. ΓòÉΓòÉΓòÉ 3.3. Bug Fixes ΓòÉΓòÉΓòÉ
  276.  
  277. Bugs Fixed from 2.14
  278.  
  279.  - will not abort when it can't open a file,  such as SWAPPER.DAT, when
  280.   compressing.
  281.  
  282.  - When compressing, /A (store file attributes (system, hidden,
  283.   readably)) was unpredictable if the current dir was not the root dir.
  284.   Fixed.
  285.  
  286.  - LH/2 now supports the maximum OS/2 path length:  260 bytes.
  287.  
  288.   As was documented,  because of the design of the original *.LZH file
  289.   header, LH/2 v2.14 could only handle file names that were 74 bytes or
  290.   less. Unfortunately,  LH/2 did not enforce this.  If you saved a file
  291.   > 74 bytes,  the header "overflowed" into the file's data, destroying
  292.   any chances of extracting the file.  This only burned one person, to
  293.   my knowledge (sorry Scott!).  That incident just happened a few weeks
  294.   ago, and is what got me working on LH/2 again!
  295.  
  296.   Long file names (> 64 bytes) are now stored differently.  They are
  297.   stored in an "extended header";  a feature that was new to LHA 2.00
  298.   (LHA is the dos program that LH/2 grew from).
  299.  
  300.  
  301. ΓòÉΓòÉΓòÉ 3.4. New Features (ver 2.20) ΓòÉΓòÉΓòÉ
  302.  
  303.  
  304. New Features (ver 2.20)
  305.  
  306.  - Support for file names up to 260 characters.
  307.  
  308.  - Extended Attributes (EA) are stored differently.  The old way was
  309.   to create a file named EA.LZH inside of the archive,  which had an
  310.   entry for each file that had an EA.  This worked fine until you
  311.   added a new file to an existing archive -- at which point the old
  312.   EA.LZH would be wiped out with the new one.  This will no longer
  313.   happen.
  314.  
  315.   The new method is not compatible with old LH/2.  For this reason,
  316.   new LH/2 builds a batch file called "Apply-EA.Cmd" in the archive,
  317.   which the end user could run to use OS/2's "eautil.exe" program to
  318.   join the EAs to the just-extracted files.
  319.  
  320.   NOTE:  Apply-EA.Cmd only works for files,  not directories.  If you
  321.   want to remain compatible with old-lh/2,  do not distribute LZH
  322.   archives that have dirs in them.
  323.  
  324.   New LH/2 will recognize the old EA.LZH method,  and apply the EAs
  325.   accordingly.
  326.  
  327.   Skip ahead to the next point unless you care about the technical
  328.   details of how EAs are now stored.
  329.  
  330.   All EAs are in 16 bit OS/2 format.  Even OS/2 2.0's EAUTIL.EXE
  331.   stores them in this format (probably for the same compatibility
  332.   reasons that I did).  There is only a slight difference in the way
  333.   OS/2's "FEA2LIST" structure differs from OS/2 1.x's "FEALIST".
  334.  
  335.   Each file EA (directory EAs are stored differently) looks (to
  336.   LHA/V2.14) as a normal file.  An EA file is always stored in a
  337.   subdirectory called EAS (this is true even if you did NOT use /s).
  338.  
  339.   For example:
  340.  
  341.      EAS\file1 -- this is the ea for file1
  342.      file1   -- this is file1
  343.      Src\EAS\file1 -- this is the ea for src\file1
  344.      src\file1   -- this is src\file1
  345.  
  346.   I had originally discounted this method;  if you used another archive
  347.   program that changed the order of the files,  everything would be
  348.   broken.
  349.  
  350.   However,  now I store (along with the EAS file) the name of the
  351.   parent file in an extended header;  so the actual name or order of
  352.   the EAS\* file is irrelevant.  LH/2 first extracts all non-ea files,
  353.   than goes back to the beginning of the *.lzh file and "extracts"
  354.   only EA files.  The extended headers LH/2 supports are:
  355.  
  356.   Type   Description
  357.    0    CRC of header + extended header
  358.       (as apposed to simple checksum in normal *.lzh header).
  359.    1    Extended file name.
  360.    2    Extended dir name to which [extended] file name is appended.
  361.    79   (ascii 'O') --- LH/2 2.20 extension --- Name of Parent file
  362.       this EA file applies to.
  363.  
  364.   The other method I was entertaining (storing the EA itself in an
  365.   extended header) had a drawback that might hurt in the future: The
  366.   maximum size of an extended header entry is 64K-2 bytes.  EAs are
  367.   currently limited to 64k,  but that may change.
  368.  
  369.  - Directories are now stored as separate entities.  This allows
  370.   support for dirs that are empty,  and dirs that have EAs.  This is
  371.   particularly important if you are trying to backup your OS/2 2.0
  372.   Desktop directories.
  373.  
  374.   This feature is enabled with the new /E option.
  375.  
  376.   A dir is only stored only when ALL of the following are true:
  377.  
  378.    1) /s is used.
  379.    2) /e is used.
  380.    3) It has an EA or it is empty.
  381.  
  382.   Dirs that are not empty,  nor have an EA,  are not stored because
  383.   there is no reason to store them.  Those dirs will be created
  384.   automatically when a file is extracted there.
  385.  
  386.   Skip ahead to the next point unless you care about the technical
  387.   details of how dirs are now stored.
  388.  
  389.   Dirs without EAs are stored as zero length files.  The LZH field
  390.   for the file attribute is set to 0x10.
  391.  
  392.   Dirs with EAs are stored, as above,  with attribute 0x10 set.
  393.   However,  the regular "file data" is actually the EA.  Example:
  394.  
  395.   Original  Packed    Rat Date     Time     Attr   Type  CRC   Name
  396.   --------  --------  --- -------  -------- ------ ----- ----  ----------------
  397.       1352       550  41% 92-12-17  3:54:38 .D.... -lh5- DBAA  os!2 2.0 desktop
  398.  
  399.  
  400.   Note that the 'D' bit is set.  The extended attribute is,
  401.   uncompressed, 1352 bytes.  After decompressing this archive,
  402.   a "DIR" command would list this:
  403.  
  404.     12-13-92  3:36a <DIR>    1352  os!2 2.0 desktop
  405.  
  406.  - All files created by LH/2,  when extracting,  use the pre-allocate
  407.   feature of the DosOpen() api,  thus reducing fragmentation.  In
  408.   fact,  you could use LH/2 as a "poor man's de-fraggmenter" if you
  409.   wanted.  Fragmentation is not very significant with HPFS.
  410.  
  411.  - When adding files to an existing archive,  LH/2 no longer
  412.   assumes that the files are sorted.
  413.  
  414.   LH/2 now sorts files based on "dir + filename",  rather than just
  415.   "filename" as it did before.
  416.  
  417.   When new files are added to an existing archive,  they are added at
  418.   the end (if they are NEW to the archive;  if they replace a file,
  419.   they will be in the old file's position).
  420.  
  421.  - When /E is used,  LH/2 will remove an empty dir even if no files
  422.   from that dir were compressed.  The old way only removed a dir if at
  423.   least one file was compressed from it.
  424.  
  425.  
  426. ΓòÉΓòÉΓòÉ 4. Program Documentation ΓòÉΓòÉΓòÉ
  427.  
  428. ΓûêΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûê
  429. Γûê Lh2       (Compress files)    Peter Fitzsimmons 93/02/01 Γûê
  430. Γûê                                             Version 2.20 Γûê
  431. Γûê Usage:    LH <cmd> <archive> [file1 file2 ...] [options] Γûê
  432. Γûê Purpose:  Collect and compress files.                    Γûê
  433. Γûê Commands: A - Add files to archive.                      Γûê
  434. Γûê           M - Move files to archive (erases files).      Γûê
  435. Γûê           L - List files in archive.                     Γûê
  436. Γûê           X - Extract files from archive.                Γûê
  437. Γûê           T - Test - Extract files to NUL.               Γûê
  438. Γûê           D - Delete files from archive.                 Γûê
  439. Γûê Options (may appear anywhere on the command line):       Γûê
  440. Γûê          /v - verbose                       (L command)  Γûê
  441. Γûê          /a - maintain file attributes.     (A, M or X)  Γûê
  442. Γûê          /s - collect/extract subdirs.      (A, M or X)  Γûê
  443. Γûê          /o - no prompts.                   (L or X)     Γûê
  444. Γûê               (When used with X, /o will overwrite       Γûê
  445. Γûê               existing files without prompting)          Γûê
  446. Γûê          /i - ignore EAs.                   (A, M or X)  Γûê
  447. Γûê          /e - save/rest empty dirs & dir EAs(A, M or X)  Γûê
  448. Γûê          /m - store modified files only     (A or M)     Γûê
  449. Γûê          /h - additional information.                    Γûê
  450. ΓûêΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûê
  451.  
  452.  
  453. ΓòÉΓòÉΓòÉ 4.1. Commands ΓòÉΓòÉΓòÉ
  454.  
  455.  
  456. ΓòÉΓòÉΓòÉ 4.1.1. A - Add files to archive. ΓòÉΓòÉΓòÉ
  457.  
  458. Using the 'A' command will create an archive file if one does not exist already,
  459. or will append to one if it already exists.
  460.  
  461. Example:
  462.  
  463. [C:\] lh32 a xxx yyy (xxx is archive name, yyy is files to archive)
  464.  
  465. LH2 V2.20 - Copyright (c) 1989-1993 A:Ware Inc.
  466.  
  467. Max files = 13107
  468.  <--- This will show maximum allowable files per archive. 
  469.  
  470. Creating temp file AAABEB.TMP
  471. <--- This will only display during UPDATE for file integrity purposes. 
  472.  
  473. CREATING: test.lzh
  474. <--- This will either show CREATING or UPDATING 
  475.  
  476.  
  477.   Original  Packed    Rat Date     Time     Attr   Type  CRC   Name
  478.   --------  --------  --- -------  -------- ------ ----- ----  ----------------
  479. xx%  23654      9146  39% 93-01-16 16:29:56 ...... -lh5- ADC5  lh2.ipf
  480.   --------  --------  ---                                      ----------------
  481.      23654      9146  39%                                      1 files.
  482.  
  483. The xx% will show percentage increments for the duration of the operation. 
  484.  
  485.  
  486. Options available with this command:
  487.  
  488. /a - store file attributes
  489. /s - store/recurse subdirectories
  490. /i - ignore EAs
  491. /e - save empty directories and/or directory EAs
  492. /m - store modified files only
  493.  
  494.  
  495. ΓòÉΓòÉΓòÉ 4.1.2. M - Move files to archive (erase files). ΓòÉΓòÉΓòÉ
  496.  
  497. Using the 'M' command will create an archive file if one does not exist already,
  498. or will append to one if it already exists.
  499.  
  500. Once the archive is complete, the original files will be deleted.
  501.  
  502. Example:
  503.  
  504. [C:\] lh32 M xxx yyy (xxx is archive name, yyy is files to archive)
  505.  
  506. LH2 V2.20 - Copyright (c) 1989-1993 A:Ware Inc.
  507.  
  508. Max files = 13107
  509.  <--- This will show maximum allowable files per archive. 
  510.  
  511. Creating temp file AAABEB.TMP
  512. <--- This will only display during UPDATE for file integrity purposes. 
  513.  
  514. CREATING: test.lzh
  515. <--- This will either show CREATING or UPDATING 
  516.  
  517.  
  518.   Original  Packed    Rat Date     Time     Attr   Type  CRC   Name
  519.   --------  --------  --- -------  -------- ------ ----- ----  ----------------
  520. xx%  23654      9146  39% 93-01-16 16:29:56 ...... -lh5- ADC5  lh2.ipf
  521.   --------  --------  ---                                      ----------------
  522.      23654      9146  39%                                      1 files.
  523.  
  524. The xx% will show percentage increments for the duration of the operation. 
  525.  
  526.  
  527. Options available with this command:
  528.  
  529. /a - store file attributes
  530. /s - store/recurse subdirectories
  531. /i - ignore EAs
  532. /e - save empty directories and/or directory EAs
  533. /m - store modified files only
  534.  
  535.  
  536. ΓòÉΓòÉΓòÉ 4.1.3. L - List files in archive. ΓòÉΓòÉΓòÉ
  537.  
  538. Using the 'L' option will list the original file
  539. size, the file date, and the file name to your screen.
  540.  
  541. This example was invoked with the following command:
  542.  
  543. [C:\] LH32 L ARCHIVE.LZH
  544.  
  545. Listing archive: C:\ARCHIVE.LZH
  546.  
  547.   Original Date      Name
  548.   -------- --------  -----------------------------------------
  549.      21578 92-12-27  file.txt
  550.   --------           -----------------------------------------
  551.      21578           1 files.
  552.  
  553. Options available with this command:
  554.  
  555. /v - verbose
  556.  
  557.  
  558. ΓòÉΓòÉΓòÉ 4.1.4. X - Extract files from archive. ΓòÉΓòÉΓòÉ
  559.  
  560. Using the 'X' command will extract a file(s) from an archive.
  561.  
  562.  
  563. [C:\]LH2 X LH2INF
  564.  <--- May contain wildcards, multiple files, etc. 
  565.  
  566.  
  567.  
  568. LH2 V2.20 - Copyright (c) 1989-1993 A:Ware Inc.
  569.  
  570. Extracting archive: C:\lh2\LH2INF.LZH
  571.   Original Date      Name
  572.   -------- --------  -----------------------------------------
  573.      21578 92-12-27 test.exe
  574.   -------- --------  -----------------------------------------
  575.      21578           1 files.
  576.  
  577. Applying Extended Attributes from 'C:\lh2\LH2INF.LZH':
  578.  
  579. If any Extended Attributes are attached to the file, they will
  580. be extracted and attached automatically.
  581.  
  582. Options available with this command:
  583.  
  584. /a - restore file attributes
  585. /s - extract into sub-directories
  586. /o - no prompts (Overwrite existing files without asking)
  587. /i - don't restore EAs
  588. /e - restore empty dirs and dir EAs
  589.  
  590.  
  591. ΓòÉΓòÉΓòÉ 4.1.5. T - Test - Extract files to NUL. ΓòÉΓòÉΓòÉ
  592.  
  593.  
  594. Using the 'T' command will extract a file(s) from an archive to NUL.  You will still
  595. see the incremental percent sign '%' but no files will be created in your
  596. current directory.  It is assumed the archive is ok if the file(s) extract
  597. completely without errors.
  598.  
  599.  
  600. ΓòÉΓòÉΓòÉ 4.1.6. D - Delete files from archive. ΓòÉΓòÉΓòÉ
  601.  
  602. Using the 'D' command will delete file(s) from an archive.
  603.  
  604. A temporary file with the extension of '.$LH' will be created and deleted if the
  605. program completes successfully.
  606.  
  607.  
  608. [C:\]LH2 D LH2INF *.lst
  609.  <--- May contain wildcards, multiple files, etc. 
  610.  
  611.  
  612. ΓòÉΓòÉΓòÉ 4.2. Options ΓòÉΓòÉΓòÉ
  613.  
  614.  
  615. ΓòÉΓòÉΓòÉ 4.2.1. /v - verbose ΓòÉΓòÉΓòÉ
  616.  
  617. This option will give you more statistics about the file during the operation, ie;
  618. time and date information, ratios, etc.
  619.  
  620.  
  621. ΓòÉΓòÉΓòÉ 4.2.2. /a - maintain file attributes. ΓòÉΓòÉΓòÉ
  622.  
  623. This option will extract/store file attributes:
  624.  
  625. When the List command is used,  LH/2 uses the following characters
  626. to distinguish file attributes:
  627.  
  628. 'H' for hidden.
  629. 'R' for write-only.
  630. 'S' for system.
  631. 'A' for archive.
  632.  
  633. These dos-style file attibutes should not be confused with OS/2 Extended
  634. Attributes (EAs).  EAs are used to store information such as icons,
  635. bitmaps, file descriptions, etc.
  636.  
  637. For more information about file attributes see the OS/2 on-line
  638. reference for the 'ATTRIB.EXE' program.
  639.  
  640.  
  641. ΓòÉΓòÉΓòÉ 4.2.3. /s - collect/extract subdirs. ΓòÉΓòÉΓòÉ
  642.  
  643. This option will extract/store subdirectory information.  If the directory does
  644. not exist when you are extracting,  you will be prompted if you wish to
  645. create the directory (the /O option will cause the directories to be created
  646. without prompting).
  647.  
  648.  
  649. ΓòÉΓòÉΓòÉ 4.2.4. /o - no prompts. ΓòÉΓòÉΓòÉ
  650.  
  651. This option will supress all questions - allowing for unattended operation.
  652.  
  653. During Listing,  this will prevent the "More?" prompt.
  654.  
  655. During Extraction,  this will cause directories to be created
  656. automatically,  and existing files to be overwritten.
  657.  
  658.  
  659. ΓòÉΓòÉΓòÉ 4.2.5. /i - ignore EAs. ΓòÉΓòÉΓòÉ
  660.  
  661. This option will, when extracting or archiving, will ignore all Extended
  662. Attributes for files.
  663.  
  664. Therefore,  when used with the ADD command,  EAs will not be stored in
  665. the archive.
  666.  
  667. When used with the EXTRACT command,  any EAs in the archive will not
  668. be applied to their associated files.
  669.  
  670.  
  671. ΓòÉΓòÉΓòÉ 4.2.6. /e - save/restore empty directory & dir EAs. ΓòÉΓòÉΓòÉ
  672.  
  673. This option will extract/store empty directories and directory Extended 
  674. Attributes. 
  675.  
  676.  
  677. ΓòÉΓòÉΓòÉ 4.2.7. /m - store modified files only. ΓòÉΓòÉΓòÉ
  678.  
  679. This option will only store files that have the 'A' (archive) attribute set.
  680.  
  681. After successful storage, LH/2 resets the 'A' (archive) attribute.
  682.  
  683. OS/2 automatically sets the 'A' attribute whenever a file is modified.
  684.  
  685.  
  686. ΓòÉΓòÉΓòÉ 4.2.8. /h - additional information. ΓòÉΓòÉΓòÉ
  687.  
  688. Examples:
  689.  
  690. 1) LH2 A PROGRAMS \usr\*.c D:\*.h /s
  691.  
  692.   Collect all *.c files from \usr (and children of \usr), as well
  693.   as all of the *.h files from every directory on drive D:.
  694.  
  695. 2) LH2 X PROG*
  696.  
  697.   Extract all archives matching prog*.lzh into the current dir.
  698.   Any path information in the archives will be ignored.
  699.  
  700. 3) LH2 X PROG* e:\home *.c
  701.  
  702.   As in 2, but extract files into E:\HOME (dir must exist). Only
  703.   extract files matching *.c.
  704.  
  705. 4) LH2 X PROG* e:\home *.c /s
  706.  
  707.   As in 3, but path information WILL be kept. Directories will be
  708.   created off of e:\home as needed.
  709.  
  710. 5) LH2 X PROG* e:\home src\*.c /s
  711.  
  712.   As in 4, but only files that were collected from a src\
  713.   subdirectory will be extracted.
  714.   ie:
  715.  
  716.   In LZH file       Extracted to
  717.   -----------       -------------
  718.   read.c          NOT extracted.
  719.   work\test.c       NOT extracted.
  720.   work\src\swell.c     e:\home\work\src\swell.c
  721.   buggy\work\src\turbo.c  e:\home\buggy\work\src\turbo.c
  722.  
  723.  
  724. ΓòÉΓòÉΓòÉ 5. SE.EXE The Self Extracting Program ΓòÉΓòÉΓòÉ
  725.  
  726.  
  727. ΓûêΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûÇΓûê
  728. Γûê Lh/2      (Self Extractor)    Peter Fitzsimmons 93/02/01 Γûê
  729. Γûê                                             Version 2.20 Γûê
  730. Γûê Usage:    prog.exe [file1 file2 ...] [options]           Γûê
  731. Γûê Purpose:  Extract compressed files.                      Γûê
  732. Γûê Options: /l - list only (do not extract)                 Γûê
  733. Γûê          /t - test only (do not extract)                 Γûê
  734. Γûê          /v - verbose                                    Γûê
  735. Γûê          /a - set file attributes (hidden/system/etc)    Γûê
  736. Γûê          /o - overwrite existing files without asking    Γûê
  737. ΓûêΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûäΓûê
  738.  
  739. To create a self-extracting (SE) OS/2 lzh file,  make sure se.exe is in
  740. the current directory when you run the MSE.CMD batch file:
  741.  
  742.  MSE <lzh file>
  743.  
  744. Do not specify the extension .lzh.  You must have already created the
  745. lzh archive before running MSE.CMD.
  746.  
  747. Example:
  748.  
  749.   Step 1,  create archive:  LH A TEST *.C
  750.   Step 2,  create EXE    :  MSE TEST
  751.  
  752. When a SE-LZH extracts,  it is equivalent to running "LH X TEST /SE"
  753.  
  754. The SE program is written entirely in C.  It is therefore much larger
  755. than some competing products,  which are written in assembler.  We had
  756. no plans on releasing an SE because of this;  but we have bent to user
  757. requests that did not care how big the SE module is.
  758.  
  759.  
  760. ΓòÉΓòÉΓòÉ 5.1. MSE.CMD OS/2 Command File ΓòÉΓòÉΓòÉ
  761.  
  762.  
  763.  
  764. @echo off
  765. if "%1"=="" goto USAGE
  766. copy /b se.exe+%1.lzh /b %1.exe && echo %1.EXE has been created.
  767. goto end
  768. :Usage
  769. echo Usage: MSE [lzh file]
  770. echo     Do NOT speficy .lzh extension.
  771. :end
  772.  
  773.  
  774. ΓòÉΓòÉΓòÉ 6. Backup of OS/2 2.00 Desktop ΓòÉΓòÉΓòÉ
  775.  
  776. Backup of OS/2 2.00 Desktop
  777.  
  778. The following procedure has worked well during testing.  Use at your own
  779. risk.
  780.  
  781.  - To backup your OS/2 2.0 desktop,  use the following command,  from the
  782.   root directory of your boot drive (this is for HPFS!):
  783.  
  784.    lh a desktop.lzh \os2\os2.ini \os2\os2sys.ini "os!2 2.0 desktop\*" /se
  785.  
  786.   You CAN run this while OS/2 is running -- however,  try not to run
  787.   any other programs or move anything on the desktop while this is
  788.   running.  You're best to run it from a Full Screen command prompt.
  789.  
  790.   To restore your desktop,  you will have to boot from another disk and
  791.   run (from the ROOT dir):
  792.  
  793. lh x desktop.lzh /se
  794.  
  795.  
  796. ΓòÉΓòÉΓòÉ 7. Warnings ΓòÉΓòÉΓòÉ
  797.  
  798. Warnings
  799.  
  800.  - Do not use very long file names (>64 bytes) for archives that will
  801.   be distributed publicly (on an Electronic BBS,  for example).
  802.  
  803.   These long file names do not work well with the old FAT file system,
  804.   and do not work AT ALL with DOS.  In fact,  the DOS LHA program that
  805.   is required to extract the archive,  may "crash" on the long file
  806.   names.
  807.  
  808.   If the archive is for your own use,  or, if a public archive,  it's
  809.   use is clearly only for OS/2 users using the HPFS file system, than
  810.   you can disregard this warning.
  811.  
  812.  - If you store a dir with an EA,  dos and old LH/2 will not be able to
  813.   extract the archive correctly (the dirs will be extracted as a file,
  814.   preventing that dir from being created).
  815.  
  816.  
  817. ΓòÉΓòÉΓòÉ 8. Hints ΓòÉΓòÉΓòÉ
  818.  
  819. Hints
  820.  
  821.  - Think of LH as "XCOPY" with a transitional state: the *.lzh file.
  822.   Many of the options are the same as xcopy.
  823.  
  824.   The same options must be used during both collection and extraction to
  825.   end up with the same layout that you started with.  To get EXACTLY
  826.   what is on your disk (including file hidden/system/archive
  827.   attributes), you would do this:
  828.  
  829.   copy in:
  830.  
  831. lh a myarchive /s /e /a
  832.  
  833.        (this will work too: lh a myarchive /sea)
  834.  
  835.  copy out:
  836.  
  837. lh x myarchive /s /e /a
  838.  
  839.   Both of the above commands start from the current directory.  If the
  840.  current directory is the root,  your whole disk would be stored.
  841.  
  842.  This is NOT recommended:
  843.  
  844. lh a mydrives c:\* d:\* e:\* /se
  845.  
  846.  Since the drive letters are always removed when stored in an archive,
  847.  after extraction all of your files would end up on one disk.
  848.  
  849.  
  850. ΓòÉΓòÉΓòÉ 9. Acknowledgements ΓòÉΓòÉΓòÉ
  851.  
  852. Acknowledgments
  853.  
  854. This program is based on the LZH (Lempel-Ziv-Huffman) compression
  855. method developed by Haruhiko Okumura and Haruyasu Yoshizaki. The
  856. compression routines were derived from the uncopyrighted LZHUF.C,
  857. posted by Haruhiko Okumura.
  858.  
  859. The file format (*.lzh) is compatible with LHARC, the MSDOS archiver
  860. by Haruyasu Yoshizaki. The format of LHARC files was learned from
  861. the public domain LHX.H (LHX is a *.lzh file repair utility) by Mark
  862. Armbrust.
  863.  
  864.