On 16 Oct 2008, at 16:18, Jean-Daniel Dupas wrote:


Le 16 oct. 08 à 11:31, Gerriet M. Denkmann a écrit :


How can I check the appositeness of a filename?

This will not work:
if ( [potentialPath length] > 255 )  ... error: filename too long
because HFS+ uses some decomposed form.

This might work:
if ( [[ NSString stringWithUTF8String: [potentialPath fileSystemRepresentation] ] length] > 255 ) ...
but looks kind of convoluted and inefficient.

There are two methods in NSString:
        decomposedStringWithCanonicalMapping
        decomposedStringWithCompatibilityMapping
but the documentation does not say which (if any) should be used to convert a potentialPath into a form used in HFS+.


OSStatus FSGetHFSUniStrFromString(CFStringRef str, HFSUniStr255 *uniStr);

Looks promising, but does not work - it does not decompose the filename:
        NSString *f1 = [ NSString stringWithUTF8String: "bête" ];
        HFSUniStr255 uniStr;
        FSGetHFSUniStrFromString( (CFStringRef)f1, &uniStr);
NSLog(@"HFSUniStr length %hu", uniStr.length); // this is the original length, NOT the decomposed lenght
Returns 4 - but the decomposed length is 5.

But your advice (and of Michael Ash) not to preflight a filename is probably correct.
Thanks for pointing this out.

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