At 2:02 AM +0200 7/23/04, Richard Levitte - VMS Whacker wrote:

<much snippage>

>+      $path =~ s/\[[^\]\.]+\.-\]/\[\]/g;      # [foo.-]       ==> []

<much more snippage>

Dredging up Richard's patch from a few months ago (which has since
made it into the current version of File::Spec), I think I may have
found an issue with one of the things it does in canonpath,
specifically in the line quoted above.  I don't think we really
want to reduce [foo.-] to [], which later gets eliminated entirely.

Let's look at an example:

Before Richard's patch:

$ perl -"MFile::Spec" -e "print File::Spec->canonpath('d0:[d1.-]foo.dat');"
d0:[]foo.dat

After Richard's patch:

$ perl -"MFile::Spec" -e "print File::Spec->canonpath('d0:[d1.-]foo.dat');"
d0:foo.dat

I don't think either of these is the right thing to do with the
[foo.-] case.  Consider what DCL does:

$ set default perl_root:[foo.-]
$ show default
  perl_root:[000000]

So it seems to me we want to do the same thing DCL does, which the
following little patch will take care of:

--- lib/File/Spec/VMS.pm;-0     Mon Nov  1 10:03:24 2004
+++ lib/File/Spec/VMS.pm        Thu Nov 11 09:15:52 2004
@@ -182,7 +182,7 @@ sub canonpath {
        $path =~ s/\.[^\]\.]+\.-\./\./g;        # .foo.-.       ==> .
        $path =~ s/\[[^\]\.]+\.-\./\[/g;        # [foo.-.       ==> [
        $path =~ s/\.[^\]\.]+\.-\]/\]/g;        # .foo.-]       ==> ]
-       $path =~ s/\[[^\]\.]+\.-\]/\[\]/g;      # [foo.-]       ==> []
+       $path =~ s/\[[^\]\.]+\.-\]/\[000000\]/g;# [foo.-]       ==> [000000]
        $path =~ s/\[\]//;                      # []            ==>
        return $path;
     }
[eop]

After that, with our previous example I get:

$  perl -"MFile::Spec" -e "print File::Spec->canonpath('d0:[d1.-]foo.dat');"
d0:[000000]foo.dat

And none of the other new tests fails, so we just might be ok doing
this, but it's such twisty stuff that I'd appreciate feedback,
confirmation, etc.
-- 
________________________________________
Craig A. Berry
mailto:[EMAIL PROTECTED]

"... getting out of a sonnet is much more
 difficult than getting in."
                 Brad Leithauser

Reply via email to