This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
The I_CSD, I_S, and V_S had wrong recepting datatype.
[perl5.git] / reentr.pl
index a92f42d..caee501 100644 (file)
--- a/reentr.pl
+++ b/reentr.pl
@@ -161,7 +161,14 @@ while (<DATA>) {
     if ($opts{U} && open(U, ">d_${f}_r.U"))  {
        select U;
     }
-    my $prereqh = $h eq 'stdio' ? '' : "i_$h"; # There's no i_stdio.
+    my $prereqs  = '';
+    my $prereqh  = '';
+    my $prereqsh = '';
+    if ($h ne 'stdio') { # There's no i_stdio.
+       $prereqs  = "i_$h";
+       $prereqh  = "$h.h";
+       $prereqsh = "\$$prereqs $prereqh";
+    }
     print <<EOF if $opts{U};
 ?RCS: \$Id: d_${f}_r.U,v $
 ?RCS:
@@ -172,7 +179,7 @@ while (<DATA>) {
 ?RCS:
 ?RCS: Generated by the reentr.pl from the Perl 5.8 distribution.
 ?RCS:
-?MAKE:d_${f}_r ${f}_r_proto: Inlibc Protochk Hasproto i_systypes $prereqh usethreads
+?MAKE:d_${f}_r ${f}_r_proto: Inlibc Protochk Hasproto i_systypes i_systime $prereqs usethreads
 ?MAKE: -pick add \$@ %<
 ?S:d_${f}_r:
 ?S:    This variable conditionally defines the HAS_${F}_R symbol,
@@ -200,7 +207,7 @@ set ${f}_r d_${f}_r
 eval \$inlibc
 case "\$d_${f}_r" in
 "\$define")
-       hdrs="\$i_systypes sys/types.h define stdio.h \$i_${h} $h.h"
+       hdrs="\$i_systypes sys/types.h define stdio.h $prereqsh"
        case "$h" in
        time)
                hdrs="\$hdrs \$i_systime sys/time.h"
@@ -488,6 +495,7 @@ EOF
            my $G = uc $g;
            my $D = ifprotomatch($F, grep {/D/} @p);
            my $d = $seend{$f};
+           $d =~ s/\*$//; # snip: we need need the base type.
            push @struct, <<EOF;
        $seent{$f}      _${g}_struct;
 #   if $D
@@ -548,7 +556,6 @@ EOF
 
        push @wrap, $ifdef;
 
-# Doesn't implement the buffer growth loop for glibc gethostby*().
        push @wrap, <<EOF;
 #   undef $f
 EOF
@@ -898,11 +905,11 @@ ctermid   B       |stdio  |               |B_B
 ctime S                |time   |const time_t   |B_SB|B_SBI|I_SB|I_SBI
 drand48                |stdlib |struct drand48_data    |I_ST|T=double*
 endgrent       |grp    |               |I_H|V_H
-endhostent     |netdb  |struct hostent_data    |I_S|V_S
-endnetent      |netdb  |struct netent_data     |I_S|V_S
-endprotoent    |netdb  |struct protoent_data   |I_S|V_S
+endhostent     |netdb  |               |I_D|V_D|D=struct hostent_data*
+endnetent      |netdb  |               |I_D|V_D|D=struct netent_data*
+endprotoent    |netdb  |               |I_D|V_D|D=struct protoent_data*
 endpwent       |pwd    |               |I_H|V_H
-endservent     |netdb  |struct servent_data    |I_S|V_S
+endservent     |netdb  |               |I_D|V_D|D=struct servent_data*
 getgrent       |grp    |struct group   |I_SBWR|I_SBIR|S_SBW|S_SBI|I_SBI|I_SBIH
 getgrgid T     |grp    |struct group   |I_TSBWR|I_TSBIR|I_TSBI|S_TSBI|T=gid_t
 getgrnam C     |grp    |struct group   |I_CSBWR|I_CSBIR|S_CBI|I_CSBI|S_CSBI