use strict;
use Getopt::Std;
my %opts;
-getopts('U', \%opts);
+getopts('Uv', \%opts);
my %map = (
V => "void",
# Example #3: S_CBI means type func_r(const char*, char*, int)
-safer_unlink 'reentr.h';
-die "reentr.h: $!" unless open(H, ">reentr.h");
-binmode H;
-select H;
+# safer_unlink 'reentr.h';
+my $h = safer_open("reentr.h-new");
+select $h;
print <<EOF;
/* -*- buffer-read-only: t -*-
*
* memzero out certain structures before calling the functions.
*/
#if defined(__OpenBSD__)
-# define REENTR_MEMZERO(a,b) memzero(a,b),
+# define REENTR_MEMZERO(a,b) memzero(a,b)
#else
-# define REENTR_MEMZERO(a,b)
+# define REENTR_MEMZERO(a,b) 0
#endif
#ifdef NETDB_R_OBSOLETE
# Prepare to continue writing the reentr.h.
-select H;
+select $h;
{
# Write out all the known prototype signatures.
my $memzero = '';
if($p =~ /D$/ &&
($genfunc eq 'protoent' || $genfunc eq 'servent')) {
- $memzero = 'REENTR_MEMZERO(&PL_reentrant_buffer->_' . $genfunc . '_data, sizeof(PL_reentrant_buffer->_' . $genfunc . '_data))';
+ $memzero = 'REENTR_MEMZERO(&PL_reentrant_buffer->_' . $genfunc . '_data, sizeof(PL_reentrant_buffer->_' . $genfunc . '_data)),';
}
push @wrap, <<EOF;
# if !defined($func) && ${FUNC}_R_PROTO == REENTRANT_PROTO_$p
/* ex: set ro: */
EOF
-close(H);
+safer_close($h);
+rename_if_different('reentr.h-new', 'reentr.h');
# Prepare to write the reentr.c.
-safer_unlink 'reentr.c';
-die "reentr.c: $!" unless open(C, ">reentr.c");
-binmode C;
-select C;
+# safer_unlink 'reentr.c';
+my $c = safer_open("reentr.c-new");
+select $c;
print <<EOF;
/* -*- buffer-read-only: t -*-
*
{
dTHX;
void *retptr = NULL;
+ va_list ap;
+#ifdef USE_REENTRANT_API
+ /* Easier to special case this here than in embed.pl. (Look at what it
+ generates for proto.h) */
+ PERL_ARGS_ASSERT_REENTRANT_RETRY;
+#endif
+ va_start(ap, f);
+ {
#ifdef USE_REENTRANT_API
# if defined(USE_HOSTENT_BUFFER) || defined(USE_GRENT_BUFFER) || defined(USE_NETENT_BUFFER) || defined(USE_PWENT_BUFFER) || defined(USE_PROTOENT_BUFFER) || defined(USE_SERVENT_BUFFER)
void *p0;
# 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);
switch (PL_op->op_type) {
#ifdef USE_HOSTENT_BUFFER
/* Not known how to retry, so just fail. */
break;
}
-
- va_end(ap);
#else
PERL_UNUSED_ARG(f);
#endif
+ }
+ va_end(ap);
return retptr;
}
/* ex: set ro: */
EOF
+safer_close($c);
+rename_if_different('reentr.c-new', 'reentr.c');
+
__DATA__
asctime S |time |const struct tm|B_SB|B_SBI|I_SB|I_SBI
crypt CC |crypt |struct crypt_data|B_CCS|B_CCD|D=CRYPTD*