home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d9xx
/
d944
/
lhf.lha
/
Lhf
/
Lhf.doc
< prev
next >
Wrap
Text File
|
1993-12-20
|
20KB
|
505 lines
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.
[ <User defined> ]
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 <command> <archive> [<target archive>] [<pattern> ..]
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<<bits words
must be allocated when compressing) and compression speed.
Reduce IO-buffers before reducing these if it is speed you want.
The shift value will in general be best as small as possible.
Typically use L15,5 for all cases but out of memory situations.
L12,4 is the most memory effectively value (but the slowest).
8.2) Decompression options
--------------------------
1) Input buffer size (CLI option R) the R-Value.
This is the buffer size input are readed with when extracting.
2) Output buffer size (CLI option W) the W-Value.
This value must be at least as high as the N-value used when
compression occured. Currently no detection is possible so it
defaults to a W-value of 32k (the maximal N-value) for smaller
values.
8.3) Workdirectory (CLI option w)
---------------------------------
This directory can be used to store temporary files when packing
archives or preforming a user-defined button command on an on files
in an archive. Typically hd owners assign a directory on there hd.
It is saved with the other options.
(Right button selected option window)
---------------------------------------
8.4) Catche lines option
------------------------
This option give you possibility to catch Lhf's output and later
scroll it. Currently lines are stored unpacked (80 bytes each) so
take care that this option not eats up your memory.
8.5) Gadget functional delays
-----------------------------
This enable syncronousation to your system (or your self).
8.6) Copy/Store action
----------------------
1) Copy action.
With these you can select your perfered [COPY] action
(r command action in CLI). When [CCOPY] (or the -c option are
used) all these is set.
2) Store action.
With these you can set up if you want to store things in the
archive or not. This can be handy if you planing to [STORE]
(or use the -s option) and afterwords compress the whole archive.
8.7) Save option
----------------
By enter a pathname to a unaltered (even packed) Lhf copy you can
save all options that can be changed from a option window (or CLI)
as the default values. These values applies to CLI usages also.
Note that the originally Lhf program is altered an there is no
way to get back the previous values. So work with an copy of your
originally Lhf program.
8.8) CLI only options
---------------------
1) d-option
Selects destination directory.
2) h-option
Selects home directory.
3) i-option
With these you can specify an include file with patterns
separated with white spaces. No options are parsed
in the file.
4) '-'-option
By double express introducing '-' in an pattern, you
suppress the status as an option introducer and it will
be parsed correctly as a filepattern.
9) Memory Usage
----------------------------------------------------------------------------
Note that:
- I,O,L values not affects compression.
- Totally 5*N bytes of memory is allocated when compressing.
I working on a option window that are less technical inwich you
can optimate with resp to memory usage.
10) Need of Packing/Reapairing
----------------------------------------------------------------------------
After deletion from an archive unused space is left at the end
of the archive. To remove these area one must create a temporary
archive (if there is a another way please tell me!). These oper-
ation is ignored when deleting files from an archive because when
you later add to the library the unused space is first overwritten.
Note that if you copy to a archive and some of the files you copy
already exist in the archive, deletion are performed so to be sure
that the archive is of minimal size you have to pack it. It is
effectively to trie to pack an already packed archive.
If you have had any io trouble with an archive youh should repair it.
currently this function is not so powerful but it creates a legal
archive structure.
11) Window Title
----------------------------------------------------------------------------
The main window title shows
aa | bb | cc
where
aa = free space (KB) in left box unit
bb = free memory (KB)
cc = free space (KB) in right box unit.
12) Ctrl-F Action
----------------------------------------------------------------------------
When <Ctrl-F> 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