for beter make distclean (was Re: [PATCH] Re: [ID 20020305.026] Not OK: perl v5.7...
[p5sagit/p5-mst-13.2.git] / reentr.pl
index caee501..5c566f1 100644 (file)
--- a/reentr.pl
+++ b/reentr.pl
@@ -404,7 +404,7 @@ for my $f (@seenf) {
        size_t  _${f}_size;
 EOF
            push @size, <<EOF;
-       PL_reentrant_buffer->_${f}_size = 256; /* Make something up. */
+       PL_reentrant_buffer->_${f}_size = REENTRANTSMALLSIZE;
 EOF
            pushinitfree $f;
            pushssif $endif;
@@ -469,9 +469,13 @@ EOF
 EOF
                my $sc = $g eq 'getgrent' ?
                    '_SC_GETGR_R_SIZE_MAX' : '_SC_GETPW_R_SIZE_MAX';
+               my $sz = $g eq 'getgrent' ?
+                    '_getgrent_size' : '_getpwent_size';
                push @size, <<EOF;
 #   if defined(HAS_SYSCONF) && defined($sc) && !defined(__GLIBC__)
        PL_reentrant_buffer->_${g}_size = sysconf($sc);
+       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;
@@ -479,7 +483,7 @@ EOF
 #           ifdef __sgi
        PL_reentrant_buffer->_${g}_size = BUFSIZ;
 #           else
-       PL_reentrant_buffer->_${g}_size = 256;
+       PL_reentrant_buffer->_${g}_size = REENTRANTUSUALSIZE;
 #           endif
 #       endif
 #   endif 
@@ -515,7 +519,7 @@ EOF
 EOF
            push @size, <<EOF;
 #if   !($D)
-       PL_reentrant_buffer->_${g}_size = 2048; /* Any better ideas? */
+       PL_reentrant_buffer->_${g}_size = REENTRANTUSUALSIZE;
 #endif
 EOF
            push @init, <<EOF;
@@ -691,6 +695,8 @@ print <<EOF;
 void
 Perl_reentrant_size(pTHX) {
 #ifdef USE_REENTRANT_API
+#define REENTRANTSMALLSIZE      256    /* Make something up. */
+#define REENTRANTUSUALSIZE     4096    /* Make something up. */
 @size
 #endif /* USE_REENTRANT_API */
 }
@@ -718,9 +724,18 @@ Perl_reentrant_retry(const char *f, ...)
     dTHX;
     void *retptr = NULL;
 #ifdef USE_REENTRANT_API
-    void *p0, *p1;
+#  if defined(USE_GETHOSTENT_BUFFER) || defined(USE_GETGRENT_BUFFER) || defined(USE_GETNETENT_BUFFER) || defined(USE_GETPWENT_BUFFER) || defined(USE_GETPROTOENT_BUFFER) || defined(USE_GETSERVENT_BUFFER)
+    void *p0;
+#  endif
+#  if defined(USE_GETSERVENT_BUFFER)
+    void *p1;
+#  endif
+#  if defined(USE_GETHOSTENT_BUFFER)
     size_t asize;
+#  endif
+#  if defined(USE_GETHOSTENT_BUFFER) || defined(USE_GETNETENT_BUFFER) || defined(USE_GETPROTOENT_BUFFER) || defined(USE_GETSERVENT_BUFFER)
     int anint;
+#  endif
     va_list ap;
 
     va_start(ap, f);