X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=embed.pl;h=2ccd8b38e667468366afa178e91bbf7fcfc09f2b;hb=9277038781ef547cb9d994aebe1ec82e3270d9ac;hp=a2a509e9647069058d04a14b932b59751df8a94d;hpb=de37762f3a9822aa6b4b8e833f672685d8ce22a5;p=p5sagit%2Fp5-mst-13.2.git diff --git a/embed.pl b/embed.pl index a2a509e..2ccd8b3 100755 --- a/embed.pl +++ b/embed.pl @@ -5,7 +5,7 @@ require 5.003; # keep this compatible, an old perl is all we may have before BEGIN { # Get function prototypes - require 'regen.pl'; + require 'regen_lib.pl'; } # @@ -18,11 +18,30 @@ BEGIN { sub do_not_edit ($) { my $file = shift; + + my $years; + + if ($file eq 'embed.h') { + $years = '1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004'; + } elsif ($file eq 'embedvar.h') { + $years = '1999, 2000, 2001, 2002, 2003, 2004'; + } elsif ($file eq 'global.sym') { + $years = '1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004'; + } elsif ($file eq 'perlapi.c') { + $years = '1999, 2000, 2001'; + } elsif ($file eq 'perlapi.h') { + $years = '1999, 2000, 2001, 2002, 2003, 2004'; + } elsif ($file eq 'proto.h') { + $years = '1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004'; + } + + $years =~ s/1999,/1999,\n / if length $years > 40; + my $warning = < 1) { my ($flags,$retval,$func,@args) = @_; - if ($flags =~ /A/ && $flags !~ /[xm]/) { # public API, so export - $func = "Perl_$func" if $flags =~ /p/; + if ($flags =~ /[AX]/ && $flags !~ /[xm]/ + || $flags =~ /b/) { # public API, so export + $func = "Perl_$func" if $flags =~ /[pbX]/; $ret = "$func\n"; } } @@ -219,7 +246,7 @@ my @extvars = qw(sv_undef sv_yes sv_no na dowarn curcop compiling tainting tainted stack_base stack_sp sv_arenaroot no_modify - curstash DBsub DBsingle debstash + curstash DBsub DBsingle DBassertion debstash rsfp stdingv defgv @@ -316,7 +343,11 @@ print EM do_not_edit ("embed.h"), <<'END'; /* (Doing namespace management portably in C is really gross.) */ -/* NO_EMBED is no longer supported. i.e. EMBED is always active. */ +/* By defining PERL_NO_SHORT_NAMES (not done by default) the short forms + * (like warn instead of Perl_warn) for the API are not defined. + * Not defining the short forms is a good thing for cleaner embedding. */ + +#ifndef PERL_NO_SHORT_NAMES /* Hide global symbols */ @@ -340,7 +371,7 @@ walk_table { $ret .= hide($func,"Perl_$func"); } } - unless ($flags =~ /A/) { + if ($ret ne '' && $flags !~ /A/) { if ($flags =~ /E/) { $ret = "#if defined(PERL_CORE) || defined(PERL_EXT)\n$ret#endif\n"; } else { @@ -428,6 +459,8 @@ print EM <<'END'; #endif /* PERL_IMPLICIT_CONTEXT */ +#endif /* #ifndef PERL_NO_SHORT_NAMES */ + END print EM <<'END'; @@ -472,7 +505,7 @@ print EM <<'END'; an extra argument but grab the context pointer using the macro dTHX. */ -#if defined(PERL_IMPLICIT_CONTEXT) +#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_SHORT_NAMES) # define croak Perl_croak_nocontext # define deb Perl_deb_nocontext # define die Perl_die_nocontext