Ah -- right, of course. Okay, I got that, and it isn't fixed. Guess I should report to the maintainer -- I think the fix in "File/Spec/Unix.pm is pretty simple:
193c193
< sub case_tolerant { 0 }
---
> sub case_tolerant { ( $^O eq 'darwin' ) ? 1 : 0 }
There's even more strangeness about the darwin path/name "logic": the bash shell's file-name completion function is case-sensitive, even though the underlying OS file-name handling is not. So for most of the command-line stuff I do (which is most of what I do), it feels (and I have to type) as if the file names are case-sensitive, even though they aren't. Go figure. | [reply] [d/l] |
| [reply] |
Well, I'll certainly want to learn more about that -- I had no idea. (I wonder what sorts of mac-specific magic would break when you tweak that...)
Meanwhile, Anonymonk's notion of "File/Spec/darwin.pm" aside (I believe darwin is "unix enough" to fit within Unix.pm), perhaps something like the following would handle the range of situations, given that we are talking about unix-based and unix-like systems, all of which must have a path called "/tmp":
sub case_tolerant {
my $t1 = (stat "/tmp")[1];
my $t2 = (stat "/TMP")[1];
(defined($t2) and $t2 == $t1);
}
| [reply] [d/l] |
There is a conceptual error in File::Spec: It assumes that the ENTIRE operating system is either case sensitive or not. This was acceptable for "old" operating systems that could mount only their native file systems, but modern systems can mount foreign file systems, each with different behaviour. Linux' ext2/3/4 are clearly case sensitive, FAT is case insensitive even under linux. VFAT and NTFS usually are case insensitive but case preserving, but there is a mount option ("posix") that "allows two files that only differ in case" - so VFAT and NTFS can be case sensitive.
The correct return value for File::Spec::case_tolerant() should be "it depends" for most operating systems. You need to test each directory along the path, and the answer may be different for each directory.
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
| [reply] |
I think the idea is to create File::Spec::Darwin
| [reply] |