gzip & Mac File Types

Rob Cozens rcozens at pon.net
Mon Sep 16 10:39:01 EDT 2002


Richard, et al:

>It's simple enough to use a text file for this, but just a tad simpler to
>use a stack file.  Compare whatever parsing routines you were going to write
>with the simple, robust, and ultra-fast one-liner syntax of getting a custom
>property.

The text file approach is completed and just about finished testing; 
so I'll stick with it for now.  However, I always consider a message 
from you as a word to the wise; so I'll try to find time to check out 
the issues you raise.

>And expanding the notion to work with multiple files becomes even more
>convenient with Rev's array notation.

The issue here is the complexity of gathering and storing individual 
files from an unknown number of folders nested to an unknown number 
of levels.  I am happy working with individual files, and will leave 
that issue to someone who wants to build a commercial archiver

>
>In fact, if you later find you need to add any other info at all (such as
>directives on what to do with the uncompressed files -- run them in an app,
>leave 'em be, etc.) you can just add another property or property array to
>the stack file, and you never need to worry about breaking your format.

You are certainly correct if that need arises.  (I'm already 
capturing creation & modification dates even though decompress does 
nothing with that info presently.)

>
>With a text file you also have the potential risk that whatever delimiters
>you use may appear in data.  With Rev's ability to store binary data in
>custom properties you never need to think about how it's delimited.

Its not a problem: I don't search for a delimiter to find the end of 
the data fork and the beginning of the resource fork: I save the byte 
length of the data fork in the footer.  The footer format is creation 
date in seconds [10 char], modification date in seconds [10]char, 
creator/file type [8 char],end of fixed header ["#"], and the length 
of the data fork.


The only parsing done is to read backwards from char -1 until "#". 
Once that position (& with it the length of the data fork) is known, 
the position of each element in the file is known as well.


-- 

Rob Cozens
CCW, Serendipity Software Company
http://www.oenolog.com/who.htm

"And I, which was two fooles, do so grow three;
Who are a little wise, the best fooles bee."

from "The Triple Foole" by John Donne (1572-1631)



More information about the use-livecode mailing list