home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d5xx
/
d577
/
lha.lha
/
LhA
/
LhA.man
< prev
next >
Wrap
Text File
|
1991-12-22
|
108KB
|
3,002 lines
LhA User's Guide
Version 1.0 - December 1991
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
/~~\___________________________________________/~~\
/~~\___________________________________________/~~\
/~~\__/~~\_________/~~\___________/~~~~~~~~\___/~~\
/~~\__/~~\_________/~~\__________/~~~~~~~~~~\__/~~\
/~~\__/~~\_________/~~\__________/~~\____/~~\__/~~\
/~~\__/~~\_________/~~\__________/~~\____/~~\__/~~\
/~~\__/~~\_________/~~~~~~~~~\___/~~~~~~~~~~\__/~~\
/~~\__/~~\_________/~~~~~~~~~~\__/~~~~~~~~~~\__/~~\
/~~\__/~~\_________/~~\____/~~\__/~~\____/~~\__/~~\
/~~\__/~~\_________/~~\____/~~\__/~~\____/~~\__/~~\
/~~\__/~~~~~~~~~\__/~~\____/~~\__/~~\____/~~\__/~~\
/~~\__/~~~~~~~~~\__/~~\____/~~\__/~~\____/~~\__/~~\
/~~\___________________________________________/~~\
/~~\___________________________________________/~~\
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
Written by Stefan Boberg
Copyright (c) 1991 by Stefan Boberg
V1.0 LhA User's Guide Page 1
1 - Introduction
LhA is a new and powerful archiver for the Commodore-Amiga
computer. It is fully compatible with LHA for MSDOS systems and
LhArc for MSDOS, Amiga and *NIX. It is also compatible with LZ
and LhArcA for the Amiga. LhA sports fast compression and
decompression and has several commands and options not found in
any other archiver currently available archiver for the Amiga.
1.1 About the manual
This manual describes LhA, a file archiving program for the
Commodore-Amiga(tm) computer series. LhA creates and reads
archives compatible with the MS-DOS archiver `LHA', and `LhArc',
which is available for all major operating systems.
The manual is divided into four major sections, the first
section (this one) contains some information related to the
program and how it compares to other similar products. The
second section is a little tutorial to demonstrate how to use LhA
in an efficient and flexible way. The third section is a
reference section, where all features, commands and options are
explained thoroughly. The last section contains the license
agreement, registration details and disclaimers.
I know that several pieces of information can be found at two
or maybe even more places in this document, but this is mostly
because I feel that the things I mention is so important that I
don't want anyone to miss it, even if the person in question is
only browsing through the documentation. Another reason is that
this documentation was written over a rather long period in time
and thus I sometimes forgot what I'd previously written...
You may also notice that there are some section numbers that
are jumped over in this manual. This is because the commands and
options described in those sections does not apply to the
evaluation version of LhA. They are in the registered-user
version of the manual, however. There may be some dangling
references to these sections left in this manual, as I have not
had the time to check everything, my apologies for any confusion
this may cause, but it will hopefully be fixed until the next
public release.
1.2 System requirements
LhA will run on any Amiga system with at least 512KB RAM and
one diskdrive, though 1MB RAM and two diskdrives or harddrive is
recommended to get the most out of LhA. LhA will run on any
KickStart from version 1.2 and up. If LhA is used on a system
with the new KickStart 2.x it will adapt to this and utilize
features new to this release. Special care has been taken in the
program design to make the program execute as fast as possible on
V1.0 LhA User's Guide Page 2
68020, 030 and 040-processors without sacrificing 68000
compatibility. Currently, LhA requires `arp.library'.
1.3 Installation
All you have to do to install `LhA' is to copy the executable
file `LhA' and `LhASetup' to some directory in your shell path,
and optionally run the `LhASetup' program to set up your default
options in the LHAOPTS environment variable.
1.4 Terminology
In this section I will try to explain some of the words and
expressions that are used throughout this manual.
ARCHIVE - An archive is a file containing one or more files in a
compressed or non-compressed state and related information like
file names, last modification date/time, filenotes etc.
COMPRESSION - The process of encoding redundant information into
data requiring less storage space. There are a multitude of ways
you can do this in. LhA uses a modified version of Lempel-Ziv
compression with block-adaptive Huffman coding and a dictionary
size of 4096 or 8192 characters.
COMPRESSION RATIO - The compression ratio figures reported by LhA
are calculated as follows: ratio = (1 - (CompressedSize) /
(OriginalSize)) * 100. I.e how many percent of the file that was
GAINED. Other archivers may use other methods. LHA and ARJ for
MS-DOS, for example, calculates the ratio as: ratio =
(CompressedSize) / (OriginalSize), i.e. how large the compressed
file is compared to the original file. (MSDOSratio =
1-(ADOSratio/100)). The higher the LhA compression ratio is, the
better the compression. Most Amiga archivers use the same ratio
calculation method as I use.
EXTRACTION or DECOMPRESSION - The process of recreating the exact
information that was previously compressed (file contents,
modification date, filenotes, protection flags, directory
structure etc.)
SELF-EXTRACTION MODULE (SFX-Module) - This is an archive that is
an executable file capable of extracting self-contained files.
1.5 LhA - what is it?
LhA is a file archiving program written especially for the
Commodore Amiga computer. The primary goal is to provide the
Amiga community with a fast, efficient and reliable file
archiver. LhA creates and processes archive files with the '.LZH'
suffix, and is fully compatible with both MSDOS LhArc and MSDOS
V1.0 LhA User's Guide Page 3
LhA, as well as the Amiga LhArc, LZ, and LhArcA. It handles both
the old LhArc-style compression (-lh1-, -lh0-) and the new
LHA-style (-lh5-, -lh4-).
LhA is at the time of release by far the fastest LhArc archive
handler, and is more reliable and robust than both LZ and LhArc.
Neither LZ nor LhArc even comes close to the speed of LhA. The
compression and decompression routines are written entirely in
what I'd call very optimized 68000 assembly language. The
routines were written directly from scratch in pure 68000
assembler, and did not, as in the other Amiga LZH-archivers,
start as a compiled C-program. Because of this, the routines are
both smaller and, more importantly, faster than they would have
been if I'd used compiler output as source material. You can get
an idea of how fast LhA is compared to other archivers by looking
at the speed test results in section 1.7.1 of this manual. An
even better way to see how fast LhA is, is to try it yourself!
Before writing this program I used LhArc a lot, to archive my
source codes automatically for example. But since LhArc often
behaved in a very weird way when updating archives, sometimes
adding files twice, and sometimes not adding files at all, I
decided to write an archiver of my own. And this is the result...
LZ was no alternative since it did not have the commands I needed
(u,f) and was very unreliable at the time.
1.6 What is a file archiver anyway?
A file archiver, as the name implies, archives files. It
collects the files you specify and stores them all in a single
archive-file. Almost all file archivers (including LhA) also
compress the files before putting them in the archive-file, so
that they occupy less diskspace. When you wish to retrieve some
file from the archive, the archiver decompresses the file and
restores it's file attributes (Last modification date, time, file
comments, protection status etc.). A file archiver can usually
also process archive files in different ways, for instance delete
files, freshen files, print files etc. See the 'ARCHIVER
COMMANDS' section of this manual for an explanation of the
different actions LhA is capable of performing.
The most common use for a file archiver is for transferring
several related files via modem. It would be a very tedious and
cumbersome task to transfer for instance every single source file
of a big project separately, so why not put them all into one
single file? This is where the file archiver comes in, we simply
feed the archiver with all the files we wish to transmit, and
then just transfer the single archive-file the achiver then
creates! Then the receiver just use the archiver to extract all
files from the archive-file onto his harddisk (or floppy). Also,
if the files were compressed by the archiver, it would take less
time to transfer the files as well, which means the phonecall
V1.0 LhA User's Guide Page 4
will cost us less. There are of course other uses for a file
archiver, you can use it as a harddisk-backup program for example
(if you have another harddisk to put the archive file on..), and
you can use it to stuff away files you don't use very often, and
then when you want to use them you simply extract the files from
the archive, and then delete them when you're finished (saves
disk space). Personally I use LhA a lot to make automatic backups
of my source codes for various projects.
The file compression methods vary from very simple, less
effective, and fast (Run-Length Encoding, RLE, for instance), to
complex, effective and relatively time-consuming methods
(Lempel-Ziv-Huffman, LZHUF, as used in LhA). The method used in
LZH-Archivers (LZHUF) is to date probably the best algorithm used
in an archiver. There are other similar methods, like ZIP, but
they are not as good. Even though the files become smaller you
don't lose any information when compressing them, the information
is just stored in a different way. Basically, redundant
(repeated) information is replaced with a pointer to some other
part of the file, where this information is located. For example
in this text the word 'archive' appears at several places, this
is an example of redundant data. Simply put, if a file compressor
was to compress this file it would let the first occurence of
'archive' remain unchanged, and then it would replace all other
occurences of 'archive' with a pointer to the first one. When
decompressing the file, the archiver uses these pointers to
restore the file to its original state.
Files which have already been compressed with one technique
can generally not be compressed any further by feeding them to
the same file compressing program again (If that had been
possible, modem transfers would have been a lot cheaper :), since
the redundant information has already been eliminated. It is
possible though to compress files output by certain compressors
(RunLength-Encoders for example) further by feeding them to a
program that uses another method (like LZHUF), since they
eliminate different kinds of redundant information.
1.7 Why should I use LhA?
There are several reasons why you should use LhA instead of
other archivers for the Amiga; here are some examples:
1) It extracts files faster than any other popular archiver,
including LZ, Zoo, LhArcA, PkAZip, Pkax, Arc, and Ape.
2) It compresses files faster than any other archiver, with the
exception for Zoo V2.01, which has much looser compression
ratio and thus produces much larger archives.
V1.0 LhA User's Guide Page 5
3) It produces smaller archives than any other archiver. LZ
V1.92 and Zoo V2.10 produces archives which are approx. the
same size, but are much slower than LhA on both extraction and
compression.
4) LhA has a number of features that no other archiver for the
Amiga has, for example the ability to create and maintain
multiple-volume archives.
5) I will support and continue development on LhA and related
utilities for as long as the users supports me by registering
themselves as users of LhA - without your support I cannot
keep working on this.
1.7.1 How fast is it?
The following tables compares LhA's compression and
decompression with several other archivers. The T field shows
compression or decompression time in seconds and
T(archiver)
Q=----------- i.e. how much longer the archiver takes compared
T(LhA_lh5) to LhA in -lh5- mode. For example, A Q value of 2
means that the archiver in question takes twice as long as LhA in
-lh5- mode to extract/compress all files. The tests were made
with a A3000/25Mhz/4M SCRAM/2M CHIP and with all files in RAM:.
A special program (`time') was used to measure execution time
with the `timer.device'. The times exclude loading and unloading
time to more accurately reflect the actual program speed. All
tests were made with the programs in their default mode of
operation, except for LhA `max' where the optimal command line
parameters for the files were chosen by hand (-v0 -Qh64).
Extraction speed
Archive: `the brown corpus'
Type: 3.2MB of text, binary and graphics data in 21 files
+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
| LhA | LZ | LhA | LZ |LhArc| Zoo |Zoo | Zoo |PkAZip| Pkax |
| |V1.92| | | |V2.01|V2.1 |V2.1 |V1.02 | V1.0 |
|-lh5-|-lh5-|-lh1-|-lh1-|-lh1-| old |old |-lh5-| imp. |crunch|
+--+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|T |13.3 |27.0 |36.0 |51.2 |90.5 |24.2 |76.1 |57.5 | 45.0 | 51.1 |
+--+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|Q | 1.00| 2.03| 2.71| 3.85| 6.80| 1.82| 5.72| 4.32| 3.38| 3.84|
+--+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
V1.0 LhA User's Guide Page 6
Archive: `dlgmsgs.lha'
Type: 760K text file.
+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
| LhA | LZ | LhA | LZ |LhArc| Zoo |Zoo | Zoo |PkAZip| Pkax |
| |V1.92| | | |V2.01|V2.1 |V2.1 |V1.02 | V1.0 |
|-lh5-|-lh5-|-lh1-|-lh1-|-lh1-| old |old |-lh5-|impld.|crunch|
+--+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|T | 3.1 | 6.4 | 9.2 |13.1 |21.8 | 5.9 |19.3 |14.1 | 11.2 | 13.8 |
+--+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
|Q | 1.00| 2.07| 2.97| 4.23| 7.03| 1.90| 6.22| 4.54| 3.61| 4.45|
+--+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
Compression speed
Archive: `the brown corpus'
Type: 3.2MB of text, binary and graphics data in 21 files
+-----+-----+-----+-----+-----+-----+-----+------+------+------+
| LhA | LZ | LhA | LZ |LhArc| Zoo | Zoo |PkAZip|LhArcA| LhA |
| |V1.92| | | |V2.01|V2.1 |V1.02 |V1.01 | V1.0 |
|-lh5-|-lh5-|-lh1-|-lh1-|-lh1-| old |-lh5-| imp. |-lh1- | max |
+--+-----+-----+-----+-----+-----+-----+-----+------+------+------+
|T | 208 | 396 | 205 | 285 | 571 | 76 | 512 | 394 | 386 | 206 |
+--+-----+-----+-----+-----+-----+-----+-----+------+------+------+
|Q | 1.00| 1.90| 0.99| 1.37| 2.75| 0.37| 2.46| 1.89| 1.86| 0.99|
+--+-----+-----+-----+-----+-----+-----+-----+------+------+------+
Resulting sizes : LhA -lh5- 1139622 1.0000
LZ -lh5- 1139178 0.9996
LhA -lh1- 1199680 1.0527
LZ -lh1- 1199209 1.0523
LhArc -lh1- 1248729 1.0957
LhArcA -lh1- 1248729 1.0957
PkAZip Impl. 1196698 1.0501
Zoo -lh5- 1140114 1.0004
Zoo old 1491922 1.3091
LhA max 1136244 0.9970 (-Qh64)
Archive: `dlgmsgs.lha'
Type: 760K text file.
+-----+-----+-----+-----+------+-----+------+------+------+
| LhA | LZ | LhA | LZ |LhArc | Zoo | Zoo |PkAZip|LhArcA|
| |V1.92| | | |V2.01|V2.1 |V1.02 |V1.01 |
|-lh5-|-lh5-|-lh1-|-lh1-|-lh1- | old |-lh5- |impld.|-lh1- |
+--+-----+-----+-----+-----+------+-----+------+------+------+
|T |30.5 |78.0 |39.8 |63.4 |115.4 |15.8 |120.8 | 45.3 | 84.1 |
+--+-----+-----+-----+-----+------+-----+------+------+------+
|Q | 1.00| 2.56| 1.30| 2.07| 3.78| 0.52| 3.96| 1.49| 2.76|
+--+-----+-----+-----+-----+------+-----+------+-------------+
V1.0 LhA User's Guide Page 7
Resulting sizes : LhA -lh5- 274648 1.0000
LZ -lh5- 274635 1.0000
LhA -lh1- 293076 1.0671
LZ -lh1- 293084 1.0671
LhArc -lh1- 303100 1.1036
LhArcA -lh1- 303100 1.0957
PkAZip Impl. 278837 1.0153
Zoo -lh5- 274839 1.0001
Zoo old 420212 1.5300
LhA max 273383 0.9954 (-Qh64)
1.8 Compatibility and Amiga-specific features
LhA is aimed at full compatibility with LHA V2.12 for MS-DOS,
which is an improvement of the original LhArc V1.13. LhA is also
compatible with LhArc, LhArcA and LZ for the Commodore Amiga
computer. However, LhArc and LhArcA cannot process any archives
with headers of level 1 or 2, or files compressed with the new
LHA compression (-lh5-). LZ 1.92 cannot process archives with
headers of level 2. LHA V2.12 can process all archives created by
LhA.
The LhA-specific extended data structures in the level 2 and
level 1 headers are laid out as follows:
The OS-ID stored in level 1 and level 2 headers is `A' for
Amiga. The only OS-IDs I know of currently are:
ID Operating system
--- ----------------
`A' AMIGA
`F' OS-9 / FLEX
`H' Human68K
`K' OS-9 / M68K
`M' MS-DOS
`m' Mac OS
`U' UNIX
`2' OS/2
`3' OS-386
`9' OS-9
The OS-ID indicates on what operating system the archive was
created. If an entry in an archive has an OS-ID other that `A',
LhA will ignore the file attributes and other OS-specific fields
and use the default attribute / whatever. If LhA encounters an
extended data-field it does not recognize it issues a warning and
continues processing. The warning does not generate any return
code (if nothing goes wrong LhA returns 0 as the return code).
V1.0 LhA User's Guide Page 8
+------------------+
| DISPLAY FILE |
|------------------|
| 0x0003 [Length] |
| 0x70 [ID Byte] |
+------------------+
This extension is used to flag files that should be displayed upon
extraction.
+------------------+
| FILENOTE |
+------------------+
| WORD [Length] |
| 0x71 [ID Byte] |
| char[] [Notestr] |
+------------------+
Obviously, this extension is used to store filenotes in level 1
and level 2 headers.. In level 0 headers the filenote is stored
in another way.
NOTE
The WORD mentioned above and the 0x0003 in DISPLAY FILE
are of course like all other words in the archive
structure stored in `low-endian' (Intel) format, i.e.
with the lower byte first followed by the high byte.
1.9 About the author program history and future
I, Stefan Boberg - the author of the programs in the LhA
family, am 19 years old and studying `applied physics and
electrical engineering', first year, at the Linköping Institute
of Technology. I started working on LhA mainly because I thought
there was no real good archiver for the Amiga, the ones that
existed at the time (June 1991) I began work on it were either
too slow, had loose compression ratios or were bugged/crippled so
that they could not do what I needed an archiver to do. I use
archivers mainly to back up sources for my various programming
projects automatically, and I also use it a lot to just
decompress archives from bulletin board systems and computer
networks. Another reason for doing it was to earn a little extra
money, which I badly need, being a poor student with a _small_
allowance.. :)
Anyway, I intend to continue developing LhA and the related
programs as long as I can, and will release other, related,
programs as well, like an intuition- driven archiver called `LhI'
for instance. A file system to enable you to treat archives as
V1.0 LhA User's Guide Page 9
directories is also in the pipeline and will be released sometime
in the beginning in the next year. Other archive formats than
LhA-style archives will also be supported in the filesystem and
intuition driven archiver by means of special resident libraries
and handlers. When these will be finished depends on how much
time I can devote to developing the programs (have to take care
of my studies you know).
But this all depends on YOU, if I get a good response and
people register I will continue work on the program. If not,
well, then I might as well drop it for other projects, and just
make minor bugfixes to it instead of continuing development...
It's your choice! If you would like to express your opinions
about the program, or have an idea for a feature you'd like to
see in the next version, please drop me a line via EMail (see
section 4 for addresses) or write a letter. I would really
appreciate it! You MUST report any bugs you find (though I hope
you won't find any), so I can fix it right away!
V1.0 LhA User's Guide Page 10
2 Tutorial
This section of the manual contains a number of examples on
how to accomplish various tasks using the LhA archiver. There
are examples for the novice user as well as more advanced users.
Even if you have used archivers a lot before you may want to take
a look at the examples to see what the commands and options new
to LhA can do.
<this section is yet to be written>
V1.0 LhA User's Guide Page 11
3 Reference guide
This section of the manual is intended to be used mostly as a
reference guide when you want to know exactly how a certain
option or command works. If you haven't used LhA before (but
used other archivers), you should at least glance through the
descriptions of all the commands and options to get an idea of
what LhA can do.
3.1 Command line syntax
The command line syntax is as follows:
LhA [-options] <Command> <Archive> [[HomeDir] FileSpec] [@file]
[destdir]
The items in square brackets are optional, and the items in
angle brackets are mandatory. Read the following sections for
exact information on the various items.
3.1.1 Specifying options
Unlike other archivers, LhA lets you specify options anywhere
on the command line. The option specifier is `-' (dash), any
items on the command line that begins with this character are
considered to be option switches. If you want to specify a
filename or something else that begins with a `-' character,
enclose the name in double quotes or use double dashes. For
example, to specify a filename of `-minus', you could write
either `"-minus"' or `--minus'.
If you write `-o' the option `o' is enabled regardless of its
initial state. If you want to disable an option, append a `0'
(zero) after the option, like in `-o0'. If an option is followed
by any other numeric character than `0', the option is enabled.
You can specify multiple options without having a dash in
front of every option character. An example would be `-ox0m',
which would enable option `o', disable option `x' and enable
option `m'. The only exception is options taking multi-digit
numeric arguments, which must be followed by whitespace and
another dash if you want to specify more options (like in `-b32
-ox0m').
3.1.2 Specifying commands
The first non-option argument on the command line MUST be the
command specifier. The commands are case-insensitive (`l' means
the same thing as `L'), and only the first character of the
argument is considered (except for the `vv', `mb' and `mf'
commands), so you may use verbose commands such as `list' or
V1.0 LhA User's Guide Page 12
`add' instead of `l' and `a', respectively.
3.1.3 Specifying archives
The archive specification must be the second non-option
argument (the first being the command specification). In most
cases you can specify a pattern here. The exceptions are the `m'
(move files to archive), `r' (repair archive) , `s' (split
archive) commands.
3.1.4 Specifying action files
The action files are specified after the archive
specification. The action file specifications may include pattern
matching tokens. Note that, as all other file specifications in
LhA, action file specifications may contain wildcards for
directory names as well - `hd:*/*/dir/*.h' is valid, for
example.
3.1.5 Home directories
Home directories is a new concept introduced with LhA, it
provides an easy way of specifying what parts of pathnames that
should be preserved in the archive. It can also be used to
simplify specifications of mutiple files in the same directory.
It is perhaps best explained with a couple of examples:
EXAMPLE
Example 1:
lha -x a newarc dh0:files/ file1 dir1/file2 dir2/file3
dh0:files2/ *.c
This would add the following files to `newarc.lha':
Added file(s) Stored as
----------------- --------------
dh0:files/file1 file1
dh0:files/dir1/file2 dir1/file2
dh0:files/dir2/file3 dir2/file3
dh0:files2/*.c *.c
Example 2:
lha -r a newarc hd:tmp/ *.c *.h hd:px/ *.s *.snd *.iff
This would add all `.c' and `.h' files in `hd:tmp' and it's
subdirectories, storing pathnames, but excluding the `hd:tmp'
part. For instance, the file `hd:tmp/src/foo/arargh.c' would
be stored in the archive with the name `src/foo/arargh.c'.
Additionally, all `.s', `.snd' and `.iff' files in `hd:px' and
V1.0 LhA User's Guide Page 13
its subdirectories will be added, excluding the `hd:px/' part
of the name.
Homedir specifications must end in `/' or `:', otherwise they
won't be recognized as such.
Homedir specifications may contain wildcards and other pattern
matching tokens.
3.1.6 Recursive file collection
When collecting files recursively (by using the -r option with
a or u commands), action file specs are treated somewhat
differently. Home directories work the same way as usual. In
recursive file collection mode, the last node of the action file
specification (i.e. the file name part) is used as a pattern that
is compared to all files in the specified directory and its
subdirectories. Some examples to hopefully clarify the somewhat
fuzzy description:
EXAMPLE
Example 1:
lha -r a myarc *
This will add all files in the current directory and its
subdirectories to `myarc.lha'.
Example 2:
lha -r a myarc *.c *.cpp
Will add all `.c' and `.cpp' files in the current directory
and its subdirectories to `myarc.lha'.
Example 3:
lha -r a myarc ram:work/* hd:tmp/*.c
Will add all files in `ram:work' and its subdirectories - as
well as all `.c' files in `hd:tmp' and its subdirectories - to
`myarc.lha'. The full pathnames will be stored (excluding the
device specification of course).
Example 4:
lha -r a myarc ram:work/ * hd:tmp/ *.c
Will do exactly the same as example 3, but LhA will not store
the `ram:work/' and `hd:tmp/' parts of the filenames in the
archive. (Because of the home directory specifications).
V1.0 LhA User's Guide Page 14
3.1.7 Specifying destination directory
You can optionally specify a destination directory for the
files written by the extract commands by writing the desired
directory name as the LAST argument on the command line. If no
destination directory is specified, LhA will use the current
directory as the destination. The destination directory
specification must end in `:' or `/', just like home directory
specifications, or LhA would not be able to distinguish directory
names from action file specs.
EXAMPLE
`lha x corpus ram:' would extract the contents of `corpus.lzh'
to ram:.
`lha x project *.c dl:tmp/' would extract the contents of
`project.lzh' to the `dl:tmp' directory.
3.1.8 `@'-files
`@'-files are files that are treated as if their contents were
written on the command line. They can be used to specify files,
options commands and anything else can be specified on the
command line. An example would be the command `lha -r e arc.lzh
*.[chas] @filelist ram:', which would extract all files matching
`*.[chas]' or the files listed in `filelist' to ram:. Carriage
returns and linefeeds in `@'-files are treated as whitespace.
3.1.9 LhA limitations
LhA has been written to be as flexible as possible, but there
are some limitations that you should be aware of as a user:
o LhA pathnames are currently limited to 255 characters.
o When headers of level 0 are used, filenotes may not be longer
than 254-{filename length (including path)} chars. With header
level 1 or 2 filenotes may be up to 255 characters (AmigaDOS
currently only supports filenotes of max 80 characters so this
should not be any problem).
o The number of files in an archive files are only limited by
available disk space.
o The number of arguments on the command line is only limited by
available RAM memory and the used shell.
o The allowed number of wildcard-matched files is only limited
V1.0 LhA User's Guide Page 15
by available RAM memory. Any number of files may be extracted
or added to an archive in one go.
V1.0 LhA User's Guide Page 16
3.3 Pattern matching
This section describes how LhA handles pattern matching and
file collection. For a discussion on what commands will accept
file patterns, please refer to section 3.1 (Command line
syntax).
Pattern matching in LhA is always case-insensitive. (i.e. it
doesn't matter if you write names in upper- or lowercase, `a'
will match both `a' and `A'.
3.3.0 Exactly what is pattern matching anyway?
Pattern matching is a means of specifying several files in an
elegant and relatively straightforward manner. Instead of just
lining up all the file names you would like to work on on the
command line (which can be very tedious when a lot of files are
involved) you can use a technique called `pattern matching'.
With this technique you - as the name implies - use the fact that
the names of the files you wish to work on often share certain
characteristics. For example, the names of files containing
C-source almost always end in `.c', so if you would like to add
all C-source files in the current directory you could take
advantage of this fact by specifying a pattern to that matches
these files (in this case such a pattern would be `*.c').
Exactly how these patterns are built up are explained in section
3.3.1 forward. Also read the sections explaining `how to specify
action files' and `how to specify archive files'.
3.3.1 Accepted pattern tokens
LhA accepts all valid KickStart 2.x and 1.x pattern tokens, it
also accepts all ARP tokens (works more or less the same way as
KS2.x).
In the explanations that follow, the term `expression' means
either a single token or character (such as `x' or `?'), or an
alternation (such as `(ab|cd|ef)'), or a character class (such as
`[a-z,A-Z]').
3.3.1.1 Question mark (?)
The question mark matches any one _single_ character. The
question mark is sometimes also referred to as the `wildchar'.
EXAMPLE
`d?' : matches all two-letter names beginning with a `d'
character. For example `dm' or 'd8'.
`ab?d' : matches all four-letter names beginning with `ab' and
V1.0 LhA User's Guide Page 17
ending in `d'. For example `abcd', `abad' and `ab_d'
but not `abd' or `acid'.
`f??' : matches all three-letter names beginning in `f'. For
example `foo', `fel', `fan' but not `ab', `f18' or
`fini'
3.3.1.2 Star/Asterisk (*)
The star matches any sequence of any length, including
sequences with length zero (i.e. the null string). The `*'
character is often called the `wildcard' character.
EXAMPLE
`a*' : matches all names starting with an `a', for example
`abba', `anette'.
`a*z' : matches `auugaz', `awacz' and `az' and any other names
starting with an `a' and ending in `z'.
`s*f*n' : matches `stefan', `staffan', `steffen', `sfn' or any
other name starting with an `s', followed by any number
of arbitrary characters, followed by an `f', and ending
in `n'.
`*.lzh' : matches all names ending in `.lzh'
3.3.1.3 Hash mark (#)
The hash mark matches a subsequent expression (pattern) 0 or
more times. The simplest example of this is `#?' which will
match any filename.
EXAMPLE
`#a' : matches any name consisting of the `a' character only.
For example `aaaa' and `a'.
`b#ad' : matches any name beginning in `b', followed by any
number (including 0) of `a' characters, and ending in
`d'. For example `bad', `bd' and `baaaad'.
V1.0 LhA User's Guide Page 18
3.3.1.4 Square brackets ([])
The square brackets enclose a set of characters to match.
They are a bit like the parentheses but match single-characters
only. You can either specify just the letters you would like the
expression to match, as in `[abcx]' (this would match `a', `b',
`c' and `x'), or you can specify ranges, like `[a-c,x-z]' (which
would match `a', `b', `c' and `x', `y', `z').
EXAMPLE
`prg.[1-9]' : matches any five-letter name beginning with
`prg.', followed by a non-zero digit. For example
`prg.1', 'Prg.8'.
`Ver_[1-2].[0-9].[a-z]' : matches any nine-letter name
beginning with `ver_' followed by either a `1' or a `2'
character, followed by a dot (`.'), a digit and finally
a character between `a' and `z' (i.e. all letters in
the english alphabet). For example `Ver_1.2.a',
`Ver_2.9.d'.
`#[a-z 0-9]' matches any name containing any number of
alphanumeric characters (i.e. either in the alphabet
or numeric). For example `ados' or `PDP11'. It does
not match `AXE.dat' however, since it contains a `.'
which is not in the specified character range.
`*.[chas]' : matches any name ending in `.c', `.h', `.a' or
`.s'.
3.3.1.5 Parentheses and the vertical bar
Parentheses can be used to achieve several things. The first
way of using them is just like in mathematics - to group several
individual expressions into one single expression. The other way
is to provide a list of acceptable expressions separated with `|'
chars. The entire parenthesized expression is treated as one
token by other tokens (like `#' and `~'). These two are actually
the same, since the first is just a special case of the second
use. This is easier to explain with a couple of examples:
EXAMPLE
V1.0 LhA User's Guide Page 19
`(abc|def|xyz)' : will match names `abc', `def' and `xyz' and
no other.
`*.(doc|prf|man)' : will match all names ending in `.doc',
`.prf' or `.man'.
`~(pfile)' : will match all names except `pfile'. (NB: this
expression is NOT the same thing as `~pfile', see
section 3.3.1.6 for details)
`(*.c|*.h|*.doc|ab*)' : will match all files ending in `.c',
`.h' or `.doc' and all files beginning with `ab'.
Typing an action-file spec of `(xxx|yyy|zzz)' is functionally
equivalent to writing `xxx yyy zzz' (xxx, yyy, zzz can be any
valid patterns, including patterns with parentheses).
Parentheses can be nested.
3.3.1.6 Tilde (~)
The tilde negates the immediately following expression. It
negates ONLY the immediately following token or paranthesized
expressiom, not the entire following expression as some people
think.
EXAMPLE
`~x?' : matches any two-letter name except those starting with
`x'. For example `ah', `ko' or 'ba' but not 'x0' or
'xi'.
`~(x?)' : matches anything except two-letter names starting
with `x'. For example `xaa' or `ab' but not `xa' or
'x9'.
`~(#?)' : matches nothing at all. (The tilde negates the
`#?', which matches all names).
`~lha' : matches all strings that doesn't begin with `l', and
ends in 'ha'. For example `uha', `why_lha' but not
'lumbha' or 'lha'.
V1.0 LhA User's Guide Page 20
3.3.1.7 Percent sign (%)
The percent sign represents the empty string. i.e. it
matches 0 characters always. It is only useful in parenthesized
expressions and must not follow a the `#' token (`#%' would be a
rather pointless pattern, since the % always matches exactly 0
characters).
EXAMPLE
`lha(.doc|.man|%)' : matches `lha.doc', `lha.man' and `lha'.
`l%u%a' : matches `lua' only; the percent signs are totally
irrelevant here and can just as well be removed.
V1.0 LhA User's Guide Page 21
3.4 Commands
This section describes the commands for archive manipulation
and maintenance LhA offers to you. See section 3.1.2 (Specifying
commands) for details on how to specify commands on the command
line.
3.4.1 `a' Add files to archive
Obviously, this command adds a number of files to one or more
archives. If the specified archive does not already exist, then
it will be created. You cannot add files to an archive if these
already exist in the archive. If you attempt to do so, a warning
will be issued, but LhA will continue adding the other files you
have specified.
Only the filenames are stored by default, if you want to
preserve some disk structure and directory names, you will have
to use the -x option to turn path preservation on. If you want to
archive entire subdirectories recursively you can use the -r
option, which will turn on the -x option automatically. These
options are explained in section 3.5.
EXAMPLE
`LhA a myarchive dict.txt' would add the file `dict.txt' to
the archive `myarchive.lha'.
`LhA a arc.lzh *.c *.h' would cause all files in the current
directory ending in `.c' or `.h' to be added to the archive
`arc.lzh'
`LhA -r -0 arch *.c' would cause all `.c' files in the current
directory and all it's subdirectories to be added to the
archive `arch.lzh' using the -lh1- (LhArc 1.x) compression
method.
`LhA -r archive src:(lharca|lha)/*.[cha] asrc:*.asm' would
cause all `.c', `.h' and `.a' files in the `src:lharca' and
`src:lha' directories and subdirectories, as well as all
`.asm' files in the `asrc:' directory, to be added to the
archive `archive.lha'.
3.4.3 `d' Delete files from archive
This command removes one or more files from an archive.
NOTE
V1.0 LhA User's Guide Page 22
Files deleted with the `d' command cannot be recovered
from the archive file in any way. Once a file is
deleted from an archive it is gone forever.
3.4.4 `e' Extract files from archive
This command is used to extract files from an archive. It
works just like the `x' command, except this command takes the
`-x' option into consideration (the `x' command assumes it is
set). If the `-x' option is disabled, files are extracted
without their pathnames, and if it's enabled LhA will extract all
files with the pathnames and create the needed directories if
they do not already exist.
EXAMPLE
`lha -x0 e foo.lzh ram:' will extract all files from the
archive `foo.lzh' to ram:, without paths (all files will be
put in the ram: root directory).
`lha x foo.lzh *.c ram:' will extract all files ending in `.c'
to ram:, with paths - i.e. it will recreate the original
directory structure.
See the tutorial section for more examples
3.4.5 `f' Freshen files in archive
This command is used to freshen files in an archive. I.e.
replace older files in the archive with new files from the
current directory. Pathnames are considered if the `-x' option
is enabled. This command never adds any files to an archive, it
just replaces those files that have older modification dates than
the corresponding files in the current directory.
EXAMPLE
`lha f /aab/lha' will freshen all files in the archive
'/aab/lha.lha'.
`lha f /aab/fsys *.[ch]' will freshen all `.c' and `.h' files
in the archive '/aab/fsys.lha'.
3.4.8 `l' List archive contents (terse)
This command gives a terse list of the contents of an archive
file, including file names (without paths), original and
compressed length, last modification date and compression ratio.
V1.0 LhA User's Guide Page 23
Files with pathnames are indicated by having a `+' character
in front of the name. See example below.
Filenotes are NOT displayed when using this command, use the
`v' or `vv' command to display those.
The action file specification is used to determine what files
to list. If no filespecs are given, all files will be listed.
EXAMPLE
1> lha -N l dl:c64new
Listing of archive 'dl:c64new.lzh':
Original Packed Ratio Date Time Name
-------- ------- ----- --------- -------- -------------
36098 26979 25.2% 20-Oct-91 22:40:16 +Stormlord
482 293 39.2% 20-Oct-91 22:41:36 +Stormlord.info
23016 12100 47.4% 21-Oct-91 08:28:18 PlaySID
-------- ------- ----- --------- --------
59596 39372 33.9% 25-Oct-91 21:22:48 3 files
The `+' (plus) signs in front of the first two names indicate
that the file has a path which is not displayed with the `l'
command (use the `v' or `vv' command to display pathnames as
well). The `-N' suppresses the copyright notice.
3.4.9 `m' Move files to archive
This command works just like the `a' command, but the source
files are deleted after successfully adding them to the archive.
EXAMPLE
`lha m includes.lzh src:*.[hi]' will move all files in
directory `src:' having filenames ending in `.h' or `.i' to
the archive `includes.lzh'.
`lha m myarc.lzh lhb_log.911012 lhb_idx.911012' will move the
two specified files (`lhb_log.911012' and `lhb_idx.911012') to
the archive `myarc.lzh'.
3.4.14 `p' Print files to stdout
This command works just like the extract (`e', `x') commands,
but sends the extracted output to stdout (normally the console or
output redirection file).
V1.0 LhA User's Guide Page 24
3.4.17 `t' Test archive integrity
This command tests the specified archives integrity by
extracting the files they contain to nowhereland, i.e. the data
is decompressed only, not written to any file. This command only
works on entire archives, i.e. you cannot just test one file in
an archive. If this command fails, the archive is corrupted, and
a warning return code is returned.
EXAMPLE
`lha t work:arcs/*' will check the integrity of all archives
in directory `work:arcs'.
`lha t s:envarc.lzh' will check the integrity of
`s:envarc.lzh'
`lha -R t dh0:*' will check the integrity of all archives on
the `dh0' volume (`-R' = Collect archives recursively).
3.4.18 `u' Update archive
As the command name implies, this command updates archives. It
adds files that are not yet in the archive and replaces existing
but older files. The last modification date for files are used to
determine which file is the newest one.
EXAMPLE
`lha u /aab/lha.lzh *.c' will update archive `/aab/lha.lzh'
with all `.c' files in the current directory.
3.4.19 `v' List archive (verbose)
This command works just like the `l' command, but displays the
full pathname of the file, while `l' only displays the name node
without path. Another difference between `l' and the `v'/`vv'
commands is that the `l' command does not show filenotes.
Filenotes are displayed on a separate line with a colon (`:') in
front of it, just like the AmigaDOS `list' command.
The action file specification is used to determine what files
to list. If no filespecs are given, all files will be listed.
EXAMPLE
1> lha -N v dl:c64new
Listing of archive 'dl:c64new.lzh':
Original Packed Ratio Date Time Name
V1.0 LhA User's Guide Page 25
-------- ------- ----- --------- -------- -------------
36098 26979 25.2% 20-Oct-91 22:40:16 S/Stormlord
482 293 39.2% 20-Oct-91 22:41:36 S/Stormlord.info
23016 12100 47.4% 21-Oct-91 08:28:18 PlaySID
: New version with `equalizers'
-------- ------- ----- --------- --------
59596 39372 33.9% 25-Oct-91 21:22:48 3 files
The `-N' suppresses the copyright notice.
3.4.20 `vv' List archive (full)
This command is just like the `v' command, but displays all
available information in a slightly different format. The
original and packed size, last modification date and compression
ratio is listed just as with the `v' command, plus file
attributes (`Atts'), compression method, file CRC and DOS ID for
the OS the files were compressed on. If no DOS ID is given in
the archive (header level < 1), a question mark is displayed.
The currently known DOS IDs are `A' and `M', where `A' is for
AmigaDOS and `M' is for MS-DOS. The filename including path is
displayed on a separate line. File notes are displayed in the
same way as the `v' command does it, on a separate line after the
filename.
The action file specification is used to determine what files
to list. If no filespecs are given, all files will be listed.
EXAMPLE
1> lha -N vv dl:c64new
Listing of archive 'dl:c64new.lzh':
Original Packed Ratio Date Time Atts Method CRC DOS
-------- ------- ----- --------- -------- -------- ------ ---- ---
S/Stormlord
36098 26979 25.2% 20-Oct-91 22:40:16 ----rwed -lh1- 2093 ?
S/Stormlord.info
482 293 39.2% 20-Oct-91 22:41:36 ----rwed -lh1- 710E ?
PlaySID
23016 12100 47.4% 21-Oct-91 08:28:18 ----rwed -lh5- 89FF ?
: New version with `equalizers'
-------- ------- ----- --------- --------
59596 39372 33.9% 25-Oct-91 21:22:48 3 files
The `-N' option suppresses the copyright notice.
3.4.21 `x' Extract files with path
V1.0 LhA User's Guide Page 26
This command is exactly the same as the `e' command, but it
always extracts files with paths (i.e. same as using the `e'
command with `-x' option on), regardless of the state of the
`-x' option.
V1.0 LhA User's Guide Page 27
3.5 Options
This section describes the various options that are
available to you when using LhA. For a detailed explanation on
how to enable/disable specific options and where you can
specify options, see section 3.1.1. The letters in parantheses
indicate what commands the options affect.
Code Commands
----- ------------
(add) a,u,f
(all) all commands
(ext) e,x
(upx) a,u,f,e,x
(upd) a,u,f,d
3.5.1 `-a' (upx) Preserve file attributes
This option, when enabled, will make LhA store and restore
file protection flags. The eight attributes are listed below:
r: Read - This flag is set for files which are readable (a
file is read-protected if the flag is unset).
w: Write - This flag is set for files which are writeable
(a file is write-protected if the flag is unset).
e: Execute - This flag is set for files which are
executable (binary load files or shell scripts must have
this bit set).
d: Delete - This flag is set for files which are
deleteable (a file is protected from deletion if this
flag is unset).
a: Archived - This flag is used by harddisk-backup
programs (and optionally LhA) to indicate what files
have been changed since the last backup. If this flag is
set it indicates that the file is unchanged, and if it
is unset the file has changed since the last backup.
The bit is cleared whenever a write is made to the
file.
p: Pure - This flag is set for binary load files which are
pure (i.e. multitasking reentrant), and can be made
resident with the AmigaDOS 'resident' or equivalent
command.
s: Script - This flag is set for shell script files.
h: Hidden - This flag is set for files that should not
show up on directory listings. It is not supported by
V1.0 LhA User's Guide Page 28
AmigaDOS shell/CLI commands, and should thus not be
used.
Please refer to an AmigaDOS manual for more detailed
explanation of the various file protection flags.
If the option is disabled (by issuing `-a0' on the command
line or in the LHAOPTS environment variable), the protection
flags are set to '----RWED' for all extracted and archived
files. Important: You MUST have this option enabled both when
archiving and extracting to preserve file attributes
correctly.
NOTE
Use this option only if you know that the archive has
been compressed or will be decompressed with an Amiga
archiver, since the attribute field format is
different on different operating systems. If you use
archive headers of level 1 or higher you need not
care about this since the archiver then detects what
OS the archive was created on and only uses the
protection flags if it is the native OS. Always
leave this option enabled when using archive headers
of level 1 and higher!
This option is enabled by default.
3.5.2 `-A' (upd) Set archive attributes
When this option is active, LhA will set the file protection
flags of all archives it updates to `----RW-D'.
This option is ON by default.
3.5.3 `-b' (all) Set I/O buffer size
This option will set the size of the I/O buffers LhA uses when
reading and writing to archive files. You can set the buffer
size to anything from 8KB to 64 KB. Larger buffers normally
makes LhA operate slightly faster (depends on the nature of the
archive and what files are selected).
EXAMPLE
'lha -b64 a archive.lzh hubba' : Will add file `hubba' to
`archive.lzh' using an I/O buffer of 64K.
NOTE
Running LhA with a small I/O buffer on an accelerated
(68020 and up) Amiga will degrade compression /
decompression performance significantly! The default
buffer size of 32KB is enough in most cases, and
works well on an unaccelerated Amiga as well. Also
note that when running LhA and doing all work on some
ram disk, the I/O buffer size is less important, and
V1.0 LhA User's Guide Page 29
it is unnecessary to run with a large buffer. The
default buffer size of 32K is OK for most purposes.
The default buffer size is 32K (32768 bytes)
3.5.5 `-c' (all) Confirm files
When this option is active LhA will ask you for confirmation
on all files and archives that are acted upon.
This option is OFF by default.
3.5.6 `-C' (ext) Clear arc-bit on extract
When this option is active LhA will mask the A-protection
bit for all files it extracts. This is useful when extracting
files from archives to a harddisk, since the extracted files
would not be recognized as new or changed files by the backup
program if the A-bit was set.
This option is ON by default.
3.5.8 `-D' (all) Alternate progress display
This switch is used to change the look of the byte progress
indicator that LhA displays when it is compressing or
decompressing files. There are several different types of
progress indicators, you can specify which one you want with a
digit after the '-D' string.
0: This is the default progress indicator, it displays how
many bytes of the file LhA has processed, and how many bytes
there is in the file like this:
(xxxxxxx/yyyyyyy) where x = bytes processed, and y = total
bytes in the file.
1: This progress indicator simply shows a `rotating line' that
is rotated 45 degrees every time the progress indicator
display is updated).
2: This progress indicator shows how many percent of the file
LhA has processed.
3: This progress indicator displays a growing bar that
indicates how much of the file that has been processed.
V1.0 LhA User's Guide Page 30
EXAMPLE
`lha -D2 a src *.asm' will add files to the archive
`src.lha' with a percentage indicator (type 2).
The default progress indication type is 0.
3.5.11 `-f' (all) Ignore filenotes
When this option is enabled, LhA will not store or restore
any filenotes. There is no real need to do this, since it does
not cause any compatibility problems with other systems because
of the way the filenotes are stored. If problems should arise
anyway, try enabling this option or use headers of level 1 or
higher if the target system supports it.
See the section about compatibility (1.7) for a discussion
about this and other compatibility issues.
This option is OFF by default (filenotes are stored and
restored)
3.5.12 `-F' (all) Use fast progress display
In this mode LhA uses a different method of display progress
for the extract and test commands. Normally, LhA emits a
linefeed (LF) after each file has been processed, thus
advancing/scrolling the display one line. In this mode LhA only
emits a LF when an error occurs. This is useful if you are
testing or extracting files with a lot of small files, and the
scrolling takes more time than the actual decompression!
NOTE
If you use the default style progress display on a
very fast Amiga system (68020+), beware that the
scrolling of the screen may actually take more time
than the actual decompression! This is especially
true for archives with many small files. So don't
use it unless you really _have_ to see what files
have been processed. LhA scrolls the display
whenever an error occurs on a file, so you still can
see when an error occurs (better, even, since the
only filenames that remain on screen after the action
is complete are those that failed!).
This option is OFF by default (use old style progress
indication).
V1.0 LhA User's Guide Page 31
3.5.16 `-i' (all) Read filelist from file
With this option you can include an action file list from a
file instead of specifying all action files on a command line.
EXAMPLE
If the file `ArcFList' contains the following lines:
---> Start of ArcFList data (this line is NOT in the file)
LhA.c ArcList.c FSys/*.(c|h|i|asm|prf|man|doc|txt)
---> End of ArcFList data (this line is NOT in the file)
The following command line:
`lha -iArcFList u /aab/lha.lzh'
Will do the same thing as this command:
`lha u /aab/lha.lzh LhA.c ArcList.c
FSys/*.(c|h|i|asm|prf|man|doc|txt)'
NOTE
This command works almost exactly like entering
the following command line:
LhA ? ???? @file
Thus you can include options in your -i file. The
only difference is that the -i file cannot contain
a destination directory specification while you
can do this with the @file method. The destination
directory will always be taken from the command
line when using the -i option.
See the section about `@'(include)-files for an alternate
way of doing this.
3.5.17 `-k' (all) Keep partial files
This option will, if it's enabled, prevent LhA from deleting
temporary files when an error occurs. Normally temporary files
that fail the CRC check, cause I/O errors or are interrupted
with CTRL-C are deleted before exiting LhA with an error
message, with this option you can force LhA to keep those
(often) partial files. This can be useful when trying to
V1.0 LhA User's Guide Page 32
recover data from corrupted archives - LhA will attempt to
extract the data from the erraneous archive file and put a
special filenote on the file to indicate that it failed the CRC
check and probably is corrupted.
This option is OFF by default (partial files are deleted).
3.5.18 `-l' (ALL) Make filenames lowercase
This option, when active, will cause LhA to convert all
filenames to lowercase. This is useful when extracting files
from archives created on MSDOS systems, whose filenames are all
uppercase, which look completely braindead (IMHO). Use this
option to make them look nicer!
EXAMPLE
`LhA -l x myarc' will extract all files from
`myarc.(lzh|lha)', making all filenames lowercase.
This option if OFF by default
3.5.19 `-L' (ALL) Create filelist
When this option is enabled, it will cause LhA to create a
list of the files it has acted upon (i.e. what files in the
last operation that matched the action file specification you
gave on the command line). The name of the list file must
follow immediately after the `-L' string. If you need spaces in
the filename, enclose the name in double quotes.
EXAMPLE
`lha -Lram:ListFile d src.lzh *.asm' will delete all files
in `src.lzh' with names ending in `.asm' and create a list
of the deleted files in the file `ram:ListFile'.
`lha -L"ram:List File" u src.lzh *.asm' will update
`src.lzh', and create a list of the files that were
added/replaced in the file `ram:List File'.
NOTE
The file that this option creates is a plain ASCII
file with every name on a separate line. The files
created by this option are suitable for use as action
or exclude lists for LhA using the `@' or `-i'
options.
This option is OFF by default (no filelist created).
3.5.20 `-m' (ALL) No messages for query
V1.0 LhA User's Guide Page 33
When this option is active LhA will suppress all queries
that normally are issued before overwriting existing files for
example. Enabling this option will also cause LhA to ignore
TelOps (autoshow files). When this option is on you LhA will
behave like you choose the default action in response to all
the queries.
This option if OFF by default.
3.5.21 `-n' (upx) No byte progress indicator
When this option is enabled, the byte progress indicator is
disabled! This may be desirable when running the program on
extremely fast processors (read: the MC68040), if you're
running a console on a 24bit graphics board, or simply because
you think it looks awful :)... I usually leave it on to
display the speed at which LhA operates! It may slow down
operations a bit, but the difference between on and off are
very slight. Turn it off if you need those milliseconds
badly...
This option is OFF by default.
3.5.22 `-N' (all) No progress indicator
This option is similar to the `-n' option, but supresses
higher-level progress indication (i.e. the display of what
file LhA is bashing). It also disables the short copyright
banner that is printed at each invokation otherwise.
NOTE
This option's behaviour is different (and more
useful, IMO). from that of LZ's `-N' switch, which
simply turns off ALL LZs console output, including
error messages and queries (like using output
redirection to NIL:).
This option is off by default (file progress indication
ON).
3.5.23 `-o' (upx) On or after date
This option is used to specify a date to force LhA to only
add/extract files that have a last modification-date that is
the same or newer than the specified date.
EXAMPLE
`lha -o13-dec-90 e xyzzy ram:' will extract all files last
modified on December 13th 1990 or later from 'xyzzy.lzh/lha'
V1.0 LhA User's Guide Page 34
to ram:
`lha -ojan-91 a bogus.lzh *.c' will add all files in the
current directory ending in `.c' that have been modified
since January 1st 1991 to the archive file `bogus.lzh'.
3.5.25 `-p' (ALL) Pause after loading
When selected, this option will cause LhA to pause and wait
for the user to press any key before executing a command. This
is useful for users with floppies, who can then swap disks
after LhA has been loaded and is waiting for a keypress.
This option is OFF by default.
3.5.26 `-P' (ALL) Set task priority
This option is used to set the LhA process priority. The
priority may be set to any value in the range -5 to +5,
including 0. The higher priority you give LhA, the more CPU
time it will grab (processes with lower priority will almost
never get the chance to run since LhA is very
processor-intensive). Setting it to a low value (like -5) will
make LhA only use the processor time that nobody else wants
(nice when running LhA as a background task while running a
comm program).
The priority must be specified with a single (optionally
prefixed with a minus sign for negative priority) digit
immediately after the P as in:
EXAMPLE
`lha -P-1 a nonsense.lzh bogus.txt' will make LhA add the
file `bogus.txt' to the archive `nonsense.lzh', running at
priority -1.
The default priority is inherited from the calling process
(i.e. the CLI or program that called Execute()/RunCommand() ).
This is usually zero (0).
3.5.27 `-q' (ALL) Be quiet
This option will supress ALL messages from LhA.
This option is OFF by default
3.5.28 `-Q' (ALL) Alternate option set
This option character (`Q') will cause all following option
characters until next space character to be interpreted as
extended options. These are documented at the end of this
section.
V1.0 LhA User's Guide Page 35
3.5.29 `-r' (add) Collect action files recursively
3.5.30 `-R' (ALL) Collect archive files recursively
When this option is enabled LhA will search for archive
files recursively using the archive file specification given at
the command line. This works like the `-r' option but for
archive files.
EXAMPLE
`lha -R l dh0:files/a*' will list the contents of all
archive files whose names begin in `a' in directory
`dh0:files' and its subdirectories.
`lha -R l *' will list the contents of all archive files in
the current directory and its subdirectories.
`lha -R l myarc' will list the contents of all archives
called 'myarc.lzh' or `myarc.lha' in the current directory
and its subdirectories.
This option is OFF by default.
3.5.32 `-S' (add) Set A-flag on archived files
When this option is on, LhA will set the A (for Archived)
file protection flag on all files that are added to an
archive. This can be used to simplify automatic backups when
used together with the -O (Add files without A-flag only). See
section 3.5.24 for more details.
This option is OFF by default.
3.5.33 `-t' (upx) Only new files
When this option is active, LhA will not overwrite or
replace any files. In extract mode, LhA will not even consider
overwriting any existing files.
NOTE
This option overrides the `-T' option.
This option is OFF by default.
3.5.34 `-T' (upx) New and newer files
When this option is active, LhA will overwrite or replace
files that already exists and are older than the current file,
and create files that does not already exist. In extract mode,
V1.0 LhA User's Guide Page 36
LhA will overwrite only older files and create files that does
not already exist. In archive update mode, this option is not
useful since the `u' command already achieves the same effect.
NOTE
This option overrides the `-t' option.
This option is OFF by default.
3.5.35 `-u' (ALL) Make filenames uppercase
This option, when active, will force LhA to convert all
filenames to uppercase. This can be useful when making
archives that are supposed to be used on MSDOS-Systems running
LhArc/LHA. While these have no problems with extracting files
with mixed-case filenames, the pattern matching routines will
not work correctly. Never use this for Amiga-archives,
all-uppercase filenames look very dull and reminds me of an
ancient-looking brain-damaged operating system MicroSoft wrote
once upon a time very long ago (`mess-loss').
This option is OFF by default.
3.5.36 `-U' (upx) Set update interval
This option is used to set the interval (in bytes) at which
LhA updates the byte progress indicator. The desired interval
must be expressed in bytes (using digits only or the suffixes
listed in section 3.5.37), and must immediately follow the `U'
character.
EXAMPLE
`LhA -U4096 a bar.lzh *.c' will add all c-source files in
the current directory to `bar.lzh' with a progress indicator
interval of 4096 (4K) bytes.
`LhA -U32768 a bar.lzh *.c' will do the same as the example
above, but with a update interval of 32768 bytes (32K).
NOTE
This option does currently not affect the update rate
of the LHA decompression (`-lh5-' compression mode).
When LhA decompresses files with this compression
mode, the update rate will be whatever I/O buffer
size is used (set with the `-b' option). The reason
of this behaviour is that the normal progress
indication would slow down decompression. In the
evaluation version, only the -lh1- decompression is
V1.0 LhA User's Guide Page 37
affected by this option, for various unobvious
reasons.
The default update interval is 8192 (8K) bytes for -lh1- and
-lh5- compression and 4096 (4K) bytes for -lh1- decompression.
The update rate for -lh5- decompression is determined by the
I/O buffer size setting (see note above).
3.5.37 `-v' (add) Set compression speed
This option can be used to increase or decrease the
compression speed. -v0 is the slowest, and -v9 is the fastest.
As usual you can't get everything for nothing, so compression
performance is slightly looser with -v9 than with -v0 but the
difference in speed can be significant (especially with some
binary graphics data). Higher compression speed is attained by
using less statistics in the compression phase.
The default compression speed is 5 - works well in 99% of
all cases.
.sect 2 3.5.38 `-w' (upd) Set work directory
This option is used to specify what directory LhA should use
to store temporary files. Temporary files are created when
adding files to archives, or when updating an archive in some
way (like deleting or freshening files). The work directory
name must be specified immediately after the `-w' string.
EXAMPLE
`LhA -wrad:tmp a MyArc.lzh *' will use the directory
`rad:tmp' as temporary storage location when adding all
files in the current directory to the archive `MyArc.lzh'.
By default LhA uses the `T:' directory for temporary files,
if this assign or device does not exist, LhA will use the
current directory.
3.5.39 `-x' (all) Preserve and use pathnames
3.5.40 `-X' (ALL) Do not append suffix
When this option is enabled, LhA will not append an `.lzh'
or `.lha' suffix to the given archive name. The default
behaviour is to append a suffix of `.lha' or `.lzh' (suffix is
chosen depending on compression mode) if the name does not
already have an extension.
This option is OFF by default (suffixes are appended).
V1.0 LhA User's Guide Page 38
3.5.41 `-Y' (add) Store big files with ratio
When this option is enabled, LhA will store big files
(>32KB) without compression if compression ratio is lower than
3%. This is because extraction times of these files are long on
slower machines.
This option is OFF by default (all files are compressed).
3.5.42 `-z' (add) Do not compress files
This option, when active, will force LhA to store all
updated or added files in the archive without attempting to
compress them. Useful for making fast backups where archive
size is of no importance. It is not advisable to use this
option when making archives for distribution via modem or
networks since the archive will end up much larger than if it
was compressed.
EXAMPLE
`lha -z a foo.lha *.bmp' Will store all files in the current
directory with a suffix of `.bmp' in the archive file
`foo.lha' without compressing them.
This option is OFF by default.
3.5.43 `-Z' (add) Compress archives
This option will cause LhA to attempt compressing already
compressed files.
By default, LhA will not attempt to compress files which are
already compressed (typically archive files or picture files in
GIF or JPEG format). The file type is determined from the
suffix, and files with names ending in `.lzh', `.lha', `.zoo',
`.zip', `arj', `.arc', `.dms', `.wrp', `.lhw', `.zap', `.pak',
`.pp', `.gif', or `.jpg'.
The reason why already compressed files should not be
compressed is that the number of bytes gained by this is so
small that it is not worth the time spent
compressing/decompressing it.
This option is OFF by default.
3.5.45 `-0' (add) Use LhArc 1.x compression
This option causes LhA to use the old -lh1- compression
method when updating archives. This compression method is
slightly faster than the normal -lh5- compression but has
looser compression and is much slower to decompress.
V1.0 LhA User's Guide Page 39
When this compression mode is used, LhA defaults to
appending a suffix of `.lzh' when creating archives.
When this option is specified, option `-2' is automatically
deactivated.
By default the -lh5- compression is used.
3.5.46 `-2' (add) Use LhA compression
This option causes LhA to use the new -lh5- compression
method when updating archives. This compression method is
slightly slower then the old -lh1- compression but has tighter
compression and is much faster to decompress.
When this compression mode is used, LhA defaults to
appending a suffix of `.lha' when creating archives.
When this option is specified, option `-0' is automatically
deactivated.
This is the default compression mode.
3.5.49 `-Qh' (add) Set Huffman buffer size
This option can be used to set the size of the buffer used
in LHA compression (default or selected with the `-2' option)
for collecting statistics. The size of this buffer affects the
compression ratio in unpredictable ways. As a general rule,
keep this at the default, but if you are compressing homogenous
data with a relatively fixed relative frequency of symbols
(like text files), setting this to a large value will improve
compression. Binaries generally compress best with the default
setting.
The Huffman buffer may be of any size between 4K and 64K and
must be specified immediately following the `-Qh' string, with
digits only or with the suffixes described in section 3.5.37.
EXAMPLE
`LhA -Qh32 -2 a foo.lha *' will compress all files in the
current directory using a Huffman buffer size of 32768 (32K)
bytes.
`LhA -Qh4 -2 a foo.lha *' will compress all files in the
current directory using a Huffman buffer size of 4096 (4K)
bytes.
The default Huffman buffer size is 16K.
V1.0 LhA User's Guide Page 40
3.6 LhA error situations
ADD:
If a user-specified is not found during an add operation,
LhA will continue processing, and will keep the archive and
terminate with an error condition.
In a disk full condition or any other file I/O error, LhA
will promptly terminate with an error condition and delete the
temporary archive file unless the `-k' (keep partial files)
option has been specified on the command line or in LHAOPTS.
MOVE:
LhA will only delete files that have been successfully added
to the archive. If you have specified the `-Qt' (Test
temporary archives) option, LhA will abort on any error. If
you have specified the `-k' (Keep partial files) option, LhA
will not delete the temporary archive upon an abort.
EXTRACT:
In a disk full condition or any other file error LhA will
promptly terminate with an error condition and delete the
current output file (unless the `-k' option has been enabled).
V1.0 LhA User's Guide Page 41
4 Politics
4.1 Registration
LhA is a copyrighted product that has been made available to
you under the concept of "Shareware". It has never been, nor
will it ever be in the "Public Domain". You are granted a
limited license in order to evaluate these programs. If, after
a 3 or 4 week period of evaluation, you find that LhA suits
your archiving needs, please register. By cooperating with
this concept you help to ensure continued development of this
product.
Registered users will be shipped a disk with the latest
release version of LhA together with a keyfile. This keyfile,
once copied to your system, will disable the ShareWare
reminders that always open when you start or quit the Intuition
driven programs in the LhA family.
Site license information for commercial and government use
can be obtained directly from the author.
No person(s) or businesses other than the author are
authorized to accept any registration or distribution fees in
any form whatsoever, except as specified by the author. The
only people who will be acknowledged as registered users are
those who have sent SEK 100,- for Nordic addresses (SEK 110,-
for other European countries, SEK 115,- for overseas addresses)
to:
LhA Development
c/o Stefan Boberg
Rydsvägen 242 A:25
S-58251 Linköping
Sweden / Europe
As one of the safest and easiest ways to send in your
registration fee from other countries, I would suggest an
international postal money order -- your local post office will
be happy to provide you with more information about this. It
also has the advantage that the exchange of currencies is
handled automatically and the surcharge is negligible.
Should the above not work out satisfyingly, you can either
send a cheque or money order payable to Stefan Boberg in
Swedish Crowns or have your bank transfer the registration fee
to the "Svenska Handelsbanken" account 145.587.932 "Stefan
Boberg". Beware: International transfers via banks are quite
expensive.
In any case, be sure to provide me with your name, address,
V1.0 LhA User's Guide Page 42
fido-nodenumber/InterNet address and international phone number
for filing purposes. You can send this information via
electronic mail, if you wish. If you don't mind, this data
will be stored and processed in electronic form. There is a
sample registration form you can fill in in the file
"OrderForm".
Please allow two to eight weeks for delivery.
4.2 Distribution
Basically, LhA may be distributed freely as long as the
following conditions are met:
The distributor may only charge a fee up to the costs of
obtaining a public domain diskette from Fred Fish. The
distributor agrees to cease distributing the programs and data
involved if requested to do so by the author. The distributor
may only distribute an unmodified copy of the original program,
with all the supplied documentation and copyright notices
intact.
For more details, see the chapter called "License".
4.3 Support
If you have any suggestions, bug reports or questions,
please contact the author of LhA at the address given in
section 4.1 or at one of the electronic mail addresses below:
InterNet: boberg@lysator.liu.se
or : stefan_boberg@augs.se
FIDONet : "Stefan Boberg" at node 2:204/404
When sending in bug reports, please state exactly under what
circumstances the bug occurred, what equipment was used and
what happened. If possible also try to give me enough
information to reproduce the bug. It is very difficult to find
bugs when you don't know exactly what happened. Please don't
just send messages like "it can't extract files from archives
sometimes", that really doesn't help me. If possible, submit
the offending file/archive to me so I can test it myself.
4.4 License
1. This license applies to the product called "LhA", a set of
programs for the Commodore-Amiga computer, published by
Stefan Boberg under the concepts of ShareWare, and the
accompanying documentation, example files and anything else
that comes with the original distribution. The terms
"Programs" and "LhA" below, refer to this product. The
V1.0 LhA User's Guide Page 43
licensee is addressed as "you".
2. You may copy and distribute verbatim copies of the
programs' executable code and documentation as you receive
it, in any medium, provided that you conspicuosly and
appropriately publish only the original, unmodified
programs, with all copyright notices and disclaimers of
warranty intact and including all the accompanying
documentation, example files and anything else that came
with the original.
<file list here>
3. You may not copy and/or distribute these programs without
the accompanying documentation and other additional files
that came with the original. You may not copy and/or
distribute modified versions of these programs.
4. You may not copy, modify, sublicense, distribute or
transfer the programs except as expressly provided under
this license. Any attempt otherwise to copy, modify,
sublicense, distribute or transfer the programs is void, and
will automatically terminate your rights to use the programs
under this license. However, parties who have received
copies, or rights to use copies, from you under this license
will not have their licenses terminated so long as such
parties remain in full compliance.
5. By copying, distributing and/or using the programs you
indicate your acceptance of this license to do so, and all
its terms and conditions.
6. Each time you redistribute the programs, the recipient
automatically receives a license from the original licensor
to copy, distribute and/or use the programs subject to these
terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights
granted herein.
7. You may not disassemble, decompile, re-source or otherwise
reverse engineer the programs.
8. You may use the programs for a period of up to 30 days for
evaluation. After that, you have to register.
9. If you wish to incorporate parts of the programs into other
programs, write to the author to ask for permission.
10. You agree to cease distributing the programs and data
involved if requested to do so by author.
V1.0 LhA User's Guide Page 44
11. You may charge a fee to recover distribution costs. The
fee for diskette distribution may not be more than the cost
to obtain a public domain diskette from Fred Fish.
4.5 No Warranty
THERE IS NO WARRANTY FOR THE PROGRAMS, TO THE EXTENT
PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN
WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
PROGRAMS "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF
THE PROGRAMS IS WITH YOU. SHOULD THE PROGRAMS PROVE DEFECTIVE,
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO
IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO
MAY REDISTRIBUTE THE PROGRAMS AS PERMITTED ABOVE, BE LIABLE TO
YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO
USE THE PROGRAMS (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
THIRD PARTIES OR A FAILURE OF THE PROGRAMS TO OPERATE WITH ANY
OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
4.6 Disclaimer
No warranty, either express or implied, is made with respect
to the fitness or merchantability of LhA.
Stefan Boberg (referred to as "the author"), reserve the
right to not develop any future versions of LhA.
The author will try to make a good faith attempt at
correcting any problems if any are discovered, but are in no
way required, nor bound to correct them.
The author neither assume or accept any responsibility for
the use or misuse of these programs. They also will not be
held liable for damages or any compensation beyond the original
registration fee due to loss of profit or any other damages
arising out of the use, or inability to use these programs.
Stefan Boberg will not be liable for any damage arising from
the failure of these programs to perform as described, or any
destruction of other programs or data residing on a system
attempting to run the programs. While I know of no damaging
V1.0 LhA User's Guide Page 45
errors, the user of these programs uses it at his or her own
risk.
V1.0 LhA User's Guide Page 46
5 Acknowledgements
Haruyasu Yoshizaki For releasing the source of the original LHA
for MSDOS. The source was used as a
reference when writing this program. No
actual code was copied from this source,
rather LhA was written from scratch for
the Amiga.
Haruhiko Okumura For devising the -lh5- and -lh4- compression
algorithms, and for releasing the C source
for these to the public domain. These
sources were used as a reference when
writing the 680x0 assembler versions of
the compression and decompression code.
Some algorithms were replaced with my own,
faster ones.
Robert K.Jung For making the feature-packed ARJ for MSDOS, from
which several ideas for commands and
features was included in LhA.
Paolo Zibetti For making the first LhArc-style archiver for the
Amiga, which made me interested in file
archivers and advanced data compression
techniques.
Jonathan Forbes For making the -lh1- compression and
decompression routines of LZ slightly
faster than those of my previous
(unfinished) program `LhArcA'. This made
me start writing this program. Another
reason for writing LhA was that LZ had
some misfeatures and did not work as
intended.
Ron Birk For digging out the source codes I needed before I
gained access to InterNet myself - Thanks!
LhArcA users Big thanks to all of you who registered for LhArcA
and LhA even before the programs were
finished (LhArcA never was, but those who
registered will receive LhI/LhA when it's
finished).
The license agreement was heavily inspired by (almost copied
from) the TrapDoor license, which in turn was inspired by Jack
Radigan and the GNU General public License.
The manual was formatted with a modified version of `proff'
(originally written for VAX/VMS/MSDOS by Ozan S. Yigit and
V1.0 LhA User's Guide Page 47
Steven Tress).
The program was developed using the Lattice C Compiler and
Assembler on a 25MHz Amiga 3000 - Thanks for a great machine
Commodore! And also thanks for a great development environment
Lattice! Dying to get C++ for the Amiga...
Inspiration provided (in order of significance) by Linda,
Depeche Mode, Pet Shop Boys, Erasure, Yazoo, OMD, Simple Minds
and Kraftwerk.
... Post aspera grata ...
Table Of Contents
LhA V1.0
1 - Introduction ..................................... 1
1.1 About the manual ............................... 1
1.2 System requirements ........................... 1
1.3 Installation ................................. 2
1.4 Terminology .................................. 2
1.5 LhA - what is it? ................................ 2
1.6 What is a file archiver anyway? ................... 3
1.7 Why should I use LhA? ............................ 4
1.7.1 How fast is it? ............................ 5
1.8 Compatibility and Amiga-specific features ....... 7
1.9 About the author program history and future........ 8
2 Tutorial .......................................... 10
3 Reference guide .................................... 11
3.1 Command line syntax ............................ 11
3.1.1 Specifying options ....................... 11
3.1.2 Specifying commands ...................... 11
3.1.3 Specifying archives ...................... 12
3.1.4 Specifying action files ................... 12
3.1.5 Home directories ......................... 12
3.1.6 Recursive file collection ................. 13
3.1.7 Specifying destination directory .......... 14
3.1.8 `@'-files ............................... 14
3.1.9 LhA limitations .......................... 14
3.3 Pattern matching .............................. 16
3.3.0 Exactly what is pattern matching anyway? ..... 16
3.3.1 Accepted pattern tokens ................... 16
3.3.1.1 Question mark (?) .................... 16
3.3.1.2 Star/Asterisk (*) ................... 17
3.3.1.3 Hash mark (#) ........................ 17
3.3.1.4 Square brackets ([]) ................. 18
3.3.1.5 Parentheses and the vertical bar ....... 18
3.3.1.6 Tilde (~) ........................... 19
3.3.1.7 Percent sign (%) ..................... 19
3.4 Commands ..................................... 21
3.4.1 `a' Add files to archive .................... 21
3.4.3 `d' Delete files from archive ............... 21
3.4.4 `e' Extract files from archive .............. 22
3.4.5 `f' Freshen files in archive ................ 22
3.4.8 `l' List archive contents (terse) ........... 22
3.4.9 `m' Move files to archive ................... 23
3.4.14 `p' Print files to stdout .................. 23
3.4.17 `t' Test archive integrity ................ 23
3.4.18 `u' Update archive ....................... 24
3.4.19 `v' List archive (verbose) ................ 24
3.4.20 `vv' List archive (full) .................. 25
3.4.21 `x' Extract files with path ................ 25
3.5 Options ...................................... 27
3.5.1 `-a' (upx) Preserve file attributes ......... 27
- I -
3.5.2 `-A' (upd) Set archive attributes ........... 28
3.5.3 `-b' (all) Set I/O buffer size ............... 28
3.5.5 `-c' (all) Confirm files ................... 29
3.5.6 `-C' (ext) Clear arc-bit on extract .......... 29
3.5.8 `-D' (all) Alternate progress display ....... 29
3.5.11 `-f' (all) Ignore filenotes ............... 30
3.5.12 `-F' (all) Use fast progress display ........ 30
3.5.16 `-i' (all) Read filelist from file .......... 30
3.5.17 `-k' (all) Keep partial files .............. 31
3.5.18 `-l' (ALL) Make filenames lowercase ........ 32
3.5.19 `-L' (ALL) Create filelist ................ 32
3.5.20 `-m' (ALL) No messages for query ............ 32
3.5.21 `-n' (upx) No byte progress indicator ....... 33
3.5.22 `-N' (all) No progress indicator ........... 33
3.5.23 `-o' (upx) On or after date ................. 33
3.5.25 `-p' (ALL) Pause after loading ............. 34
3.5.26 `-P' (ALL) Set task priority ............... 34
3.5.27 `-q' (ALL) Be quiet ....................... 34
3.5.28 `-Q' (ALL) Alternate option set ............ 34
3.5.29 `-r' (add) Collect action files recursively . 34
3.5.30 `-R' (ALL) Collect archive files recursively 35
3.5.32 `-S' (add) Set A-flag on archived files...... 35
3.5.33 `-t' (upx) Only new files .................. 35
3.5.34 `-T' (upx) New and newer files .............. 35
3.5.35 `-u' (ALL) Make filenames uppercase ........ 36
3.5.36 `-U' (upx) Set update interval ............. 36
3.5.37 `-v' (add) Set compression speed ........... 37
3.5.39 `-x' (all) Preserve and use pathnames ....... 37
3.5.40 `-X' (ALL) Do not append suffix ............. 37
3.5.41 `-Y' (add) Store big files with ratio........ 37
3.5.42 `-z' (add) Do not compress files ............ 38
3.5.43 `-Z' (add) Compress archives .............. 38
3.5.45 `-0' (add) Use LhArc 1.x compression ........ 38
3.5.46 `-2' (add) Use LhA compression ............. 39
3.5.49 `-Qh' (add) Set Huffman buffer size ......... 39
3.6 LhA error situations ........................... 40
4 Politics .......................................... 41
4.1 Registration ................................. 41
4.2 Distribution ................................. 42
4.3 Support ...................................... 42
4.4 License ...................................... 42
4.5 No Warranty ................................... 44
4.6 Disclaimer ................................... 44
5 Acknowledgements .................................. 46
- II -