home *** CD-ROM | disk | FTP | other *** search
- iffar - IFF CAT Archiver, Release 1.2, 5/9/88
-
- Written by:
-
- Karl Lehenbauer
- 3918 Panorama
- Missouri City, TX 77459
- usenet: ..uunet!nuchat!sugar!karl or ..bellcore!tness7!sugar!karl
- BIX: kelehen
-
- All liability is disclaimed! This code is free. We do not have a contract.
-
- This software, source and binary, is released to the public domain, 5/9/88.
-
- I ask that you retain my name as the original author in the source and
- documentation if you redistribute this and that I be credited in the user
- manual if iffar is redistributed with a commercial product.
-
- Regards, Karl Lehenbauer @ The Hacker's Haven, Missouri City, Texas, 5/9/88
-
- ---------------------------------------------------------------------
-
- NAME
-
- iffar - IFF CAT archiver
-
- SYNOPSIS
-
- iffar option [posname] archive_file [IFF_file] ...
-
- DESCRIPTION
-
- Iffar maintains archives of Interchange File Format (IFF) FORM, CAT
- and LIST files in a manner that complies with the IFF CAT specification.
-
- IFF CAT archives should be portable to different machines. No promises.
-
- The option string must start with 'd', 'q', 'r', 't' or 'x' and may
- additionally have modifiers of 'a', 'b', 'c', 'i' or 'v'. Not all
- modifiers are valid with all options.
-
- The options are:
-
- 'd' Delete named IFF files from the CAT archive.
-
- 'q' Quickly append named IFF files to the CAT archive.
-
- 'r' Replace named IFF files in the CAT archive; append new ones.
-
- 't' Print a table of contents of the CAT archive.
-
- 'x' Extract named IFF files from the CAT archive.
- If no names are specified, all files are extracted.
-
-
- The modifiers are:
- 'a' "after", replace or append IFF files after entry in CAT
- archive named by posname
-
- 'b' "before", replace or append IFF files before entry in CAT
- archive named by posname
-
- 'c' Do not print a message indicating archive is being created
- when it must be created.
-
- 'i' a synonym for "before"
-
- 'v' print verbose description of all activity
- For table of contents, prints IDs, and
- lengths of chunks within the IFF file chunks
- in the CAT archive. It prints the contents of
- chunks that it knows to be textual and short.
-
-
- On all operations that modify the archive, except for "quick append",
- the archive will be renamed with a ".old" extension and a new archive
- will be created.
-
- The "quick append" option causes the named files to be added to the
- end of the archive without rewriting the archive or looking to see
- if the entry already exists. This is to avoid quadratic behavior
- when building up an archive one or just a few entries at a time.
-
- Wildcards of the semi-Unix-type as supplied by Manx are provided.
-
- Only the basename of the specified IFF filenames will be used for
- element names within the archive. In other words, pathnames are
- stripped from filenames to create the archive element name.
- This is also true for extracts.
-
- EXAMPLES
-
- iffar x foo ram:t/bar
-
- would extract element "bar" from archive "foo" into file
- "ram:t/bar"
-
- iffar ra sounds Cabasa dh0:sounds/Snare
-
- would replace a FORM, CAT or LIST named Snare in the
- archive with dh0:sounds/Snare, placing Snare directly
- after Cabasa. If Cabasa is not found in the archive,
- Snare is placed at the end.
-
- BUGS
-
- The archive will be corrupted if a write error (including
- running out of disk space) occurs during "quick
- append" mode and there won't be a ".old" backup file.
-
- Running out of disk space leaves corrupted archives.
- For all options but "q" the ".old" backup file will contain
- the archive in its state prior to the run that blew it up.
- The program should delete the corrupted archive and restore
- the ".old" file, but it doesn't.
-
- IMPLEMENTATION NOTES
-
- Iffar is written to run under Manx Aztec C 3.6a for the Amiga
- under AmigaDOS version 1.2.
-
- My IFF archiving routines were written to be well-behaved from an
- IFF point of view; that is, they try to respect the virtual
- end-of-file defined by the size field of a chunk's header when
- diving through the chunk's subchunks. It makes for more work to use
- the routines, but adds some certainty that the program is working
- properly. I don't know. The IFF spec requests that we do, so I do.
-
- Note that when converting your code to use a CAT file instead of
- reading several FORM files (it's about twice as fast for an
- application of mine involving about 25 files from two to ten
- kilobytes each, reading them in from floppy.), your code needs
- to either be driven by the files read from the CAT (you search
- a list of names you're looking for when you see a FORM and load
- what you want) or your code has to know what's coming from the
- CAT specifically. I'd prefer that you do the former, of course.
- The table of contents routines (toc.c) provide a reasonable template
- for your CAT-reading application.
-
- NOTES FOR THOSE WISHING TO PORT THE ARCHIVER
-
- Knock yourselves out. The code is written using standard C library
- calls, with the exception of calls to "scdir", which Manx uses as
- a means of expanding wildcards. If you get it to work on a different
- system, such as Unix System/V, please send me a copy, preferably
- with #ifdefs so the Manx stuff still works. Ultimately, I think an
- alternative "_main" startup routine should be written for the Amiga
- that expands wildcards inline to provide an argc and argv as they
- would look on Unix after the shell had expanded all the wildcards.
-
-
- REVISION HISTORY
-
- 4/25/88, version 1.1
-
- Initial version - never distributed, as far as I know
-
- 5/9/88, version 1.2
-
- Made 'r' (replace) option create the archive if it isn't there.
-
- Fixed bug that caused the IFF reader to get lost when doing
- a verbose table of contents on certain archives.
-
- Flattened the source directory structure.
-
- Updated the documentation.
-
- -----------------------------------------------------------------------------
-