On 28 Oct 2008, at 01:39, Jeremy Pereira wrote:


On 26 Oct 2008, at 09:55, Gerriet M. Denkmann wrote:


On 26 Oct 2008, at 00:30, Postmaster wrote:


On 14 Oct 2008, at 21:00, Gerriet M. Denkmann wrote:


On 14 Oct 2008, at 18:07, Jason Coco wrote:


On Oct 14, 2008, at 11:28 , Gerriet M. Denkmann wrote:


HFS+ stores files in decomposed UTF-8.  Checking the system headers,
"system headers" is kind of vague: which file exactly do you have in mind?

it can store files with a maximum file name length of 255 bytes. How do you get 256 bytes of UTF-8 into 255 bytes?

Checking the system header hfs_format.h for HFSUniStr255 one sees that it can store file names with a maximum length of 255 u_int16_t. And there is no real problem of putting the 128 shorts of Utf-16 into 255 u_int16_t.

It's actually the VFS layer I was thinking of. The OS X VFS uses UTF-8 (otherwise there would be no backward compatibility for calls like open(2) etc). I got the 255 byte limit by looking at struct dirent defined in /usr/include/sys/dirent.h which is the structure used in the readdir syscall.

I have just tried getdirentries() which uses the dirent structure described in /usr/include/sys/dirent.h .

The result was (for me) quite a surprise.
What I did:
1. created a file in Desktop
2. renamed it in Finder to: "𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀 𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀 𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀 𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀".
(128 Utf-16 shorts, but 256 Utf-8 bytes).
3. ran getdirentries() and got:
file (255)"𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀 𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀 𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀 𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀𐐀#185D41" 4. used open() and read() with this (seemingly garbled) filename - and it just works!

But open() and  fopen() also work with the real filename.

And: renaming a file in Finder with this (garbled) name does not work: Finder claims that this name is already in use. Which is not true: HFS+ has only the real filename stored.

No idea who does the translation between real filename and garbled version.

Very strange indeed.


Kind regards,

Gerriet.

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to