home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
602a.lha
/
LhA_v1.11
/
LhA.man.pp
/
LhA.man
Wrap
Text File
|
1992-02-02
|
109KB
|
2,942 lines
LhA User's Guide
Version 1.11 - January 1992
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
/~~\___________________________________________/~~\
/~~\___________________________________________/~~\
/~~\__/~~\_________/~~\___________/~~~~~~~~\___/~~\
/~~\__/~~\_________/~~\__________/~~~~~~~~~~\__/~~\
/~~\__/~~\_________/~~\__________/~~\____/~~\__/~~\
/~~\__/~~\_________/~~\__________/~~\____/~~\__/~~\
/~~\__/~~\_________/~~~~~~~~~\___/~~~~~~~~~~\__/~~\
/~~\__/~~\_________/~~~~~~~~~~\__/~~~~~~~~~~\__/~~\
/~~\__/~~\_________/~~\____/~~\__/~~\____/~~\__/~~\
/~~\__/~~\_________/~~\____/~~\__/~~\____/~~\__/~~\
/~~\__/~~~~~~~~~\__/~~\____/~~\__/~~\____/~~\__/~~\
/~~\__/~~~~~~~~~\__/~~\____/~~\__/~~\____/~~\__/~~\
/~~\___________________________________________/~~\
/~~\___________________________________________/~~\
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\
Written by Stefan Boberg
Copyright (c) 1991,92 by Stefan Boberg
V1.11 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,
LhArc 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
The manual is divided into three 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 reference section, where all features,
commands and options are explained thoroughly. The last section
contains the license agreement, registration details and
disclaimers.
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
68020, 030 and 040-processors without sacrificing 68000
compatibility.
Currently, LhA requires `arp.library'.
1.4 Terminology
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
V1.11 LhA User's Guide Page 2
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
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
V1.11 LhA User's Guide Page 3
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
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
V1.11 LhA User's Guide Page 4
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.
3) It produces smaller archives than any other archiver. Both LZ
V1.92 and Zoo V2.10 produces archives which are approximately
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.
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'
V1.11 LhA User's Guide Page 5
Type: 3.2MB of text, binary and graphics data in 21 files
+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
| LhA | LZ | LhA | LZ |LhArc| Zoo |Zoo | Zoo |PkAZip| Pkax |
| |V1.92| |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|
+--+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
Archive: `dlgmsgs.lha'
Type: 760K text file.
+-----+-----+-----+-----+-----+-----+-----+-----+------+------+
| LhA | LZ | LhA | LZ |LhArc| Zoo |Zoo | Zoo |PkAZip| Pkax |
| |V1.92| |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| |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.
V1.11 LhA User's Guide Page 6
+-----+-----+-----+-----+------+-----+------+------+------+
| LhA | LZ | LhA | LZ |LhArc | Zoo | Zoo |PkAZip|LhArcA|
| |V1.92| |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|
+--+-----+-----+-----+-----+------+-----+------+-------------+
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.13 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.13 can process all archives created by
LhA.
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
V1.11 LhA User's Guide Page 7
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).
The LhA-specific extended data structures in the level 2 and
level 1 headers are laid out as follows:
+------------------+
| 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 evaluation version of LhA is currently only able to
create archives with headers of level 0.
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
V1.11 LhA User's Guide Page 8
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
directories is also in the pipeline and will be released sometime
in 1992. 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 3 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.11 LhA User's Guide Page 9
2 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.
2.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.
2.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').
2.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.11 LhA User's Guide Page 10
`add' instead of `l' and `a', respectively.
2.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 exception being the
`m' (move files to archive) command.
2.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.
NOTE
If you do not specify any action files, LhA assumes
that you wish to act upon all files in the archive or
in the current directory.
2.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
V1.11 LhA User's Guide Page 11
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
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.
NOTE
You are not supposed to include the home directory name
in the action file specifications after the home
directory spec. I.e. you should not enter
`devs:printers/ devs:printers/*HP*', but
`devs:printers/ *HP*' is correct.
The home directory remains active for the rest of the
command line or until the next home directory
specification. If you want to set the home directory to
the current directory (as it is from the beginning),
use a single slash (`/') as a home directory
specification. This means you cannot use a single slash
to specify the parent directory, to do this you will
have to add an additional slash (`//' means parent
directory, `///' the parent's parent directory and so
on).
2.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 *
V1.11 LhA User's Guide Page 12
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).
Example 5:
lha -r a myarc ram:dir1 ram:makefile
Will archive all files in the directory `dir1' and its
subdirectories, as well as the file `ram:makefile'.
Example 6:
lha -r a myarc ram:dir1 ram:(makefile)
Will do almost the same as example 5, but will archive ALL
`makefile's in ram: and all it's subdirectories (because of
the parentheses - see note below).
NOTE
Explicitly specified directories (explicitly = without
pattern matching) will be treated as `dirname/*', i.e.
all files in the directory and it's subdirs will be
archived. Explicitly specified files will only be
looked for in the current home directory, unless the
filename is enclosed in parentheses, in which case the
file will be looked for recursively. I have chosen to
V1.11 LhA User's Guide Page 13
implement it this way because LhA can then be used
better together with directory utilities such as
Browser or DirectoryOpus.
2.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 anywhere after the archive name 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.
and so would `lha x project dl:tmp/ *.c'.
NOTE
You can specify a directory that does not already exist
as the destination, LhA will automatically create the
directory for you.
2.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.
2.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 230-{filename length (including path)} characters. With
V1.11 LhA User's Guide Page 14
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 except with
exceptionally long filenames and paths).
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
by available RAM memory. Any number of files may be extracted
or added to an archive in one go.
o Level 2 headers must not be longer than 256 characters, or LhA
will not be able to process them.
V1.11 LhA User's Guide Page 15
2.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 2.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'.
2.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
2.3.1 forward. Also read the sections explaining `how to specify
action files' and `how to specify archive files'.
2.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]').
2.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
ending in `d'. For example `abcd', `abad' and `ab_d'
V1.11 LhA User's Guide Page 16
but not `abd' or `acid'.
`f??' : matches all three-letter names beginning in `f'. For
example `foo', `fel', `fan' but not `ab', `fuga' or
`fini'
2.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
(including zero) of arbitrary characters, followed by
an `f', and ending in `n'.
`*.lzh' : matches all names ending in `.lzh'
2.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 (equivalent to the `*' token).
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'.
`#(ha)#(hi)urgh' : of `ha':s followed by any number of `hi':s
followed by `urgh'. For example `hahahahahihiurgh'
matches, and so does `haurgh' and `hahiurgh'.
2.3.1.4 Square brackets ([])
V1.11 LhA User's Guide Page 17
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'.
2.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
`(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 2.3.1.6 for details)
V1.11 LhA User's Guide Page 18
`(*.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.
2.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'.
NOTE
Because of a bug (or misfeature) in ARP, the `~'
token is not correctly handled by the generic (KS1
and KS2) version of LhA. The KS2.0 only version
handles it okay however. In ARP a negation actually
negates the ENTIRE EXPRESSION, so `~lha' matches all
files but `lha'.
2.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
V1.11 LhA User's Guide Page 19
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.11 LhA User's Guide Page 20
2.4 Commands
This section describes the commands for archive manipulation
and maintenance LhA offers to you. See section 2.1.2 (Specifying
commands) for details on how to specify commands on the command
line.
2.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 2.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'.
2.4.3 `d' Delete files from archive
This command removes one or more files from an archive.
NOTE
V1.11 LhA User's Guide Page 21
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.
2.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
2.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 unless the `-x'
option is disabled explicitly (with `-x0'). 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'.
This command automatically enables the `-x' option unless it
is explicitly disabled on the command line with `-x0'.
2.4.8 `l' List archive contents (terse)
V1.11 LhA User's Guide Page 22
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.
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.
2.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'.
2.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
V1.11 LhA User's Guide Page 23
output redirection file).
2.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).
2.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.
2.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
V1.11 LhA User's Guide Page 24
Listing of archive 'dl:c64new.lzh':
Original Packed Ratio Date Time Name
-------- ------- ----- --------- -------- -------------
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.
2.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.
V1.11 LhA User's Guide Page 25
2.4.21 `x' Extract files with path
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.11 LhA User's Guide Page 26
2.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 2.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
2.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
V1.11 LhA User's Guide Page 27
show up on directory listings. It is not supported by
the current release of the 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), 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 when archiving (a,f,u,m)
and disabled by default for all other commands.
2.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 OFF by default.
2.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
V1.11 LhA User's Guide Page 28
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
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)
2.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.
2.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.
2.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).
V1.11 LhA User's Guide Page 29
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.
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.
2.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)
2.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
V1.11 LhA User's Guide Page 30
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).
2.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.
2.5.17 `-k' (all) Keep partial files
V1.11 LhA User's Guide Page 31
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
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.
NOTE
Please that in the current release, for certain
errors all data that has been extracted may not be in
the partially extracted file, because of internal I/O
buffering. In this case, set the I/O buffer to the
smallest value possible (8KB) to recover as much as
possible. Because of this, small files may not be
recovered at all. This only applies to LHA (-lh5-)
compression, LhArc compressed files will always have
all extracted data in the partially extracted file.
This option is OFF by default (partial files are deleted).
2.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
2.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
V1.11 LhA User's Guide Page 32
`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).
2.5.20 `-m' (ALL) No messages for query
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 (yes). This option is automatically enabled if the
standard input is not interactive (if run in the background for
example).
This option if OFF by default.
2.5.21 `-M' (ext) No autoshow files
When this option is enabled, LhA will suppress the display
of autoshow files (files with names ending in `.displayme').
NOTE
Autoshow files are also suppressed if one or more of
the `-N', `-q' or `-m' options are enabled.
This option is OFF by default (autoshow files are
displayed).
2.5.22 `-n' (upx) No byte progress indicator
When this option is enabled, the byte progress indicator is
disabled. LhA will still display what file it is working on
however, use `-N' to disable all progress indication.
V1.11 LhA User's Guide Page 33
This option is OFF by default.
2.5.23 `-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.
This option is off by default (file progress indication
ON).
2.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.
2.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).
2.5.27 `-q' (ALL) Be quiet
This option will supress ALL messages from LhA.
This option is OFF by default
V1.11 LhA User's Guide Page 34
2.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.
2.5.29 `-r' (add) Collect action files recursively
When this option is used, LhA will recursively collect files
from subdirectories.
EXAMPLE
`lha -r a ram:disk1 df0:' will archive all files on the disk
in drive 0 to `ram:disk1.lha'.
`lha -r a ram:disk2src df0:*.c' will archive all `.c' files
on df0: to `ram:disk2src.lha'.
`lha -r a ram:exthup hd:prg/src/ lha/*.[chasi]
lhi/*.[chasi]' will add all `.c', `.h', `.a', `.s', `.i'
files in `hd:prg/src/lha' and `hd:prg/src/lhi' and their
subdirectories. The `hd:prg/src/' part of the names will not
be stored in the archive (home directory `hd:prg/src/' was
specified).
NOTE
Files that are specified explicitly (i.e. without any
pattern matching) are looked for only in the current
(home) directory, while patterns are used for
matching in all subdirectories. If a directory is
specified explicitly without any following file
pattern (like in `lha -r a ram:test sys:l') it will
be treated as if a `/*' was appended to the directory
name - i.e. all files in the directory and it's
subdirectories will be archived.
This option is OFF by default. Note that the `-x' option is
automatically enabled when the -r option is used. If you do not
want to store pathnames simply specify `-x0' on the command
line.
2.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
V1.11 LhA User's Guide Page 35
`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.
2.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 2.5.24 for more details.
This option is OFF by default.
2.5.33 `-t' (ext) Only new files
When this option is active, LhA will not overwrite or
replace any files.
NOTE
This option overrides the `-T' option.
This option is OFF by default.
2.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.
NOTE
This option overrides the `-t' option.
This option is OFF by default.
2.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
V1.11 LhA User's Guide Page 36
with mixed-case filenames, the pattern matching routines will
not work correctly.
This option is OFF by default.
2.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 kilobytes, 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.
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).
2.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 anything for free, 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 - best in 99% of all
cases.
2.5.38 `-w' (upd) Set work directory
This option is used to specify what directory LhA should use
V1.11 LhA User's Guide Page 37
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.
2.5.39 `-x' (all) Preserve and use pathnames
When this option is enabled, LhA will use and preserve
pathnames when extracting and archiving files. When extracting,
LhA will create the directories that does not already exist.
Use this option when you want to preserve some directory
structure. This option is automatically enabled when the `-r'
option is used.
This option is disabled by default for update operations and
enabled by default for extract operations.
2.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).
2.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).
2.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
V1.11 LhA User's Guide Page 38
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.
2.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.
2.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.
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.
2.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
V1.11 LhA User's Guide Page 39
appending a suffix of `.lha' when creating archives.
When this option is specified, option `-0' is automatically
deactivated.
This is the default compression mode.
2.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, in
kilobytes.
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.
2.6 Autoshow files
Autoshow files are files that are displayed automatically to
the user when extracting the file from an archive. LhA
determines if a file should be displayed by looking at the
filename; if the filename ends in `.displayme' then the file is
displayed unless autoshow files have been disabled (with the
`-M' option). Apart from being displayed on-screen, autoshow
files are extracted just like normal files, without stripping
off the `.displayme' part (AmigaDOS LhArc 1.30 does this).
2.7 Residentability
LhA is multitasking reentrant and pure, and it can be made
resident with the standard shell resident commands - `resident'
under AmigaShell 1.3 and 2.0, and `resi' under WShell. If you
use another shell, please refer to the user manual for
V1.11 LhA User's Guide Page 40
information about how to make programs resident.
V1.11 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. The registered-user version
of LhA has all the features of the evaluation version, as well
as several additional commands, options and features. Among
these are multi-volume archive handling and creation, faster
and better compression, commands to (attempt) repair, split and
sort archives, and several other new useful options.
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, US, 20 IRC's or more to:
Stefan Boberg
Rydsvägen 242 A:25
S-58251 Linköping
Sweden / Europe
For residents in Sweden, the easiest and cheapest way of
transferring money to the author is by `PostGiro' # 629 22 84-4
This only costs 8 crowns and you can write the registration
info on the giro-form.
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
V1.11 LhA User's Guide Page 42
send a EuroCheque 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. Bank
drafts are *NOT* accepted as payement since the bank charges
outrageous fees (~) from both the sender and the receiver.
In any case, be sure to provide me with your name, address,
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, the evaluation version of 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 left
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 : lha@augs.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.
V1.11 LhA User's Guide Page 43
4.4 Program availability
The latest version of LhA is always available for anonymous
FTP at lysator.liu.se, in `/pub/amiga/LhAEval.run' - it is a
self-extracting archive that should be executed from CLI or
WB2.0 to extract the contents. It will also be available for
FidoNet FReq from AUGS BBS in Linköping, Sweden, under the
magic filename `LHA', the node number is 2:204.404.
4.5 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
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.
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
V1.11 LhA User's Guide Page 44
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.
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.6 Disclaimer
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.
V1.11 LhA User's Guide Page 45
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 routines of LZ
slightly faster than those of my previous
(unfinished) program `LhArcA'. This was
one of the reasons that 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!
Thomas Olsson For supplying me with the source for LhA V2.11.
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).
LhA users Big thanks to all who registered for LhA V1.00, and
even bigger thanks to those who reported
bugs and problems with the previous
releases - without you this program would
never be what it is now.
V1.11 LhA User's Guide Page 46
The license agreement was heavily inspired by 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
Steven Tress).
The program was developed using the Lattice C Compiler and
Assembler on a 25MHz Amiga 3000. Great compiler, great
computer!
Inspiration provided (in order of significance) by Linda,
Depeche Mode, Pet Shop Boys, Erasure, OMD, Electronic, The
KLF/JAMS, Yazoo, Tears for Fears, Simple Minds and Kraftwerk.
... Post aspera grata ...
Table Of Contents
LhA V1.11
1 - Introduction ..................................... 1
1.1 About the manual ............................... 1
1.2 System requirements ........................... 1
1.4 Terminology .................................. 1
1.5 LhA - what is it? ................................ 2
1.6 What is a file archiver anyway? ................... 2
1.7 Why should I use LhA? ............................ 4
1.7.1 How fast is it? ............................ 4
1.8 Compatibility and Amiga-specific features ....... 6
1.9 About the author program history and future........ 7
2 Reference guide .................................... 9
2.1 Command line syntax ............................ 9
2.1.1 Specifying options ....................... 9
2.1.2 Specifying commands ...................... 9
2.1.3 Specifying archives ...................... 10
2.1.4 Specifying action files ................... 10
2.1.5 Home directories ......................... 10
2.1.6 Recursive file collection ................. 11
2.1.7 Specifying destination directory .......... 13
2.1.8 `@'-files ............................... 13
2.1.9 LhA limitations .......................... 13
2.3 Pattern matching .............................. 15
2.3.0 Exactly what is pattern matching anyway? ..... 15
2.3.1 Accepted pattern tokens ................... 15
2.3.1.1 Question mark (?) .................... 15
2.3.1.2 Star/Asterisk (*) ................... 16
2.3.1.3 Hash mark (#) ........................ 16
2.3.1.4 Square brackets ([]) ................. 16
2.3.1.5 Parentheses and the vertical bar ....... 17
2.3.1.6 Tilde (~) ........................... 18
2.3.1.7 Percent sign (%) ..................... 18
2.4 Commands ..................................... 20
2.4.1 `a' Add files to archive .................... 20
2.4.3 `d' Delete files from archive ............... 20
2.4.4 `e' Extract files from archive .............. 21
2.4.5 `f' Freshen files in archive ................ 21
2.4.8 `l' List archive contents (terse) ........... 21
2.4.9 `m' Move files to archive ................... 22
2.4.14 `p' Print files to stdout .................. 22
2.4.17 `t' Test archive integrity ................ 23
2.4.18 `u' Update archive ....................... 23
2.4.19 `v' List archive (verbose) ................ 23
2.4.20 `vv' List archive (full) .................. 24
2.4.21 `x' Extract files with path ................ 24
2.5 Options ...................................... 26
2.5.1 `-a' (upx) Preserve file attributes ......... 26
2.5.2 `-A' (upd) Set archive attributes ........... 27
2.5.3 `-b' (all) Set I/O buffer size ............... 27
- I -
2.5.5 `-c' (all) Confirm files ................... 28
2.5.6 `-C' (ext) Clear arc-bit on extract .......... 28
2.5.8 `-D' (all) Alternate progress display ....... 28
2.5.11 `-f' (all) Ignore filenotes ............... 29
2.5.12 `-F' (all) Use fast progress display ........ 29
2.5.16 `-i' (all) Read filelist from file .......... 30
2.5.17 `-k' (all) Keep partial files .............. 30
2.5.18 `-l' (ALL) Make filenames lowercase ........ 31
2.5.19 `-L' (ALL) Create filelist ................ 31
2.5.20 `-m' (ALL) No messages for query ............ 32
2.5.21 `-M' (ext) No autoshow files ............... 32
2.5.22 `-n' (upx) No byte progress indicator ....... 32
2.5.23 `-N' (all) No progress indicator ........... 33
2.5.25 `-p' (ALL) Pause after loading ............. 33
2.5.26 `-P' (ALL) Set task priority ............... 33
2.5.27 `-q' (ALL) Be quiet ....................... 33
2.5.28 `-Q' (ALL) Alternate option set ............ 33
2.5.29 `-r' (add) Collect action files recursively . 34
2.5.30 `-R' (ALL) Collect archive files recursively 34
2.5.32 `-S' (add) Set A-flag on archived files...... 35
2.5.33 `-t' (ext) Only new files .................. 35
2.5.34 `-T' (upx) New and newer files .............. 35
2.5.35 `-u' (ALL) Make filenames uppercase ........ 35
2.5.36 `-U' (upx) Set update interval ............. 36
2.5.37 `-v' (add) Set compression speed ........... 36
2.5.38 `-w' (upd) Set work directory .............. 36
2.5.39 `-x' (all) Preserve and use pathnames ....... 37
2.5.40 `-X' (ALL) Do not append suffix ............. 37
2.5.41 `-Y' (add) Store big files with ratio........ 37
2.5.42 `-z' (add) Do not compress files ............ 37
2.5.43 `-Z' (add) Compress archives .............. 38
2.5.45 `-0' (add) Use LhArc 1.x compression ........ 38
2.5.46 `-2' (add) Use LhA compression ............. 38
2.5.49 `-Qh' (add) Set Huffman buffer size ......... 39
2.6 Autoshow files ................................ 39
2.7 Residentability .............................. 39
4 Politics .......................................... 41
4.1 Registration ................................. 41
4.2 Distribution ................................. 42
4.3 Support ...................................... 42
4.4 Program availability .......................... 42
4.5 License ...................................... 43
4.6 Disclaimer ................................... 44
5 Acknowledgements .................................. 45
- II -