• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Detect HFS path type and coerce to POSIX
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • Follow-Ups:
    • Re: Detect HFS path type and coerce to POSIX
      • From: Michael Ash <email@hidden>
  • Prev by Date: Re: IKImageBrowserView drop operation always highlighting a specific row
  • Next by Date: should I use CALayer .. ?
  • Previous by thread: ABNewPersonViewController and ABPersonViewController background color
  • Next by thread: Re: Detect HFS path type and coerce to POSIX
  • Index(es):
    • Date
    • Thread