Detect HFS path type and coerce to POSIX
Detect HFS path type and coerce to POSIX
- Subject: Detect HFS path type and coerce to POSIX
- From: "email@hidden" <email@hidden>
- Date: Fri, 29 Jan 2010 11:03:07 +0000
My app receives both HFS and POSIX NSString file paths back from AppleScript.
On the AS Implementors list I was advised to coerce all the AS data to say HFS before it is converted to an NSString.
This will be my goal but in the short term I will need to detect HFS paths and convert them to POSIX.
What is the best way to *reliably* detect the HFS path type and convert it to POSIX?
My current approach is shown below but there has to be a better more direct way.
// filePath is POSIX or HFS
NSString *filePath = // some path
//
// creating a POSIX NSURL with HFS path creates a URL instance,
// though with a corrupt path, hence the comparison
//
NSURL *posixURL = [NSURL nd_URLWithFileSystemPathPOSIXStyle:filePath];
if (![[posixURL path] isEqualToString:filePath]) { // fails for HFS style path
NSURL *hfsURL = [NSURL nd_URLWithFileSystemPathHFSStyle:filePath];
filePath =[hfsURL nd_fileSystemPathPOSIXStyle];
}
where an NSURL category exists defining the following
+ (NSURL *)nd_URLWithFileSystemPathPOSIXStyle:(NSString *)aPOSIXString
{
CFURLRef theURL = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, (CFStringRef)aPOSIXString, kCFURLPOSIXPathStyle, [aPOSIXString hasSuffix:@"/"] );
CFMakeCollectable( theURL );
return [(NSURL *)theURL autorelease];
}
+ (NSURL *)nd_URLWithFileSystemPathHFSStyle:(NSString *)aHFSString
{
CFURLRef theURL = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, (CFStringRef)aHFSString, kCFURLHFSPathStyle, [aHFSString hasSuffix:@":"] );
CFMakeCollectable( theURL );
return [(NSURL *)theURL autorelease];
}
- (NSString *)nd_fileSystemPathPOSIXStyle
{
CFStringRef theString = CFURLCopyFileSystemPath((CFURLRef)self, kCFURLPOSIXPathStyle);
CFMakeCollectable( theString );
return [(NSString *)theString autorelease];
}
Regards
Jonathan Mitchell
Developer
http://www.mugginsoft.com
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden