home *** CD-ROM | disk | FTP | other *** search
- NAME
- lhx - A file test/recovery tool for LHARC archives
-
-
- SYNOPSIS
- lhx [-command] [@recovery_info] arcname [filename ...]
-
-
- DESCRIPTION
- The newest archive tool out of Japan, LHARC, does a very good job of file
- compression but it does not handle damaged archives well at all. LHX is a
- tool designed to assist in the recovery of data from damaged LHARC
- archives.
-
- LHX can be used to list the contents of an LHARC archive, test the
- integrity of an archive, scan a damaged archive to look for recoverable
- files, and to extract files from an archive.
-
-
- The commands are: "l" to list archive contents, "t" to test the integrity
- of an archive, "e" to extract files from an archive, and "s" to scan an
- archive for possible file headers. The default command is "l".
-
- 'arcname' is the name of the archive files to be used. This is the only
- required argument. MS-DOS wildcard characters '*' and '?' are allowed. If
- no extension is given, .LZH is assumed.
-
- 'filename' arguments are files to list/test/extract from the archive. If
- no 'filename's are given, all files will be selected. MS-DOS wildcard
- characters '*' and '?' are allowed. LHX ignores any pathnames stored in
- the archive when selecting files.
-
-
- LIST COMMAND
- The list command generates an 'ls -l' like listing of the selected
- files in the archive. Any file headers in the archive with checksum
- errors will be marked with a '?'.
-
- > lhx -l test
-
- Listing archive TEST.LZH
- --rw- 651 / 331 11 Apr 89 22:01:34 TEST\DIR
- ? --rw- 1161 / 715 5 Apr 89 09:07:38 REaDME
- --rw- 8435 / 8435 12 Apr 89 19:55:38 TEST2.LZH
-
- The file README has a bad header. In this case, the error is due to
- the change in the filename.
-
-
- TEST COMMAND
- The test command checks the file headers and file contents of the
- selected files in the archive.
-
- > lhx -t test
-
- Testing archive TEST.LZH
- TEST\DIR -- data CRC error
- REaDME -- bad file header, data OK
- TEST2.LZH -- data OK
- 2 errors detected
-
- The file TEST\DIR has an error in the data portion of the file. LHX
- will be able to extract the file, but the data will be bad. The file
- README has an error in the file header, but its data is intact. LHX
- will be able to extract the file with no errors.
-
-
- EXTRACT COMMAND
- This command extracts the selected files from the archive. If one of
- the files exists, the user will be prompted whether or not he wants to
- overwrite the file. LHX ignores the path and attribute information in
- the archive; the files will be created in the current working directory
- with standard attributes.
-
- > lhx -e test
-
- Extracting archive TEST.LZH
- TEST\DIR -- extracted with CRC error
- REaDME --
- file exists; overwrite (y/n) ? y
- exacted OK
- TEST2.LZH --
- file exists; overwrite (y/n) ? n
- 1 error detected
-
- File DIR did not exist in the current working directory so it was
- extracted without query; it is probably bad due to the CRC error. The
- files README and TEST2.LZH already exist so LHX asks if they should be
- overwritten.
-
-
- SCAN COMMAND
- This command scans damaged archives looking for anything that looks
- like it might be a file header. Information about these possible file
- headers is reported. This information can be given to LHX test/list/
- extract commands via the '@' option so that it can attempt to recover
- files from the damaged archive.
-
- > lhx -s test
-
- Scanning file TEST.LZH
- @0,{32 | 32},651,1 TEST\DIR
- @363,{393 | 393},1161,1 REaDME
- @1108,{1141 | 1141},8435,0 TEST2.LZH
- @1141,{1175 | 1175},955,1 ADDBFCRC.C
- @1758,{1791 | 1791},2560,1 CRCDEFS.C
- @2851,{2880 | 2880},5058,1 LHX.C
- @4721,{4752 | 4752},15337,1 LZHUF.C
-
- The numbers in each of these output lines are:
- the starting offset of the file header,
- the starting offset of the file data--calculated from two different
- values in the header--the first value is the one that LHX
- normally uses. If the values are different and the filename
- looks correct, the second number is more likely to be correct.
- the output file length, and
- the compression flag.
-
- These numbers are used in the same order in the '@' parameter. Any
- values that are not supplied to the '@' parameter are read from the
- header. If a filename is supplied in the '@' parameter, only one file
- will be processed by LHX.
-
- In this example, LHX found the headers for all the files in TEST.LZH
- and also found all the headers in TEST2.LZH that was stored
- uncompressed in the archive. TEST2 could be directly listed/tested/
- extracted by using '@1141'.
-
-
- SELF-EXTRACTING ARCHIVES
- Due to the growing number of "virus" programs that are circulating in
- the PC community, people are leery about running self-extracting
- archives because they may not be as advertised. LHX can be used to
- extract the files from a self-extracting archive.
-
- > lhx -s lharc10e.com
-
- Scanning file LHARC10E.COM
- @1290,{1323 | 1323},27498,1 LHARC.EXE
- @18852,{18885 | 18885},21984,1 LHARC.MAN
- @27919,{27949 | 27949},1161,1 README
-
- This file can be manipulated by LHX like any other archive by using the
- "@1290" option:
-
- > lhx -l @1290 lharc10e.com
-
- Listing archive LHARC10E.COM
- --rw- 27498 / 17529 4 Mar 89 18:07:22 LHARC.EXE
- --rw- 21984 / 9034 5 Apr 89 09:07:28 LHARC.MAN
- --rw- 1161 / 715 5 Apr 89 09:07:38 README
-
- > lhx -e @1290 lharc10e.com
-
- Extracting archive ..\LHARC10E.COM
- LHARC.EXE -- extracted OK
- LHARC.MAN -- extracted OK
- README -- extracted OK
-
-
- A JOURNEY INTO THE ABSURD
- Just to show what can be done with LHX, let's play with LHARC10E.COM a
- little bit more; first we'll extract LHARC.MAN, still compressed, into
- LHARCMAN.Z, then we'll uncompress LHARCMAN.Z into LHARC.MAN.
-
- > lhx -e @18852,,9034,0,lharcman.z lharc10e.com
-
- Extracting archive LHARC10E.COM
- lharcman.z -- extracted with CRC error
- 1 error detected
-
- The CRC error is expected since the CRC in the header is that of the
- uncompressed file. LHARCMAN.Z now contains the raw compressed data for
- LHARC.MAN. This file can be decompressed by:
-
- > lhx -e @0,0,21984,1,lharc.man lharcman.z
-
- Extracting archive LHARC.Z
- lharc.man --
- file exists; overwrite (y/n) ? y
- extracted with CRC error
- 1 error detected
-
- The CRC error is expected since there was no header on the file.
- (Actually, we told LHX to read the header from the beginning of the raw
- data file, but it didn't use any of the data it read.)
-
-
- ACKNOWLEDGEMENTS
- This program was written using code from the Usenet distribution of LZHUF.C
- written by Haruyasu Yoshizaki, Haruhiko Okumura, and Kenji Rikitake. This
- is copyrighted code with permission granted for non-commercial use.
-
- I also used ADDBFCRC.C and CRCDEFS.C from the Usenet ZOO 2.01 distribution.
- Rahul Dhesi claims no copyright on them but I acknowledge him anyway--he
- saved me a bunch of typing.
-
-
- AUTHOR
- Mark Armbrust
- maa@nbires.nbi.com
-