This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Merge safer_close() and rename_if_different() into close_and_rename()
authorNicholas Clark <nick@ccl4.org>
Sat, 14 May 2011 17:16:50 +0000 (18:16 +0100)
committerNicholas Clark <nick@ccl4.org>
Thu, 19 May 2011 09:18:14 +0000 (10:18 +0100)
Inline safer_rename() into its only caller, close_and_rename().

Porting/makemeta
regen/regen_lib.pl
regen/uconfig_h.pl

index fc28439..af39ecc 100644 (file)
@@ -18,7 +18,6 @@ BEGIN {
 
 
 my $file = "META.yml";
-my $new_file = "META.yml-new";
 
 use Maintainers qw(%Modules get_module_files get_module_pat);
 
@@ -73,5 +72,4 @@ no_index:
 @files
 EOI
 
-safer_close($fh);
-rename_if_different($new_file, $file);
+close_and_rename($fh);
index c56f564..f43fb50 100644 (file)
@@ -32,34 +32,6 @@ sub safer_unlink {
   return $cnt;
 }
 
-sub safer_rename_silent {
-  my ($from, $to) = @_;
-
-  # Some dosish systems can't rename over an existing file:
-  safer_unlink $to;
-  chmod 0600, $from if $Needs_Write;
-  rename $from, $to;
-}
-
-sub rename_if_different {
-  my ($from, $to) = @_;
-
-  if ($TAP) {
-      my $not = compare($from, $to) ? 'not ' : '';
-      print STDOUT $not . "ok - $0 $to\n";
-      safer_unlink($from);
-      return;
-  }
-  if (compare($from, $to) == 0) {
-      warn "no changes between '$from' & '$to'\n" if $Verbose > 0;
-      safer_unlink($from);
-      return;
-  }
-  warn "changed '$from' to '$to'\n" if $Verbose > 0;
-  push @Changed, $to unless $Verbose < 0;
-  safer_rename_silent($from, $to) or die "renaming $from to $to: $!";
-}
-
 # Open a new file.
 sub open_new {
     my ($final_name, $mode) = @_;
@@ -82,9 +54,30 @@ sub open_new {
     $fh;
 }
 
-sub safer_close {
+sub close_and_rename {
     my $fh = shift;
-    close $fh or die 'Error closing ' . *{$fh}->{name} . ": $!";
+    my $name = *{$fh}->{name};
+    close $fh or die "Error closing $name: $!";
+    my $final_name = *{$fh}->{final_name};
+
+    if ($TAP) {
+       my $not = compare($name, $final_name) ? 'not ' : '';
+       print STDOUT $not . "ok - $0 $final_name\n";
+       safer_unlink($name);
+       return;
+    }
+    if (compare($name, $final_name) == 0) {
+       warn "no changes between '$name' & '$final_name'\n" if $Verbose > 0;
+       safer_unlink($name);
+       return;
+    }
+    warn "changed '$name' to '$final_name'\n" if $Verbose > 0;
+    push @Changed, $final_name unless $Verbose < 0;
+
+    # Some dosish systems can't rename over an existing file:
+    safer_unlink $final_name;
+    chmod 0600, $name if $Needs_Write;
+    rename $name, $final_name or die "renaming $name to $final_name: $!";
 }
 
 sub read_only_top {
@@ -169,8 +162,7 @@ sub read_only_bottom_close_and_rename {
 
     print $fh "\n", read_only_bottom($sources, $lang);
 
-    safer_close($fh);
-    rename_if_different($name, *{$fh}->{final_name});
+    close_and_rename($fh);
 }
 
 sub tab {
index 0e2feaf..ae85f42 100755 (executable)
@@ -26,5 +26,4 @@ my $fh = open_new($uconfig_h, '>>');
 
 print $fh "\n", read_only_bottom([$ENV{CONFIG_SH}, 'config_h.SH']);
 
-safer_close($fh);
-rename_if_different($uconfig_h_new, $uconfig_h);
+close_and_rename($fh);