@database LZHUtils.guide @master Source:LZH/LZHUtils.guide @remark Created with Heddley v1.1 (c) Edd Dumbill 1994 @node "Main" "LHA/LZH Supplement Utilities: Main Help Reference Menu." LZH Utilities -------------- Copyright (©) 1994-95, The Xperts Group Inc. All Rights Reserved. Programmed by @{"Manolis S Pappas" link "Author" 0}. ------------------------------------------------------------------------ @{"LHA/LZH Error Correcting Utilities" link "ScanLZH" 0} @{"Miscellaneous Utilities" link "SplitLZH" 0} ------------------------------------------------------------------------- THESE PROGRAMS ARE PROVIDED "AS IS". NO WARRANTY IS GIVEN NOR RESPONSIBILITY IS TAKEN FOR ANY ABNORMAL USE OR MISBEHAVIOUR OF THESE PROGRAMS. U S E A T Y O U R O W N R I S K !!!!!! @endnode @node "ScanLZH" "LHA/LZH Supplement Utilities: LHA/LZH Error Correcting Utilities" The LHA/LZH Error Correcting Utilities -------------------------------------- @{"  Overview   " link "ScanLZH_Overview" 0} What are these programs for @{"  ScanLZH    " link "ScanLZH_ScanLZH" 0} Scanning corrupt LHA/LZH files @{"  FixLZH     " link "ScanLZH_FixLZH" 0} Fixing corrupt LHA/LZH files @{"  Liability  " link "ScanLZH_Liability" 0} How reliable these programs are @{"  Errors     " link "ScanLZH_Errors" 0} Known errors @{"  Credits    " link "Credits" 0} Hoopla department @{"  Contacts   " link "Author" 0} Get in contact... @endnode @node "SplitLZH" "LHA/LZH Supplement Utilities: LHA/LZH Maintenance Utilities" The LHA/LZH Maintenance Utilities --------------------------------- @{" Overview    " link "SplitLZH_Overview" 0} What are these programs for @{" SplitLZH    " link "SplitLZH_SplitLZH" 0} Splitting LHA/LZH files @{" JoinLZH     " link "SplitLZH_JoinLZH" 0} Joining splitted LHA/LZH files @{" A few notes " link "SplitLZH_Notes" 0} Just a few notes... @{" Credits     " link "Credits" 0} Hoopla department @{" Contacts    " link "Author" 0} Get in contact... @endnode @node "Author" "LHA/LZH Supplement Utilities: Author Information" @next "Credits" @prev "Credits" Feel free to contact me for any information, bug reports or just anything else. Write to: Manolis S Pappas Thermopilon 24 14231 Nea Ionia Athens GREECE or use Electronic Mail: E-Mail: mpap@acrogate.ath.forthnet.gr mpappas@posidon.servicenet.ariadne-t.gr Fido: 2:410/128.19 AmigaNet: 39:250/3.19 See you soon :-) @endnode @node "ScanLZH_Overview" "LHA/LZH Error Correction Utilities: Overview" @toc "ScanLZH" @next "ScanLZH_ScanLZH" @prev "ScanLZH_ScanLZH" 1. Overview. Have you ever met LHA's "Scipping extraneous/corrupted data" from your .LZH Archive? This happens usually when one of the files fails CRC check in the process of decompression. Usually, it's hard to tell whether it's a bug of LHA, or it is caused during file transfer, or by some other reasons. The purpose of this small package is to rescue uncorrupted files from a broken archive. This package consists of two executables ScanLZH and FixLZH. You can't restore your entire archive, in general, but may retrieve all of the files which are stored uncorrupted. @endnode @node "ScanLZH_ScanLZH" "LHA/LZH Error Correction Utilities: ScanLZH" @toc "ScanLZH" @next "ScanLZH_FixLZH" @prev "ScanLZH_FixLZH" 2. ScanLZH Usage : ScanLZH bad-lzh [ >info-file ] An .LZH file consists of successive blocks of Header+compressed_file. Beginning with the 3rd byte, you will find strings '-lh?-' where ? stands for 0-5. ScanLZH will scan your .LZH file with this string as a split mark, and outputs informations of each blocks to stndard out. FixLZH picks up uncorrupted blocks from this information. You need to redirect the outputs of ScanLZH into a file, info-file, to feed FixLZH. This can be done easily by using the AmigaDOS redirection symbol ">" (without the quotes). Example: ScanLZH >ram:listing pack:bad.lzh. The output of ScanLZH will be saved to filename ram:listing. @endnode @node "ScanLZH_FixLZH" "LHA/LZH Error Correcting Utilities: FixLZH" @toc "ScanLZH" @next "ScanLZH_Liability" @prev "ScanLZH_Liability" 3. FixLZH Usage : SplitLZH info-file bad-lzh new-lzh Based on the informations obtained by ScanLZH, in info-file, FixLZH picks up uncorrupted parts and assembles them into a new .LZH archive named new-lzh. The info-file consists of lines, a line for a block ( =header + compressed_file) with starting offset in the old-lzh, the original archive, separted with a space, and end offset, then file name, also separated with a space. See examples below. @endnode @node "ScanLZH_Liability" "LHA/LZH Error Correction Utilities: Liability" @toc "ScanLZH" @next "ScanLZH_Errors" @prev "ScanLZH_Errors" 4. On distribution and Liability. There is no restriction to distribute this package. This program is put in the Amiga PD scene and can be freely distributable providing that you don't mess up with the documentation or the executable files IN ANY WAY. The program is copyrighted by The Xperts Group Inc. @endnode @node "ScanLZH_Errors" "LHA/LZH Error Correction Utiities: Known Errors" @toc "ScanLZH" @prev "" 5. Possible Errors expected! ScanLZH does not always make a scan for the full path-name, hence may fail to recognize a header of length more than 255 bytes. Especially .LZH file made in other OS may display a wrong file name or strings of unreadable or unprintable characters. However, FixLZH does not look for the names but for the offsets. Consequently FixLZH may restore files possibly with certain disorder. @endnode @node "Credits" "LHA/LZH Supplement Utilities: Credits" @next "Main" @prev "Main" 6. Credits The programs were programmed in C language by Manolis S Pappas using SAS/C/C++ v6.51. Many thanks to the rest members of the Xperts Group, for doing the - in house - beta-testing: Argiris Maistralis Menelaos Mikedis Andreas Apessos (Focus Studios Ltd) Also many thanks to all Greek Amiga users and especially to: Costas Varfis Pantelis Kopelias Dimitris Krinas Manos Konstantiniadis Spyros Paraschis Pantelis Andreadis Many thanks to the Amiga for beign the best personal computer ever! @endnode @node "SplitLZH_Overview" "LHA/LZH Maintenance Utilities: Overview" @toc "SplitLZH" @next "SplitLZH_SplitLZH" @prev "SplitLZH_SplitLZH" 1. Overview Have you ever created a very big LHA/LZH archive, so big that it would be difficult to fit on a disk? Or, have you ever been forced to split a very big LHA/LZH archive by hand, because your local BBS doesn't allow you to upload files beyond a limited file size? Well, these programs are the answer. With SplitLZH and JoinLZH you can now easily and safely, split a LHA/LZH file into smaller ones. @endnode @node "SplitLZH_SplitLZH" "LHA/LZH Maintenance Utilities: SplitLZH" @toc "SplitLZH" @next "SplitLZH_JoinLZH" @prev "SplitLZH_JoinLZH" 2. SplitLZH This program will split a big LHA/LZH files into smaller ones. Usage: SplitLZH where: is the maximum size of each new archives the program creates. This argument is essential because the program must know this maximum file size in order to split the original LHA/LZH archive into smaller files. is the original BIG LHA/LZH archive you want to split is the base name for each of the new archive files the program creates. For example, suppose that you have an 800Kb LHA file and you want to split it to files with size smaller (or at least equal) to 200Kb. To do that, you issue the command SplitLZH 200 bigfile.lha small The program will create 4 new files with names "small.1, small.2 small.3" and "small.4" each and every one of them will be 200Kb. @endnode @node "SplitLZH_JoinLZH" "LHA/LZH Maintenance Utilities: JoinLZH" @toc "SplitLZH" @next "SplitLZH_Notes" @prev "SplitLZH_Notes" 3. JoinLZH This program joins the splitted files that have been created with SplitLZH. Usage: JoinLZH where: is the base filename of the splitted files (see SplitLZH) is the name of the new archive to create. The program takes every file with basename (e.g small.1, small.2 etc) and joins them to produce the . The can be different from or the original archive. Example: To join the archives that we have created in the previous section, you issue the command: JoinLZH small big.lha @endnode @node "SplitLZH_Notes" "LHA/LZH Maintenance Utilities: A few notes!" @toc "SplitLZH" @prev "" 4. A few notes It is not wise to decompress splitted files without joining them first into the final archive. The reason for that is that SplitLHA splits the original archive, by offset values and not by the names of the files it contains. Therefore if you try to decompress a splitted file, this (in most cases) will fail, simply because it wouldn't have the apropriate checksum values in it. If you didn't understand a word of it, then read this: DON'T UNCOMPRESS SPLITTED LHA/LZH ARCHIVES. INSTEAD, TAKE ALL THE SPLITTED PARTS OF THE ARCHIVE, JOIN THEM INTO ONE AND THEN DECOMPRESS THEM!!! You have been warned! @endnode