I ran across this problem when I had to use a rooted directory 
structure during MMS TEST.   Oddly enough,  having
 $  set default  XROOT:[Perl_5_6_0]                     worked
but
 $ set default XROOT:[000000.Perl_5_6_0]                didn't.

The reason for the difference was in File::Basename, where
we try and be smart about treating /XROOT/000000  as a unit...
but in the process we drop all the stuff following the 000000.

This triggers failures in two of the POD tests: Pod2Usage and
PodSelect.  They both complain about not finding =include files,
and the code that looks for them is the same routine in
t/pod/testp2pt.pl.    We also need to lc() the unixified
directory spec so that the various string comparisons work.

Patch follows...

diff -uBb lib/File/Basename.pm-orig lib/File/Basename.pm
--- lib/File/Basename.pm-orig   Wed May 10 09:47:58 2000
+++ lib/File/Basename.pm        Wed May 10 09:55:12 2000
@@ -189,9 +189,13 @@
   }
   elsif ($fstype !~ /^VMS/i) {  # default to Unix
     ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#s);
-    if ($^O eq 'VMS' and $fullname =~ m:/[^/]+/000000/?:) {
+    if ($^O eq 'VMS' and $fullname =~ m:^(/[^/]+/000000/?):) {
       # dev:[000000] is top of VMS tree, similar to Unix '/'
-      ($basename,$dirpath) = ('',$fullname);
+      # so strip it off and treat the rest as "normal"
+      my $devspec  = $1;
+      my $remainder = $';
+      ($dirpath,$basename) = ($remainder =~ m#^(.*/)?(.*)#s);
+      $dirpath = $devspec.$dirpath;
     }
     $dirpath = './' unless $dirpath;
   }
diff -uBb t/pod/testp2pt.pl-orig t/pod/testp2pt.pl
--- t/pod/testp2pt.pl-orig      Wed May 10 09:51:00 2000
+++ t/pod/testp2pt.pl   Wed May 10 09:29:57 2000
@@ -42,7 +42,7 @@
 sub catfile(@) { File::Spec->catfile(@_); }
 
 my $INSTDIR = abs_path(dirname $0);
-$INSTDIR = VMS::Filespec::unixpath($INSTDIR) if $^O eq 'VMS';
+$INSTDIR = lc(VMS::Filespec::unixpath($INSTDIR)) if $^O eq 'VMS';
 $INSTDIR =~ s#/$## if $^O eq 'VMS';
 $INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 'pod');
 $INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 't');
--
 Drexel University       \V                     --Chuck Lane
----------------->--------*------------<[EMAIL PROTECTED]
     (215) 895-1545      / \  Particle Physics  [EMAIL PROTECTED]
FAX: (215) 895-5934        /~~~~~~~~~~~         [EMAIL PROTECTED]

Reply via email to