Cleanup from prior patch (Charles Lane?):
Charles Bailey [Wed, 25 Oct 2000 03:13:53 +0000 (03:13 +0000)]
         - improve handling of MFDs in Basename and Path
         - default to no xsubpp line # munging when building debug images

p4raw-id: //depot/vmsperl@7430

lib/ExtUtils/MM_VMS.pm
lib/File/Basename.pm
lib/File/Path.pm

index d966c7d..377d5d1 100644 (file)
@@ -881,6 +881,11 @@ sub tool_xsubpp {
        unshift( @tmargs, $self->{XSOPT} );
     }
 
+    if ($Config{'ldflags'} && 
+        $Config{'ldflags'} =~ m!/Debug!i &&
+        (!exists($self->{XSOPT}) || $self->{XSOPT} !~ /linenumbers/)) {
+        unshift(@tmargs,'-nolinenumbers');
+    }
     my $xsubpp_version = $self->xsubpp_version($self->catfile($xsdir,'xsubpp'));
 
     # What are the correct thresholds for version 1 && 2 Paul?
@@ -1209,7 +1214,7 @@ $(BASEEXT).opt : Makefile.PL
                           s/.*[:>\/\]]//;       # Trim off dir spec
                           $upcase ? uc($_) : $_;
                         } split ' ', $self->eliminate_macros($self->{OBJECT});
-        my($tmp, @lines,$elt) = '';
+        my($tmp,@lines,$elt) = '';
        $tmp = shift @omods;
        foreach $elt (@omods) {
            $tmp .= ",$elt";
index 4581e7e..2432344 100644 (file)
@@ -189,9 +189,13 @@ sub fileparse {
   }
   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 = $3;
+      ($dirpath,$basename) = ($remainder =~ m#^(.*/)?(.*)#s);
+      $dirpath = $devspec.$dirpath;
     }
     $dirpath = './' unless $dirpath;
   }
index 46f360a..ffc856b 100644 (file)
@@ -119,16 +119,19 @@ sub mkpath {
     my(@created,$path);
     foreach $path (@$paths) {
        $path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT 
-       next if -d $path;
        # Logic wants Unix paths, so go with the flow.
-       $path = VMS::Filespec::unixify($path) if $Is_VMS;
-       my $parent = File::Basename::dirname($path);
-       # Allow for creation of new logical filesystems under VMS
-       if (not $Is_VMS or $parent !~ m:/[^/]+/000000/?:) {
-           unless (-d $parent or $path eq $parent) {
-               push(@created,mkpath($parent, $verbose, $mode));
+       if ($Is_VMS) {
+           next if $path eq '/';
+           $path = VMS::Filespec::unixify($path);
+           if ($path =~ m:^(/[^/]+)/?\z:) {
+               $path = $1.'/000000';
            }
        }
+       next if -d $path;
+       my $parent = File::Basename::dirname($path);
+       unless (-d $parent or $path eq $parent) {
+           push(@created,mkpath($parent, $verbose, $mode));
+       }
        print "mkdir $path\n" if $verbose;
        unless (mkdir($path,$mode)) {
            my $e = $!;