summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2000-10-25 21:27:08 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2000-10-25 21:27:08 +0000
commit41819ebfef1c41aa7f631e5a0ba2226f47987a77 (patch)
tree8779688219e986258378806ada1cd97ffcb8634e /lib
parent784707d55e15908335a8276d5ed4548baa321d1f (diff)
parente3830a4ec012ee625f1b3bc63b5b18c656f377da (diff)
downloadperl-41819ebfef1c41aa7f631e5a0ba2226f47987a77.tar.gz
Integrate with vmsperl #7430 by Charles Bailey:
Cleanup from prior patch (Charles Lane?): - improve handling of MFDs in Basename and Path - default to no xsubpp line # munging when building debug images p4raw-id: //depot/perl@7445
Diffstat (limited to 'lib')
-rw-r--r--lib/ExtUtils/MM_VMS.pm7
-rw-r--r--lib/File/Basename.pm8
-rw-r--r--lib/File/Path.pm17
3 files changed, 22 insertions, 10 deletions
diff --git a/lib/ExtUtils/MM_VMS.pm b/lib/ExtUtils/MM_VMS.pm
index d966c7d236..377d5d124d 100644
--- a/lib/ExtUtils/MM_VMS.pm
+++ b/lib/ExtUtils/MM_VMS.pm
@@ -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";
diff --git a/lib/File/Basename.pm b/lib/File/Basename.pm
index 4581e7e93c..243234403a 100644
--- a/lib/File/Basename.pm
+++ b/lib/File/Basename.pm
@@ -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;
}
diff --git a/lib/File/Path.pm b/lib/File/Path.pm
index daa2eae0fb..8b0772d0e1 100644
--- a/lib/File/Path.pm
+++ b/lib/File/Path.pm
@@ -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 = $!;