This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Revert "regcomp.c: Add a constant 0 element before inversion lists"
[perl5.git] / regen / overload.pl
index 1cd07dd..6d9e04d 100644 (file)
@@ -30,31 +30,20 @@ while (<DATA>) {
   push @names, $name;
 }
 
-safer_unlink ('lib/overload/numbers.pm');
-my $c = safer_open("overload.c-new");
-my $h = safer_open("overload.h-new");
-mkdir("lib/overload", 0777) unless -d 'lib/overload';
-my $p = safer_open('lib/overload/numbers.pm');
-
+my ($c, $h) = map {
+    open_new($_, '>',
+            { by => 'regen/overload.pl', file => $_, style => '*',
+              copyright => [1997, 1998, 2000, 2001, 2005 .. 2007, 2011] });
+} 'overload.c', 'overload.h';
 
-select $p;
+mkdir("lib/overload", 0777) unless -d 'lib/overload';
+my $p = open_new('lib/overload/numbers.pm', '>',
+                { by => 'regen/overload.pl',
+                  file => 'lib/overload/numbers.pm', copyright => [2008] });
 
 {
 local $" = "\n    ";
-print <<"EOF";
-# -*- buffer-read-only: t -*-
-#
-#   lib/overload/numbers.pm
-#
-#   Copyright (C) 2008 by Larry Wall and others
-#
-#   You may distribute under the terms of either the GNU General Public
-#   License or the Artistic License, as specified in the README file.
-#
-# !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
-# This file is built by regen/overload.pl
-#
-
+print $p <<"EOF";
 package overload::numbers;
 
 our \@names = qw#
@@ -68,39 +57,10 @@ our \@enums = qw#
 { my \$i = 0; our %names = map { \$_ => \$i++ } \@names }
 
 { my \$i = 0; our %enums = map { \$_ => \$i++ } \@enums }
-
 EOF
 }
 
-
-sub print_header {
-  my $file = shift;
-  print <<"EOF";
-/* -*- buffer-read-only: t -*-
- *
- *    $file
- *
- *    Copyright (C) 1997, 1998, 2000, 2001, 2005, 2006, 2007, 2011
- *    by Larry Wall and others
- *
- *    You may distribute under the terms of either the GNU General Public
- *    License or the Artistic License, as specified in the README file.
- *
- *  !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
- *  This file is built by regen/overload.pl
- */
-EOF
-}
-
-select $c;
-print_header('overload.c');
-
-select $h;
-print_header('overload.h');
-print <<'EOF';
-
-enum {
-EOF
+print $h "enum {\n";
 
 for (0..$#enums) {
     my $op = $names[$_];
@@ -109,21 +69,19 @@ for (0..$#enums) {
     die if $op =~ m{\*/};
     my $l =   3 - int((length($enums[$_]) + 9) / 8);
     $l = 1 if $l < 1;
-    printf "    %s_amg,%s/* 0x%02x %-8s */\n", $enums[$_],
+    printf $h "    %s_amg,%s/* 0x%02x %-8s */\n", $enums[$_],
        ("\t" x $l), $_, $op;
 }
 
-print <<'EOF';
+print $h <<'EOF';
     max_amg_code
     /* Do not leave a trailing comma here.  C9X allows it, C89 doesn't. */
 };
 
 #define NofAMmeth max_amg_code
-
 EOF
 
 print $c <<'EOF';
-
 #define AMG_id2name(id) (PL_AMG_names[id]+1)
 #define AMG_id2namelen(id) (PL_AMG_namelens[id]-1)
 
@@ -160,12 +118,9 @@ print $c <<"EOT";
 };
 EOT
 
-safer_close($h);
-safer_close($c);
-safer_close($p);
-rename_if_different("overload.c-new", "overload.c");
-rename_if_different("overload.h-new","overload.h");
-
+foreach ($h, $c, $p) {
+    read_only_bottom_close_and_rename($_);
+}
 __DATA__
 # Fallback should be the first
 fallback       ()
@@ -243,5 +198,3 @@ concat_ass  (.=
 smart          (~~
 ftest           (-X
 regexp          (qr
-# Note: Perl_Gv_AMupdate() assumes that DESTROY is the last entry
-DESTROY                DESTROY