Skip Menu |

This queue is for tickets about the PathTools CPAN distribution.

Report information
The Basics
Id: 37251
Status: open
Priority: 0/
Queue: PathTools

People
Owner: Nobody in particular
Requestors: jeff.holt [...] method-r.com
jkeenan [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



CC: "Cary Millsap" <cary.millsap [...] method-r.com>
Subject: File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Mon, 30 Jun 2008 11:49:13 -0500
To: bug-PathTools [...] rt.cpan.org
From: "Jeff Holt" <jeff.holt [...] method-r.com>
On systems where some filesystems are case tolerant and others are not, the case_tolerant method produces invalid results. This can happen at least in these two cases: - Mac OS X has support for creating and mounting any mixture of native case tolerant and case intolerant file systems - Linux systems where an ntfs samba filesystem is mounted. Two things need to happen: - the pod for case_tolerant should indicate the bug manifestation when no argument is provided - the case_tolerant method should take an optional argument that, if provided, detects the filesystem and determines if it is case tolerant.
I agree. It might also be nice to have a method that tells whether two spec strings would point to the same file according to the rules of their filesystem(s). Interested in writing a patch for the part you recommended? -Ken
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Tue, 1 Jul 2008 23:02:02 -0500
To: bug-PathTools [...] rt.cpan.org
From: "Jeff Holt" <jeff.holt [...] method-r.com>
I'll give it a try. That's what I get for opening my big mouth. LOL BTW, I can personally test only the Unix (Linux and Solaris), Win32, and Cygwin subclasses. That is, unless you know where I get access to Mac, OS2, and VMS. I'm not too worried about the installation frequency on OS2 but Mac and probalby VMS are worth testing. On Tue, Jul 1, 2008 at 9:08 PM, Ken Williams via RT < bug-PathTools@rt.cpan.org> wrote: Show quoted text
> <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > > > I agree. > > It might also be nice to have a method that tells whether two spec strings > would point to the > same file according to the rules of their filesystem(s). > > Interested in writing a patch for the part you recommended? > > -Ken > > >
CC: The Perl5 Porters Mailing List <perl5-porters [...] perl.org>
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Wed, 02 Jul 2008 19:29:53 +0200
To: bug-PathTools [...] rt.cpan.org
From: Reini Urban <rurban [...] x-ray.at>
Ken Williams via RT schrieb: Show quoted text
> Queue: PathTools > Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > > > I agree. > > It might also be nice to have a method that tells whether two spec strings would point to the > same file according to the rules of their filesystem(s). > > Interested in writing a patch for the part you recommended?
For cygwin and Win32 there's already a patch by me. Bug#55162 -- Reini Urban http://phpwiki.org/ http://murbreak.at/
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Wed, 2 Jul 2008 14:25:42 -0500
To: bug-PathTools [...] rt.cpan.org
From: "Jeff Holt" <jeff.holt [...] method-r.com>
I don't see Bug#55162 when I search for it at http://rt.cpan.org/Public/Search/Simple.html. Did I do something wrong? On Wed, Jul 2, 2008 at 12:23 PM, Reini Urban via RT < bug-PathTools@rt.cpan.org> wrote: Show quoted text
> <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > > > Ken Williams via RT schrieb:
> > Queue: PathTools > > Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > > > > > I agree. > > > > It might also be nice to have a method that tells whether two spec
> strings would point to the
> > same file according to the rules of their filesystem(s). > > > > Interested in writing a patch for the part you recommended?
> > For cygwin and Win32 there's already a patch by me. Bug#55162 > > -- > Reini Urban > http://phpwiki.org/ http://murbreak.at/ > >
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Thu, 03 Jul 2008 00:25:12 +0200
To: bug-PathTools [...] rt.cpan.org
From: Reini Urban <rurban [...] x-ray.at>
Jeff Holt via RT schrieb: Show quoted text
> Queue: PathTools > Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > > > I don't see Bug#55162 when I search for it at > http://rt.cpan.org/Public/Search/Simple.html. Did I do something wrong?
A main perl5 ticket. http://rt.perl.org/rt3/Public/Bug/Display.html?id=55162 Show quoted text
> > On Wed, Jul 2, 2008 at 12:23 PM, Reini Urban via RT < > bug-PathTools@rt.cpan.org> wrote: >
>> <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > >> >> Ken Williams via RT schrieb:
>>> Queue: PathTools >>> Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > >>> >>> I agree. >>> >>> It might also be nice to have a method that tells whether two spec
>> strings would point to the
>>> same file according to the rules of their filesystem(s). >>> >>> Interested in writing a patch for the part you recommended?
>> For cygwin and Win32 there's already a patch by me. Bug#55162 >> >> -- >> Reini Urban >> http://phpwiki.org/ http://murbreak.at/ >> >>
>
-- Reini Urban http://phpwiki.org/ http://murbreak.at/
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Wed, 02 Jul 2008 19:56:19 -0500
To: bug-PathTools [...] rt.cpan.org, P5P <perl5-porters [...] perl.org>
From: "John E. Malmberg" <wb8tyw [...] qsl.net>
Jeff Holt via RT wrote: Show quoted text
> Queue: PathTools > Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > > > I'll give it a try. That's what I get for opening my big mouth. LOL > > BTW, I can personally test only the Unix (Linux and Solaris), Win32, and > Cygwin subclasses. That is, unless you know where I get access to Mac, OS2, > and VMS. I'm not too worried about the installation frequency on OS2 but Mac > and probalby VMS are worth testing.
The state of case-sensitive on VMS is this: 1. VAX is case insensitive always. Alpha and IA64 with ODS-5 volumes can be case sensitive. 2. A process can be set to be case sensitive. Some volumes can be accessed on a case sensitive basis and some do not preserve case. 3. The API for perl to understand this is in the process of being developed. 4. The perl build procedure on VMS creates files in the incorrect case, so when you set the process to be case sensitive most of the Perl library does not work. Pathtools needs a lot of patches to get up to speed with VMS using ODS-5 volumes. -John wb8tyw@qsl.network Personal Opinion Only
CC: bug-PathTools [...] rt.cpan.org, P5P <perl5-porters [...] perl.org>
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Thu, 3 Jul 2008 09:26:19 +0200
To: "John E. Malmberg" <wb8tyw [...] qsl.net>
From: "Reini Urban" <rurban [...] x-ray.at>
2008/7/3 John E. Malmberg <wb8tyw@qsl.net>: Show quoted text
> Jeff Holt via RT wrote:
>> >> Queue: PathTools >> Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > >> >> I'll give it a try. That's what I get for opening my big mouth. LOL >> >> BTW, I can personally test only the Unix (Linux and Solaris), Win32, and >> Cygwin subclasses. That is, unless you know where I get access to Mac, >> OS2, >> and VMS. I'm not too worried about the installation frequency on OS2 but >> Mac >> and probalby VMS are worth testing.
> > The state of case-sensitive on VMS is this: > > 1. VAX is case insensitive always. Alpha and IA64 with ODS-5 volumes can be > case sensitive. > > 2. A process can be set to be case sensitive. Some volumes can be accessed > on a case sensitive basis and some do not preserve case. > > 3. The API for perl to understand this is in the process of being developed. > > 4. The perl build procedure on VMS creates files in the incorrect case, so > when you set the process to be case sensitive most of the Perl library does > not work. > > Pathtools needs a lot of patches to get up to speed with VMS using ODS-5 > volumes.
The problem is: What is the first arg and the default arg for case_tolerant on VMS? For Win32 it's the driveletter, default "c:", jan wants $ENV{SYSTEMDRIVE}) for cygwin/unix it's the mount point as in /etc/fstab, default "/" for VMS? for ODS-5 I would just make it overridable for now. or use a saner default. Should all the core libs be updated to use this enhancement, or just user-code which really need it? Think of Module::Build (the worst) and Module::Install -- Reini Urban http://phpwiki.org/ http://murbreak.at/
CC: "John E. Malmberg" <wb8tyw [...] qsl.net>, bug-PathTools [...] rt.cpan.org, P5P <perl5-porters [...] perl.org>
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Thu, 3 Jul 2008 13:21:49 -0500
To: "Reini Urban" <rurban [...] x-ray.at>
From: "Craig A. Berry" <craig.a.berry [...] gmail.com>
On Thu, Jul 3, 2008 at 2:26 AM, Reini Urban <rurban@x-ray.at> wrote: Show quoted text
> The problem is: What is the first arg and the default arg for > case_tolerant on VMS? > > For Win32 it's the driveletter, default "c:", jan wants $ENV{SYSTEMDRIVE}) > for cygwin/unix it's the mount point as in /etc/fstab, default "/" > for VMS? for ODS-5 I would just make it overridable for now. or use a > saner default.
If you want to default to the system disk, you can use sys$sysdevice, but as John said, case sensitivity is an attribute of a process and not of a disk volume. As of 5.10.0, the process setting is available via VMS::Filespec::case_tolerant_process(). I suppose the correct behavior is that if we can get at that setting and if it returns false, then File::Spec->case_tolerant returns false. Otherwise it returns true. I suppose we can just ignore the argument. I think Schwern once did a case tolerant probe empirically -- not sure how slow it was. Show quoted text
> Should all the core libs be updated to use this enhancement, > or just user-code which really need it? > Think of Module::Build (the worst) and Module::Install
What exactly do you want to do differently when case tolerance is available as opposed to when it's not?
CC: Reini Urban <rurban [...] x-ray.at>, "John E. Malmberg" <wb8tyw [...] qsl.net>, bug-PathTools [...] rt.cpan.org, P5P <perl5-porters [...] perl.org>
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Thu, 03 Jul 2008 14:07:35 -0500
To: "Craig A. Berry" <craig.a.berry [...] gmail.com>
From: "John E. Malmberg" <wb8tyw [...] qsl.net>
Craig A. Berry wrote: Show quoted text
> On Thu, Jul 3, 2008 at 2:26 AM, Reini Urban <rurban@x-ray.at> wrote: >
>> The problem is: What is the first arg and the default arg for >> case_tolerant on VMS? >> >> For Win32 it's the driveletter, default "c:", jan wants $ENV{SYSTEMDRIVE}) >> for cygwin/unix it's the mount point as in /etc/fstab, default "/" >> for VMS? for ODS-5 I would just make it overridable for now. or use a >> saner default.
I meant to respond to this earlier, but I got distracted. I have almost got Twiki running on VMS. Currently File::Spec->case_tolerant on VMS is not defined to take an argument. I think, but have not tested it that it will ignore the argument. In a previous proposal to the Perl 5 Porters list, I asked if there were any objections to having the case_tolerant method take an argument to change the case tolerant setting. No one seemed opposed to it, but I never got to that task. Your new code has the case_tolerant taking a parameter of the file system that it wants the answer to. Until more work is done on the VMS port, the answer on VMS should probably still be hard coded to be 1 for case_tolerant behavior. Show quoted text
> If you want to default to the system disk, you can use sys$sysdevice, > but as John said, case sensitivity is an attribute of a process and > not of a disk volume. As of 5.10.0, the process setting is available > via VMS::Filespec::case_tolerant_process(). I suppose the correct > behavior is that if we can get at that setting and if it returns > false, then File::Spec->case_tolerant returns false. Otherwise it > returns true. I suppose we can just ignore the argument.
I have not tested the behavior of a process set to use exact case on an volume that does not support it. And perl is currently pretending VMS filenames are stored in lowercase[1], when they really are in upper case on the older volumes. The newer volumes preserve case. The problem is that until we actually fully resolve a path to a physical disk, we can not predict if the case will be preserved or not, or if we should translate it. [1]I think that under some cases if Perl (vms.c) already finds lower case letters in a file spec, it leaves it the case it was reported. Show quoted text
> I think Schwern once did a case tolerant probe empirically -- not sure > how slow it was.
I remember him proposing such a check in a thread. He also wanted a method to get various system properties. Show quoted text
>> Should all the core libs be updated to use this enhancement, >> or just user-code which really need it? >> Think of Module::Build (the worst) and Module::Install
It should be used in place of checking the OS type where practical. Show quoted text
> What exactly do you want to do differently when case tolerance is > available as opposed to when it's not?
Also case tolerant does not imply case preserved in a file system. The VMS ODS-5 can be case tolerant, and the VMS ODS-2 filesystem is case-tolerant. But only the VMS ODS-5 filesystem supports case preservation. With out case preserving, readdir and glob() can return different case filenames than perl remembers writing. And even with case preserving, a file of 'FooBar' overwritten by a open/write to 'fooBAR' may remain named 'FooBar' on the disk. -John wb8tyw@qsl.net Personal Opinion Only
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Thu, 3 Jul 2008 21:42:47 -0500
To: bug-PathTools [...] rt.cpan.org
From: "Jeff Holt" <jeff.holt [...] method-r.com>
That is an excellent question. I bugged this because another bug drew attention to the case_tolerant method. This other bug is the following warning that causes many of my regression tests to fail: Math::BigInt: couldn't load specified math lib(s), fallback to Math::BigInt::FastCalc at c:/progra~1/perl510/lib/Win32API/File.pm line 20 This warning occurs, at least, when invoking case_tolerant. Had this warning bug not existed, I would never have looked at the following line of code and thought: "this line of code is very buggy" $type = lc($type) if File::Spec->case_tolerant(); # where $type is the extension of a file being inspected After a few minutes of looking at the references to $type, my conclusion is that using case_tolerant is not required. So, to be completely open, fixing this bug is not exactly relevant for what our code should be doing. There's a part of me that would enjoy knowing that something broken (i.e., case_tolerant) might be fixed but there's a good chance that I might just delete this entire line of code. Therefore, fixing the bug might not be necessary for me because I haven't found any other references to case_tolerant in our svn repository. On Thu, Jul 3, 2008 at 7:20 PM, Craig A. Berry via RT < bug-PathTools@rt.cpan.org> wrote: Show quoted text
> <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > > > On Thu, Jul 3, 2008 at 2:26 AM, Reini Urban <rurban@x-ray.at> wrote: >
> > The problem is: What is the first arg and the default arg for > > case_tolerant on VMS? > > > > For Win32 it's the driveletter, default "c:", jan wants
> $ENV{SYSTEMDRIVE})
> > for cygwin/unix it's the mount point as in /etc/fstab, default "/" > > for VMS? for ODS-5 I would just make it overridable for now. or use a > > saner default.
> > If you want to default to the system disk, you can use sys$sysdevice, > but as John said, case sensitivity is an attribute of a process and > not of a disk volume. As of 5.10.0, the process setting is available > via VMS::Filespec::case_tolerant_process(). I suppose the correct > behavior is that if we can get at that setting and if it returns > false, then File::Spec->case_tolerant returns false. Otherwise it > returns true. I suppose we can just ignore the argument. > > I think Schwern once did a case tolerant probe empirically -- not sure > how slow it was. >
> > Should all the core libs be updated to use this enhancement, > > or just user-code which really need it? > > Think of Module::Build (the worst) and Module::Install
> > What exactly do you want to do differently when case tolerance is > available as opposed to when it's not? > >
On Thu Jul 03 22:49:23 2008, jeff.holt@method-r.com wrote: Show quoted text
> That is an excellent question. I bugged this because another bug drew > attention to the case_tolerant method. This other bug is the following > warning that causes many of my regression tests to fail: > > Math::BigInt: couldn't load specified math lib(s), fallback to > Math::BigInt::FastCalc at c:/progra~1/perl510/lib/Win32API/File.pm line 20 > > This warning occurs, at least, when invoking case_tolerant. Had this warning > bug not existed, I would never have looked at the following line of code and > thought: "this line of code is very buggy" > > $type = lc($type) if File::Spec->case_tolerant(); # where $type is the > extension of a file being inspected > > After a few minutes of looking at the references to $type, my conclusion is > that using case_tolerant is not required. So, to be completely open, fixing > this bug is not exactly relevant for what our code should be doing. > > There's a part of me that would enjoy knowing that something broken (i.e., > case_tolerant) might be fixed but there's a good chance that I might just > delete this entire line of code. Therefore, fixing the bug might not be > necessary for me because I haven't found any other references to > case_tolerant in our svn repository. > > > On Thu, Jul 3, 2008 at 7:20 PM, Craig A. Berry via RT < > bug-PathTools@rt.cpan.org> wrote: >
> > <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > > > > > On Thu, Jul 3, 2008 at 2:26 AM, Reini Urban <rurban@x-ray.at> wrote: > >
> > > The problem is: What is the first arg and the default arg for > > > case_tolerant on VMS? > > > > > > For Win32 it's the driveletter, default "c:", jan wants
> > $ENV{SYSTEMDRIVE})
> > > for cygwin/unix it's the mount point as in /etc/fstab, default "/" > > > for VMS? for ODS-5 I would just make it overridable for now. or use a > > > saner default.
> > > > If you want to default to the system disk, you can use sys$sysdevice, > > but as John said, case sensitivity is an attribute of a process and > > not of a disk volume. As of 5.10.0, the process setting is available > > via VMS::Filespec::case_tolerant_process(). I suppose the correct > > behavior is that if we can get at that setting and if it returns > > false, then File::Spec->case_tolerant returns false. Otherwise it > > returns true. I suppose we can just ignore the argument. > > > > I think Schwern once did a case tolerant probe empirically -- not sure > > how slow it was. > >
> > > Should all the core libs be updated to use this enhancement, > > > or just user-code which really need it? > > > Think of Module::Build (the worst) and Module::Install
> > > > What exactly do you want to do differently when case tolerance is > > available as opposed to when it's not? > > > >
Discussion in this ticket appears to have petered out over five years ago. Are there still issues needing resolution? Thank you very much. Jim Keenan
Subject: Re: [rt.cpan.org #37251] File::Spec->case_tolerant works only on systems where one filesystem type is installed
Date: Wed, 4 Dec 2013 09:46:26 -0600
To: bug-PathTools [...] rt.cpan.org
From: "jeff6times7 ." <jeff.holt [...] method-r.com>
Not from my perspective nor from the perspective of the original poster, who is my manager. On Sat, Nov 23, 2013 at 7:08 PM, James E Keenan via RT < bug-PathTools@rt.cpan.org> wrote: Show quoted text
> <URL: https://rt.cpan.org/Ticket/Display.html?id=37251 > > > On Thu Jul 03 22:49:23 2008, jeff.holt@method-r.com wrote:
> > That is an excellent question. I bugged this because another bug drew > > attention to the case_tolerant method. This other bug is the following > > warning that causes many of my regression tests to fail: > > > > Math::BigInt: couldn't load specified math lib(s), fallback to > > Math::BigInt::FastCalc at c:/progra~1/perl510/lib/Win32API/File.pm line
> 20
> > > > This warning occurs, at least, when invoking case_tolerant. Had this
> warning
> > bug not existed, I would never have looked at the following line of code
> and
> > thought: "this line of code is very buggy" > > > > $type = lc($type) if File::Spec->case_tolerant(); # where $type is the > > extension of a file being inspected > > > > After a few minutes of looking at the references to $type, my conclusion
> is
> > that using case_tolerant is not required. So, to be completely open,
> fixing
> > this bug is not exactly relevant for what our code should be doing. > > > > There's a part of me that would enjoy knowing that something broken
> (i.e.,
> > case_tolerant) might be fixed but there's a good chance that I might just > > delete this entire line of code. Therefore, fixing the bug might not be > > necessary for me because I haven't found any other references to > > case_tolerant in our svn repository. > > > > > > On Thu, Jul 3, 2008 at 7:20 PM, Craig A. Berry via RT < > > bug-PathTools@rt.cpan.org> wrote: > >
> > > <URL: http://rt.cpan.org/Ticket/Display.html?id=37251 > > > > > > > On Thu, Jul 3, 2008 at 2:26 AM, Reini Urban <rurban@x-ray.at> wrote: > > >
> > > > The problem is: What is the first arg and the default arg for > > > > case_tolerant on VMS? > > > > > > > > For Win32 it's the driveletter, default "c:", jan wants
> > > $ENV{SYSTEMDRIVE})
> > > > for cygwin/unix it's the mount point as in /etc/fstab, default "/" > > > > for VMS? for ODS-5 I would just make it overridable for now. or use a > > > > saner default.
> > > > > > If you want to default to the system disk, you can use sys$sysdevice, > > > but as John said, case sensitivity is an attribute of a process and > > > not of a disk volume. As of 5.10.0, the process setting is available > > > via VMS::Filespec::case_tolerant_process(). I suppose the correct > > > behavior is that if we can get at that setting and if it returns > > > false, then File::Spec->case_tolerant returns false. Otherwise it > > > returns true. I suppose we can just ignore the argument. > > > > > > I think Schwern once did a case tolerant probe empirically -- not sure > > > how slow it was. > > >
> > > > Should all the core libs be updated to use this enhancement, > > > > or just user-code which really need it? > > > > Think of Module::Build (the worst) and Module::Install
> > > > > > What exactly do you want to do differently when case tolerance is > > > available as opposed to when it's not? > > > > > >
> > Discussion in this ticket appears to have petered out over five years ago. > > Are there still issues needing resolution? > > Thank you very much. > Jim Keenan > > >