Make File::Spec::VMS->splitdir stop returning an empty first directory
Craig A. Berry [Thu, 21 Jun 2007 03:15:59 +0000 (03:15 +0000)]
when passed a relative path.  Also, don't split on escaped directory
delimiters.

p4raw-id: //depot/perl@31431

lib/File/Spec/VMS.pm
lib/File/Spec/t/Spec.t

index f8c488d..0802a03 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use vars qw(@ISA $VERSION);
 require File::Spec::Unix;
 
-$VERSION = '1.4';
+$VERSION = '1.4_01';
 
 @ISA = qw(File::Spec::Unix);
 
@@ -274,7 +274,8 @@ sub splitdir {
                                                # .--]          ==> .-.-]
                                                # [--]          ==> [-.-]
     $dirspec = "[$dirspec]" unless $dirspec =~ /[\[<]/; # make legal
-    my(@dirs) = split('\.', vmspath($dirspec));
+    $dirspec =~ s/^(\[|<)\./$1/;
+    my(@dirs) = split /(?<!\^)\./, vmspath($dirspec);
     $dirs[0] =~ s/^[\[<]//s;  $dirs[-1] =~ s/[\]>]\Z(?!\n)//s;
     @dirs;
 }
index e1e620d..96d5efa 100644 (file)
@@ -358,16 +358,17 @@ if ($^O eq 'MacOS') {
 [ "VMS->splitdir('[]')",          ''          ],
 [ "VMS->splitdir('d1.d2.d3')",    'd1,d2,d3'  ],
 [ "VMS->splitdir('[d1.d2.d3]')",  'd1,d2,d3'  ],
-[ "VMS->splitdir('.d1.d2.d3')",   ',d1,d2,d3' ],
-[ "VMS->splitdir('[.d1.d2.d3]')", ',d1,d2,d3' ],
-[ "VMS->splitdir('.-.d2.d3')",    ',-,d2,d3'  ],
-[ "VMS->splitdir('[.-.d2.d3]')",  ',-,d2,d3'  ],
+[ "VMS->splitdir('.d1.d2.d3')",   'd1,d2,d3' ],
+[ "VMS->splitdir('[.d1.d2.d3]')", 'd1,d2,d3' ],
+[ "VMS->splitdir('.-.d2.d3')",    '-,d2,d3'  ],
+[ "VMS->splitdir('[.-.d2.d3]')",  '-,d2,d3'  ],
 [ "VMS->splitdir('[d1.d2]')",                  'd1,d2'  ],
 [ "VMS->splitdir('[d1-.--d2]')",       'd1-,--d2'  ],
 [ "VMS->splitdir('[d1---.-.d2]')",     'd1---,-,d2'  ],
 [ "VMS->splitdir('[d1.---.d2]')",      'd1,-,-,-,d2'  ],
 [ "VMS->splitdir('[d1---d2]')",        'd1---d2'  ],
 [ "VMS->splitdir('[d1.][000000.d2]')",  'd1,d2'  ],
+[ "VMS->splitdir('[.d1.d2^.d3]')", 'd1,d2^.d3' ],
 
 [ "VMS->catdir('')",                                                      ''                 ],
 [ "VMS->catdir('d1','d2','d3')",                                          '[.d1.d2.d3]'         ],