$prereqh = "$h.h";
$prereqsh = "\$$prereqs $prereqh";
}
- print <<EOF if $opts{U};
+ if ($opts{U}) {
+ print <<EOF;
?RCS: \$Id: d_${f}_r.U,v $
?RCS:
?RCS: Copyright (c) 2002 Jarkko Hietaniemi
?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 i_systime $prereqs usethreads
+?MAKE:d_${f}_r ${f}_r_proto: Inlibc Protochk Hasproto i_systypes i_systime $prereqs usethreads i_pthread
?MAKE: -pick add \$@ %<
?S:d_${f}_r:
?S: This variable conditionally defines the HAS_${F}_R symbol,
eval \$inlibc
case "\$d_${f}_r" in
"\$define")
- hdrs="\$i_systypes sys/types.h define stdio.h $prereqsh"
- case "$h" in
- time)
- hdrs="\$hdrs \$i_systime sys/time.h"
- ;;
- esac
+EOF
+ my $hdrs = "\$i_systypes sys/types.h define stdio.h $prereqsh";
+ if ($h eq 'time') {
+ $hdrs .= " \$i_systime sys/time.h";
+ }
+ print <<EOF;
+ hdrs="$hdrs"
case "\$d_${f}_r_proto:\$usethreads" in
":define") d_${f}_r_proto=define
set d_${f}_r_proto ${f}_r \$hdrs
case "\$d_${f}_r_proto" in
define)
EOF
- for my $p (@p) {
- my ($r, $a) = ($p =~ /^(.)_(.+)/);
- my $v = join(", ", map { $m{$_} } split '', $a);
- if ($opts{U}) {
- print <<EOF ;
+ }
+ for my $p (@p) {
+ my ($r, $a) = ($p =~ /^(.)_(.+)/);
+ my $v = join(", ", map { $m{$_} } split '', $a);
+ if ($opts{U}) {
+ print <<EOF ;
case "\$${f}_r_proto" in
''|0) try='$m{$r} ${f}_r($v);'
./protochk "extern \$try" \$hdrs && ${f}_r_proto=$p ;;
esac
EOF
- }
- $seenh{$f}->{$p}++;
- push @{$seena{$f}}, $p;
- $seenp{$p}++;
- $seent{$f} = $t;
- $seens{$f} = $m{S};
- $seend{$f} = $m{D};
- }
- if ($opts{U}) {
- print <<EOF;
+ }
+ $seenh{$f}->{$p}++;
+ push @{$seena{$f}}, $p;
+ $seenp{$p}++;
+ $seent{$f} = $t;
+ $seens{$f} = $m{S};
+ $seend{$f} = $m{D};
+ }
+ if ($opts{U}) {
+ print <<EOF;
case "\$${f}_r_proto" in
''|0) d_${f}_r=undef
${f}_r_proto=0
/* The @F using \L$n? */
EOF
+ my $G;
for my $f (@F) {
my $F = uc $f;
my $h = "${F}_R_HAS_$n";
push @H, $h;
my @h = grep { /$p/ } @{$seena{$f}};
+ unless (defined $G) {
+ $G = $F;
+ $G =~ s/^GET//;
+ }
if (@h) {
push @define, "#if defined(HAS_${F}_R) && (" . join(" || ", map { "${F}_R_PROTO == REENTRANT_PROTO_$_" } @h) . ")\n";
EOF
push @define, "#if (" . join(" || ", map { "defined($_)" } @H) . ")\n";
push @define, <<EOF;
-# define USE_${H}_$n
+# define USE_${G}_$n
#else
-# undef USE_${H}_$n
+# undef USE_${G}_$n
#endif
EOF
qw(getspent getspnam));
define('FPTR', 'H',
- qw(getgrent getgrgid getgrnam));
+ qw(getgrent getgrgid getgrnam setgrent endgrent));
define('FPTR', 'H',
- qw(getpwent getpwnam getpwuid));
+ qw(getpwent getpwnam getpwuid setpwent endpwent));
define('BUFFER', 'B',
qw(getpwent getpwgid getpwnam));
pushssif $ifdef;
my $g = $f;
$g =~ s/nam/ent/g;
+ $g =~ s/^get//;
my $G = uc $g;
push @struct, <<EOF;
$seent{$f} _${g}_struct;
EOF
my $sc = $g eq 'getgrent' ?
'_SC_GETGR_R_SIZE_MAX' : '_SC_GETPW_R_SIZE_MAX';
+ my $sz = $g eq 'getgrent' ?
+ '_grent_size' : '_pwent_size';
push @size, <<EOF;
# if defined(HAS_SYSCONF) && defined($sc) && !defined(__GLIBC__)
PL_reentrant_buffer->_${g}_size = sysconf($sc);
- if (PL_reentrant_buffer->_getgrent_size == -1)
- PL_reentrant_buffer->_getgrent_size = REENTRANTUSUALSIZE;
+ if (PL_reentrant_buffer->$sz == -1)
+ PL_reentrant_buffer->$sz = REENTRANTUSUALSIZE;
# else
# if defined(__osf__) && defined(__alpha) && defined(SIABUFSIZ)
PL_reentrant_buffer->_${g}_size = SIABUFSIZ;
pushssif $ifdef;
my $g = $f;
$g =~ s/byname/ent/;
+ $g =~ s/^get//;
my $G = uc $g;
my $D = ifprotomatch($F, grep {/D/} @p);
my $d = $seend{$f};
my $true = 1;
my $g = $f;
if ($g =~ /^(?:get|set|end)(pw|gr|host|net|proto|serv|sp)/) {
- $g = "get$1ent";
+ $g = "$1ent";
} elsif ($g eq 'srand48') {
$g = "drand48";
}
dTHX;
void *retptr = NULL;
#ifdef USE_REENTRANT_API
- void *p0, *p1;
+# if defined(USE_HOSTENT_BUFFER) || defined(USE_GRENT_BUFFER) || defined(USE_NETENT_BUFFER) || defined(USE_PWENT_BUFFER) || defined(USE_PROTOENT_BUFFER) || defined(USE_SRVENT_BUFFER)
+ void *p0;
+# endif
+# if defined(USE_SERVENT_BUFFER)
+ void *p1;
+# endif
+# if defined(USE_HOSTENT_BUFFER)
size_t asize;
+# endif
+# if defined(USE_HOSTENT_BUFFER) || defined(USE_NETENT_BUFFER) || defined(USE_PROTOENT_BUFFER) || defined(USE_SERVENT_BUFFER)
int anint;
+# endif
va_list ap;
va_start(ap, f);
#define REENTRANTHALFMAXSIZE 32768 /* The maximum may end up twice this. */
switch (PL_op->op_type) {
-#ifdef USE_GETHOSTENT_BUFFER
+#ifdef USE_HOSTENT_BUFFER
case OP_GHBYADDR:
case OP_GHBYNAME:
case OP_GHOSTENT:
{
- if (PL_reentrant_buffer->_gethostent_size <= REENTRANTHALFMAXSIZE) {
- PL_reentrant_buffer->_gethostent_size *= 2;
- Renew(PL_reentrant_buffer->_gethostent_buffer,
- PL_reentrant_buffer->_gethostent_size, char);
+ if (PL_reentrant_buffer->_hostent_size <= REENTRANTHALFMAXSIZE) {
+ PL_reentrant_buffer->_hostent_size *= 2;
+ Renew(PL_reentrant_buffer->_hostent_buffer,
+ PL_reentrant_buffer->_hostent_size, char);
switch (PL_op->op_type) {
case OP_GHBYADDR:
p0 = va_arg(ap, void *);
}
break;
#endif
-#ifdef USE_GETGRENT_BUFFER
+#ifdef USE_GRENT_BUFFER
case OP_GGRNAM:
case OP_GGRGID:
case OP_GGRENT:
{
- if (PL_reentrant_buffer->_getgrent_size <= REENTRANTHALFMAXSIZE) {
+ if (PL_reentrant_buffer->_grent_size <= REENTRANTHALFMAXSIZE) {
Gid_t gid;
- PL_reentrant_buffer->_getgrent_size *= 2;
- Renew(PL_reentrant_buffer->_getgrent_buffer,
- PL_reentrant_buffer->_getgrent_size, char);
+ PL_reentrant_buffer->_grent_size *= 2;
+ Renew(PL_reentrant_buffer->_grent_buffer,
+ PL_reentrant_buffer->_grent_size, char);
switch (PL_op->op_type) {
case OP_GGRNAM:
p0 = va_arg(ap, void *);
}
break;
#endif
-#ifdef USE_GETNETENT_BUFFER
+#ifdef USE_NETENT_BUFFER
case OP_GNBYADDR:
case OP_GNBYNAME:
case OP_GNETENT:
{
- if (PL_reentrant_buffer->_getnetent_size <= REENTRANTHALFMAXSIZE) {
+ if (PL_reentrant_buffer->_netent_size <= REENTRANTHALFMAXSIZE) {
Netdb_net_t net;
- PL_reentrant_buffer->_getnetent_size *= 2;
- Renew(PL_reentrant_buffer->_getnetent_buffer,
- PL_reentrant_buffer->_getnetent_size, char);
+ PL_reentrant_buffer->_netent_size *= 2;
+ Renew(PL_reentrant_buffer->_netent_buffer,
+ PL_reentrant_buffer->_netent_size, char);
switch (PL_op->op_type) {
case OP_GNBYADDR:
net = va_arg(ap, Netdb_net_t);
}
break;
#endif
-#ifdef USE_GETPWENT_BUFFER
+#ifdef USE_PWENT_BUFFER
case OP_GPWNAM:
case OP_GPWUID:
case OP_GPWENT:
{
- if (PL_reentrant_buffer->_getpwent_size <= REENTRANTHALFMAXSIZE) {
+ if (PL_reentrant_buffer->_pwent_size <= REENTRANTHALFMAXSIZE) {
Uid_t uid;
- PL_reentrant_buffer->_getpwent_size *= 2;
- Renew(PL_reentrant_buffer->_getpwent_buffer,
- PL_reentrant_buffer->_getpwent_size, char);
+ PL_reentrant_buffer->_pwent_size *= 2;
+ Renew(PL_reentrant_buffer->_pwent_buffer,
+ PL_reentrant_buffer->_pwent_size, char);
switch (PL_op->op_type) {
case OP_GPWNAM:
p0 = va_arg(ap, void *);
}
break;
#endif
-#ifdef USE_GETPROTOENT_BUFFER
+#ifdef USE_PROTOENT_BUFFER
case OP_GPBYNAME:
case OP_GPBYNUMBER:
case OP_GPROTOENT:
{
- if (PL_reentrant_buffer->_getprotoent_size <= REENTRANTHALFMAXSIZE) {
- PL_reentrant_buffer->_getprotoent_size *= 2;
- Renew(PL_reentrant_buffer->_getprotoent_buffer,
- PL_reentrant_buffer->_getprotoent_size, char);
+ if (PL_reentrant_buffer->_protoent_size <= REENTRANTHALFMAXSIZE) {
+ PL_reentrant_buffer->_protoent_size *= 2;
+ Renew(PL_reentrant_buffer->_protoent_buffer,
+ PL_reentrant_buffer->_protoent_size, char);
switch (PL_op->op_type) {
case OP_GPBYNAME:
p0 = va_arg(ap, void *);
}
break;
#endif
-#ifdef USE_GETSERVENT_BUFFER
+#ifdef USE_SERVENT_BUFFER
case OP_GSBYNAME:
case OP_GSBYPORT:
case OP_GSERVENT:
{
- if (PL_reentrant_buffer->_getservent_size <= REENTRANTHALFMAXSIZE) {
- PL_reentrant_buffer->_getservent_size *= 2;
- Renew(PL_reentrant_buffer->_getservent_buffer,
- PL_reentrant_buffer->_getservent_size, char);
+ if (PL_reentrant_buffer->_servent_size <= REENTRANTHALFMAXSIZE) {
+ PL_reentrant_buffer->_servent_size *= 2;
+ Renew(PL_reentrant_buffer->_servent_buffer,
+ PL_reentrant_buffer->_servent_size, char);
switch (PL_op->op_type) {
case OP_GSBYNAME:
p0 = va_arg(ap, void *);