Integrate macperl patches #16926 and #16938;
[p5sagit/p5-mst-13.2.git] / utils / dprofpp.PL
index b1379bf..d04f61d 100644 (file)
@@ -2,6 +2,7 @@
 
 use Config;
 use File::Basename qw(&basename &dirname);
+use File::Spec;
 
 # List explicitly here the variables you want Configure to
 # generate.  Metaconfig only looks for shell variables, so you
@@ -17,7 +18,7 @@ chdir(dirname($0));
 $file =~ s/\.pl$// if ($Config{'osname'} eq 'OS2');      # "case-forgiving"
 $file =~ s/\.pl$/.com/ if ($Config{'osname'} eq 'VMS');  # "case-forgiving"
 
-my $dprof_pm = '../ext/Devel/DProf/DProf.pm';
+my $dprof_pm = File::Spec->catfile(File::Spec->updir, 'ext', 'Devel', 'DProf', 'DProf.pm');
 my $VERSION = 0;
 open( PM, "<$dprof_pm" ) || die "Can't open $dprof_pm: $!";
 while(<PM>){
@@ -693,7 +694,7 @@ sub parsestack {
                chop;
                if (/^&/) {
                  ($dir, $id, $pack, $name) = split;
-                 if ($opt_R and ($name =~ /::(__ANON_|END)$/)) {
+                 if ($opt_R and ($name =~ /(?:::)?(__ANON__|END)$/)) {
                    $name .= "($id)";
                  }
                  $cv_hash{$id} = "$pack\::$name";
@@ -830,7 +831,7 @@ sub exitstamp {
                die "Garbled profile, missing an enter time stamp";
        }
        if( $x->[0] ne $name and $opt_G and ($name =~ /$opt_G/)){
-         if ($x->[0] =~ /::AUTOLOAD$/) {
+         if ($x->[0] =~ /(?:::)?AUTOLOAD$/) {
            if ($opt_A) {
              $name = $x->[0];
            }
@@ -896,10 +897,12 @@ sub run_profiler {
        my $script = shift;
        my $profiler = shift;
        my $startperl = shift;
+       my @script_parts = split /\s+/, $script;
 
-       system $startperl, "-d:$profiler", $script;
+       system $startperl, "-d:$profiler", @script_parts;
        if( $? / 256 > 0 ){
-               die "Failed: $startperl -d:$profiler $script: $!";
+               my $cmd = join ' ', @script_parts;
+               die "Failed: $startperl -d:$profiler $cmd: $!";
        }
 }