home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 1
/
GoldFishApril1994_CD1.img
/
d1xx
/
d162
/
iffar
/
readme
< prev
next >
Wrap
Text File
|
1988-10-02
|
6KB
|
172 lines
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.
-----------------------------------------------------------------------------