On 2011-04-07 04:38, Lars T. Kyllingstad wrote:
> On Thu, 07 Apr 2011 03:57:18 -0700, Jonathan M Davis wrote:
> > And on some file systems, even / is valid! Though it's not worth it to
> > try and get std.path to work with files with / in the name. It's
> > generally a very bad idea to create a file with a / in the name - too
> > many programs would choke on it or just plain have the wrong behavior.
> > However, there _are_ *nix file systems which allow for / in file names.
> 
> Which filesystems are those?  The POSIX:2008 specification specifically
> states that
> 
>     "The characters composing the name may be selected from
>      the set of all character values excluding the <slash>
>      character and the null byte."
> 
> where <slash> is defined as '/'.
> 
> http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html

I didn't know that Posix had anything to say on the matter (though it doesn't 
hurt my feelings any that it effectively says that / isn't valid in file 
names). However, the file systems themselves apparently don't necessarily 
stick to that. If you take a look at 
http://en.wikipedia.org/wiki/Comparison_of_file_systems you can see which file 
systems allow which characters. For instance, the exts disallow NUL and /. 
However ReiserFS, Btrfs, JFS, and XFS allow /. In fact, most of the Linux file 
systems seem to allow / (though the exts are probably the most used and they 
don't).

Still, Posix or no, I would expect that using / in a file name would be just 
asking for trouble and find no reason to support it in std.path (particularly 
when we'd rely on the underlying C calls handling it appropriately, and I 
expect that there's a good chance that they don't). But if Posix disallows it, 
then we definitely shouldn't. Still, the file systems themselves aren't 
necessarily Posix-related, and apparently quite a few of the *nix file systems 
allow /.

- Jonathan M Davis

Reply via email to