diff options
author | Nicholas Clark <nick@ccl4.org> | 2011-05-14 18:16:50 +0100 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2011-05-19 10:18:14 +0100 |
commit | 284e4287a5ac19d321331b7ac810d94e54d8479f (patch) | |
tree | 8b4c31fa365e8c9163d5681db1f4681b0c3ed71b /regen | |
parent | 73437b648f94e4d46b3838d3721a6f9c2985ac2b (diff) | |
download | perl-284e4287a5ac19d321331b7ac810d94e54d8479f.tar.gz |
Merge safer_close() and rename_if_different() into close_and_rename()
Inline safer_rename() into its only caller, close_and_rename().
Diffstat (limited to 'regen')
-rw-r--r-- | regen/regen_lib.pl | 56 | ||||
-rwxr-xr-x | regen/uconfig_h.pl | 3 |
2 files changed, 25 insertions, 34 deletions
diff --git a/regen/regen_lib.pl b/regen/regen_lib.pl index c56f56435c..f43fb50ec7 100644 --- a/regen/regen_lib.pl +++ b/regen/regen_lib.pl @@ -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 { diff --git a/regen/uconfig_h.pl b/regen/uconfig_h.pl index 0e2feaf194..ae85f423c5 100755 --- a/regen/uconfig_h.pl +++ b/regen/uconfig_h.pl @@ -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); |