• 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
Re: Why is NSString->FSRef so hard?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why is NSString->FSRef so hard?


  • Subject: Re: Why is NSString->FSRef so hard?
  • From: Alastair Houghton <email@hidden>
  • Date: Thu, 30 Apr 2009 12:12:10 +0100

On 30 Apr 2009, at 05:02, Charles Srstka wrote:

Carbon and the Finder are displaying the filenames as is, as HFS allows slashes to be in a filename, and the colon is the separator. Cocoa and the BSD layer, on the other hand, do swap the slashes and colons. Presumably the idea is to display slashes in a filename as whatever the path separator is supposed to be, so that the path can be a standard UNIX path - my guess is that if you had a file on an NTFS volume with a slash in its filename, Cocoa would interpret the slash as a backslash. I don't have an NTFS disk to test that with, though.

Just to clear things up:

1. Cocoa and the "BSD layer" are *not* swapping the slashes and colons. They use the filenames that they are given by the kernel.

2. The HFS+ filesystem implementation *inside the kernel* does map slashes in filenames to colons. It has to, because the kernel parses path strings (which it must do in order to support symlinks and mount points), and it requires that the separator is "/".

3. AFAIK the Carbon layer maps them back again. Carbon's filesystem functions are implemented on top of the BSD layer, not alongside it as some people assume (OK, OK, there is the ".vol" special folder and there are a couple of additional entry-points that Carbon uses that are really SPI rather than API, but they're still BSD-level things).

4. NTFS does not support slashes in filenames (or at least, not on Windows, which is arguably the same thing). Furthermore, Windows (contrary to popular belief) is quite happy to use the slash as a path separator; I sometimes wish that fact was more widely known, because it would save us from reams of unnecessary code to substitute forward slashes with backslashes.

(It might help people to think of the substitution of on-disk "/" characters with ":"s as being entirely an issue of character encoding.)

Kind regards,

Alastair.

--
http://alastairs-place.net



_______________________________________________

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


References: 
 >Why is NSString->FSRef so hard? (From: Erg Consultant <email@hidden>)
 >Re: Why is NSString->FSRef so hard? (From: Nick Zitzmann <email@hidden>)
 >Re: Why is NSString->FSRef so hard? (From: Erg Consultant <email@hidden>)
 >Re: Why is NSString->FSRef so hard? (From: "Stephen J. Butler" <email@hidden>)
 >Re: Why is NSString->FSRef so hard? (From: Erg Consultant <email@hidden>)
 >Re: Why is NSString->FSRef so hard? (From: Ken Thomases <email@hidden>)
 >Re: Why is NSString->FSRef so hard? (From: Erg Consultant <email@hidden>)
 >Re: Why is NSString->FSRef so hard? (From: Mark Douma <email@hidden>)
 >Re: Why is NSString->FSRef so hard? (From: Andrew Farmer <email@hidden>)
 >Re: Why is NSString->FSRef so hard? (From: Charles Srstka <email@hidden>)

  • Prev by Date: Setting font size
  • Next by Date: NSScanner off-by-one and I can't see why...
  • Previous by thread: Re: Why is NSString->FSRef so hard?
  • Next by thread: Re: Why is NSString->FSRef so hard?
  • Index(es):
    • Date
    • Thread