home *** CD-ROM | disk | FTP | other *** search
- ________________________________________________________________________
- ------------------------------------------------------------------------
-
-
- LHARC vers. 1.30
-
- for the Commodore AMIGA
- Compatible with version 1.13 of Lharc for MSDOS systems
-
-
- by Paolo Zibetti
-
- Fidonet 2:331/101.6
- Internet/UUCP: Paolo.Zibetti@p6.f101.n331.z2.fidonet.org
-
-
- (assembler routines by Paolo Toccaceli)
-
- ------------------------------------------------------------------------
- IMPORTANT NOTICE: This program is copyrighted by Paolo Zibetti, but can
- be freely distributed, providing that the following rules are respected.
- - No change is made to the program nor to the accompaning documentation
- - The package is always distributed in its complete form consisting of
- (at least) the 4 files: "Lharc", "Lharc.doc", "Changes" and README.1st.
- - Every form of distribution is allowed and encouraged, but no fee can
- be charged for this program exept for, possibly, the cost of magnetic
- media and/or disk duplication and shipping.
- - Inclusion in PD software libraries such as Fish Disks is allowed,
- provided the fees charged for these disks are comparable with those
- charged by Fred Fish.
- - The program cannot be distributed in any commercial product without the
- written consent of the author.
- Software developers interested in using Lharc for distributing thier
- products should contact me to obtain my explicit permission (what I
- generally ask in return is simply to receive a free copy of thier
- products).
-
- By copying, distributing and/or using the program you indicate your
- acceptance of the above rules.
-
- Also remember that this program is supplied 'as is': the entire risk as
- to the quality of the program is to the user. In no event will the author
- be liable for direct or indirect damage or loss resulting from the use
- of this program.
- ------------------------------------------------------------------------
-
- ________________________________________________________________________
- ------------------------------------------------------------------------
-
-
-
-
-
-
-
-
-
-
- --- Introduction ---
-
- Lharc is an archive program such as Arc and Zoo. It can store several
- files in one archive in a compressed form which is generally more
- efficent than that used by Arc and Zoo. It also supplies all of the
- archive handling capabilities that an archive program should have.
- In particular it is able to store an entire directory tree
- (including empty directories) with one single command. This enables
- you, for example, to store an entire floppy-disk with a single
- command and the resulting archive is usually shorter than those
- prodeced by Warp or even LhWarp (see the -r switch).
- Another important feature of Lharc is its ability to preserve the file
- attributes (see the -a switch) and filenotes (i.e. the comments that
- AmigaODS can associate to each file).
- Its only weakness is compression speed: Zoo 2.0, for example, is
- faster, but if compression efficency is more important for you than
- compression time you'll surely appreciate this progam. (anyway
- decompression is much faster than compression)
-
-
-
-
-
-
-
-
-
-
- --- Before starting ---
-
- Lharc is a 'pure' program, i.e. you can make it resident via the
- 'resident' Amigados command just like any other command found in the
- c: directory. Keeping Lharc resident will greatly facilitate users
- who make an heavy use of Lharc (especially those who don't have an
- hard disk).
- If you have just received Lharc, beware that some copy programs and
- some archivers (including the zoo archiver which is used for
- distribution of Lharc) don't preserve file attributes, so the 'p'
- flag may not be set for the Lharc executable and Amigados won't
- understand that Lharc is a pure program. If so, just type the
- following line at the CLI prompt:
-
- protect Lharc p add
-
-
-
-
-
-
-
-
-
-
- --- How to use ---
-
- Lharc is run from CLI with the following command line:
-
- Lharc [<switches>] <Command> <Archive> [<dest path>] [<file patterns>]
-
- items in square brackets are optional.
-
-
-
-
- <Command> can be any of the following (case is not significant):
-
-
- e,x extract files from archive
- Extracts files from archives. If you specify some file names
- or patterns only those files satisfying the patterns are
- extracted, otherwise all the files in the archive are
- extracted.
- While extracting files, Lharc checks if a file by the same
- name already exsists in the destination directory and prompts
- you before overwriting the old file with the extracted one
- (unless you specified the -m switch)
- By default, if the files have a path name stored in the archive, they
- are extracted with their path and needed directories
- are automatically created; use the -x0 switch to ignore path names.
- See below under '<dest path>' for a discussion on where the
- extracted files are stored.
-
-
- l show archives contents
- Displays the names of the files in an archive along with their
- date, time, CRC, compression type, original lenght and
- compressed lenght.
- If the -x switch is specified file names are listed complete
- with their path (if present in the archive), otherwise
- only the name of the files is listed.
- The 'l' command won't list the comments (filenotes) that may be
- assiciated with a file: use the 'v' command to see them, too.
-
-
- v Same as 'l', but default is to display full pathnames: i.e.
- the 'v' command is equivalent to the 'l' command with the -x switch;
- on the other hand the 'l' command is equivalent to the 'v' command
- with the -x0 switch.
- Moreover 'v' will also show any filenote (i.e. comment)
- associated with the files; filenotes, if present,
- are listed on a separate line preceded by a colon
- (i.e. in the same format used by the AmigaDOS 'list' command).
-
-
- p extract and print files to screen
- same as 'e' and 'x', but extracted files are sent to stdout
-
-
- t test archive integrity
- Checks CRCs and checksums to ensure that the archive is not
- corrupted. Lharc will test all the files on the archive, one
- after each other, printing "OK" to the right of the file names
- which are OK and "WARNING: CRC check failed" to the right of
- file names that are corrupted. At the end of the test the
- message "Operation successful" means that all the files tested
- were OK, while the message "Operation not totally successful"
- means that some files in the archive were corrupted (so you
- will know of a corrupted file even if the warning message
- relating to that file has scrolled away on the screen)
-
-
- a create archives or add to existing archives
- Files are stored in alphabetical order, unless you change
- this with the -S switch. Note however that sorting only
- applies to the files beeing added in the current session,
- i.e. if you add files to an existing archive containing
- other files, the new files will be stored, in alphabetical
- order, AT THE END of the archive: old and new files won't be
- intermixed to preserve global alphabetical order.
- If you try to archive a file and a file by the same name
- already exists in the archive the file will not be added
- and a message will be printed on the screen to inform you.
- By default only file names are stored in the archive, use the
- -x switch to store file names complete with their paths.
- Also, by default file attributes are not stored, use the '-a'
- switch to obtain this.
-
-
- m move files into archivs
- Same as add, but deletes original files after archiving them
-
-
- d delete files from archives
- You can delete from an archive a maximum of 150 files at a time,
- if you find that they are too little, please let me know!
-
-
- u update files in archives
- Same as with the 'a' command. However, if a file already
- exists in the archive, LHarc will check its time stamp and will
- keep the newer one and ignore the older one.
-
-
- f freshen files in archives
- Replaces a file in the archive with the newer one only if a file
- with the same name already exists in the archive.
- Otherwise, no action is taken.
-
-
-
-
-
-
-
-
- <Archive> is the name (eventually preceded by a path) of the
- archive you want to work on. If no extension is specified the default
- extension .LZH is used.
- With the 'l' (or 'v'), 'e' (or 'x'), 'p', 't' and 'a' commands you can
- work on multiple archives by using wildcards (see 'file patterns'
- below for a list of accepted wildcards). For example "lharc v *.LZH"
- will show the contents of all the archives in the current directory,
- while "lharc x *.LZH *.c" will extract all the C source files
- contained in all the archives in the current directory.
-
-
-
-
-
-
-
- [<dest path>]
- This parameter is significant only with the 'x' (or 'e') command.
- It tells where to put the extracted files; if not specified, extracted
- files will go to the current directory.
- Please note that this paramenter must always end with '/' or ':'
- otherwise it will not be recognized as such and will be considered
- as one of the file patterns.
- If the path specified by <dest path> (or equivalently the path stored
- in the archive) does not already exist, you will be prompted if you
- want new directories to be automatically created (unless you specified
- the -m switch, in which case directories will be created without any
- prompt).
-
-
-
-
-
-
-
- [<file patterns>] rappresents an optional number of file names
- or file patterns. They indicate which files to
- extract/compress/list/delete, ecc.
- Accepted wild cards are the standard AmigaDOS '#' and '?' plus the '*'
- which is a synonim of '#?'. Since however the asterisk is a valid
- caracter in AmigaDOS file names I provided the '**' sequence as an
- escape. So if you want to refer to a file name containing an asterisk
- just double the asterisk in the file name.
- Example: '*.c' is equivalent to '#?.c' and refers to all the files
- ending with '.c', while 'my**file' refers to the file 'my*file'.
-
-
-
-
-
-
-
-
- [<switches>] rappresents an optional number of switches that are used
- to change the behaviour of the program.
- A switch is composed by a leading '-' followed by one letter; unlike
- commands which are case insensitive, switches are case sensitive.
- An important point is that if you want to specify more than one switch,
- every switch must be preceded by its own dash, i.e. to activate the 'x'
- and 'm' switches you must enter "-x -m" and NOT "-xm".
- You can store your favourite switch configuration in an environment
- variable (see below) so that you don't have to type them every time.
- All the switches that don't take a parameter can be followed by a '0'
- which turns off the function, while the switch alone or the switch
- followed by a '1' turns the function on: i.e. -x means "use extended
- file names", while -x0 means "don't use them". So you can override
- the default settings or the settings you specified in the environment
- variable "LHARC".
- Default value for every switch is off, exept for the -a switch which is
- on with all the commands and for the -x switch which is by default on
- with the 'x' 'e' 'd' 't' and 'v' commands and off with the other
- commands.
-
-
- Here is a summary of the available switches:
-
-
-
- -p (p)ause after loading [note that this is lowercase 'p']
- Causes Lharc to wait for the user to press RETURN before
- executing a command. This allows floppy disk users to swap disks
- after loading Lharc.
-
-
-
-
- -m no (m)essage for query
- Suppresses all the queries Lharc normally issues before
- overwriting existing files or before creating new directories
- If you specify this switch Lharc will behave as if you choose
- the default action (indicated by an uppercase letter) in
- response to all the questions. This switch also disables
- autoshowing of files (see 'Autoshow files' below)
-
-
-
-
- -x use e(x)tended file names
- By default, LHarc stores only the file names of
- files and disregards the names of the directories in which
- they reside. This switch, used with the 'a' command, tells LHarc
- to extend all file names with directory names; with the 'x' 'e' 'd'
- 't' and 'v' commands the -x switch is automatically turned on: use
- -x0 if you want to turn it off thus ignoring pathnames with these
- commands.
-
-
-
-
- -n no progress i(n)dicator
- Suppresses the display of the number of bytes beeing processed
- during compression or decompression. May be useful if you
- redirect to a file the output of Lharc.
- Note: this version of Lharc allows the -N switch as a synonim of -n :
- but this might change in future versions, so preferibly use the
- lowercase letter.
-
-
-
-
- -w set (w)ork directory
- Use this switch to choose your own directory for temporary files.
- The directory name must immediatly follow the letter 'w' without
- any leading space, i.e. to set the 'temp' directory on your
- hard-disk as the working directory you must write "-wdh0:temp".
- See below "Temporary files" for a discussion on where temporary
- files are stored in the absence of this switch.
-
-
-
-
- -P set (p)riority [note that this is uppercase 'P']
- Use this switch to set the priority with which Lharc will be
- executed. Priority must be in the range -5..+5 and must
- immediately follow the 'P' letter without blanks in between.
- By default Lharc is excuted with the same priority of
- the task that invoked it; using this switch will set the new
- priority immediatley after loading and will set back the priority
- to the original value immediately after terminating.
- If you want to do something else with your Amiga, for example
- editing a letter, while Lharc is compressing a long file, I
- suggest that you set Lharc's priority to one less than that of
- the other program, i.e. if you started your editor with the usual
- priority of zero then invoke Lharc with the '-P-1' switch to set its
- priority to -1
-
-
-
-
- -a consider file (a)ttributes
- Lharc can ignore file attributes (i.e. the flags
- indicating protection from deletion, and so on) for maximum
- compatibility with the MSDOS version: in other words it can
- store files with an attribute bit pattern which is suitable for
- MSDOS machines and, during extraction, ignore the
- attributes stored in the archives, setting the attributes of the
- extracted files to the usual '----rwed'.
- Alternatively Lharc can preserve the protection bits by storing
- them in the archive and then restoring them during extraction.
- In Lharc version 1.3 and higher, this switch is by default on,
- i.e. file protection bits will be preserved: use -a0 to turn it of
- to achieve full MSDOS compatibility.
- Remember that, to effectively preserve file attributes, you must
- use the same setting for this switch both during compression and
- during extraction.
- Of course AmigaDOS file attributes are meaningless to MSDOS and
- vice-versa; so extract files with the -a switch only if you are
- sure that they contain AmigaDOS file attributes and similarly
- compress files with the -a switch only if you are sure that the
- archive will be unpacked only by Amigas and not by MSDOS
- machines. (Anyway no harm is done if this rule is not respected:
- extracted files will simply have strange attributes)
-
-
-
-
- -u convert file names to (u)ppercase
- By default Lharc stores file names/paths with thier original case,
- if you use this switch they will be converted to uppercase.
- See below 'Compatibility' for a possible use of this switch.
-
-
-
-
- -r (r)ecursively collect files
- This switch instructs Lharc to search for files matching the
- specified patterns not only in the specified directories, but also
- in all the subdirectories that may be found in the specified
- directories. For example:
-
- "Lharc -r a archive.lzh df1:source/*.c"
-
- will search for files whose name ends with ".c" in "df1:source/"
- and in all the subdirectories that may be contained in the
- "df1:source" directory.
- Another example:
-
- "Lharc -r a archive.lzh df1:*"
-
- will archive the entire disk in drive df1:, including all its
- subdirectories.
- Very powerfull, isn't it ?
- The -r switch can optionally be followed by a 'e' (i.e. -re): this
- tells Lharc to store empty dirs as well. By 'empty dir' we mean
- dirs which are actually empty or dirs which contain no files
- matching the patterns specified on the command line.
- This option allows you to perfectly re-create a directory tree, but
- remember that archives containing empty dirs are NOT compatible
- with MSDOS-Lharc 1.13; so, use the 'e' option only if you are sure
- that the archive you are producing will be unpacked on Amiga
- machines only.
- When you specify the -r switch, files are always stored with their
- path name, i.e. the -r switch automatically turns on the -x switch,
- too.
-
-
-
-
- -S Set (s)orting criteria [note that this is an UPPLERCASE S]
- This switch sets the sort criterium for files beeing added to
- archives. The '-S' must be immediatly followed by one to four
- characters, i.e. -Sxyzw where
- 'x' can be any of the following:
- 0 Don't sort files
- a Alphabetical sort [default]
- c Chronological sort
- 'y', if present, can be any of the following:
- a Ascending order [default]
- d Descending order
- 'z', if present, can be any of the following:
- i Case insensitive alpha-sorting [default]
- s Case sensitive alpha-sorting
- 'w', if present, can be any of the following:
- l Local sorting [default]
- g Global sorting
- The above parameters must be specified in the order given above,
- for example to choose between local or global sorting you must
- necessarly also specify the three preceding parameters.
- The -S0 option is useful if you want to create an archive in
- which files appear in a given order: the -S0 switch
- tells Lharc to add files in the same order as they were
- specified in the command line (or in the '-i' file).
- The 'global/local sort' parameter needs some more explaination:
- 'global sorting' means that files will be stored in strict
- alphabetical or chronological order; 'local sorting' means that
- sorting will be local to each subdirectory with more 'nested'
- subdirectories pushed at the end of the archive.
- As an example, look at the following lists of files: the left
- coloumn is sorted with alpha-global sorting, the right one is
- sorted with alpha-local sorting
-
-
- GLOBAL SORTING LOCAL SORTING
-
- Announcement Announcement
- README README
- include/common.h include/common.h
- include/foo/abc.h include/global.h
- include/foo/rexx/rexx.h include/rexxbind.h
- include/foo/rexx/rexxglue.h l/xyzzy-handler
- include/global.h lib/ps.library
- include/old/foo/abc.h s/.xyzzyrc
- include/old/poof/xyz.h s/add-2-startup-sequence
- include/poof/poof.h src/Makefile
- include/poof/xyz.h src/foo.c
- include/rexxbind.h src/poof.c
- include/xyzzy/incl1.h src/xyzzy.c
- include/xyzzy/incl2.h src/zot.c
- include/xyzzy/incl3.h utils/help
- l/xyzzy-handler utils/more
- lib/1.3/foo.library include/foo/abc.h
- lib/1.3/old/foo.library include/poof/poof.h
- lib/2.0/foo.library include/poof/xyz.h
- lib/ps.library include/xyzzy/incl1.h
- s/.xyzzyrc include/xyzzy/incl2.h
- s/add-2-startup-sequence include/xyzzy/incl3.h
- src/Makefile lib/1.3/foo.library
- src/foo.c lib/2.0/foo.library
- src/old/poof.c src/old/poof.c
- src/poof.c include/foo/rexx/rexx.h
- src/xyzzy.c include/foo/rexx/rexxglue.h
- src/zot.c include/old/foo/abc.h
- utils/help include/old/poof/xyz.h
- utils/more lib/1.3/old/foo.library
-
-
- Finally some examples:
- -Scd Sort chronologically in descending order
- -Sc or -Sca Sort chronologically in ascending order.
- -S0 Don't sort at all
- -Sads Sort alphabetically in descending order (case
- sensitive)
- -Saail Sort alphabetically in ascending order; sorting
- will be case-insensitive and will be local to
- each subdirectory; this is also the default action
- which is taken if you don't specify this switch.
-
-
-
-
- -b Set I/O (b)uffer size
- Big I/O buffers can considerably speed up some operations of Lharc
- (espacially with hard disks) however if you are low on memory you
- may prefer to use small I/O buffers.
- This switch lets you set the amount of memory that Lharc will use
- as an I/O buffer: the number of Kbytes of memory to be used must
- immediately follow the 'b' without any spaces in between, e.g.
- -b20 tells Lharc to use 20 kbytes of memory for I/O buffers.
- Any number between 6 and 37 is valid, default is using 11 Kbytes:
- if you are low on memory you can lower this amount, but if you have
- plenty of memory I suggest that you rise it.
- I suggest that you set this switch at the value you like in the
- environment variable 'LHARC' (see below) so that you don't have
- to specify this switch every time you invoke Lharc.
-
-
-
-
- -f ignore (f)ilenotes
- By default Lharc archives files complete with their comment
- (filenote). If you set this switch, filenotes won't be stored in
- archives and files beeing extracted won't have any filenote
- even if it was present in the archive.
- There is no compatibility problem, but if you are not interested
- in filenotes you may set this switch to reduce the archive size
- (filenotes are stored in uncompressed form, so if you have long
- filenotes they can increase the size of the archive).
-
-
-
-
- -d set archive's (d)atestamp
- By default archives created or updated by Lharc will have a
- datestamp corresponding to the date of creation of the archive.
- If you set this switch, on the contrary, archives created or
- updated by Lharc will have the same date as the newest file
- contained in the archive.
-
-
-
-
- -c (c)onfirm files
- If this switch is set, Lharc will ask you for confirmation
- before archiving or extracting a file. This allows you to
- specify a large set of files through the use of wild-cards and
- then select which of them to consider in an interactive way.
- If you for example typed: "Lharc -c a test.lzh *.c" all the
- files ending with '.c' in the current directory will be
- presented to you with the message:
-
- "Archive file xxx.c? [(Y)es, (n)o, (a)ll, n(o)ne]"
-
- You have four alternatives: to choose between them just type
- the letter indicated in parenthesis and press return. The '(Y)'
- is printed in uppercase to remember you that this is the
- default action which is taken if you simply press return.
- The meanings of the four alternatives are:
-
- yes: archive the file
- no : don't archive the file
- all: archive this file and all the following files without
- asking anymore for confirmation.
- none: don't archive this file nor any of the following files
-
- This switch is ignored if the -m switch is active.
-
-
-
-
- -i read (i)nput from a file
- This switch tells Lharc to read the list of files to act upon from
- a file. The file name must immediately follow the '-i' without any
- speces in between. If the -i switch is specified alone (i.e.
- without a filename) the file list is read from stdin.
- For example:
-
- Lharc -idf1:list a foo.LZH
-
- will add all the files specified in the 'df1:list' file. This file
- can contain ordinary file names or file patterns to be added, each
- on a separate line: a file name is assumed to be
- terminated by a space or a tab, everything on the line after the
- first space or tab is ignored. If a file name contains spaces, it
- must be enclodsed in double quotes.
- The ability to read the list of files from stdin allows the use of
- Lharc in a pipe of comamnds, for example:
-
- list since today | Lharc -i a foo.lZH
-
- will archive all the files in the current directory which were
- created today. (A shell that supports the '|' character is
- required)
- Note that you can also specify some files on the command line, if
- you want; the command:
-
- Lharc -idf1:list a foo.LZH hello.c bye.c
-
- will add the 2 files 'hello.c' and 'bye.c' plus all the files
- specified in the file named 'df1:list'.
- As mentioned above, although this is of less frequent use, you can
- also use the -i switch to supply a list of files to be extracted,
- printed, listed, ecc.
- Please note that, in this vesion of Lharc, the number of filenames or
- patterns that can be specified through the -i switch is limited to
- about 120: this limitation will be removed in the future.
-
-
-
-
-
-
-
-
-
-
-
- --- Setting switches in an environment variable ---
-
- You may set any of LHarc's default switches with the environment
- variable 'LHARC':
- So, if you, for example, want to always set the archive's date to
- that of the newest file in the archive, use the maximum allowed I/O
- buffer size and use 'dh0:mytemp/' as a working directory, you simply
- type:
-
- SenEnv LHARC "-wdh0:mytemp -d -b37"
-
- (don't forget the quotes): now Lharc will behave as if you typed
- the above switches every time you invoke it. You can insert the
- setenv command in your startup-sequence so that it's automatically
- executed every time you turn your computer on.
- Of course, you can always override the default settings
- estabilished in the enviroment variable with the command line: for
- example a '-d0' in the command line will override the '-d' found
- in the above enviromnet variable.
- Please note that the 'setenv' command is only available in
- Workbench 1.3 and higher: if you are using older versions of the
- O.S. this feature is not available.
-
-
-
-
-
-
-
-
-
-
- --- Autoshow files ---
-
- Suppose that your archive contains an important text file that you
- want to be sure it will be read by the guy who unpacks the archive.
- The file may for example contain a copyright notice or some special
- instructions for unpacking.
- For this purpuse Amiga-Lharc introduces autoshow files: while
- unpacking an archive, if Lharc encounters a file whose name ends with
- ".TXT.DISPLAYME" (case is not significant and quotes must not be
- included, of course), it first extracts the file (removing the .DISPLAYME
- extension) and then displays in a window the text found in that file
- waiting for the user to press RETURN before proceeding.
- You can add as many autoshow files as you want, for example one at the
- beginning and one at the end of the archive.
- Autoshowing of files is disabled when the -m switch is active so that
- a non-interactive unpacking session is allowed.
- Lharc uses the standard CON: device to open a window for displaing text,
- so you can insert ANSI codes in your autoshow files to make your
- messages nicer. Lharc will adjust the size of the window according to
- the number of lines contained in the text file, but the maximum allowed
- size is that of an NTSC screen (200 pixels), so if your text is longer
- than 20 lines it will scroll away.
- Finally, please note that this feature is unique to the Amiga version of
- Lharc (for now...) so remember that if your archive will be unpacked on
- another machine (or an an Amiga using Lharc version 1.0 or lower)
- autoshow files will simply be extracted without displaying them on the
- screen; anyway your important text file will still be there for later
- reading by the user and no compatibility problems will arise.
-
-
-
-
-
-
-
-
-
-
-
- --- Temporary files ---
-
- While compressing files Lharc creates a temporary file called
- 'Lharc.TMP_XXXXXX' where XXXXXX is a hex digit representing the address
- of its own Task structure as returned by Exec's FindTask(NULL).
- The reason for the XXXXXX part of the name is that if you run multiple
- copies of Lharc at the same time each copy will create its own temporary
- file with a different name (usefull for multiline BBSes for example).
- Here is how Lharc decides where to store temporary files.
- If you specify a path with the -w switch temporary files are stored
- there, otherwise if the T: logical device is assigned they will be
- stored in that directory, otherwise they will go to the current
- directory.
- If you are not using the -w switch, in order to increase compression
- speed, I raccomand that you assign T: to a directory in the ram-disk.
- Note however that T: is usually automatically assigned to 'ram:t' in
- the startup-sequence of the standard Workbench, so, unless you have
- modified the startup-sequence, you don't have to worry about this.
-
-
-
-
-
-
-
-
-
-
-
-
-
- --- Corrupted archives ---
-
- This version al Lharc for the Amiga has the capability of automatically
- handle corrupted archives.
- A Lharc archive is made up of several compressed files each precedeed by
- a header containing information about file name, date, lenght,...
- To ensure that the archive is not corrupted the header also contains a
- 16 bit CRC of the file and an 8 bit checksum of the header itself.
- If during extraction Lharc finds a corrupted file (i.e. one whose CRC
- does not match with the one stored in the header) the file is extracted
- anyway, but a warning is printed on the screen.
- The worst case comes when the header of a file is corrupted: in this case
- the file cannot be extracted even if the file itself is not corrupted.
- In this case Lharc will automatically skip the corrupted entry by
- starting a search for the next valid entry in the archive and will
- print a message like "WARNING: skipping extraneous/corrupted data"
- The reason for which it says "extraneous/corrupted" is that an Lharc
- archive might happen to contain parts that Lharc cannot recognize as valid
- archive entries even it's not corrupted. This happens when you are
- extracting files from a self-extracting archive produced by the MSDOS
- version of Lharc, since a self-extracting archive contains 8086
- extraction code which the Amiga-Lharc sees as extraneous data.
- The only extraneous data which is passed without warnings is additional
- bytes at the end of an archive: since they are likely to consist of
- zero padding due to XMODEM transfer they are totally ignored.
-
-
-
-
-
-
-
-
-
-
-
-
- --- Return codes ---
-
- When Lharc finishes his work, it returns to the operating system one of
- 3 possible return codes:
-
- 0 Everything was OK (the message "Operation successful" is printed on
- the screen).
- 5 Lharc finished its work, but something went wrong, for example Lharc
- encountred a corrupted entry in the archive, but was able to continue
- extracting/testing the rest of the archive (the message "Operation not
- totally succesful" is printed on the screen).
- 20 A fatal error occurred and Lharc was unable to continue its work (an
- appropriate message exlpaining the probelm is printed on the sceen)
-
- Thus you can test the succes of operation in your script files by means
- of the 'failat' statement and the 'if warn' test.
-
-
-
-
-
-
-
-
-
-
-
- --- Bugs ---
-
- No known known bugs remain in this version.
-
-
-
-
-
-
-
-
-
-
-
- ---- Compatibility ---
-
- This program is aimed at full compatibility with the MSDOS version
- 1.13 of Lharc.
- A few little problems might arise from some file names that are legal
- under AmigaDOS, but illegal under MSDOS. As a matter of facts AmigaDOS
- allows a wider range of file names (almost every caracter in the ASCII
- set is allowed and file names can be longer than 8 characters). For
- the greatest convenience of Amiga users, I choose not to restrict the
- file name range to accomplish the MSDOS rules, but if you expect that
- your archives will be unpacked on an MSDOS machine you'd better
- rispect the MSDOS limits.
- Also note that, although MSODS Lharc version 1.13 CAN extract files
- whose names contain lowercase letters, its pattern matching functions
- don't work properly with lowercase file names. So if you want to
- extract an Amiga-created archive on an MSDOS machine by using pattern
- matching functions (for example to extract only some files instead of
- the whole archive) you have to create the archive on the Amiga with
- the -u switch.
- Finally, to attain 100% compatibility you shuold not use the '-a' switch
- nor the '-re' switch ('-r' alone is, on the contrary, OK)
- (see above in the descriptions of these switches for more details)
-
- Also note that the MSDOS version of Lharc has the additional
- capability of extracting files from archives produced by Larc (a
- pupular Japanise archive program): this feature will not be
- implemented in the Amiga version.
-
-
-
-
-
-
-
-
-
-
-
-
- ---- Acknowledgements ---
-
- First of all I give credit to Haruyasu Yoshizaki for devising such an
- efficent compression algorythm as LZHUF.
- Second, since the source to the MSDOS version of Lharc is scarcely
- portable (lots of 8086 assembler ruotines and MSDOS-dependent C
- functions), I had to rewrite the program from scratch. Note however
- that for LZHUF compression/decompression I have used as a starting
- point a 'C' source for an example of single file compression
- which I found on a BBS. Although the code has been now remanaged (and
- partially rewritten in assembler by Paolo Toccaceli and me) it
- nevertheless was invaluable to me.
- For sake of correctness I quote here the the header found on this
- source:
-
- /*
- * LZHUF.C English version 1.0
- * Based on Japanese version 29-NOV-1988
- * LZSS coded by Haruhiko OKUMURA
- * Adaptive Huffman Coding coded by Haruyasu YOSHIZAKI
- * Edited and translated to English by Kenji RIKITAKE
- */
-
- I whish to thank the above people whose work has been of
- foundamental importance for this project.
- Thanks to Stefan Boberg for suggesting how to store filenotes in the
- archive structure that didn't provide space for them.
- Many thanks also go to all the people who contributed with suggestions
- and bug reports and particularly to Luca Spada for his invaluable beta
- testing work.
-
-
-
-
-
-
-
-
-
-
-
-
- --- How to contact me ---
-
- Please send suggestions, comments and bug reports to:
-
- Paolo Zibetti Fidonet: 2:331/101.6
- Internet/UUCP: Paolo.Zibetti@p6.f101.n331.z2.fidonet.org
-
- node 2:331/101 (AmnesiA) is also the official distribution node for
- Amiga-Lharc: you'll always find the latest version available on this
- board. If you are an officially listed FidoNet node you can f'request
- the latest version of Lharc with the magic file name AMILHARC.
-
- Amnesia (2:331/101) phone +39-331-263425 (v32/HST, upto 14400 bps)
-
-
-
-