ExtUtils::Manifest fix-ups for VMS:
Craig A. Berry [Sun, 11 Mar 2007 23:42:14 +0000 (23:42 +0000)]
  - don't use multiple dots in .bak filenames
  - remove VMS-specific clobbering of keys with values in mkmanifest()
patch also in RT at <http://rt.cpan.org//Ticket/Display.html?id=25377>

p4raw-id: //depot/perl@30544

lib/ExtUtils/Manifest.pm
lib/ExtUtils/t/Manifest.t

index f3459ae..ee508c8 100644 (file)
@@ -13,7 +13,7 @@ use vars qw($VERSION @ISA @EXPORT_OK
           $Is_MacOS $Is_VMS 
           $Debug $Verbose $Quiet $MANIFEST $DEFAULT_MSKIP);
 
-$VERSION = '1.51';
+$VERSION = '1.51_01';
 @ISA=('Exporter');
 @EXPORT_OK = qw(mkmanifest
                 manicheck  filecheck  fullcheck  skipcheck
@@ -93,7 +93,9 @@ sub mkmanifest {
     my $read = (-r 'MANIFEST' && maniread()) or $manimiss++;
     $read = {} if $manimiss;
     local *M;
-    rename $MANIFEST, "$MANIFEST.bak" unless $manimiss;
+    my $bakbase = $MANIFEST;
+    $bakbase =~ s/\./_/g if $Is_VMS; # avoid double dots
+    rename $MANIFEST, "$bakbase.bak" unless $manimiss;
     open M, ">$MANIFEST" or die "Could not open $MANIFEST: $!";
     my $skip = _maniskip();
     my $found = manifind();
@@ -112,7 +114,6 @@ sub mkmanifest {
            warn "Added to $MANIFEST: $file\n" unless exists $read->{$file};
        }
        my $text = $all{$file};
-       ($file,$text) = split(/\s+/,$text,2) if $Is_VMS && $text;
        $file = _unmacify($file);
        my $tabs = (5 - (length($file)+1)/8);
        $tabs = 1 if $tabs < 1;
@@ -405,8 +406,10 @@ sub _check_mskip_directives {
     }
     close M;
     return unless $flag;
-    rename $mfile, "$mfile.bak";
-    warn "Debug: Saving original $mfile as $mfile.bak\n" if $Debug;
+    my $bakbase = $mfile;
+    $bakbase =~ s/\./_/g if $Is_VMS;  # avoid double dots
+    rename $mfile, "$bakbase.bak";
+    warn "Debug: Saving original $mfile as $bakbase.bak\n" if $Debug;
     unless (open M, ">$mfile") {
         warn "Problem opening $mfile: $!";
         return;
index c11c944..e8732ad 100644 (file)
@@ -249,7 +249,8 @@ is( $files->{foobar}, '',    '          preserved old entries' );
         'mymanifest.skip excluded via mydefault.skip' );
     ok( ! exists $files->{'mydefault.skip'},
         'mydefault.skip excluded via mydefault.skip' );
-    $Files{"$_.bak"}++ for (qw(MANIFEST MANIFEST.SKIP));
+    my $extsep = $Is_VMS ? '_' : '.';
+    $Files{"$_.bak"}++ for ('MANIFEST', "MANIFEST${extsep}SKIP");
 }
 
 add_file('MANIFEST'   => 'Makefile.PL');