This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add an optional 'mode' argument to open_new(), to open for appending.
authorNicholas Clark <nick@ccl4.org>
Sat, 14 May 2011 16:22:55 +0000 (17:22 +0100)
committerNicholas Clark <nick@ccl4.org>
Thu, 19 May 2011 09:18:14 +0000 (10:18 +0100)
Use this in regen/uconfig_h.pl

regen/regen_lib.pl
regen/uconfig_h.pl

index 951c23b..c56f564 100644 (file)
@@ -62,13 +62,19 @@ sub rename_if_different {
 
 # Open a new file.
 sub open_new {
-    my ($final_name) = @_;
+    my ($final_name, $mode) = @_;
     my $name = $final_name . '-new';
-    if (-f $name) {
-       unlink $name or die "$name exists but can't unlink: $!";
-    }
     my $fh = gensym;
-    open $fh, ">$name" or die "Can't create $name: $!";
+    if (!defined $mode or $mode eq '>') {
+       if (-f $name) {
+           unlink $name or die "$name exists but can't unlink: $!";
+       }
+       open $fh, ">$name" or die "Can't create $name: $!";
+    } elsif ($mode eq '>>') {
+       open $fh, ">>$name" or die "Can't append to $name: $!";
+    } else {
+       die "Unhandled open mode '$mode#";
+    }
     *{$fh}->{name} = $name;
     *{$fh}->{final_name} = $final_name;
     *{$fh}->{lang} = ($final_name =~ /\.(?:c|h|tab|act)$/ ? 'C' : 'Perl');
index 8f714e2..0e2feaf 100755 (executable)
@@ -22,9 +22,9 @@ safer_unlink($uconfig_h_new);
 my $command = 'sh ./config_h.SH';
 system $command and die "`$command` failed, \$?=$?";
 
-open FH, ">>$uconfig_h_new" or die "Can't append to $uconfig_h_new: $!";
+my $fh = open_new($uconfig_h, '>>');
 
-print FH "\n", read_only_bottom([$ENV{CONFIG_SH}, 'config_h.SH']);
+print $fh "\n", read_only_bottom([$ENV{CONFIG_SH}, 'config_h.SH']);
 
-safer_close(*FH);
+safer_close($fh);
 rename_if_different($uconfig_h_new, $uconfig_h);