[hfs-user] Catalog Thread record size ?

Entwicklung entwicklung@whengenibk.de
Tue, 16 Apr 2002 12:48:12 +0200


> I think we're confusing hfs and hfs+, hfs has a fixed name size, thats
lots less
> that 256 (I should have noticed your 256 wasn't 20 something).

Yes, HFS has 31 Bytes for the node-name. I was referring only to HFS+ as
previously mentioned. Besides HFS uses MacRoman encoding so I couldn't have
been refering to HFS anyway.


> On hfs+ file names are variable, so while it may say something in the
book,
> thats a maximum size.
>

The 'maximum size' you're referring to is exactly what I wanted to know. And
which book are you referring to ? (the technical notes I presume)


> The figure they quote as a minimum size for lots of things (due to maximum
name
> lengths) is 4k.
>
> This is all discussed in detail in the hfs+ tech doc

Yes - 4k is the minimum catalog node size but not the thread record size.

My question restated:
----------------------
What is this '264' referring to ? It couldn't possibly be Maximum length of
the thread since Maximum length=520 Bytes (when the space requirements of
the individual fields are added up).
It couldn't be minimum length either for the simple reason that if the name
has just one character there's no reason why it should occupy 255 Bytes
considering that the HFS+ names can be of variable size as you mentioned.
Any idea what this 264 refers to then ? I think it is just an error - should
have been 520 instead (max size)... that's what my question was all about...
the technical notes doesn't make a mention of 264 anywhere though the
headers provided by Apple (Universal Interfaces) mention this.

Maybe someone from Apple could help ?

Regards,
Nandini




>
> Entwicklung wrote:
>
> > Yes, but if you look at the definitions below  : UniChar has been
defined as
> > UInt16 - since Multibyte Unicode is being used for HFS+  - So every
> > character takes up 2 Bytes in BigEndian format .
> >
> > So the HFSUniStr255 structure has actually 256 units of 2 Bytes
> > each -including the length - please correct me if I'm wrong or you think
> > otherwise.
> >
> > Regards,
> > Nandini
> >
> > ----- Original Message -----
> > From: "Simon Bazley" <sibaz@sibaz.com>
> > To: "Entwicklung" <entwicklung@whengenibk.de>
> > Cc: <hfs-user@lists.mars.org>
> > Sent: Tuesday, April 16, 2002 10:57 AM
> > Subject: Re: [hfs-user] Catalog Thread record size ?
> >
> > > Why would you want to multiply 256 by 2? a byte is 1, a char is 1,
> > > therefore 256 chars are 256.
> > >
> > > Entwicklung wrote:
> > >
> > > > Hello,        I just have a question regarding the size of the HFS
> > > > Plus - Catalog Thread Record specified in the Apple Universal
> > > > Interfaces headers - typedef UInt16                UniChar; /*
> > > > HFSUniStr255 is the Unicode equivalent of Str255 */
> > > > struct HFSUniStr255 {
> > > >   UInt16               length;                 /* number of unicode
> > > > characters */
> > > >   UniChar             unicode[255];           /* unicode characters
*/
> > > >
> > > > }; /* HFS Plus catalog thread record -- 264 bytes */
> > > > struct HFSPlusCatalogThread {
> > > >   UInt16                      recordType;             /* record type
> > > > */
> > > >   UInt16                      reserved;               /* reserved -
> > > > set to zero */
> > > >   HFSCatalogNodeID    parentID;               /* parent ID for this
> > > > catalog node */
> > > >   HFSUniStr255           nodeName;               /* name of this
> > > > catalog node (variable length) */
> > > > };
> > > > typedef struct HFSPlusCatalogThread     HFSPlusCatalogThread; Based
on
> > > > the above declarations shouldn't the size for the HFSPlus catalog
> > > > thread record be 2+2+4 (since CNID's are 4 bytes long ) + 256*2 =
> > > > 264+256 instead of 264 as mentioned above ? I think someone probably
> > > > forgot to multiply the 256 by 2 but I just wanted to make sure that
is
> > > > an error. I'd be happy to hear some feedback from the list wrt
> > > > this. Best Regards,Nandini Hengen
> > >
>