This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
/* This code tries to figure out just what went wrong with
[perl5.git] / overload.pl
index 6b1050e..69808c6 100644 (file)
@@ -22,10 +22,8 @@ while (<DATA>) {
 }
 
 safer_unlink ('overload.h', 'overload.c');
-die "overload.h: $!" unless open(C, ">overload.c");
-binmode C;
-die "overload.h: $!" unless open(H, ">overload.h");
-binmode H;
+my $c = safer_open("overload.c");
+my $h = safer_open("overload.h");
 
 sub print_header {
   my $file = shift;
@@ -46,10 +44,10 @@ sub print_header {
 EOF
 }
 
-select C;
+select $c;
 print_header('overload.c');
 
-select H;
+select $h;
 print_header('overload.h');
 print <<'EOF';
 
@@ -67,23 +65,24 @@ print <<'EOF';
 
 EOF
 
-print C <<'EOF';
+print $c <<'EOF';
 
 #define AMG_id2name(id) (PL_AMG_names[id]+1)
+#define AMG_id2namelen(id) (PL_AMG_namelens[id]-1)
 
-const U8 PL_AMG_namelens[NofAMmeth] = {
+static const U8 PL_AMG_namelens[NofAMmeth] = {
 EOF
 
 my $last = pop @names;
 
-print C "    $_,\n" foreach map { length $_ } @names;
+print $c "    $_,\n" foreach map { length $_ } @names;
 
 my $lastlen = length $last;
-print C <<"EOT";
+print $c <<"EOT";
     $lastlen
 };
 
-char * const PL_AMG_names[NofAMmeth] = {
+static const char * const PL_AMG_names[NofAMmeth] = {
   /* Names kept in the symbol table.  fallback => "()", the rest has
      "(" prepended.  The only other place in perl which knows about
      this convention is AMG_id2name (used for debugging output and
@@ -91,15 +90,15 @@ char * const PL_AMG_names[NofAMmeth] = {
      overload.pm.  */
 EOT
 
-print C "    \"$_\",\n" foreach map { s/(["\\"])/\\$1/g; $_ } @names;
+print $c "    \"$_\",\n" foreach map { s/(["\\"])/\\$1/g; $_ } @names;
 
-print C <<"EOT";
+print $c <<"EOT";
     "$last"
 };
 EOT
 
-close H or die $!;
-close C or die $!;
+safer_close($h);
+safer_close($c);
 
 __DATA__
 # Fallback should be the first