require 5.003; # keep this compatible, an old perl is all we may have before
# we build the new one
+BEGIN {
+ # Get function prototypes
+ require 'regen.pl';
+}
+
#
# See database of global and static function prototypes in embed.fnc
# This is used to generate prototype headers under various configurations,
EOW
if ($file =~ m:\.[ch]$:) {
-$warning =~ s:^: * :gm;
-$warning =~ s: +$::gm;
-$warning =~ s: :/:;
-$warning =~ s:$:/:;
+ $warning =~ s:^: * :gm;
+ $warning =~ s: +$::gm;
+ $warning =~ s: :/:;
+ $warning =~ s:$:/:;
}
else {
-$warning =~ s:^:# :gm;
-$warning =~ s: +$::gm;
+ $warning =~ s:^:# :gm;
+ $warning =~ s: +$::gm;
}
$warning;
} # do_not_edit
sub walk_table (&@) {
my $function = shift;
my $filename = shift || '-';
- my $leader = shift || do_not_edit ($filename);
+ my $leader = shift;
+ defined $leader or $leader = do_not_edit ($filename);
my $trailer = shift;
my $F;
local *F;
$F = $filename;
}
else {
- unlink $filename;
+ safer_unlink $filename;
open F, ">$filename" or die "Can't open $filename: $!";
$F = \*F;
}
print $F @outs; # $function->(@args) is not 5.003
}
print $F $trailer if $trailer;
- close $F unless ref $filename;
+ unless (ref $filename) {
+ close $F or die "Error closing $filename: $!";
+ }
}
sub munge_c_files () {
if (@_ > 1) {
$functions->{$_[2]} = \@_ if $_[@_-1] =~ /\.\.\./;
}
- } '/dev/null';
+ } '/dev/null', '';
local $^I = '.bak';
while (<>) {
# if (/^#\s*include\s+"perl.h"/) {
$ret;
}
-walk_table(\&write_protos, "proto.h");
-walk_table(\&write_global_sym, "global.sym");
+walk_table(\&write_protos, "proto.h", undef);
+walk_table(\&write_global_sym, "global.sym", undef);
# XXX others that may need adding
# warnhook
return hide("PL_$pre$sym", "PL_$sym");
}
-unlink 'embed.h';
+safer_unlink 'embed.h';
open(EM, '> embed.h') or die "Can't create embed.h: $!\n";
print EM do_not_edit ("embed.h"), <<'END';
}
}
$ret;
-} \*EM;
+} \*EM, "";
for $sym (sort keys %ppsym) {
$sym =~ s/^Perl_//;
}
}
$ret;
-} \*EM;
+} \*EM, "";
for $sym (sort keys %ppsym) {
$sym =~ s/^Perl_//;
END
-close(EM);
+close(EM) or die "Error closing EM: $!";
-unlink 'embedvar.h';
+safer_unlink 'embedvar.h';
open(EM, '> embedvar.h')
or die "Can't create embedvar.h: $!\n";
#endif /* PERL_POLLUTE */
END
-close(EM);
+close(EM) or die "Error closing EM: $!";
-unlink 'perlapi.h';
-unlink 'perlapi.c';
+safer_unlink 'perlapi.h';
+safer_unlink 'perlapi.c';
open(CAPI, '> perlapi.c') or die "Can't create perlapi.c: $!\n";
open(CAPIH, '> perlapi.h') or die "Can't create perlapi.h: $!\n";
#endif /* __perlapi_h__ */
EOT
-close CAPIH;
+close CAPIH or die "Error closing CAPIH: $!";
print CAPI do_not_edit ("perlapi.c"), <<'EOT';
#endif /* MULTIPLICITY */
EOT
-close(CAPI);
+close(CAPI) or die "Error closing CAPI: $!";
# functions that take va_list* for implementing vararg functions
# NOTE: makedef.pl must be updated if you add symbols to %vfuncs