This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: t/op/tie.t #19 TODO ENOTWORKING
[perl5.git] / Configure
index f88afcf..fa59b5f 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Fri Mar 15 17:38:07 EET 2002 [metaconfig 3.0 PL70]
+# Generated on Thu May 16 17:03:39 EET DST 2002 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -301,8 +301,6 @@ baserev=''
 bin=''
 binexp=''
 installbin=''
-bincompat5005=''
-d_bincompat5005=''
 byteorder=''
 cc=''
 ccflags=''
@@ -965,7 +963,6 @@ perl5=''
 perladmin=''
 perlpath=''
 d_nv_preserves_uv=''
-d_nv_preserves_uv_bits=''
 i16size=''
 i16type=''
 i32size=''
@@ -976,6 +973,7 @@ i8size=''
 i8type=''
 ivsize=''
 ivtype=''
+nv_preserves_uv_bits=''
 nvsize=''
 nvtype=''
 u16size=''
@@ -1860,6 +1858,11 @@ if test X"$trnl" = X; then
        esac
 fi
 if test X"$trnl" = X; then
+       case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
+       fooxy) trnl='\n\r' ;;
+       esac
+fi
+if test X"$trnl" = X; then
        cat <<EOM >&2
 
 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
@@ -2387,7 +2390,16 @@ EOM
                     fi
                 fi  
                 case "$ans" in
-                [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
+                [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
+                       if $test -f usethreads.cbu; then
+                           $cat >&4 <<EOM 
+
+*** However, any setting of the C compiler flags (e.g. for thread support)
+*** has been lost.  It may be necessary to pass -Dcc=gcc to Configure
+*** (together with e.g. -Dusethreads).
+
+EOM
+                       fi;;
                 esac
             fi
         fi
@@ -3066,6 +3078,9 @@ EOM
                        ;;
                next*) osname=next ;;
                nonstop-ux) osname=nonstopux ;;
+               openbsd) osname=openbsd
+                       osvers="$3"
+                       ;;
                POSIX-BC | posix-bc ) osname=posix-bc
                        osvers="$3"
                        ;;
@@ -3412,18 +3427,23 @@ esac'
 
 case "$usethreads" in
 $define|true|[yY]*)     dflt='y';;
-*) dflt='n';;
+*)     # Catch case where user specified ithreads or 5005threads but
+       # forgot -Dusethreads (A.D. 4/2002)
+       case "$useithreads$use5005threads" in
+       *$define*)      dflt='y' ;;
+       *)      dflt='n';;
+       esac
+       ;;
 esac
 cat <<EOM
 
 Perl can be built to take advantage of threads on some systems.
 To do so, Configure can be run with -Dusethreads.
 
-Note that threading is a highly experimental feature, and
-some known race conditions still remain.  If you choose to try
-it, be very sure to not actually deploy it for production
-purposes.  README.threads has more details, and is required
-reading if you enable threads.
+Note that Perl built with threading support runs slightly slower
+and uses more memory than plain Perl. The current implementation
+is believed to be stable, but it is fairly new, and so should be
+treated with caution.
 
 If this doesn't make any sense to you, just accept the default '$dflt'.
 EOM
@@ -3440,16 +3460,14 @@ case "$usethreads" in
 $define)
        $cat <<EOM
 
-As of 5.5.640, Perl has two different internal threading implementations,
-the 5.005 version (5005threads) and an interpreter-based version
-(ithreads) that has one interpreter per thread.  Both are very 
-experimental.  This arrangement exists to help developers work out
-which one is better.
+Since release 5.6, Perl has had two different threading implementations,
+the newer interpreter-based version (ithreads) with one interpreter per
+thread, and the older 5.005 version (5005threads).
+The 5005threads version is effectively unmaintained and will probably be
+removed in Perl 5.10, so there should be no need to build a Perl using it
+unless needed for backwards compatibility with some existing 5.005threads
+code.
 
-If you're a casual user, you probably don't want interpreter-threads
-at this time.  But if you do, the 'threads' module allows their use,
-and the 'Thread' module offers an interface to both 5005threads and
-ithreads (whichever has been configured).
 EOM
        : Default to ithreads unless overridden on command line or with
        : old config.sh
@@ -3460,7 +3478,7 @@ EOM
        case "$useithreads" in
                $undef|false|[nN]*) dflt='n';;
        esac
-       rp='Use interpreter-based ithreads?'
+       rp='Use the newer interpreter-based ithreads?'
        . ./myread
        case "$ans" in
        y|Y)    val="$define" ;;
@@ -4835,131 +4853,6 @@ EOM
 esac
 $rm -f try try.*
 
-: check for void type
-echo " "
-echo "Checking to see how well your C compiler groks the void type..." >&4
-case "$voidflags" in
-'')
-       $cat >try.c <<'EOCP'
-#if TRY & 1
-void sub() {
-#else
-sub() {
-#endif
-       extern void moo();      /* function returning void */
-       void (*goo)();          /* ptr to func returning void */
-#if TRY & 8
-       void *hue;              /* generic ptr */
-#endif
-#if TRY & 2
-       void (*foo[10])();
-#endif
-
-#if TRY & 4
-       if(goo == moo) {
-               exit(0);
-       }
-#endif
-       exit(0);
-}
-int main() { sub(); }
-EOCP
-       if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
-               voidflags=$defvoidused
-       echo "Good.  It appears to support void to the level $package wants.">&4
-               if $contains warning .out >/dev/null 2>&1; then
-                       echo "However, you might get some warnings that look like this:"
-                       $cat .out
-               fi
-       else
-echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
-               if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
-                       echo "It supports 1..."
-                       if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
-                               echo "It also supports 2..."
-                               if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
-                                       voidflags=7
-                                       echo "And it supports 4 but not 8 definitely."
-                               else
-                                       echo "It doesn't support 4..."
-                                       if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
-                                               voidflags=11
-                                               echo "But it supports 8."
-                                       else
-                                               voidflags=3
-                                               echo "Neither does it support 8."
-                                       fi
-                               fi
-                       else
-                               echo "It does not support 2..."
-                               if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
-                                       voidflags=13
-                                       echo "But it supports 4 and 8."
-                               else
-                                       if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
-                                               voidflags=5
-                                               echo "And it supports 4 but has not heard about 8."
-                                       else
-                                               echo "However it supports 8 but not 4."
-                                       fi
-                               fi
-                       fi
-               else
-                       echo "There is no support at all for void."
-                       voidflags=0
-               fi
-       fi
-esac
-case "$voidflags" in
-"$defvoidused") ;;
-*)     $cat >&4 <<'EOM'
-  Support flag bits are:
-    1: basic void declarations.
-    2: arrays of pointers to functions returning void.
-    4: operations between pointers to and addresses of void functions.
-    8: generic void pointers.
-EOM
-       dflt="$voidflags";
-       rp="Your void support flags add up to what?"
-       . ./myread
-       voidflags="$ans"
-       ;;
-esac
-$rm -f try.* .out
-
-: check for length of pointer
-echo " "
-case "$ptrsize" in
-'')
-       echo "Checking to see how big your pointers are..." >&4
-       if test "$voidflags" -gt 7; then
-               echo '#define VOID_PTR char *' > try.c
-       else
-               echo '#define VOID_PTR void *' > try.c
-       fi
-       $cat >>try.c <<'EOCP'
-#include <stdio.h>
-int main()
-{
-    printf("%d\n", (int)sizeof(VOID_PTR));
-    exit(0);
-}
-EOCP
-       set try
-       if eval $compile_ok; then
-               ptrsize=`$run ./try`
-               echo "Your pointers are $ptrsize bytes long."
-       else
-               dflt='4'
-               echo "(I can't seem to compile the test program.  Guessing...)" >&4
-               rp="What is the size of a pointer (in bytes)?"
-               . ./myread
-               ptrsize="$ans"
-       fi
-       ;;
-esac
-$rm -f try.c try
-
 : check for long long
 echo " "
 echo "Checking to see if you have long long..." >&4
@@ -5359,31 +5252,6 @@ EOM
        ;;
 esac
 
-case "$use64bitall" in
-"$define"|true|[yY]*)
-       case "$ptrsize" in
-       4)      cat <<EOM >&4
-
-*** You have chosen a maximally 64-bit build, but your pointers
-*** are only 4 bytes wide, disabling maximal 64-bitness.
-
-EOM
-               use64bitall="$undef"
-               case "$use64bitint" in
-               "$define"|true|[yY]*) ;;
-               *)      cat <<EOM >&4
-
-*** Downgrading from maximal 64-bitness to using 64-bit integers.
-
-EOM
-                       use64bitint="$define"
-                       ;;
-               esac
-               ;;
-       esac
-       ;;
-esac
-
 case "$use64bitint" in
 "$define"|true|[yY]*)
 : Look for a hint-file generated 'call-back-unit'.  If the
@@ -5694,7 +5562,7 @@ done >libc.tmp
 $echo $n ".$c"
 $grep fprintf libc.tmp > libc.ptf
 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
-xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
+xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
 xxx='[ADTSIW]'
 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
        eval $xscan;\
@@ -6628,45 +6496,6 @@ else
        installarchlib="$archlibexp"
 fi
 
-
-: Binary compatibility with 5.005 is not possible for builds
-: with advanced features
-case "$usethreads$usemultiplicity" in
-*define*)
-       bincompat5005="$undef"
-       d_bincompat5005="$undef"
-       ;;
-*)     $cat <<EOM
-
-This version of Perl can be compiled for binary compatibility with 5.005.
-If you decide to do so, you will be able to continue using most of the
-extensions that were compiled for Perl 5.005.
-
-EOM
-       case "$bincompat5005$d_bincompat5005" in
-       *"$undef"*) dflt=n ;;
-       *) dflt=y ;;
-       esac
-       rp='Binary compatibility with Perl 5.005?'
-       . ./myread
-       case "$ans" in
-       y*) val="$define" ;;
-       *)  val="$undef" ;;
-       esac
-       set d_bincompat5005
-       eval $setvar
-       case "$d_bincompat5005" in
-       "$define")
-               bincompat5005="$define"
-               ;;
-       *)      bincompat5005="$undef"
-               d_bincompat5005="$undef"
-               ;;
-       esac
-       ;;
-esac
-
-
 : see if setuid scripts can be secure
 $cat <<EOM
 
@@ -6785,6 +6614,156 @@ eval $inhdr
 set stdlib.h i_stdlib
 eval $inhdr
 
+: check for void type
+echo " "
+echo "Checking to see how well your C compiler groks the void type..." >&4
+case "$voidflags" in
+'')
+       $cat >try.c <<'EOCP'
+#if TRY & 1
+void sub() {
+#else
+sub() {
+#endif
+       extern void moo();      /* function returning void */
+       void (*goo)();          /* ptr to func returning void */
+#if TRY & 8
+       void *hue;              /* generic ptr */
+#endif
+#if TRY & 2
+       void (*foo[10])();
+#endif
+
+#if TRY & 4
+       if(goo == moo) {
+               exit(0);
+       }
+#endif
+       exit(0);
+}
+int main() { sub(); }
+EOCP
+       if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
+               voidflags=$defvoidused
+       echo "Good.  It appears to support void to the level $package wants.">&4
+               if $contains warning .out >/dev/null 2>&1; then
+                       echo "However, you might get some warnings that look like this:"
+                       $cat .out
+               fi
+       else
+echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
+               if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
+                       echo "It supports 1..."
+                       if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
+                               echo "It also supports 2..."
+                               if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
+                                       voidflags=7
+                                       echo "And it supports 4 but not 8 definitely."
+                               else
+                                       echo "It doesn't support 4..."
+                                       if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
+                                               voidflags=11
+                                               echo "But it supports 8."
+                                       else
+                                               voidflags=3
+                                               echo "Neither does it support 8."
+                                       fi
+                               fi
+                       else
+                               echo "It does not support 2..."
+                               if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
+                                       voidflags=13
+                                       echo "But it supports 4 and 8."
+                               else
+                                       if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
+                                               voidflags=5
+                                               echo "And it supports 4 but has not heard about 8."
+                                       else
+                                               echo "However it supports 8 but not 4."
+                                       fi
+                               fi
+                       fi
+               else
+                       echo "There is no support at all for void."
+                       voidflags=0
+               fi
+       fi
+esac
+case "$voidflags" in
+"$defvoidused") ;;
+*)     $cat >&4 <<'EOM'
+  Support flag bits are:
+    1: basic void declarations.
+    2: arrays of pointers to functions returning void.
+    4: operations between pointers to and addresses of void functions.
+    8: generic void pointers.
+EOM
+       dflt="$voidflags";
+       rp="Your void support flags add up to what?"
+       . ./myread
+       voidflags="$ans"
+       ;;
+esac
+$rm -f try.* .out
+
+: check for length of pointer
+echo " "
+case "$ptrsize" in
+'')
+       echo "Checking to see how big your pointers are..." >&4
+       if test "$voidflags" -gt 7; then
+               echo '#define VOID_PTR char *' > try.c
+       else
+               echo '#define VOID_PTR void *' > try.c
+       fi
+       $cat >>try.c <<'EOCP'
+#include <stdio.h>
+int main()
+{
+    printf("%d\n", (int)sizeof(VOID_PTR));
+    exit(0);
+}
+EOCP
+       set try
+       if eval $compile_ok; then
+               ptrsize=`$run ./try`
+               echo "Your pointers are $ptrsize bytes long."
+       else
+               dflt='4'
+               echo "(I can't seem to compile the test program.  Guessing...)" >&4
+               rp="What is the size of a pointer (in bytes)?"
+               . ./myread
+               ptrsize="$ans"
+       fi
+       ;;
+esac
+$rm -f try.c try
+case "$use64bitall" in
+"$define"|true|[yY]*)
+       case "$ptrsize" in
+       4)      cat <<EOM >&4
+
+*** You have chosen a maximally 64-bit build, but your pointers
+*** are only 4 bytes wide, disabling maximal 64-bitness.
+
+EOM
+               use64bitall="$undef"
+               case "$use64bitint" in
+               "$define"|true|[yY]*) ;;
+               *)      cat <<EOM >&4
+
+*** Downgrading from maximal 64-bitness to using 64-bit integers.
+
+EOM
+                       use64bitint="$define"
+                       ;;
+               esac
+               ;;
+       esac
+       ;;
+esac
+
+
 : determine which malloc to compile in
 echo " "
 case "$usemymalloc" in
@@ -7323,11 +7302,7 @@ case "$dflt" in
 ''|' ') dflt=none ;;
 esac
 case "$dflt" in
-5.005) case "$bincompat5005" in
-       $define|true|[yY]*) ;;
-       *) dflt=none ;;
-       esac
-       ;;
+5.005) dflt=none ;;
 esac
 $cat <<'EOM'
 
@@ -8382,6 +8357,12 @@ esac
 set versiononly
 eval $setvar
 
+case "$versiononly" in
+"$define") inc_version_list=''
+           inc_version_list_init=0
+           ;;
+esac
+
 : figure out how to guarantee perl startup
 case "$startperl" in
 '')
@@ -9070,6 +9051,10 @@ eval $inlibc
 set alarm d_alarm
 eval $inlibc
 
+: see if POSIX threads are available
+set pthread.h i_pthread
+eval $inhdr
+
 : define a fucntion to check prototypes
 $cat > protochk <<EOSH
 $startsh
@@ -9079,6 +9064,9 @@ ccflags="$ccflags"
 prototype="$prototype"
 define="$define"
 rm=$rm
+usethreads=$usethreads
+i_pthread=$i_pthread
+pthread_h_first=$pthread_h_first
 EOSH
 
 $cat >> protochk <<'EOSH'
@@ -9091,6 +9079,14 @@ while test $# -ge 2; do
                $define) echo "#include <$2>" >> try.c ;;
                literal) echo "$2" >> try.c ;;
        esac
+    # Extra magic for the benefit of systems that need pthread.h
+    # to be included early to correctly detect threadsafe functions.
+    # Such functions must guarantee themselves, though, that the usethreads
+    # and i_pthread have been defined, before calling protochk.
+    if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
+       echo "#include <pthread.h>" >> try.c
+       pthread_h_done=yes
+    fi
     shift 2
 done
 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
@@ -9111,6 +9107,25 @@ EOSH
 chmod +x protochk
 $eunicefix protochk
 
+hasproto='varname=$1; func=$2; shift; shift;
+while $test $# -ge 2; do
+       case "$1" in
+       $define) echo "#include <$2>";;
+       esac ;
+    shift 2;
+done > try.c;
+$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
+if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
+       echo "$func() prototype found.";
+       val="$define";
+else
+       echo "$func() prototype NOT found.";
+       val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c tryout.c'
+
 : see if sys/types.h has to be included
 set sys/types.h i_systypes
 eval $inhdr
@@ -9260,7 +9275,15 @@ set asctime_r d_asctime_r
 eval $inlibc
 case "$d_asctime_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
+       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
+       case "$d_asctime_r_proto:$usethreads" in
+       ":define")      d_asctime_r_proto=define
+               set d_asctime_r_proto asctime_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_asctime_r_proto" in
+       define)
        case "$asctime_r_proto" in
        ''|0) try='char* asctime_r(const struct tm*, char*);'
        ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
@@ -9278,9 +9301,9 @@ case "$d_asctime_r" in
        ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
        esac
        case "$asctime_r_proto" in
-       '')     d_asctime_r=undef
+       ''|0)   d_asctime_r=undef
                asctime_r_proto=0
-               echo "Disabling asctime_r, cannot determine prototype." ;;
+               echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
        * )     case "$asctime_r_proto" in
                REENTRANT_PROTO*) ;;
                *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
@@ -9288,6 +9311,14 @@ case "$d_asctime_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "asctime_r has no prototype, not using it." >&4 ;;
+               esac
+               d_asctime_r=undef
+               asctime_r_proto=0
+               ;;
+       esac
+       ;;
 *)     asctime_r_proto=0
        ;;
 esac
@@ -9903,14 +9934,26 @@ eval $inlibc
 case "$d_crypt_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
+       case "$d_crypt_r_proto:$usethreads" in
+       ":define")      d_crypt_r_proto=define
+               set d_crypt_r_proto crypt_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_crypt_r_proto" in
+       define)
        case "$crypt_r_proto" in
        ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
        ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
        esac
        case "$crypt_r_proto" in
-       '')     d_crypt_r=undef
+       ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
+       ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
+       esac
+       case "$crypt_r_proto" in
+       ''|0)   d_crypt_r=undef
                crypt_r_proto=0
-               echo "Disabling crypt_r, cannot determine prototype." ;;
+               echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
        * )     case "$crypt_r_proto" in
                REENTRANT_PROTO*) ;;
                *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
@@ -9918,6 +9961,14 @@ case "$d_crypt_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "crypt_r has no prototype, not using it." >&4 ;;
+               esac
+               d_crypt_r=undef
+               crypt_r_proto=0
+               ;;
+       esac
+       ;;
 *)     crypt_r_proto=0
        ;;
 esac
@@ -9939,20 +9990,36 @@ set ctermid_r d_ctermid_r
 eval $inlibc
 case "$d_ctermid_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_stdio stdio.h"
+       hdrs="$i_systypes sys/types.h define stdio.h "
+       case "$d_ctermid_r_proto:$usethreads" in
+       ":define")      d_ctermid_r_proto=define
+               set d_ctermid_r_proto ctermid_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_ctermid_r_proto" in
+       define)
        case "$ctermid_r_proto" in
        ''|0) try='char* ctermid_r(char*);'
        ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
        esac
        case "$ctermid_r_proto" in
-       '')     d_ctermid_r=undef
+       ''|0)   d_ctermid_r=undef
                ctermid_r_proto=0
-               echo "Disabling ctermid_r, cannot determine prototype." ;;
+               echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
        * )     case "$ctermid_r_proto" in
                REENTRANT_PROTO*) ;;
                *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
                esac
-               echo "Prototype: $try" ;;
+               echo "Prototype: $try" ;;
+       esac
+       ;;
+       *)      case "$usethreads" in
+               define) echo "ctermid_r has no prototype, not using it." >&4 ;;
+               esac
+               d_ctermid_r=undef
+               ctermid_r_proto=0
+               ;;
        esac
        ;;
 *)     ctermid_r_proto=0
@@ -9964,7 +10031,15 @@ set ctime_r d_ctime_r
 eval $inlibc
 case "$d_ctime_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
+       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
+       case "$d_ctime_r_proto:$usethreads" in
+       ":define")      d_ctime_r_proto=define
+               set d_ctime_r_proto ctime_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_ctime_r_proto" in
+       define)
        case "$ctime_r_proto" in
        ''|0) try='char* ctime_r(const time_t*, char*);'
        ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
@@ -9982,9 +10057,9 @@ case "$d_ctime_r" in
        ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
        esac
        case "$ctime_r_proto" in
-       '')     d_ctime_r=undef
+       ''|0)   d_ctime_r=undef
                ctime_r_proto=0
-               echo "Disabling ctime_r, cannot determine prototype." ;;
+               echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
        * )     case "$ctime_r_proto" in
                REENTRANT_PROTO*) ;;
                *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
@@ -9992,6 +10067,14 @@ case "$d_ctime_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "ctime_r has no prototype, not using it." >&4 ;;
+               esac
+               d_ctime_r=undef
+               ctime_r_proto=0
+               ;;
+       esac
+       ;;
 *)     ctime_r_proto=0
        ;;
 esac
@@ -10035,25 +10118,6 @@ $rm -f dbl_dig.?
 set d_dbl_dig
 eval $setvar
 
-hasproto='varname=$1; func=$2; shift; shift;
-while $test $# -ge 2; do
-       case "$1" in
-       $define) echo "#include <$2>";;
-       esac ;
-    shift 2;
-done > try.c;
-$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
-if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
-       echo "$func() prototype found.";
-       val="$define";
-else
-       echo "$func() prototype NOT found.";
-       val="$undef";
-fi;
-set $varname;
-eval $setvar;
-$rm -f try.c tryout.c'
-
 : see if dbm.h is available
 : see if dbmclose exists
 set dbmclose d_dbmclose
@@ -10341,14 +10405,22 @@ eval $inlibc
 case "$d_drand48_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
+       case "$d_drand48_r_proto:$usethreads" in
+       ":define")      d_drand48_r_proto=define
+               set d_drand48_r_proto drand48_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_drand48_r_proto" in
+       define)
        case "$drand48_r_proto" in
        ''|0) try='int drand48_r(struct drand48_data*, double*);'
        ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
        esac
        case "$drand48_r_proto" in
-       '')     d_drand48_r=undef
+       ''|0)   d_drand48_r=undef
                drand48_r_proto=0
-               echo "Disabling drand48_r, cannot determine prototype." ;;
+               echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
        * )     case "$drand48_r_proto" in
                REENTRANT_PROTO*) ;;
                *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
@@ -10356,6 +10428,14 @@ case "$d_drand48_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "drand48_r has no prototype, not using it." >&4 ;;
+               esac
+               d_drand48_r=undef
+               drand48_r_proto=0
+               ;;
+       esac
+       ;;
 *)     drand48_r_proto=0
        ;;
 esac
@@ -10408,6 +10488,14 @@ eval $inlibc
 case "$d_endgrent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
+       case "$d_endgrent_r_proto:$usethreads" in
+       ":define")      d_endgrent_r_proto=define
+               set d_endgrent_r_proto endgrent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_endgrent_r_proto" in
+       define)
        case "$endgrent_r_proto" in
        ''|0) try='int endgrent_r(FILE**);'
        ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
@@ -10417,9 +10505,9 @@ case "$d_endgrent_r" in
        ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
        esac
        case "$endgrent_r_proto" in
-       '')     d_endgrent_r=undef
+       ''|0)   d_endgrent_r=undef
                endgrent_r_proto=0
-               echo "Disabling endgrent_r, cannot determine prototype." ;;
+               echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
        * )     case "$endgrent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
@@ -10427,6 +10515,14 @@ case "$d_endgrent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "endgrent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_endgrent_r=undef
+               endgrent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     endgrent_r_proto=0
        ;;
 esac
@@ -10445,18 +10541,26 @@ eval $inlibc
 case "$d_endhostent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_endhostent_r_proto:$usethreads" in
+       ":define")      d_endhostent_r_proto=define
+               set d_endhostent_r_proto endhostent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_endhostent_r_proto" in
+       define)
        case "$endhostent_r_proto" in
        ''|0) try='int endhostent_r(struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && endhostent_r_proto=I_S ;;
+       ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
        esac
        case "$endhostent_r_proto" in
        ''|0) try='void endhostent_r(struct hostent_data*);'
-       ./protochk "extern $try" $hdrs && endhostent_r_proto=V_S ;;
+       ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
        esac
        case "$endhostent_r_proto" in
-       '')     d_endhostent_r=undef
+       ''|0)   d_endhostent_r=undef
                endhostent_r_proto=0
-               echo "Disabling endhostent_r, cannot determine prototype." ;;
+               echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
        * )     case "$endhostent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
@@ -10464,6 +10568,14 @@ case "$d_endhostent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "endhostent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_endhostent_r=undef
+               endhostent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     endhostent_r_proto=0
        ;;
 esac
@@ -10478,18 +10590,26 @@ eval $inlibc
 case "$d_endnetent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_endnetent_r_proto:$usethreads" in
+       ":define")      d_endnetent_r_proto=define
+               set d_endnetent_r_proto endnetent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_endnetent_r_proto" in
+       define)
        case "$endnetent_r_proto" in
        ''|0) try='int endnetent_r(struct netent_data*);'
-       ./protochk "extern $try" $hdrs && endnetent_r_proto=I_S ;;
+       ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
        esac
        case "$endnetent_r_proto" in
        ''|0) try='void endnetent_r(struct netent_data*);'
-       ./protochk "extern $try" $hdrs && endnetent_r_proto=V_S ;;
+       ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
        esac
        case "$endnetent_r_proto" in
-       '')     d_endnetent_r=undef
+       ''|0)   d_endnetent_r=undef
                endnetent_r_proto=0
-               echo "Disabling endnetent_r, cannot determine prototype." ;;
+               echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
        * )     case "$endnetent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
@@ -10497,6 +10617,14 @@ case "$d_endnetent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "endnetent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_endnetent_r=undef
+               endnetent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     endnetent_r_proto=0
        ;;
 esac
@@ -10511,18 +10639,26 @@ eval $inlibc
 case "$d_endprotoent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_endprotoent_r_proto:$usethreads" in
+       ":define")      d_endprotoent_r_proto=define
+               set d_endprotoent_r_proto endprotoent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_endprotoent_r_proto" in
+       define)
        case "$endprotoent_r_proto" in
        ''|0) try='int endprotoent_r(struct protoent_data*);'
-       ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_S ;;
+       ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
        esac
        case "$endprotoent_r_proto" in
        ''|0) try='void endprotoent_r(struct protoent_data*);'
-       ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_S ;;
+       ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
        esac
        case "$endprotoent_r_proto" in
-       '')     d_endprotoent_r=undef
+       ''|0)   d_endprotoent_r=undef
                endprotoent_r_proto=0
-               echo "Disabling endprotoent_r, cannot determine prototype." ;;
+               echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
        * )     case "$endprotoent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
@@ -10530,6 +10666,14 @@ case "$d_endprotoent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_endprotoent_r=undef
+               endprotoent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     endprotoent_r_proto=0
        ;;
 esac
@@ -10632,6 +10776,14 @@ eval $inlibc
 case "$d_endpwent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
+       case "$d_endpwent_r_proto:$usethreads" in
+       ":define")      d_endpwent_r_proto=define
+               set d_endpwent_r_proto endpwent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_endpwent_r_proto" in
+       define)
        case "$endpwent_r_proto" in
        ''|0) try='int endpwent_r(FILE**);'
        ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
@@ -10641,9 +10793,9 @@ case "$d_endpwent_r" in
        ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
        esac
        case "$endpwent_r_proto" in
-       '')     d_endpwent_r=undef
+       ''|0)   d_endpwent_r=undef
                endpwent_r_proto=0
-               echo "Disabling endpwent_r, cannot determine prototype." ;;
+               echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
        * )     case "$endpwent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
@@ -10651,6 +10803,14 @@ case "$d_endpwent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "endpwent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_endpwent_r=undef
+               endpwent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     endpwent_r_proto=0
        ;;
 esac
@@ -10665,18 +10825,26 @@ eval $inlibc
 case "$d_endservent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_endservent_r_proto:$usethreads" in
+       ":define")      d_endservent_r_proto=define
+               set d_endservent_r_proto endservent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_endservent_r_proto" in
+       define)
        case "$endservent_r_proto" in
        ''|0) try='int endservent_r(struct servent_data*);'
-       ./protochk "extern $try" $hdrs && endservent_r_proto=I_S ;;
+       ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
        esac
        case "$endservent_r_proto" in
        ''|0) try='void endservent_r(struct servent_data*);'
-       ./protochk "extern $try" $hdrs && endservent_r_proto=V_S ;;
+       ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
        esac
        case "$endservent_r_proto" in
-       '')     d_endservent_r=undef
+       ''|0)   d_endservent_r=undef
                endservent_r_proto=0
-               echo "Disabling endservent_r, cannot determine prototype." ;;
+               echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
        * )     case "$endservent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
@@ -10684,6 +10852,14 @@ case "$d_endservent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "endservent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_endservent_r=undef
+               endservent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     endservent_r_proto=0
        ;;
 esac
@@ -11325,6 +11501,14 @@ eval $inlibc
 case "$d_getgrent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
+       case "$d_getgrent_r_proto:$usethreads" in
+       ":define")      d_getgrent_r_proto=define
+               set d_getgrent_r_proto getgrent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getgrent_r_proto" in
+       define)
        case "$getgrent_r_proto" in
        ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
        ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
@@ -11350,9 +11534,9 @@ case "$d_getgrent_r" in
        ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
        esac
        case "$getgrent_r_proto" in
-       '')     d_getgrent_r=undef
+       ''|0)   d_getgrent_r=undef
                getgrent_r_proto=0
-               echo "Disabling getgrent_r, cannot determine prototype." ;;
+               echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
        * )     case "$getgrent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
@@ -11360,6 +11544,14 @@ case "$d_getgrent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getgrent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getgrent_r=undef
+               getgrent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getgrent_r_proto=0
        ;;
 esac
@@ -11370,6 +11562,14 @@ eval $inlibc
 case "$d_getgrgid_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
+       case "$d_getgrgid_r_proto:$usethreads" in
+       ":define")      d_getgrgid_r_proto=define
+               set d_getgrgid_r_proto getgrgid_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getgrgid_r_proto" in
+       define)
        case "$getgrgid_r_proto" in
        ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
        ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
@@ -11387,9 +11587,9 @@ case "$d_getgrgid_r" in
        ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
        esac
        case "$getgrgid_r_proto" in
-       '')     d_getgrgid_r=undef
+       ''|0)   d_getgrgid_r=undef
                getgrgid_r_proto=0
-               echo "Disabling getgrgid_r, cannot determine prototype." ;;
+               echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
        * )     case "$getgrgid_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
@@ -11397,6 +11597,14 @@ case "$d_getgrgid_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getgrgid_r=undef
+               getgrgid_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getgrgid_r_proto=0
        ;;
 esac
@@ -11407,6 +11615,14 @@ eval $inlibc
 case "$d_getgrnam_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
+       case "$d_getgrnam_r_proto:$usethreads" in
+       ":define")      d_getgrnam_r_proto=define
+               set d_getgrnam_r_proto getgrnam_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getgrnam_r_proto" in
+       define)
        case "$getgrnam_r_proto" in
        ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
        ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
@@ -11428,9 +11644,9 @@ case "$d_getgrnam_r" in
        ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
        esac
        case "$getgrnam_r_proto" in
-       '')     d_getgrnam_r=undef
+       ''|0)   d_getgrnam_r=undef
                getgrnam_r_proto=0
-               echo "Disabling getgrnam_r, cannot determine prototype." ;;
+               echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
        * )     case "$getgrnam_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
@@ -11438,6 +11654,14 @@ case "$d_getgrnam_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getgrnam_r=undef
+               getgrnam_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getgrnam_r_proto=0
        ;;
 esac
@@ -11545,6 +11769,14 @@ eval $inlibc
 case "$d_gethostbyaddr_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_gethostbyaddr_r_proto:$usethreads" in
+       ":define")      d_gethostbyaddr_r_proto=define
+               set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_gethostbyaddr_r_proto" in
+       define)
        case "$gethostbyaddr_r_proto" in
        ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
        ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
@@ -11586,9 +11818,9 @@ case "$d_gethostbyaddr_r" in
        ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
        esac
        case "$gethostbyaddr_r_proto" in
-       '')     d_gethostbyaddr_r=undef
+       ''|0)   d_gethostbyaddr_r=undef
                gethostbyaddr_r_proto=0
-               echo "Disabling gethostbyaddr_r, cannot determine prototype." ;;
+               echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
        * )     case "$gethostbyaddr_r_proto" in
                REENTRANT_PROTO*) ;;
                *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
@@ -11596,6 +11828,14 @@ case "$d_gethostbyaddr_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
+               esac
+               d_gethostbyaddr_r=undef
+               gethostbyaddr_r_proto=0
+               ;;
+       esac
+       ;;
 *)     gethostbyaddr_r_proto=0
        ;;
 esac
@@ -11606,6 +11846,14 @@ eval $inlibc
 case "$d_gethostbyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_gethostbyname_r_proto:$usethreads" in
+       ":define")      d_gethostbyname_r_proto=define
+               set d_gethostbyname_r_proto gethostbyname_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_gethostbyname_r_proto" in
+       define)
        case "$gethostbyname_r_proto" in
        ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
        ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
@@ -11619,9 +11867,9 @@ case "$d_gethostbyname_r" in
        ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
        esac
        case "$gethostbyname_r_proto" in
-       '')     d_gethostbyname_r=undef
+       ''|0)   d_gethostbyname_r=undef
                gethostbyname_r_proto=0
-               echo "Disabling gethostbyname_r, cannot determine prototype." ;;
+               echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
        * )     case "$gethostbyname_r_proto" in
                REENTRANT_PROTO*) ;;
                *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
@@ -11629,6 +11877,14 @@ case "$d_gethostbyname_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
+               esac
+               d_gethostbyname_r=undef
+               gethostbyname_r_proto=0
+               ;;
+       esac
+       ;;
 *)     gethostbyname_r_proto=0
        ;;
 esac
@@ -11639,6 +11895,14 @@ eval $inlibc
 case "$d_gethostent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_gethostent_r_proto:$usethreads" in
+       ":define")      d_gethostent_r_proto=define
+               set d_gethostent_r_proto gethostent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_gethostent_r_proto" in
+       define)
        case "$gethostent_r_proto" in
        ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
        ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
@@ -11664,9 +11928,9 @@ case "$d_gethostent_r" in
        ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
        esac
        case "$gethostent_r_proto" in
-       '')     d_gethostent_r=undef
+       ''|0)   d_gethostent_r=undef
                gethostent_r_proto=0
-               echo "Disabling gethostent_r, cannot determine prototype." ;;
+               echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
        * )     case "$gethostent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
@@ -11674,6 +11938,14 @@ case "$d_gethostent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "gethostent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_gethostent_r=undef
+               gethostent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     gethostent_r_proto=0
        ;;
 esac
@@ -11697,6 +11969,14 @@ eval $inlibc
 case "$d_getlogin_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
+       case "$d_getlogin_r_proto:$usethreads" in
+       ":define")      d_getlogin_r_proto=define
+               set d_getlogin_r_proto getlogin_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getlogin_r_proto" in
+       define)
        case "$getlogin_r_proto" in
        ''|0) try='int getlogin_r(char*, size_t);'
        ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
@@ -11714,9 +11994,9 @@ case "$d_getlogin_r" in
        ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
        esac
        case "$getlogin_r_proto" in
-       '')     d_getlogin_r=undef
+       ''|0)   d_getlogin_r=undef
                getlogin_r_proto=0
-               echo "Disabling getlogin_r, cannot determine prototype." ;;
+               echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
        * )     case "$getlogin_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
@@ -11724,6 +12004,14 @@ case "$d_getlogin_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getlogin_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getlogin_r=undef
+               getlogin_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getlogin_r_proto=0
        ;;
 esac
@@ -11754,6 +12042,14 @@ eval $inlibc
 case "$d_getnetbyaddr_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_getnetbyaddr_r_proto:$usethreads" in
+       ":define")      d_getnetbyaddr_r_proto=define
+               set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getnetbyaddr_r_proto" in
+       define)
        case "$getnetbyaddr_r_proto" in
        ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
        ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
@@ -11783,9 +12079,9 @@ case "$d_getnetbyaddr_r" in
        ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
        esac
        case "$getnetbyaddr_r_proto" in
-       '')     d_getnetbyaddr_r=undef
+       ''|0)   d_getnetbyaddr_r=undef
                getnetbyaddr_r_proto=0
-               echo "Disabling getnetbyaddr_r, cannot determine prototype." ;;
+               echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
        * )     case "$getnetbyaddr_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
@@ -11793,6 +12089,14 @@ case "$d_getnetbyaddr_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getnetbyaddr_r=undef
+               getnetbyaddr_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getnetbyaddr_r_proto=0
        ;;
 esac
@@ -11803,6 +12107,14 @@ eval $inlibc
 case "$d_getnetbyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_getnetbyname_r_proto:$usethreads" in
+       ":define")      d_getnetbyname_r_proto=define
+               set d_getnetbyname_r_proto getnetbyname_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getnetbyname_r_proto" in
+       define)
        case "$getnetbyname_r_proto" in
        ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
        ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
@@ -11820,9 +12132,9 @@ case "$d_getnetbyname_r" in
        ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
        esac
        case "$getnetbyname_r_proto" in
-       '')     d_getnetbyname_r=undef
+       ''|0)   d_getnetbyname_r=undef
                getnetbyname_r_proto=0
-               echo "Disabling getnetbyname_r, cannot determine prototype." ;;
+               echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
        * )     case "$getnetbyname_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
@@ -11830,6 +12142,14 @@ case "$d_getnetbyname_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getnetbyname_r=undef
+               getnetbyname_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getnetbyname_r_proto=0
        ;;
 esac
@@ -11840,6 +12160,14 @@ eval $inlibc
 case "$d_getnetent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_getnetent_r_proto:$usethreads" in
+       ":define")      d_getnetent_r_proto=define
+               set d_getnetent_r_proto getnetent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getnetent_r_proto" in
+       define)
        case "$getnetent_r_proto" in
        ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
        ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
@@ -11865,9 +12193,9 @@ case "$d_getnetent_r" in
        ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
        esac
        case "$getnetent_r_proto" in
-       '')     d_getnetent_r=undef
+       ''|0)   d_getnetent_r=undef
                getnetent_r_proto=0
-               echo "Disabling getnetent_r, cannot determine prototype." ;;
+               echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
        * )     case "$getnetent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
@@ -11875,6 +12203,14 @@ case "$d_getnetent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getnetent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getnetent_r=undef
+               getnetent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getnetent_r_proto=0
        ;;
 esac
@@ -11923,6 +12259,14 @@ eval $inlibc
 case "$d_getprotobyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_getprotobyname_r_proto:$usethreads" in
+       ":define")      d_getprotobyname_r_proto=define
+               set d_getprotobyname_r_proto getprotobyname_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getprotobyname_r_proto" in
+       define)
        case "$getprotobyname_r_proto" in
        ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
        ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
@@ -11936,9 +12280,9 @@ case "$d_getprotobyname_r" in
        ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
        esac
        case "$getprotobyname_r_proto" in
-       '')     d_getprotobyname_r=undef
+       ''|0)   d_getprotobyname_r=undef
                getprotobyname_r_proto=0
-               echo "Disabling getprotobyname_r, cannot determine prototype." ;;
+               echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
        * )     case "$getprotobyname_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
@@ -11946,6 +12290,14 @@ case "$d_getprotobyname_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getprotobyname_r=undef
+               getprotobyname_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getprotobyname_r_proto=0
        ;;
 esac
@@ -11956,6 +12308,14 @@ eval $inlibc
 case "$d_getprotobynumber_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_getprotobynumber_r_proto:$usethreads" in
+       ":define")      d_getprotobynumber_r_proto=define
+               set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getprotobynumber_r_proto" in
+       define)
        case "$getprotobynumber_r_proto" in
        ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
        ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
@@ -11969,9 +12329,9 @@ case "$d_getprotobynumber_r" in
        ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
        esac
        case "$getprotobynumber_r_proto" in
-       '')     d_getprotobynumber_r=undef
+       ''|0)   d_getprotobynumber_r=undef
                getprotobynumber_r_proto=0
-               echo "Disabling getprotobynumber_r, cannot determine prototype." ;;
+               echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
        * )     case "$getprotobynumber_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
@@ -11979,6 +12339,14 @@ case "$d_getprotobynumber_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getprotobynumber_r=undef
+               getprotobynumber_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getprotobynumber_r_proto=0
        ;;
 esac
@@ -11989,6 +12357,14 @@ eval $inlibc
 case "$d_getprotoent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_getprotoent_r_proto:$usethreads" in
+       ":define")      d_getprotoent_r_proto=define
+               set d_getprotoent_r_proto getprotoent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getprotoent_r_proto" in
+       define)
        case "$getprotoent_r_proto" in
        ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
        ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
@@ -12006,9 +12382,9 @@ case "$d_getprotoent_r" in
        ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
        esac
        case "$getprotoent_r_proto" in
-       '')     d_getprotoent_r=undef
+       ''|0)   d_getprotoent_r=undef
                getprotoent_r_proto=0
-               echo "Disabling getprotoent_r, cannot determine prototype." ;;
+               echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
        * )     case "$getprotoent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
@@ -12016,6 +12392,14 @@ case "$d_getprotoent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getprotoent_r=undef
+               getprotoent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getprotoent_r_proto=0
        ;;
 esac
@@ -12039,6 +12423,14 @@ eval $inlibc
 case "$d_getpwent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
+       case "$d_getpwent_r_proto:$usethreads" in
+       ":define")      d_getpwent_r_proto=define
+               set d_getpwent_r_proto getpwent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getpwent_r_proto" in
+       define)
        case "$getpwent_r_proto" in
        ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
        ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
@@ -12064,9 +12456,9 @@ case "$d_getpwent_r" in
        ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
        esac
        case "$getpwent_r_proto" in
-       '')     d_getpwent_r=undef
+       ''|0)   d_getpwent_r=undef
                getpwent_r_proto=0
-               echo "Disabling getpwent_r, cannot determine prototype." ;;
+               echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
        * )     case "$getpwent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
@@ -12074,6 +12466,14 @@ case "$d_getpwent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getpwent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getpwent_r=undef
+               getpwent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getpwent_r_proto=0
        ;;
 esac
@@ -12084,6 +12484,14 @@ eval $inlibc
 case "$d_getpwnam_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
+       case "$d_getpwnam_r_proto:$usethreads" in
+       ":define")      d_getpwnam_r_proto=define
+               set d_getpwnam_r_proto getpwnam_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getpwnam_r_proto" in
+       define)
        case "$getpwnam_r_proto" in
        ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
        ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
@@ -12101,9 +12509,9 @@ case "$d_getpwnam_r" in
        ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
        esac
        case "$getpwnam_r_proto" in
-       '')     d_getpwnam_r=undef
+       ''|0)   d_getpwnam_r=undef
                getpwnam_r_proto=0
-               echo "Disabling getpwnam_r, cannot determine prototype." ;;
+               echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
        * )     case "$getpwnam_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
@@ -12111,6 +12519,14 @@ case "$d_getpwnam_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getpwnam_r=undef
+               getpwnam_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getpwnam_r_proto=0
        ;;
 esac
@@ -12121,6 +12537,14 @@ eval $inlibc
 case "$d_getpwuid_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
+       case "$d_getpwuid_r_proto:$usethreads" in
+       ":define")      d_getpwuid_r_proto=define
+               set d_getpwuid_r_proto getpwuid_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getpwuid_r_proto" in
+       define)
        case "$getpwuid_r_proto" in
        ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
        ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
@@ -12138,9 +12562,9 @@ case "$d_getpwuid_r" in
        ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
        esac
        case "$getpwuid_r_proto" in
-       '')     d_getpwuid_r=undef
+       ''|0)   d_getpwuid_r=undef
                getpwuid_r_proto=0
-               echo "Disabling getpwuid_r, cannot determine prototype." ;;
+               echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
        * )     case "$getpwuid_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
@@ -12148,6 +12572,14 @@ case "$d_getpwuid_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getpwuid_r=undef
+               getpwuid_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getpwuid_r_proto=0
        ;;
 esac
@@ -12171,6 +12603,14 @@ eval $inlibc
 case "$d_getservbyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_getservbyname_r_proto:$usethreads" in
+       ":define")      d_getservbyname_r_proto=define
+               set d_getservbyname_r_proto getservbyname_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getservbyname_r_proto" in
+       define)
        case "$getservbyname_r_proto" in
        ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
        ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
@@ -12184,9 +12624,9 @@ case "$d_getservbyname_r" in
        ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
        esac
        case "$getservbyname_r_proto" in
-       '')     d_getservbyname_r=undef
+       ''|0)   d_getservbyname_r=undef
                getservbyname_r_proto=0
-               echo "Disabling getservbyname_r, cannot determine prototype." ;;
+               echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
        * )     case "$getservbyname_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
@@ -12194,6 +12634,14 @@ case "$d_getservbyname_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getservbyname_r=undef
+               getservbyname_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getservbyname_r_proto=0
        ;;
 esac
@@ -12204,6 +12652,14 @@ eval $inlibc
 case "$d_getservbyport_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_getservbyport_r_proto:$usethreads" in
+       ":define")      d_getservbyport_r_proto=define
+               set d_getservbyport_r_proto getservbyport_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getservbyport_r_proto" in
+       define)
        case "$getservbyport_r_proto" in
        ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
        ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
@@ -12217,9 +12673,9 @@ case "$d_getservbyport_r" in
        ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
        esac
        case "$getservbyport_r_proto" in
-       '')     d_getservbyport_r=undef
+       ''|0)   d_getservbyport_r=undef
                getservbyport_r_proto=0
-               echo "Disabling getservbyport_r, cannot determine prototype." ;;
+               echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
        * )     case "$getservbyport_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
@@ -12227,6 +12683,14 @@ case "$d_getservbyport_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getservbyport_r=undef
+               getservbyport_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getservbyport_r_proto=0
        ;;
 esac
@@ -12237,6 +12701,14 @@ eval $inlibc
 case "$d_getservent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_getservent_r_proto:$usethreads" in
+       ":define")      d_getservent_r_proto=define
+               set d_getservent_r_proto getservent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getservent_r_proto" in
+       define)
        case "$getservent_r_proto" in
        ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
        ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
@@ -12254,9 +12726,9 @@ case "$d_getservent_r" in
        ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
        esac
        case "$getservent_r_proto" in
-       '')     d_getservent_r=undef
+       ''|0)   d_getservent_r=undef
                getservent_r_proto=0
-               echo "Disabling getservent_r, cannot determine prototype." ;;
+               echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
        * )     case "$getservent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
@@ -12264,6 +12736,14 @@ case "$d_getservent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getservent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getservent_r=undef
+               getservent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getservent_r_proto=0
        ;;
 esac
@@ -12287,6 +12767,14 @@ eval $inlibc
 case "$d_getspnam_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
+       case "$d_getspnam_r_proto:$usethreads" in
+       ":define")      d_getspnam_r_proto=define
+               set d_getspnam_r_proto getspnam_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_getspnam_r_proto" in
+       define)
        case "$getspnam_r_proto" in
        ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
        ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
@@ -12296,9 +12784,9 @@ case "$d_getspnam_r" in
        ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
        esac
        case "$getspnam_r_proto" in
-       '')     d_getspnam_r=undef
+       ''|0)   d_getspnam_r=undef
                getspnam_r_proto=0
-               echo "Disabling getspnam_r, cannot determine prototype." ;;
+               echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
        * )     case "$getspnam_r_proto" in
                REENTRANT_PROTO*) ;;
                *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
@@ -12306,6 +12794,14 @@ case "$d_getspnam_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "getspnam_r has no prototype, not using it." >&4 ;;
+               esac
+               d_getspnam_r=undef
+               getspnam_r_proto=0
+               ;;
+       esac
+       ;;
 *)     getspnam_r_proto=0
        ;;
 esac
@@ -12334,7 +12830,15 @@ set gmtime_r d_gmtime_r
 eval $inlibc
 case "$d_gmtime_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
+       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
+       case "$d_gmtime_r_proto:$usethreads" in
+       ":define")      d_gmtime_r_proto=define
+               set d_gmtime_r_proto gmtime_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_gmtime_r_proto" in
+       define)
        case "$gmtime_r_proto" in
        ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
        ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
@@ -12344,9 +12848,9 @@ case "$d_gmtime_r" in
        ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
        esac
        case "$gmtime_r_proto" in
-       '')     d_gmtime_r=undef
+       ''|0)   d_gmtime_r=undef
                gmtime_r_proto=0
-               echo "Disabling gmtime_r, cannot determine prototype." ;;
+               echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
        * )     case "$gmtime_r_proto" in
                REENTRANT_PROTO*) ;;
                *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
@@ -12354,6 +12858,14 @@ case "$d_gmtime_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "gmtime_r has no prototype, not using it." >&4 ;;
+               esac
+               d_gmtime_r=undef
+               gmtime_r_proto=0
+               ;;
+       esac
+       ;;
 *)     gmtime_r_proto=0
        ;;
 esac
@@ -12558,7 +13070,15 @@ set localtime_r d_localtime_r
 eval $inlibc
 case "$d_localtime_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
+       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
+       case "$d_localtime_r_proto:$usethreads" in
+       ":define")      d_localtime_r_proto=define
+               set d_localtime_r_proto localtime_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_localtime_r_proto" in
+       define)
        case "$localtime_r_proto" in
        ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
        ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
@@ -12568,9 +13088,9 @@ case "$d_localtime_r" in
        ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
        esac
        case "$localtime_r_proto" in
-       '')     d_localtime_r=undef
+       ''|0)   d_localtime_r=undef
                localtime_r_proto=0
-               echo "Disabling localtime_r, cannot determine prototype." ;;
+               echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
        * )     case "$localtime_r_proto" in
                REENTRANT_PROTO*) ;;
                *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
@@ -12578,6 +13098,14 @@ case "$d_localtime_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "localtime_r has no prototype, not using it." >&4 ;;
+               esac
+               d_localtime_r=undef
+               localtime_r_proto=0
+               ;;
+       esac
+       ;;
 *)     localtime_r_proto=0
        ;;
 esac
@@ -13058,18 +13586,18 @@ set try
 
 d_nv_preserves_uv="$undef"
 if eval $compile; then
-       d_nv_preserves_uv_bits="`$run ./try`"
+       nv_preserves_uv_bits="`$run ./try`"
 fi
-case "$d_nv_preserves_uv_bits" in
+case "$nv_preserves_uv_bits" in
 \-[1-9]*)      
-       d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
-       $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
+       nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
+       $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs."  2>&1
        d_nv_preserves_uv="$define"
        ;;
-[1-9]*)        $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
+[1-9]*)        $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs."  2>&1
        d_nv_preserves_uv="$undef" ;;
 *)     $echo "Can't figure out how many bits your NVs preserve." 2>&1
-       d_nv_preserves_uv_bits="$undef" ;;
+       nv_preserves_uv_bits="$undef" ;;
 esac
 
 $rm -f try.* try
@@ -13098,13 +13626,6 @@ $rm -f try.* try
 set d_off64_t
 eval $setvar
 
-: see if POSIX threads are available
-set pthread.h i_pthread
-eval $inhdr
-
-
-
-
 : how to create joinable pthreads
 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
        echo " "
@@ -13310,14 +13831,22 @@ eval $inlibc
 case "$d_random_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
+       case "$d_random_r_proto:$usethreads" in
+       ":define")      d_random_r_proto=define
+               set d_random_r_proto random_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_random_r_proto" in
+       define)
        case "$random_r_proto" in
        ''|0) try='int random_r(int*, struct random_data*);'
        ./protochk "extern $try" $hdrs && random_r_proto=I_TS ;;
        esac
        case "$random_r_proto" in
-       '')     d_random_r=undef
+       ''|0)   d_random_r=undef
                random_r_proto=0
-               echo "Disabling random_r, cannot determine prototype." ;;
+               echo "Disabling random_r, cannot determine prototype." >&4 ;;
        * )     case "$random_r_proto" in
                REENTRANT_PROTO*) ;;
                *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
@@ -13325,6 +13854,14 @@ case "$d_random_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "random_r has no prototype, not using it." >&4 ;;
+               esac
+               d_random_r=undef
+               random_r_proto=0
+               ;;
+       esac
+       ;;
 *)     random_r_proto=0
        ;;
 esac
@@ -13345,6 +13882,14 @@ eval $inlibc
 case "$d_readdir64_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
+       case "$d_readdir64_r_proto:$usethreads" in
+       ":define")      d_readdir64_r_proto=define
+               set d_readdir64_r_proto readdir64_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_readdir64_r_proto" in
+       define)
        case "$readdir64_r_proto" in
        ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
        ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
@@ -13354,9 +13899,9 @@ case "$d_readdir64_r" in
        ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
        esac
        case "$readdir64_r_proto" in
-       '')     d_readdir64_r=undef
+       ''|0)   d_readdir64_r=undef
                readdir64_r_proto=0
-               echo "Disabling readdir64_r, cannot determine prototype." ;;
+               echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
        * )     case "$readdir64_r_proto" in
                REENTRANT_PROTO*) ;;
                *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
@@ -13364,6 +13909,14 @@ case "$d_readdir64_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "readdir64_r has no prototype, not using it." >&4 ;;
+               esac
+               d_readdir64_r=undef
+               readdir64_r_proto=0
+               ;;
+       esac
+       ;;
 *)     readdir64_r_proto=0
        ;;
 esac
@@ -13374,6 +13927,14 @@ eval $inlibc
 case "$d_readdir_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
+       case "$d_readdir_r_proto:$usethreads" in
+       ":define")      d_readdir_r_proto=define
+               set d_readdir_r_proto readdir_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_readdir_r_proto" in
+       define)
        case "$readdir_r_proto" in
        ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
        ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
@@ -13383,9 +13944,9 @@ case "$d_readdir_r" in
        ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
        esac
        case "$readdir_r_proto" in
-       '')     d_readdir_r=undef
+       ''|0)   d_readdir_r=undef
                readdir_r_proto=0
-               echo "Disabling readdir_r, cannot determine prototype." ;;
+               echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
        * )     case "$readdir_r_proto" in
                REENTRANT_PROTO*) ;;
                *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
@@ -13393,6 +13954,14 @@ case "$d_readdir_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "readdir_r has no prototype, not using it." >&4 ;;
+               esac
+               d_readdir_r=undef
+               readdir_r_proto=0
+               ;;
+       esac
+       ;;
 *)     readdir_r_proto=0
        ;;
 esac
@@ -13907,6 +14476,14 @@ eval $inlibc
 case "$d_setgrent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
+       case "$d_setgrent_r_proto:$usethreads" in
+       ":define")      d_setgrent_r_proto=define
+               set d_setgrent_r_proto setgrent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_setgrent_r_proto" in
+       define)
        case "$setgrent_r_proto" in
        ''|0) try='int setgrent_r(FILE**);'
        ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
@@ -13916,9 +14493,9 @@ case "$d_setgrent_r" in
        ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
        esac
        case "$setgrent_r_proto" in
-       '')     d_setgrent_r=undef
+       ''|0)   d_setgrent_r=undef
                setgrent_r_proto=0
-               echo "Disabling setgrent_r, cannot determine prototype." ;;
+               echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
        * )     case "$setgrent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
@@ -13926,6 +14503,14 @@ case "$d_setgrent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "setgrent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_setgrent_r=undef
+               setgrent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     setgrent_r_proto=0
        ;;
 esac
@@ -13940,6 +14525,14 @@ eval $inlibc
 case "$d_sethostent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_sethostent_r_proto:$usethreads" in
+       ":define")      d_sethostent_r_proto=define
+               set d_sethostent_r_proto sethostent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_sethostent_r_proto" in
+       define)
        case "$sethostent_r_proto" in
        ''|0) try='int sethostent_r(int, struct hostent_data*);'
        ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
@@ -13949,9 +14542,9 @@ case "$d_sethostent_r" in
        ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
        esac
        case "$sethostent_r_proto" in
-       '')     d_sethostent_r=undef
+       ''|0)   d_sethostent_r=undef
                sethostent_r_proto=0
-               echo "Disabling sethostent_r, cannot determine prototype." ;;
+               echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
        * )     case "$sethostent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
@@ -13959,6 +14552,14 @@ case "$d_sethostent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "sethostent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_sethostent_r=undef
+               sethostent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     sethostent_r_proto=0
        ;;
 esac
@@ -13985,14 +14586,22 @@ eval $inlibc
 case "$d_setlocale_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
+       case "$d_setlocale_r_proto:$usethreads" in
+       ":define")      d_setlocale_r_proto=define
+               set d_setlocale_r_proto setlocale_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_setlocale_r_proto" in
+       define)
        case "$setlocale_r_proto" in
        ''|0) try='int setlocale_r(int, const char*, char*, int);'
        ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
        esac
        case "$setlocale_r_proto" in
-       '')     d_setlocale_r=undef
+       ''|0)   d_setlocale_r=undef
                setlocale_r_proto=0
-               echo "Disabling setlocale_r, cannot determine prototype." ;;
+               echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
        * )     case "$setlocale_r_proto" in
                REENTRANT_PROTO*) ;;
                *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
@@ -14000,6 +14609,14 @@ case "$d_setlocale_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "setlocale_r has no prototype, not using it." >&4 ;;
+               esac
+               d_setlocale_r=undef
+               setlocale_r_proto=0
+               ;;
+       esac
+       ;;
 *)     setlocale_r_proto=0
        ;;
 esac
@@ -14014,6 +14631,14 @@ eval $inlibc
 case "$d_setnetent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_setnetent_r_proto:$usethreads" in
+       ":define")      d_setnetent_r_proto=define
+               set d_setnetent_r_proto setnetent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_setnetent_r_proto" in
+       define)
        case "$setnetent_r_proto" in
        ''|0) try='int setnetent_r(int, struct netent_data*);'
        ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
@@ -14023,9 +14648,9 @@ case "$d_setnetent_r" in
        ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
        esac
        case "$setnetent_r_proto" in
-       '')     d_setnetent_r=undef
+       ''|0)   d_setnetent_r=undef
                setnetent_r_proto=0
-               echo "Disabling setnetent_r, cannot determine prototype." ;;
+               echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
        * )     case "$setnetent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
@@ -14033,6 +14658,14 @@ case "$d_setnetent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "setnetent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_setnetent_r=undef
+               setnetent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     setnetent_r_proto=0
        ;;
 esac
@@ -14063,6 +14696,14 @@ eval $inlibc
 case "$d_setprotoent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_setprotoent_r_proto:$usethreads" in
+       ":define")      d_setprotoent_r_proto=define
+               set d_setprotoent_r_proto setprotoent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_setprotoent_r_proto" in
+       define)
        case "$setprotoent_r_proto" in
        ''|0) try='int setprotoent_r(int, struct protoent_data*);'
        ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
@@ -14072,9 +14713,9 @@ case "$d_setprotoent_r" in
        ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
        esac
        case "$setprotoent_r_proto" in
-       '')     d_setprotoent_r=undef
+       ''|0)   d_setprotoent_r=undef
                setprotoent_r_proto=0
-               echo "Disabling setprotoent_r, cannot determine prototype." ;;
+               echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
        * )     case "$setprotoent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
@@ -14082,6 +14723,14 @@ case "$d_setprotoent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_setprotoent_r=undef
+               setprotoent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     setprotoent_r_proto=0
        ;;
 esac
@@ -14096,6 +14745,14 @@ eval $inlibc
 case "$d_setpwent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
+       case "$d_setpwent_r_proto:$usethreads" in
+       ":define")      d_setpwent_r_proto=define
+               set d_setpwent_r_proto setpwent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_setpwent_r_proto" in
+       define)
        case "$setpwent_r_proto" in
        ''|0) try='int setpwent_r(FILE**);'
        ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
@@ -14105,9 +14762,9 @@ case "$d_setpwent_r" in
        ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
        esac
        case "$setpwent_r_proto" in
-       '')     d_setpwent_r=undef
+       ''|0)   d_setpwent_r=undef
                setpwent_r_proto=0
-               echo "Disabling setpwent_r, cannot determine prototype." ;;
+               echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
        * )     case "$setpwent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
@@ -14115,6 +14772,14 @@ case "$d_setpwent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "setpwent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_setpwent_r=undef
+               setpwent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     setpwent_r_proto=0
        ;;
 esac
@@ -14149,6 +14814,14 @@ eval $inlibc
 case "$d_setservent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
+       case "$d_setservent_r_proto:$usethreads" in
+       ":define")      d_setservent_r_proto=define
+               set d_setservent_r_proto setservent_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_setservent_r_proto" in
+       define)
        case "$setservent_r_proto" in
        ''|0) try='int setservent_r(int, struct servent_data*);'
        ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
@@ -14158,9 +14831,9 @@ case "$d_setservent_r" in
        ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
        esac
        case "$setservent_r_proto" in
-       '')     d_setservent_r=undef
+       ''|0)   d_setservent_r=undef
                setservent_r_proto=0
-               echo "Disabling setservent_r, cannot determine prototype." ;;
+               echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
        * )     case "$setservent_r_proto" in
                REENTRANT_PROTO*) ;;
                *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
@@ -14168,6 +14841,14 @@ case "$d_setservent_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "setservent_r has no prototype, not using it." >&4 ;;
+               esac
+               d_setservent_r=undef
+               setservent_r_proto=0
+               ;;
+       esac
+       ;;
 *)     setservent_r_proto=0
        ;;
 esac
@@ -14433,14 +15114,22 @@ eval $inlibc
 case "$d_srand48_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
+       case "$d_srand48_r_proto:$usethreads" in
+       ":define")      d_srand48_r_proto=define
+               set d_srand48_r_proto srand48_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_srand48_r_proto" in
+       define)
        case "$srand48_r_proto" in
        ''|0) try='int srand48_r(long, struct drand48_data*);'
        ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
        esac
        case "$srand48_r_proto" in
-       '')     d_srand48_r=undef
+       ''|0)   d_srand48_r=undef
                srand48_r_proto=0
-               echo "Disabling srand48_r, cannot determine prototype." ;;
+               echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
        * )     case "$srand48_r_proto" in
                REENTRANT_PROTO*) ;;
                *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
@@ -14448,6 +15137,14 @@ case "$d_srand48_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "srand48_r has no prototype, not using it." >&4 ;;
+               esac
+               d_srand48_r=undef
+               srand48_r_proto=0
+               ;;
+       esac
+       ;;
 *)     srand48_r_proto=0
        ;;
 esac
@@ -14458,14 +15155,22 @@ eval $inlibc
 case "$d_srandom_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
+       case "$d_srandom_r_proto:$usethreads" in
+       ":define")      d_srandom_r_proto=define
+               set d_srandom_r_proto srandom_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_srandom_r_proto" in
+       define)
        case "$srandom_r_proto" in
        ''|0) try='int srandom_r(unsigned int, struct random_data*);'
        ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
        esac
        case "$srandom_r_proto" in
-       '')     d_srandom_r=undef
+       ''|0)   d_srandom_r=undef
                srandom_r_proto=0
-               echo "Disabling srandom_r, cannot determine prototype." ;;
+               echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
        * )     case "$srandom_r_proto" in
                REENTRANT_PROTO*) ;;
                *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
@@ -14473,6 +15178,14 @@ case "$d_srandom_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "srandom_r has no prototype, not using it." >&4 ;;
+               esac
+               d_srandom_r=undef
+               srandom_r_proto=0
+               ;;
+       esac
+       ;;
 *)     srandom_r_proto=0
        ;;
 esac
@@ -14882,6 +15595,14 @@ eval $inlibc
 case "$d_strerror_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
+       case "$d_strerror_r_proto:$usethreads" in
+       ":define")      d_strerror_r_proto=define
+               set d_strerror_r_proto strerror_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_strerror_r_proto" in
+       define)
        case "$strerror_r_proto" in
        ''|0) try='int strerror_r(int, char*, size_t);'
        ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
@@ -14895,9 +15616,9 @@ case "$d_strerror_r" in
        ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
        esac
        case "$strerror_r_proto" in
-       '')     d_strerror_r=undef
+       ''|0)   d_strerror_r=undef
                strerror_r_proto=0
-               echo "Disabling strerror_r, cannot determine prototype." ;;
+               echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
        * )     case "$strerror_r_proto" in
                REENTRANT_PROTO*) ;;
                *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
@@ -14905,6 +15626,14 @@ case "$d_strerror_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "strerror_r has no prototype, not using it." >&4 ;;
+               esac
+               d_strerror_r=undef
+               strerror_r_proto=0
+               ;;
+       esac
+       ;;
 *)     strerror_r_proto=0
        ;;
 esac
@@ -15209,6 +15938,24 @@ echo " "
 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
 eval $hasproto
 
+: see if time exists
+echo " "
+if test "X$d_time" = X -o X"$timetype" = X; then
+    if set time val -f d_time; eval $csym; $val; then
+               echo 'time() found.' >&4
+               val="$define"
+               rp="What is the type returned by time() on this system?"
+               set time_t timetype long stdio.h sys/types.h
+               eval $typedef_ask
+    else
+               echo 'time() not found, hope that will do.' >&4
+               val="$undef"
+               timetype='int';
+    fi
+    set d_time
+    eval $setvar
+fi
+
 : see if this is a sys/times.h system
 set sys/times.h i_systimes
 eval $inhdr
@@ -15236,15 +15983,23 @@ set tmpnam_r d_tmpnam_r
 eval $inlibc
 case "$d_tmpnam_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_stdio stdio.h"
+       hdrs="$i_systypes sys/types.h define stdio.h "
+       case "$d_tmpnam_r_proto:$usethreads" in
+       ":define")      d_tmpnam_r_proto=define
+               set d_tmpnam_r_proto tmpnam_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_tmpnam_r_proto" in
+       define)
        case "$tmpnam_r_proto" in
        ''|0) try='char* tmpnam_r(char*);'
        ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
        esac
        case "$tmpnam_r_proto" in
-       '')     d_tmpnam_r=undef
+       ''|0)   d_tmpnam_r=undef
                tmpnam_r_proto=0
-               echo "Disabling tmpnam_r, cannot determine prototype." ;;
+               echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
        * )     case "$tmpnam_r_proto" in
                REENTRANT_PROTO*) ;;
                *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
@@ -15252,6 +16007,14 @@ case "$d_tmpnam_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
+               esac
+               d_tmpnam_r=undef
+               tmpnam_r_proto=0
+               ;;
+       esac
+       ;;
 *)     tmpnam_r_proto=0
        ;;
 esac
@@ -15266,6 +16029,14 @@ eval $inlibc
 case "$d_ttyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
+       case "$d_ttyname_r_proto:$usethreads" in
+       ":define")      d_ttyname_r_proto=define
+               set d_ttyname_r_proto ttyname_r $hdrs
+               eval $hasproto ;;
+       *)      ;;
+       esac
+       case "$d_ttyname_r_proto" in
+       define)
        case "$ttyname_r_proto" in
        ''|0) try='int ttyname_r(int, char*, size_t);'
        ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
@@ -15279,9 +16050,9 @@ case "$d_ttyname_r" in
        ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
        esac
        case "$ttyname_r_proto" in
-       '')     d_ttyname_r=undef
+       ''|0)   d_ttyname_r=undef
                ttyname_r_proto=0
-               echo "Disabling ttyname_r, cannot determine prototype." ;;
+               echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
        * )     case "$ttyname_r_proto" in
                REENTRANT_PROTO*) ;;
                *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
@@ -15289,6 +16060,14 @@ case "$d_ttyname_r" in
                echo "Prototype: $try" ;;
        esac
        ;;
+       *)      case "$usethreads" in
+               define) echo "ttyname_r has no prototype, not using it." >&4 ;;
+               esac
+               d_ttyname_r=undef
+               ttyname_r_proto=0
+               ;;
+       esac
+       ;;
 *)     ttyname_r_proto=0
        ;;
 esac
@@ -15312,7 +16091,7 @@ case "$multiarch" in
 ''|[nN]*) multiarch="$undef" ;;
 esac
 
-: check for ordering of bytes in a long
+: check for ordering of bytes in a UV
 echo " "
 case "$usecrosscompile$multiarch" in
 *$define*)
@@ -15335,21 +16114,23 @@ an Alpha will report 12345678. If the test program works the default is
 probably right.
 I'm now running the test program...
 EOM
-               $cat >try.c <<'EOCP'
+               $cat >try.c <<EOCP
 #include <stdio.h>
+#include <sys/types.h>
+typedef $uvtype UV;
 int main()
 {
        int i;
        union {
-               unsigned long l;
-               char c[sizeof(long)];
+               UV l;
+               char c[$uvsize];
        } u;
 
-       if (sizeof(long) > 4)
-               u.l = (0x08070605L << 32) | 0x04030201L;
+       if ($uvsize > 4)
+               u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
        else
-               u.l = 0x04030201L;
-       for (i = 0; i < sizeof(long); i++)
+               u.l = (UV)0x04030201;
+       for (i = 0; i < $uvsize; i++)
                printf("%c", u.c[i]+'0');
        printf("\n");
        exit(0);
@@ -15376,7 +16157,7 @@ EOM
                fi
                case "$xxx_prompt" in
                y)
-                       rp="What is the order of bytes in a long?"
+                       rp="What is the order of bytes in $uvtype?"
                        . ./myread
                        byteorder="$ans"
                        ;;
@@ -17097,10 +17878,7 @@ set pid_t pidtype int stdio.h sys/types.h
 eval $typedef_ask
 
 : Find earliest binary compatible site_perl subdirectory perl can use.
-case "$bincompat5005" in
-"$define") xs_apiversion='5.005' ;;
-*) xs_apiversion=$version ;;   # The current site_perl version.
-esac
+xs_apiversion=$version # The current site_perl version.
 : Find earliest pure perl site_perl subdirectory perl can use.
 : The versioned directories started at 5.005.
 pm_apiversion='5.005'
@@ -17719,24 +18497,6 @@ $rm -f stdioh
 
 
 
-: see if time exists
-echo " "
-if test "X$d_time" = X -o X"$timetype" = X; then
-    if set time val -f d_time; eval $csym; $val; then
-               echo 'time() found.' >&4
-               val="$define"
-               rp="What is the type returned by time() on this system?"
-               set time_t timetype long stdio.h sys/types.h
-               eval $typedef_ask
-    else
-               echo 'time() not found, hope that will do.' >&4
-               val="$undef"
-               timetype='int';
-    fi
-    set d_time
-    eval $setvar
-fi
-
 : see what type uids are declared as in the kernel
 echo " "
 echo "Looking for the type for user ids returned by getuid()."
@@ -18146,7 +18906,7 @@ for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
 do
        case "\$i" in
        -D*) echo "\$i" | $sed 's/^-D//';;
-       -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
+       -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
        esac
 done
 $rm -f try.c
@@ -18436,9 +19196,7 @@ eval $find_extensions
 # Special case:  Add in threads/shared since it is not picked up by the
 # recursive find above (and adding in general recursive finding breaks
 # SDBM_File/sdbm).  A.D.  10/25/2001.
-# Encode::XX need explicit mentions for the same reason.
-# --jhi 2002-03-04
-known_extensions="$known_extensions threads/shared Encode/CN Encode/JP Encode/KR Encode/TW"
+known_extensions="$known_extensions threads/shared"
 set X $nonxs_extensions
 shift
 nonxs_extensions="$*"
@@ -18529,12 +19287,18 @@ for xxx in $known_extensions ; do
                esac
                ;;
        threads|threads/shared)
-                case "$usethreads" in
-                true|$define|y)
-                        case "$useithreads" in
-                        $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
-                        esac
-               esac
+               # threads and threads::shared are special cases.
+               # To stop people from asking "Perl 5.8.0 was supposed
+               # to have this new fancy threads implementation but my
+               # perl doesn't have it" and from people trying to
+               # (re)install the threads module using CPAN.pm and
+               # CPAN.pm then offering to reinstall Perl 5.8.0,
+               # the threads.pm and threads/shared.pm will always be
+               # there, croaking informatively ("you need to rebuild
+               # all of Perl with threads, sorry") when threads haven't
+               # been compiled in.
+               # --jhi
+               avail_ext="$avail_ext $xxx"
                ;;
        IPC/SysV|ipc/sysv)
                : XXX Do we need a useipcsysv variable here
@@ -18672,6 +19436,20 @@ EOM
        esac
        ;;
 esac
+#        
+# Encode is a special case.  If we are building Encode as a static
+# extension, we need to explicitly list its subextensions as well.
+# For other nested extensions, this is handled automatically by
+# the appropriate Makefile.PL.
+case " $static_ext " in
+       *" Encode "*) # Add the subextensions of Encode
+       cd "$rsrc/ext"
+       for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
+               static_ext="$static_ext Encode/$xxx"
+       done
+       cd "$tdir"
+       ;;
+esac
 
 set X $dynamic_ext $static_ext $nonxs_ext
 shift
@@ -18803,7 +19581,6 @@ awk='$awk'
 baserev='$baserev'
 bash='$bash'
 bin='$bin'
-bincompat5005='$bincompat5005'
 binexp='$binexp'
 bison='$bison'
 byacc='$byacc'
@@ -18871,7 +19648,6 @@ d_atoll='$d_atoll'
 d_attribut='$d_attribut'
 d_bcmp='$d_bcmp'
 d_bcopy='$d_bcopy'
-d_bincompat5005='$d_bincompat5005'
 d_bsd='$d_bsd'
 d_bsdgetpgrp='$d_bsdgetpgrp'
 d_bsdsetpgrp='$d_bsdsetpgrp'
@@ -19065,7 +19841,6 @@ d_mymalloc='$d_mymalloc'
 d_nice='$d_nice'
 d_nl_langinfo='$d_nl_langinfo'
 d_nv_preserves_uv='$d_nv_preserves_uv'
-d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
 d_off64_t='$d_off64_t'
 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
 d_oldpthreads='$d_oldpthreads'
@@ -19508,6 +20283,7 @@ nroff='$nroff'
 nvEUformat='$nvEUformat'
 nvFUformat='$nvFUformat'
 nvGUformat='$nvGUformat'
+nv_preserves_uv_bits='$nv_preserves_uv_bits'
 nveformat='$nveformat'
 nvfformat='$nvfformat'
 nvgformat='$nvgformat'