home *** CD-ROM | disk | FTP | other *** search
-
-
-
- Shrink User's Guide
-
- Version 1.1 - June 1992
-
-
- Written by Matthias Meixner
-
- Copyright (c) 1992 by Matthias Meixner
- All rights reserved
- Not for commercial use
-
-
-
-
- 1- Disclaimer
- ~~~~~~~~~~~~~
- The author cannot be held liable for the suitability or accuracy of this
- manual and/or the program(s) it describes. Any damage directly or
- indirectly caused by the use or misuse of this manual and/or the program
- it describes is the sole responsibility of the user her/him self.
-
-
- 2 - Copyright/Distribution
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- Shrink, (c) Copyright 1992 Matthias Meixner. All rights reserved. This
- Program is FREEWARE, so no financial donations are required (but welcome).
- This program may be freely distributed as long as all documentation and
- executable(s) remain unchanged and are included with the distribution.
- Also no profit is to be made by selling this program.
- Shrink V1.1 must not be added to other PD-libraries than AmigaLibDisks
- from Fred Fish without my written permission. The price must not exceed
- the costs of disk, package and mailing.
-
- 3 - Introduction
- ~~~~~~~~~~~~~~~~
- Shrink is a new archiver for the Commodore-Amiga computer similar to
- LHA, lharc or zoo. It is not as fast as LHA, but compression rate is
- better than the rate of all these other archivers. Shrink uses a new
- IFF - format for its archives, that is designed to handle archives with
- other programs (see IFF-documentation).
-
-
- 4 - System requirements
- ~~~~~~~~~~~~~~~~~~~~~~~
- Shrink will run on any Amiga system with at least 512KB RAM an one
- diskdrive. But for compressing large files more memory is needed, because
- shrink loads all files completely into RAM to reduce diskaccess.
- A 68020, 030 or 040 processor is very useful to reduce compression time.
-
-
- 5 - Command line syntax
- ~~~~~~~~~~~~~~~~~~~~~~~
- The command line syntax is as follows:
-
- shrink [-options] <Command> <Archive> [dest path] [pattern1] [pattern2] ..
-
- [-options] are optional, [dest path] is only needed for extraction and
- must end with ':' or '/', patterns are optional in some cases and
- sometimes needed (see documentation of commands).
- Patterns are the normal amiga patterns like #? or #?(x|y). Komplex
- patterns like (#?|#?.c) are not supported.
-
-
- 6 - Adding files to archive
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- There are several ways to add files to an archive. Shrink supports the
- following commands to add files matching the pattern to the archive:
-
- 'a': (add)
- Adds files to the archive if they are not already there.
-
- 'aa': (add all)
- Adds or replaces files in the archive. If the files was already
- in the archive, its generation is increased by one.
- (see generations)
-
- 'f': (freshen files)
- Replaces a file in an archive if the file is newer than the file
- in the archive. The generation of the older file is increased
- by one. Files that have not been in the archive are not addes to
- the archive.
-
- 'u: (update archive)
- Files are added to the archive if they are not already in the
- archive or are replaced in the archive if they are newer than
- the files in the archive. In this case the generation is
- increased by one.
-
- Options for adding files:
- The compression method can be set using the -m option. (-m0 no compression
- .. -m7 best compression [default]).
- -r forces shrink to collect the files recursively, e.g. to compress
- directories with subdirectories.
- With the option -a shrink supports the archive flag. When the option is
- set, only files with non-set archive flag are added to the archive. After
- adding them to the archive, the archive flag is set.
- -q (quiet mode) switches the progress indicator off when compressing.
- With -p(n) you can force shrink to pack the archive after adding files
- (see also "packing the archive").
-
- 7 - Testing archives
- ~~~~~~~~~~~~~~~~~~~~
- The commands 't(n)' and 'ta' are used to test archives if they contain any
- errors. 't(n)' tests generation n of all files matching the pattern. If no
- pattern is given, shrink uses #? as default. 'n' Is a number between
- 1 and 255 and specifies the generation that shall be tested. If it is
- ommitted shrink assumes generation 1.
- 'ta' tests all files that are contained in the archive. Therefore it does
- not support any patterns.
-
-
- 8 - Deleting files
- ~~~~~~~~~~~~~~~~~~
- Using 't(n)' or 'ta' you can delete files from the archive. With 'tn' the
- generation n of a file is deleted from the archive. 'ta' deletes all
- generations of the file.
- When you delete files from an archive they are not really removed from
- the archive, only their generation is set to 256. They are only removed
- when packing the archive (see packing the archive). As long as they are
- not removed from the archive they can be recovered again (see recovering
- deleted files).
-
- Using the option -p(n) you can force shrink to pack the archive after
- deleting files (see also "packing the archive").
-
-
- 9 - Recovering deleted files
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- If you wish to get back deleted files or files with an older generation
- you can use 'r(n)' to get back generation n of the file or 'ra' to get
- back a deleted file. The generation of this file is set to 1. The
- generation of the other files with the same name is increased by 1.
- If there exist more than one file with the same name and the same
- generation in an archive, you can use the -i(n) option to turn on the
- file index mode. Then only the n-th file that matches the pattern is
- referred by this command.
-
-
- 10 - Packing the archive
- ~~~~~~~~~~~~~~~~~~~~~~~~
- Packing is used to remove all deleted or older files from an archive.
- 'p(n)' removes all generations that are higher than n from the archive.
- E.g. 'r255' removes all files with a generation higher than 255 i.e.
- deleted files. Or if you only want to keep 5 generations of each file
- use 'p5' to remove all older files. Shrink generates a backup-file when
- packing an archive. This is disabled by using the -d option. After adding
- or deleting files you can auto-pack the archive using the -p(n) option.
-
-
- 11 - Extracting files
- ~~~~~~~~~~~~~~~~~~~~~
- Extraction is done by using the command 'e(n)' or 'x(n)'. These commands
- extract the generation n of the files matching the pattern. If n is not
- given the first generation is extracted.
- If you do not want the whole pathname to be extracted, use the -c option
- to extract only the filenames. A special feature of this option is to cut
- off part of the filename. This can be used to change the path during
- extraction. For example the file ff500/c/MuchMore would be extracted as
- df0:c/MuchMore by the following command:
- shrink -cff500 x archive ff500/c/MuchMore
- If you wish to set the archive flag of the extracted files. you can use
- the -a option that does exactly this during extraction.
- By using the index-file-mode with the -i(n) option one can refer to the
- n-th file that matches generation and pattern. This is useful when there
- are more than one file of the same name and generation in one archive.
- -x switches long pathnames on. The last givem option -c or -x is the one
- that is used for extraction.
-
-
- 12 - Extracting files on the screen
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 's(n)' extracts the n-th generation of the file on the screen. You can
- use the same options that can be used for normal extraction.
-
-
- 13 - Listing the contents of an archive
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 'l(n)' or 'v(n)' prints the contents upto generation n of the archive on
- the screen, sorted by name and generation. Use 'la' or 'va' to get a list
- of all files and deleted files. It has the same effect as using 'l256'.
- You can preset the generation using the -l(n) option.
-
-
- 14 - Other options
- ~~~~~~~~~~~~~~~~~~
- '-q' disables the progress indicator during compression and decompression.
-
-
- 15 - Default options
- ~~~~~~~~~~~~~~~~~~~~
- You can setup default options in the environment variable ShrinkOptions.
- E.g. setenv ShrinkOptions "-c -p10 -l10".
-
-
- 16 - Technical info
- ~~~~~~~~~~~~~~~~~~~
- Shrink uses a dictionary from 1024 upto 65536 bytes for compression due to
- the compression-mode. String down to 2 bytes are replaced by their
- reference to achieve maximum compression. Shrink uses dynamic arithmetic
- encoding instead of huffman encoding to get a better compression rate.
- Shrink is the first archiver on the amiga that uses this method for best
- compression rate.
-
-
- 17 - IFF-Archive-Format
- ~~~~~~~~~~~~~~~~~~~~~~~
- Shrink uses a new IFF format for its archive files.
- The structure is as follows:
-
- FORM xxxx CDAF ; Compressed Data Archive File
- ^^^^ length of FORM
-
- NAME xxxx archivers_name ; This chunk must be the first chunk in the
- ; archive to determine the archiver that is
- ; required for compression and decompression
- ; of files in the archive. The other functions
- ; like deleting or recovering files should
- ; work with every archiver using this format
-
-
- FILE xxxx ; This must be the first chunk of every file
- ; contained in the archive
- UBYTE Checksum ; The sum of all bytes in this chunk must be zero
- UBYTE Method,Version ; Method and version of the compression method
- ; that was used to compress this file
- UBYTE Generation ; Generation of the file: 0=new .. 255=deleted
- USHORT SystemID ; System ID of the computer on which the file
- ; was compressed.
- ULONG Filesize ; Original size of the file, the compressed
- ; size of the file is the size of the BODY chunk
- UBYTE Year,Month,Day ; Date of the file (year since 1900)
- UBYTE Hour,Mins,Secs ; Time of the file
- USHORT CRC ; CRC Checksum of the uncompressed file
- ULONG Protection ; File attributes on the computer of SystemID
- UBYTE Filname[] ; The rest of the length of this chunk is used
- ; to store the filename. This enables filenames
- ; of any lenght
-
- BODY xxxx ; This chunk contains the compressed data of the
- ; file. This must be the last chunk of every
- ; file in the archive.
-
-
- Between the chunks FILE and BODY there can be as many chunks as the
- archiver needs to store additional information about the file and/or
- compression. Therefore these chunks must not be removed when packing or
- modifying archives. One of these chunks is the NOTE chunk:
-
- NOTE xxxx filenote
-
- It contains the filenote of the file.
-
-
- 18 - SystemID's
- ~~~~~~~~~~~~~~~
- AMIGA 'AM'
- ATARI_ST 'ST'
- ARCHIMEDES 'AR'
- MS_DOS 'MS'
- UNIX 'UX'
- MAC 'MA'
- HELIOS 'HE'
-
-
- 19 - History
- ~~~~~~~~~~~~
- V1.01b First official release
- V1.1 Shrink now handles files with a size of 65536 bytes correct.
- Improoved speed on archivehandling.
- Default options in ENV:ShrinkOptions
- Autopacking of the archive with a,f,u,d
- The compression rate is now calculated correctly for large files
-
-
- 20 - Known bugs
- ~~~~~~~~~~~~~~~
- Shrink adds the archive to itself, if the archive has already been
- created.
-
-
- 21 - Something on bug reports
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 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, or give
- me a pointer where I can find the archive.
-
-
- 22 - Notes
- ~~~~~~~~~~
- Bug reports, suggestions, postcards, flames, criticism, contributions,
- ideas, gifts, etc., etc., etc........... to:
-
-
- Matthias Meixner
- Sandberg 13
- W-6417 Hofbieber 2
- Germany
-
-
-
-