Lhf v1.03 (CLI and Intuition archiver) (c) Copyright 1993 by author Stefan Pampin. Written using varios translators. 0) This document --------------------------------------------------------------------------- This text is written in bad english. I'm sure that the extra work this will take you reading it will be rejectable consider to the work I spend to write it. In all cases, the work is done for you. 1) Disclaimer --------------------------------------------------------------------------- The author cannot be held liable for the suitability or accuracy of this manual and/or the program(s) it describes. Any damage directly or indirectly caused by the use or misuse of this manual and/or the program it describes is the sole responsibility of the user her/him self. 2) Copyright/Distribution --------------------------------------------------------------------------- Lhf, (c) Copyright 1993 by author. All rights reserved. This program is FREEWARE so no financial donations are required ( but welcome ). This program may be freely distributed as long as all files, i.e. documentation and executable(s) remain unchanged and are included with the distribution. (See the exception 3) below). Also no profit is to be made by selling this program. You may not charge more than a resonable fee for the distribution. This program may be distributed on disk magazines, cover disks etc. When you do decide to distribute this program on a disk magazine tell me before. 3) Electronic Distribution --------------------------------------------------------------------------- It is allowed for non-commercial BBSs to distribute an archive with only the following files in it: Lhf - Main Program Lhf.doc - Main Program Manual (This file) Lhf.info - Main Program Icon. LhfEd - Config Program LhfEd.doc - Config Program Manual LhfEd.info - Config Program Icon. You may NOT upload this or any other form of this software on BBSs that claim copyrights on the uploaded material! 4) Requirements --------------------------------------------------------------------------- Lhf should run with all amigas version 1.3 or higher. One feature is disabled for pre 2.0 users, 2.x style pattern maching. The colors will look inverted on the 1.3 system. Perhaps I write specific versions for pre and nonpre 2.0 users. IT IS STILL UNTESTED UNDER OTHER SYSTEMS THAN 2.1 PAL. PLEASE IF YOU HAVE  PROBLEMS WITH LHF UNDER YOUR SYSTEM LET ME KNOW, SO I CAN CORRECT IT. SPECIALLY, NOTES ON SCREEN DIMENSIONS ARE WELCOME. I THINK THERE COULD BE PROBLEMS WITH SYSTEMS MIXING BETWEEN PAL AND NTSC DISPLAY MODES. 5) Running Lhf -------------------------------------------------------------------------- You can start Lhf from either the CLI or the Workbench. Lhf have two user interfaces. One is CLI and the other is Intuition driven. The CLI- interface is invoked from CLI by entering one or more command lines arguments. You can type 'Lhf ?' for a description (or see 7) below). If no parameters are given when Lhf is started from CLI it will act like it was started from WB, i.e. enter it's intuition interface described under 6) below. 6) Intuition Interface ---------------------------------------------------------------------------- * --- GENERAL --- * Almost every gadget have diffrent action when they are selected with the right or left mouse button (even arrow gadgets which pages instead of scrolling when pressed with the right). * --- ENTRY BOX ACTION--- * To enter a directory or a archive in a entry box simply press the right mouse button over the entry. To select file entries press the left mouse button over the entry. You can multi select (even with scroll) by holding the left button down and drag over the entries. To unselect a entry simply select it again. See also [ ALL ] and [ CLR ] about selection. If a directory are selected the selection acts recursively on the childs to that directory, but in some cases (such as the [ RENAME ] function) this action is not taken. The action for the user defined buttons are optional - act only on files,act only on directory,act on both file and directories and finally acts recursively or not. If you enter a legal path that is a existing real path or a existing path to a archive ev joined by slash with a archive path, that path file content will be showed. With the textless gadgets you can switch between showing size protection,date or time. Some archive directories are fictive, why there creation date are not showen. * --- TEXT BUTTON GADGET ACTION --- * If you select a gadget (that is not obviosly specific to a slider box) with left (right) mouse button, the box left (right) box wish displays file entries will be called the source box. The right (left) box is the destination box. [ ALL ] Selects all entries in the source box. [ CCOPY ] Function like [ COPY ] but files are CLONE copied instead of using the copy action you can select in a option window. [ COPY ] This function will copy FROM source box TO the dest- ination box. Thus if the source and destination box both are ordinary directories ,ordinary copy is performed. If the boxes are archives, selected entries are effectively replaced in the destination arhive (without having to extract and recompress). If the boxes are of diffrent kind extraction or compression are performed. Currently there is one restriction. Source and dest- ination archives must be destinct. If you want you can copy a archive to it self (like an archive backup) but ensure that the archive is packed before and that no files are replaced. You can in all cases safely delete it from the archive. [ CMOVE ] Function like [ CCOPY ] but files are moved. [ CLR ] Unselects all entries in the source box. [ DELETE ] This deletes the selected files and directories of a ordinary or archive directory. In the latter case no pack - ing are performed (to recieve minimal size you have to [ PACK ] it). [ DUP ] Duplicates the source box display to destination box display. [ FREEUP ] Reset the state of source box. All associated cathe will be flushed. [ MAKEARC ] This makes a archive (if not existed) in the source box with the name you are ask to enter. [ MAKEDIR ] This makes a directory (if not existed) in the source box with the name you are ask to enter. This even works if you are in a archive. [ MOVE ] Function like [ COPY ] but files are moved. [ OPTIONS ] Will give you posibility to setup options. Diffrent options windows will appear depending on the mouse selection. With the save posibility, you can setup your prefered default options for an unaltered copy of Lhf (see Options below). [ PACK ] This will pack those entries in the source box representing an unoptimated archive. No compression is performed only file operations. [ RENAME ] A string requester will ask you to enter a new name for each selected file. This new name is relative to the source box's path. [ REPAIR ] Applies to the files selected in the source box. If they appear as a corrupted archive, the function will try to recover some data from them by repairing them. [ SCREEN ] Toggle if Lhf should try to open a own screen for its windows. [ STORE ] This require that the source box displays a ordinary directory and the destination box displays a archive directory. It stores files without any compression into the archive. It is preferable if you wish to add a archive as a simple file to another archive, since the compression ratio, in general, will be better. [ SWAP ] This swaps the source and destination box. [ UPDATE ] Update the source box. This can be nessasary due to that the internal catche,external command action or multitasking. [ ] With the program LhfEd you can add button gadgets that calls external commands. Be sure to work with unmodified (including crunched) copies of Lhf. See the documentation file LhfEd.doc for more information. 7) CLI Interface ---------------------------------------------------------------------------- The CLI usage is as follow: Lhf [] [ ..] You can type 'Lhf ?' for a list of available commands and options. Also see the option section 8). Command and options are case sensitive. Options can be given anywhere on command line. Note that the home and destination directories (selected by the -h resp. -d options) corresponds to what is displayed in the source resp. destination box's string gadget. They both default to current dir. It is important that any path name part that ending in the char ':' is given here and not in the patterns. Pattern matching is allowed under 2.x and acts recusively. Thus '#?' is every file and dirs in the directory and it's subdirectories. If no patterns are specified when command is l (list) or x (extract) all files in the archive are selected. The extention .f is not needed and must be specified if it is used ( this allows you to name archives '.f' wich is the default name that appear in the make-directory-requester). Some examples: -------------- 1) Lhf r Arc -hSrcPath -dDstPath #?.(c|h) MakeFile - Compress all C files and/or MakeFile in SrcPath and store (ev. replace) the data in a sub dir DstPath to the archive. If DstPath not already is an existing path in the archive it is created. 2) Lhf x Arc -hSrcPath -dDstPath #?.(c|h) - Extract all C files stored in the archive sub dir SrcPath to the real path DstPath. If DstPath not already is an existing path it is created before. 3) Lhf x Arc - Extract all files and directories in Arc to the current directory. 4) Lhf l Arc -hSubPath - List all files and directories stored in the sub path 'SubPath' to the archive 'Arc'. 5) Lhf c Arc1 Arc2 Dir File - Copy the file File and the directory Dir (and all it's files and sub directories) in the archive Arc1 to the root directory of the archive Arc2. 6) Lhf d Arc -hPath Dir1 Dir2 - Delete the sub directories 'Path/Dir1' and 'Path/Dir2' (and all it's files and sub dircetories) in the archive 'Arc'. 7) Lhf p Arc - Pack the archive 'Arc'. 8) Options ---------------------------------------------------------------------------- (The left button selected option window) ------------------------------------------ 8.1) Compression options ------------------------- 1) Input buffer size (CLI option I), the I-value. If this buffer is suppressed by giving a value less than the S-value. For small I-values input will be readed direcly into compression buffer and it will function at a least factor by wich input are readed. 2) Output buffer size (CLI option O) the O-value. If this buffer is small consider to the H-value it will function like a least factor by wich output is written. A value of zero forces output with no care of alignment and approximately the size of the H-value * 1.25. 3) Huffman buffer size (CLI option H) the H-value. The default size is best in most cases, but changing it can trim a few bytes for the result. Note that it a word size. 4) Buffer step size (CLI option S) the S-value. This is the internal compression work step. Currently the progress value and big deal of stubs is going throw each step. Therefore don't select it to small. On the other size, the smallest value will give the best compression but it is enoght that the ratio N/S is small. Note that N is an even multipel of this size, why you can indirectly change the N-value if you works from CLI. 5) Maximal offset or Index size (CLI option N) the N-value. These value will range from 1 to 32k in step of 512 bytes. A bigger value will in general give better compression but can increase the compression time for the worst cases dramatically. Most compressors works with a static value. As a comparation lharc and lha works with the values 4k resp 8k. Note that this value is a multipel 2 or more of the S-value, why your CLI input may be changed. 6) Hash tabel values (CLI option L) the L-values. The following combinations are allowed. 4 5 6 7 shift 12 X - - - 13 - X - - 14 - X X - 15 - X X X bits From CLI a combination not allowed will be siently corrected. This values thus not affect the compression ratio. The bits-value affects memory usage (a block of 1< is pressed during some operations a break will occur. In intuition mode a requester will bring up and ask you if you want to break the proceeding operation. If you incist a break will occur. The break is friendly to the file and archive structures but beware that when you indeed are replacing files in an archive, the old copies can be loosed (have to truncate previosly stored files/directories before a copy can be performed). The sources will always correspond to what was added or not (nice if you MOVEs). The break are consider as an legal end of source data, so no error messages will occur only an break message. 13) Compression Algorithms --------------------------------------------------------------------------- The algorithms used by Lhf are completely developed and written by the author. Many basic ideas was taken from other algoritms but the final result is more due to me self and random (a bug leaded me into what seems to be the right direction). The main routines are written in assembler and are optimated for a 16-bit machine. 14) Limits ---------------------------------------------------------------------------- Lhf is designed to work with out limits with a few exeption: - All paths are currently supposed to be less than 288 bytes. - The stack size is expected to be at least 4k - The total command line size when preforming a user-defined button must be atmost 1k. A practical note: This archive store files as consequetive words. The tree structure is fictive. Therfore don't make to big archives for speed (and space) reasons. They works, but in an inefficient way. 15) History ---------------------------------------------------------------------------- V1.00 (27-Jan-93) Merged together my archiver and my dir utility, by redirection of the CLI output in intuition mode. V1.01 (18-Mar-93) Changed the compression algoritms. Option windows added. 2.x supported pattern matching added. V1.02 (19-Aug-93) Removed some statistical options. Reduced the code size. Added code to support LhfEd. - Now it have been practical! V1.03 (13-Oct-93) Interface with LhfEd improved. 16) Bugs ---------------------------------------------------------------------------- - Version 1.02 did not stored dates correctly. Fixed with V1.03 - If there are any bug in the latest version, let me know please. 17) Author ---------------------------------------------------------------------------- Any question about distribution rights, bug reports, suggestions, criticisms, contributions, ideas, gifts, etc. can be sent to me (maybe you can receive a later version): Stefan Pampin Timmermansgrand 2 ,4 tr S-118 65 Stockholm Sweden