5.8.0-RC1 on SunOS 4!
[p5sagit/p5-mst-13.2.git] / Configure
index 1c22563..128f003 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 Tue Jun 19 23:54:48 EET DST 2001 [metaconfig 3.0 PL70]
+# Generated on Fri Jun 21 16:37:53 EET DST 2002 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -65,7 +65,10 @@ if test -d c:/. ; then
                PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
                OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
        elif test -n "$DJGPP"; then
-               p_=\;
+               case "X${MACHTYPE:-nonesuchmach}" in
+               *cygwin) ;;
+               *) p_=\; ;;
+               esac
        fi
 fi
 
@@ -78,6 +81,7 @@ paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
 paths="$paths /sbin /usr/sbin /usr/libexec"
+paths="$paths /system/gnu_library/bin"
 
 for p in $paths
 do
@@ -138,6 +142,7 @@ EOM
 esac
 case "$changesh" in
 true)
+       export newsh
        echo "(Feeding myself to $newsh $reason.)"
        case "$0" in
        Configure|*/Configure) exec $newsh $0 "$@";;
@@ -160,6 +165,7 @@ esac
 test -d UU || mkdir UU
 cd UU && rm -f ./*
 
+
 ccname=''
 ccversion=''
 ccsymbols=''
@@ -178,6 +184,7 @@ nonxs_ext=''
 static_ext=''
 useopcode=''
 useposix=''
+extras=''
 d_bsd=''
 d_eunice=''
 d_xenix=''
@@ -205,6 +212,7 @@ emacs=''
 expr=''
 find=''
 flex=''
+gmake=''
 grep=''
 gzip=''
 inews=''
@@ -293,8 +301,6 @@ baserev=''
 bin=''
 binexp=''
 installbin=''
-bincompat5005=''
-d_bincompat5005=''
 byteorder=''
 cc=''
 ccflags=''
@@ -317,6 +323,8 @@ d__fwalk=''
 d_access=''
 d_accessx=''
 d_alarm=''
+asctime_r_proto=''
+d_asctime_r=''
 d_attribut=''
 d_bcmp=''
 d_bcopy=''
@@ -327,32 +335,55 @@ d_castneg=''
 d_chown=''
 d_chroot=''
 d_chsize=''
+d_class=''
 d_closedir=''
 d_void_closedir=''
 d_cmsghdr_s=''
 d_const=''
 cryptlib=''
 d_crypt=''
+crypt_r_proto=''
+d_crypt_r=''
 d_csh=''
 full_csh=''
+ctermid_r_proto=''
+d_ctermid_r=''
+ctime_r_proto=''
+d_ctime_r=''
 d_cuserid=''
 d_dbl_dig=''
 d_dbminitproto=''
 d_difftime=''
+d_dirfd=''
 d_dlerror=''
 d_dlopen=''
 d_dlsymun=''
 d_dosuid=''
 d_suidsafe=''
+d_drand48_r=''
+drand48_r_proto=''
 d_drand48proto=''
 d_dup2=''
 d_eaccess=''
 d_endgrent=''
+d_endgrent_r=''
+endgrent_r_proto=''
 d_endhent=''
+d_endhostent_r=''
+endhostent_r_proto=''
 d_endnent=''
+d_endnetent_r=''
+endnetent_r_proto=''
 d_endpent=''
+d_endprotoent_r=''
+endprotoent_r_proto=''
 d_endpwent=''
+d_endpwent_r=''
+endpwent_r_proto=''
 d_endsent=''
+d_endservent_r=''
+endservent_r_proto=''
+d_fchdir=''
 d_fchmod=''
 d_fchown=''
 d_fcntl=''
@@ -361,10 +392,16 @@ d_fd_macros=''
 d_fd_set=''
 d_fds_bits=''
 d_fgetpos=''
+d_finite=''
+d_finitel=''
 d_flexfnam=''
 d_flock=''
 d_flockproto=''
 d_fork=''
+d_fp_class=''
+d_fpclass=''
+d_fpclassify=''
+d_fpclassl=''
 d_fpos64_t=''
 d_frexpl=''
 d_fs_data_s=''
@@ -380,6 +417,12 @@ d_getcwd=''
 d_getespwnam=''
 d_getfsstat=''
 d_getgrent=''
+d_getgrent_r=''
+getgrent_r_proto=''
+d_getgrgid_r=''
+getgrgid_r_proto=''
+d_getgrnam_r=''
+getgrnam_r_proto=''
 d_getgrps=''
 d_gethbyaddr=''
 d_gethbyname=''
@@ -388,14 +431,28 @@ aphostname=''
 d_gethname=''
 d_phostname=''
 d_uname=''
+d_gethostbyaddr_r=''
+gethostbyaddr_r_proto=''
+d_gethostbyname_r=''
+gethostbyname_r_proto=''
+d_gethostent_r=''
+gethostent_r_proto=''
 d_gethostprotos=''
 d_getitimer=''
 d_getlogin=''
+d_getlogin_r=''
+getlogin_r_proto=''
 d_getmnt=''
 d_getmntent=''
 d_getnbyaddr=''
 d_getnbyname=''
 d_getnent=''
+d_getnetbyaddr_r=''
+getnetbyaddr_r_proto=''
+d_getnetbyname_r=''
+getnetbyname_r_proto=''
+d_getnetent_r=''
+getnetent_r_proto=''
 d_getnetprotos=''
 d_getpagsz=''
 d_getpent=''
@@ -407,27 +464,53 @@ d_getppid=''
 d_getprior=''
 d_getpbyname=''
 d_getpbynumber=''
+d_getprotobyname_r=''
+getprotobyname_r_proto=''
+d_getprotobynumber_r=''
+getprotobynumber_r_proto=''
+d_getprotoent_r=''
+getprotoent_r_proto=''
 d_getprotoprotos=''
 d_getprpwnam=''
 d_getpwent=''
+d_getpwent_r=''
+getpwent_r_proto=''
+d_getpwnam_r=''
+getpwnam_r_proto=''
+d_getpwuid_r=''
+getpwuid_r_proto=''
 d_getsent=''
+d_getservbyname_r=''
+getservbyname_r_proto=''
+d_getservbyport_r=''
+getservbyport_r_proto=''
+d_getservent_r=''
+getservent_r_proto=''
 d_getservprotos=''
 d_getspnam=''
+d_getspnam_r=''
+getspnam_r_proto=''
 d_getsbyname=''
 d_getsbyport=''
+d_gmtime_r=''
+gmtime_r_proto=''
 d_gnulibc=''
+gnulibc_version=''
 d_hasmntopt=''
 d_htonl=''
-d_iconv=''
 d_inetaton=''
 d_int64_t=''
 d_isascii=''
+d_isfinite=''
+d_isinf=''
 d_isnan=''
 d_isnanl=''
 d_killpg=''
 d_lchown=''
 d_ldbl_dig=''
 d_link=''
+d_localtime_r=''
+localtime_r_proto=''
 d_locconv=''
 d_lockf=''
 d_longdbl=''
@@ -465,6 +548,7 @@ d_msgsnd=''
 d_msync=''
 d_munmap=''
 d_nice=''
+d_nl_langinfo=''
 d_off64_t=''
 d_open3=''
 d_fpathconf=''
@@ -473,19 +557,27 @@ d_pause=''
 d_pipe=''
 d_poll=''
 d_portable=''
+d_procselfexe=''
+procselfexe=''
 d_old_pthread_create_joinable=''
 old_pthread_create_joinable=''
+d_pthread_atfork=''
 d_pthread_yield=''
 d_sched_yield=''
 sched_yield=''
 d_qgcvt=''
+d_random_r=''
+random_r_proto=''
+d_readdir64_r=''
+readdir64_r_proto=''
 d_readdir=''
 d_rewinddir=''
 d_seekdir=''
 d_telldir=''
+d_readdir_r=''
+readdir_r_proto=''
 d_readlink=''
 d_readv=''
-d_realpath=''
 d_recvmsg=''
 d_rename=''
 d_rmdir=''
@@ -502,12 +594,20 @@ d_sendmsg=''
 d_setegid=''
 d_seteuid=''
 d_setgrent=''
+d_setgrent_r=''
+setgrent_r_proto=''
 d_setgrps=''
 d_sethent=''
+d_sethostent_r=''
+sethostent_r_proto=''
 d_setitimer=''
 d_setlinebuf=''
 d_setlocale=''
+d_setlocale_r=''
+setlocale_r_proto=''
 d_setnent=''
+d_setnetent_r=''
+setnetent_r_proto=''
 d_setpent=''
 d_setpgid=''
 d_setpgrp2=''
@@ -515,7 +615,11 @@ d_bsdsetpgrp=''
 d_setpgrp=''
 d_setprior=''
 d_setproctitle=''
+d_setprotoent_r=''
+setprotoent_r_proto=''
 d_setpwent=''
+d_setpwent_r=''
+setpwent_r_proto=''
 d_setregid=''
 d_setresgid=''
 d_setresuid=''
@@ -523,6 +627,8 @@ d_setreuid=''
 d_setrgid=''
 d_setruid=''
 d_setsent=''
+d_setservent_r=''
+setservent_r_proto=''
 d_setsid=''
 d_setvbuf=''
 d_sfio=''
@@ -553,6 +659,10 @@ socketlib=''
 d_socklen_t=''
 d_socks5_init=''
 d_sqrtl=''
+d_srand48_r=''
+srand48_r_proto=''
+d_srandom_r=''
+srandom_r_proto=''
 d_sresgproto=''
 d_sresuproto=''
 d_statblks=''
@@ -579,6 +689,8 @@ d_strerrm=''
 d_strerror=''
 d_sysernlst=''
 d_syserrlst=''
+d_strerror_r=''
+strerror_r_proto=''
 d_strftime=''
 d_strtod=''
 d_strtol=''
@@ -601,7 +713,11 @@ d_time=''
 timetype=''
 clocktype=''
 d_times=''
+d_tmpnam_r=''
+tmpnam_r_proto=''
 d_truncate=''
+d_ttyname_r=''
+ttyname_r_proto=''
 d_tzname=''
 d_u32align=''
 d_ualarm=''
@@ -609,6 +725,7 @@ d_umask=''
 d_semctl_semid_ds=''
 d_semctl_semun=''
 d_union_semun=''
+d_unordered=''
 d_usleep=''
 d_usleepproto=''
 d_ustat=''
@@ -647,6 +764,7 @@ groupstype=''
 h_fcntl=''
 h_sysfile=''
 i_arpainet=''
+i_crypt=''
 db_hashtype=''
 db_prefixtype=''
 db_version_major=''
@@ -662,12 +780,14 @@ i_dld=''
 i_dlfcn=''
 i_fcntl=''
 i_float=''
+i_fp=''
+i_fp_class=''
 i_gdbm=''
 d_grpasswd=''
 i_grp=''
-i_iconv=''
 i_ieeefp=''
 i_inttypes=''
+i_langinfo=''
 i_libutil=''
 i_limits=''
 i_locale=''
@@ -732,6 +852,8 @@ i_syswait=''
 i_sgtty=''
 i_termio=''
 i_termios=''
+d_tm_tm_gmtoff=''
+d_tm_tm_zone=''
 i_systime=''
 i_systimek=''
 i_time=''
@@ -837,11 +959,11 @@ perl_patchlevel=''
 revision=''
 subversion=''
 version=''
+version_patchlevel_string=''
 perl5=''
 perladmin=''
 perlpath=''
 d_nv_preserves_uv=''
-d_nv_preserves_uv_bits=''
 i16size=''
 i16type=''
 i32size=''
@@ -852,6 +974,7 @@ i8size=''
 i8type=''
 ivsize=''
 ivtype=''
+nv_preserves_uv_bits=''
 nvsize=''
 nvtype=''
 u16size=''
@@ -1011,6 +1134,21 @@ if test -f /etc/unixtovms.exe; then
        eunicefix=/etc/unixtovms.exe
 fi
 
+: Set executable suffix now -- needed before hints available
+if test -f "/libs/version.library"; then
+: Amiga OS
+    _exe=""
+elif test -f "/system/gnu_library/bin/ar.pm"; then
+: Stratus VOS
+    _exe=".pm"
+elif test -n "$DJGPP"; then
+: DOS DJGPP
+    _exe=".exe"
+elif test -d c:/. ; then
+: OS/2 or cygwin
+    _exe=".exe"
+fi
+
 i_whoami=''
 ccname=''
 ccversion=''
@@ -1020,7 +1158,6 @@ useposix=true
 : set useopcode=false in your hint file to disable the Opcode extension.
 useopcode=true
 : Trailing extension.  Override this in a hint file, if needed.
-_exe=''
 : Extra object files, if any, needed on this platform.
 archobjs=''
 archname=''
@@ -1071,7 +1208,7 @@ defvoidused=15
 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
 libswanted="$libswanted dld ld sun m c cposix posix"
 libswanted="$libswanted ndir dir crypt sec"
-libswanted="$libswanted ucb bsd BSD PW x iconv util"
+libswanted="$libswanted ucb bsd BSD PW x util"
 : We probably want to search /usr/shlib before most other libraries.
 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
@@ -1100,6 +1237,9 @@ case "$sh" in
                        if test -f "$xxx"; then
                                sh="$xxx";
                                break
+                       elif test "X$_exe" != X -a -f "$xxx$_exe"; then
+                               sh="$xxx";
+                               break
                        elif test -f "$xxx.exe"; then
                                sh="$xxx";
                                break
@@ -1110,7 +1250,7 @@ case "$sh" in
 esac
 
 case "$sh" in
-'')    cat <<EOM >&2
+'')    cat >&2 <<EOM
 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
 
 Usually it's in /bin/sh.  How did you even get this far?
@@ -1126,7 +1266,19 @@ if `$sh -c '#' >/dev/null 2>&1`; then
        shsharp=true
        spitshell=cat
        xcat=/bin/cat
-       test -f $xcat || xcat=/usr/bin/cat
+       test -f $xcat$_exe || xcat=/usr/bin/cat
+       if test ! -f $xcat$_exe; then
+               for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
+                       if test -f $p/cat$_exe; then
+                               xcat=$p/cat
+                               break
+                       fi
+               done
+               if test ! -f $xcat$_exe; then
+                       echo "Can't find cat anywhere!"
+                       exit 1
+               fi
+       fi
        echo "#!$xcat" >sharp
        $eunicefix sharp
        chmod +x sharp
@@ -1190,12 +1342,24 @@ config_args='$*'
 config_argc=$#
 EOSH
 argn=1
+args_exp=''
+args_sep=''
 for arg in "$@"; do
        cat >>cmdline.opt <<EOSH
 config_arg$argn='$arg'
 EOSH
+       # Extreme backslashitis: replace each ' by '"'"'
+       cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
+$arg
+EOC
+       arg_exp=`cat cmdl.opt`
+       args_exp="$args_exp$args_sep'$arg_exp'"
        argn=`expr $argn + 1`
+       args_sep=' '
 done
+# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
+# used by ./hints/os2.sh
+rm -f cmdl.opt
 
 : produce awk script to parse command line options
 cat >options.awk <<'EOF'
@@ -1321,23 +1485,23 @@ while test $# -gt 0; do
            zzz=''
            uuu=undef
            case "$yyy" in
-            *=*) zzz=`echo $yyy|sed 's!=.*!!'`
+            *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
                  case "$zzz" in
                  *:*) zzz='' ;;
                  *)   xxx=append
-                      zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
-                      yyy=`echo $yyy|sed 's!=.*!!'` ;;
+                      zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
+                      yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
                  esac
                  ;;
             esac
             case "$xxx" in
             '')  case "$yyy" in
-                 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
-                      yyy=`echo $yyy|sed 's!^[^:]*:!!'`
-                      zzz=`echo $yyy|sed 's!^[^=]*=!!'`
-                      yyy=`echo $yyy|sed 's!=.*!!'` ;;
-                 *)   xxx=`echo $yyy|sed 's!:.*!!'`
-                      yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
+                 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
+                      yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
+                      zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
+                      yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
+                 *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
+                      yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
                  esac
                  ;;       
             esac
@@ -1526,13 +1690,13 @@ if test -f MANIFEST; then
        set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
 else
        echo "(Looking for .SH files under the source directory.)"
-       set x `(cd $src; find . -name "*.SH" -print)`
+       set x `(cd "$src"; find . -name "*.SH" -print)`
 fi
 shift
 case $# in
-0) set x `(cd $src; echo *.SH)`; shift;;
+0) set x `(cd "$src"; echo *.SH)`; shift;;
 esac
-if test ! -f $src/$1; then
+if test ! -f "$src/$1"; then
        shift
 fi
 mkdir_p='
@@ -1558,7 +1722,7 @@ for file in $*; do
                */*)
                        dir=`expr X$file : 'X\(.*\)/'`
                        file=`expr X$file : 'X.*/\(.*\)'`
-                       (cd $dir && . ./$file)
+                       (cd "$dir" && . ./$file)
                        ;;
                *)
                        . ./$file
@@ -1571,19 +1735,19 @@ for file in $*; do
                        dir=`expr X$file : 'X\(.*\)/'`
                        file=`expr X$file : 'X.*/\(.*\)'`
                        (set x $dir; shift; eval $mkdir_p)
-                       sh <$src/$dir/$file
+                       sh <"$src/$dir/$file"
                        ;;
                *)
-                       sh <$src/$file
+                       sh <"$src/$file"
                        ;;
                esac
                ;;
        esac
 done
-if test -f $src/config_h.SH; then
+if test -f "$src/config_h.SH"; then
        if test ! -f config.h; then
        : oops, they left it out of MANIFEST, probably, so do it anyway.
-       . $src/config_h.SH
+       . "$src/config_h.SH"
        fi
 fi
 EOS
@@ -1639,13 +1803,13 @@ rm -f .echotmp
 
 : Now test for existence of everything in MANIFEST
 echo " "
-if test -f $rsrc/MANIFEST; then
+if test -f "$rsrc/MANIFEST"; then
        echo "First let's make sure your kit is complete.  Checking..." >&4
-       awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
+       awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
        rm -f missing
        tmppwd=`pwd`
        for filelist in x??; do
-               (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
+               (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
        done
        if test -s missing; then
                cat missing >&4
@@ -1695,6 +1859,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'.
@@ -1977,6 +2146,9 @@ for dir in \$*; do
        if test -f \$thisthing; then
                echo \$thisthing
                exit 0
+       elif test "X$_exe" != X -a -f \$thisthing$_exe; then
+               echo \$thisthing
+               exit 0
        elif test -f \$dir/\$thing.exe; then
                if test -n "$DJGPP"; then
                        echo \$dir/\$thing.exe
@@ -1997,13 +2169,13 @@ $eunicefix loc
 loclist="
 awk
 cat
+chmod
 comm
 cp
 echo
 expr
 grep
 ls
-make
 mkdir
 rm
 sed
@@ -2021,9 +2193,11 @@ cpp
 csh
 date
 egrep
+gmake
 gzip
 less
 ln
+make
 more
 nm
 nroff
@@ -2048,7 +2222,7 @@ for file in $loclist; do
        '') xxx=`./loc $file $file $pth`;;
        *) xxx=`./loc $xxx $xxx $pth`;;
        esac
-       eval $file=$xxx
+       eval $file=$xxx$_exe
        eval _$file=$xxx
        case "$xxx" in
        /*)
@@ -2081,7 +2255,7 @@ for file in $trylist; do
        '') xxx=`./loc $file $file $pth`;;
        *) xxx=`./loc $xxx $xxx $pth`;;
        esac
-       eval $file=$xxx
+       eval $file=$xxx$_exe
        eval _$file=$xxx
        case "$xxx" in
        /*)
@@ -2100,12 +2274,37 @@ case "$egrep" in
 egrep)
        echo "Substituting grep for egrep."
        egrep=$grep
+       _egrep=$grep
        ;;
 esac
 case "$ln" in
 ln)
        echo "Substituting cp for ln."
        ln=$cp
+       _ln=$cp
+       ;;
+esac
+case "$make" in
+make)  
+       case "$gmake" in
+       gmake)
+       echo "I can't find make or gmake, and my life depends on it." >&4
+       echo "Go find a public domain implementation or fix your PATH setting!" >&4
+       exit 1
+       ;;
+       esac
+       ;;
+esac   
+case "$gmake" in
+gmake) ;;
+*)     # We can't have osname yet.
+       if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
+               # Assume that gmake, if found, is definitely GNU make
+               # and prefer it over the system make.
+               echo "Substituting gmake for make."
+               make=$gmake
+               _make=$gmake
+       fi
        ;;
 esac
 case "$test" in
@@ -2151,10 +2350,10 @@ FOO
        ;;
 esac
 
-cat <<EOS >checkcc
+cat <<EOS >trygcc
 $startsh
 EOS
-cat <<'EOSC' >>checkcc
+cat <<'EOSC' >>trygcc
 case "$cc" in
 '') ;;
 *)  $rm -f try try.*
@@ -2192,19 +2391,50 @@ 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
+    fi
+    $rm -f try try.*
+    ;;
+esac
+EOSC
+
+cat <<EOS >checkcc
+$startsh
+EOS
+cat <<'EOSC' >>checkcc
+case "$cc" in        
+'') ;;
+*)  $rm -f try try.*              
+    $cat >try.c <<EOM
+int main(int argc, char *argv[]) {
+  return 0;
+}
+EOM
+    if $cc -o try $ccflags $ldflags try.c; then
+       :
+    else
         if $test X"$despair" = Xyes; then
-           $cat >&4 <<EOM
+           echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
+        fi
+        $cat >&4 <<EOM         
 You need to find a working C compiler.
 Either (purchase and) install the C compiler supplied by your OS vendor,
 or for a free C compiler try http://gcc.gnu.org/
 I cannot continue any further, aborting.
 EOM
-            exit 1
-        fi
+        exit 1
     fi
     $rm -f try try.*
     ;;
@@ -2226,24 +2456,47 @@ $rm -f blurfl sym
 : determine whether symbolic links are supported
 echo " "
 case "$lns" in
-*"ln -s")
+*"ln"*" -s")
        echo "Checking how to test for symbolic links..." >&4
        $lns blurfl sym
        if $test "X$issymlink" = X; then
-               sh -c "PATH= test -h sym" >/dev/null 2>&1
+               case "$newsh" in
+               '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
+               *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
+               esac
                if test $? = 0; then
                        issymlink="test -h"
-               fi              
-       fi
-       if $test "X$issymlink" = X; then
-               if  $test -h >/dev/null 2>&1; then
-                       issymlink="$test -h"
-                       echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
+               else
+                       echo "Your builtin 'test -h' may be broken." >&4
+                       case "$test" in
+                       /*)     ;;
+                       *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
+                               for p in $pth
+                               do
+                                       if test -f "$p/$test"; then
+                                               test="$p/$test"
+                                               break
+                                       fi
+                               done
+                               ;;
+                       esac
+                       case "$test" in
+                       /*)
+                               echo "Trying external '$test -h'." >&4
+                               issymlink="$test -h"
+                               if $test ! -h sym >/dev/null 2>&1; then
+                                       echo "External '$test -h' is broken, too." >&4
+                                       issymlink=''
+                               fi
+                               ;;
+                       *)      issymlink='' ;;
+                       esac
                fi              
        fi
        if $test "X$issymlink" = X; then
                if $test -L sym 2>/dev/null; then
                        issymlink="$test -L"
+                       echo "The builtin '$test -L' worked." >&4
                fi
        fi
        if $test "X$issymlink" != X; then
@@ -2266,7 +2519,7 @@ $define|true|[yY]*)
                exit 1
                ;;
        *)      case "$lns:$issymlink" in
-               *"ln -s:"*"test -"?)
+               *"ln"*" -s:"*"test -"?)
                        echo "Creating the symbolic links..." >&4
                        echo "(First creating the subdirectories...)" >&4
                        cd ..
@@ -2296,8 +2549,8 @@ $define|true|[yY]*)
                                fi
                        done
                        # Sanity check 2.
-                       if test ! -f t/base/commonsense.t; then
-                               echo "Failed to create the symlinks.  Aborting." >&4
+                       if test ! -f t/base/lex.t; then
+                               echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
                                exit 1
                        fi
                        cd UU
@@ -2323,20 +2576,20 @@ $define|true|[yY]*)
            nm=$targetarch-nm
            ranlib=$targetarch-ranlib
            $echo 'extern int foo;' > try.c
-           set X `$cc -v -E perl.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
+           set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
            shift
             if $test $# -gt 0; then
                incpth="$incpth $*"
-               incpth="$echo $incpth|$sed 's/^ //'"
-                echo "Guessing incpth $incpth" >&4
+               incpth="`$echo $incpth|$sed 's/^ //'`"
+                echo "Guessing incpth '$incpth'." >&4
                 for i in $*; do
-                   j=`$echo $i|$sed 's,/include$,/lib,'`
+                   j="`$echo $i|$sed 's,/include$,/lib,'`"
                    if $test -d $j; then
                        libpth="$libpth $j"
                    fi
                 done   
-               libpth="$echo $libpth|$sed 's/^ //'"
-                echo "Guessing libpth $libpth." >&4
+               libpth="`$echo $libpth|$sed 's/^ //'`"
+                echo "Guessing libpth '$libpth'." >&4
            fi
            $rm -f try.c
            ;;
@@ -2347,11 +2600,11 @@ $define|true|[yY]*)
        esac
        case "$incpth" in
        '') echo "Incpth not defined." >&4; croak=y ;;
-        *)  echo "Using incpth $incpth." >&4 ;;
+        *)  echo "Using incpth '$incpth'." >&4 ;;
        esac
        case "$libpth" in
        '') echo "Libpth not defined." >&4; croak=y ;;
-        *)  echo "Using libpth $libpth." >&4 ;;
+        *)  echo "Using libpth '$libpth'." >&4 ;;
        esac
        case "$usrinc" in
        '') for i in $incpth; do
@@ -2378,11 +2631,13 @@ $define|true|[yY]*)
        esac
        case "$src" in
        /*) run=$src/Cross/run
+           targetmkdir=$src/Cross/mkdir
            to=$src/Cross/to
            from=$src/Cross/from
            ;;
        *)  pwd=`$test -f ../Configure & cd ..; pwd`
            run=$pwd/Cross/run
+           targetmkdir=$pwd/Cross/mkdir
            to=$pwd/Cross/to
            from=$pwd/Cross/from
            ;;
@@ -2417,30 +2672,77 @@ $define|true|[yY]*)
        ssh|rsh)
            cat >$run <<EOF
 #!/bin/sh
+case "\$1" in
+-cwd)
+  shift
+  cwd=\$1
+  shift
+  ;;
+esac
+case "\$cwd" in
+'') cwd=$targetdir ;;
+esac
 exe=\$1
 shift
-$to \$exe
-$targetrun -l $targetuser $targethost "cd $targetdir && ./\$exe \$@"
+if $test ! -f \$exe.xok; then
+  $to \$exe
+  $touch \$exe.xok
+fi
+$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
 EOF
            ;;
        *)  echo "Unknown targetrun '$targetrun'" >&4
            exit 1
            ;;
        esac
+       case "$targetmkdir" in
+       */Cross/mkdir)
+           cat >$targetmkdir <<EOF
+#!/bin/sh
+$targetrun -l $targetuser $targethost "mkdir -p \$@"
+EOF
+           $chmod a+rx $targetmkdir
+           ;;
+       *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
+           exit 1
+           ;;
+       esac
        case "$targetto" in
        scp|rcp)
            cat >$to <<EOF
 #!/bin/sh
 for f in \$@
 do
-  $targetto $q \$f $targetuser@$targethost:$targetdir/. || exit 1
+  case "\$f" in
+  /*)
+    $targetmkdir \`dirname \$f\`
+    $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
+    ;;
+  *)
+    $targetmkdir $targetdir/\`dirname \$f\`
+    $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
+    ;;
+  esac
 done
 exit 0
 EOF
            ;;
        cp) cat >$to <<EOF
 #!/bin/sh
-cp \$@ $targetdir/.
+for f in \$@
+do
+  case "\$f" in
+  /*)
+    $mkdir -p $targetdir/\`dirname \$f\`
+    $cp \$f $targetdir/\$f || exit 1
+    ;;
+  *)
+    $targetmkdir $targetdir/\`dirname \$f\`
+    $cp \$f $targetdir/\$f || exit 1
+    ;;
+  esac
+done
+exit 0
 EOF
            ;;
        *)  echo "Unknown targetto '$targetto'" >&4
@@ -2453,6 +2755,7 @@ EOF
 #!/bin/sh
 for f in \$@
 do
+  $rm -f \$f
   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
 done
 exit 0
@@ -2462,6 +2765,7 @@ EOF
 #!/bin/sh
 for f in \$@
 do
+  $rm -f \$f
   cp $targetdir/\$f . || exit 1
 done
 exit 0
@@ -2474,23 +2778,24 @@ EOF
        if $test ! -f $run; then
            echo "Target 'run' script '$run' not found." >&4
        else
-           chmod a+rx $run
+           $chmod a+rx $run
        fi
        if $test ! -f $to; then
            echo "Target 'to' script '$to' not found." >&4
        else
-           chmod a+rx $to
+           $chmod a+rx $to
        fi
        if $test ! -f $from; then
            echo "Target 'from' script '$from' not found." >&4
        else
-           chmod a+rx $from
+           $chmod a+rx $from
        fi
        if $test ! -f $run -o ! -f $to -o ! -f $from; then
            exit 1
        fi
        cat >&4 <<EOF
-Using '$run' for remote execution, and '$from' and '$to'
+Using '$run' for remote execution,
+and '$from' and '$to'
 for remote file transfer.
 EOF
        ;;
@@ -2652,6 +2957,7 @@ EOM
        $test -d /usr/apollo/bin && osname=apollo
        $test -f /etc/saf/_sactab && osname=svr4
        $test -d /usr/include/minix && osname=minix
+       $test -f /system/gnu_library/bin/ar.pm && osname=vos
        if $test -d /MachTen -o -d /MachTen_Folder; then
                osname=machten
                if $test -x /sbin/version; then
@@ -2773,6 +3079,9 @@ EOM
                        ;;
                next*) osname=next ;;
                nonstop-ux) osname=nonstopux ;;
+               openbsd) osname=openbsd
+                       osvers="$3"
+                       ;;
                POSIX-BC | posix-bc ) osname=posix-bc
                        osvers="$3"
                        ;;
@@ -2824,9 +3133,11 @@ EOM
                unixware) osname=svr5
                        osvers="$4"
                        ;;
-               uts) osname=uts
+               uts)    osname=uts
                        osvers="$3"
                        ;;
+               vos) osvers="$3"
+                       ;;
                $2) case "$osname" in
                        *isc*) ;;
                        *freebsd*) ;;
@@ -3115,20 +3426,100 @@ $undef$define) . ./whoa; eval "$var=\$tu";;
 *) eval "$var=$val";;
 esac'
 
+case "$usesocks" in
+$define|true|[yY]*)    dflt='y';;
+*) dflt='n';;
+esac
+cat <<EOM
+
+Perl can be built to use the SOCKS proxy protocol library.  To do so,
+Configure must be run with -Dusesocks.  If you use SOCKS you also need
+to use the PerlIO abstraction layer, this will be implicitly selected.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
+EOM
+rp='Build Perl for SOCKS?'
+. ./myread
+case "$ans" in
+y|Y)   val="$define" ;;     
+*)      val="$undef" ;;
+esac
+set usesocks
+eval $setvar
+
+case "$usesocks" in
+$define|true|[yY]*) useperlio="$define";;
+esac
+
+case "$useperlio" in
+$define|true|[yY]*|'') dflt='y';;
+*) dflt='n';;
+esac
+cat <<EOM
+
+Previous version of $package used the standard IO mechanisms as
+defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
+alternate IO mechanisms via the PerlIO abstraction layer, but the
+stdio mechanism is still available if needed.  The abstraction layer
+can use AT&T's sfio (if you already have sfio installed) or regular stdio.
+Using PerlIO with sfio may cause problems with some extension modules.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
+EOM
+rp='Use the PerlIO abstraction layer?'
+. ./myread
+case "$ans" in
+y|Y) 
+       val="$define"
+       ;;
+*)      
+       echo "Ok, doing things the stdio way."
+       val="$undef"
+       ;;
+esac
+set useperlio
+eval $setvar 
+
+case "$usesocks" in
+$define|true|[yY]*)
+       case "$useperlio" in
+       $define|true|[yY]*) ;;
+       *)      cat >&4 <<EOM
+
+You are using the SOCKS proxy protocol library which means that you
+should also use the PerlIO layer.  You may be headed for trouble.
+
+EOM
+               ;;
+       esac
+       ;;
+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*)      
+               case "$useperlio" in
+               "$define")      dflt='y' ;;
+               *)              dflt='n' ;;
+               esac
+               ;;
+       *)      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
@@ -3145,15 +3536,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.  There doesn't yet exist a way to create threads from
-within Perl in this model, i.e., "use Thread;" will NOT work.
 EOM
        : Default to ithreads unless overridden on command line or with
        : old config.sh
@@ -3164,7 +3554,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" ;;
@@ -3199,6 +3589,16 @@ EOM
        ;;
 esac
 
+if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
+       cat >&4 <<EOF
+***
+*** To build with ithreads you must also use the PerlIO layer.
+*** Cannot continue, aborting.
+***
+EOF
+       exit 1
+fi
+
 case "$d_oldpthreads" in
 '')    : Configure tests would be welcome here.  For now, assume undef.
        val="$undef" ;;
@@ -3255,6 +3655,17 @@ esac
 set usemultiplicity
 eval $setvar
 
+
+case "$usemorebits" in
+"$define"|true|[yY]*)
+       use64bitint="$define"
+       uselongdouble="$define"
+       usemorebits="$define"
+       ;;
+*)     usemorebits="$undef"
+       ;;
+esac
+
 : make some quick guesses about what we are up against
 echo " "
 $echo $n "Hmm...  $c"
@@ -3357,6 +3768,9 @@ esac
 rp="Use which C compiler?"
 . ./myread
 cc="$ans"
+
+: See if they have not cc but they do have gcc
+. ./trygcc
 : Look for a hint-file generated 'call-back-unit'.  Now that the
 : user has specified the compiler, we may need to set or change some
 : other defaults.
@@ -3438,208 +3852,63 @@ case "$ccname" in
 '') ccname="$cc" ;;
 esac
 
+# gcc 3.1 complains about adding -Idirectories that it already knows about,
+# so we will take those off from locincpth.
 case "$gccversion" in
-'') ;;
-*)  case "$ccflags" in
-    *-Wall*) ;;
-    *) ccflags="$ccflags -Wall" ;;
-    esac
-    ;;
+3*)
+    echo "main(){}">try.c
+    for incdir in `$cc -v -c try.c 2>&1 | \
+       sed '1,/^#include <\.\.\.>/d;/^End of search list/,$d;s/^ //'` ; do
+       locincpth=`echo $locincpth | sed s!$incdir!!`
+    done
+    $rm -f try try.*
 esac
 
-: see how we invoke the C preprocessor
-echo " "
-echo "Now, how can we feed standard input to your C preprocessor..." >&4
-cat <<'EOT' >testcpp.c
-#define ABC abc
-#define XYZ xyz
-ABC.XYZ
-EOT
-cd ..
-if test ! -f cppstdin; then
-       if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
-               # AIX cc -E doesn't show the absolute headerfile
-               # locations but we'll cheat by using the -M flag.
-               echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
+: decide how portable to be.  Allow command line overrides.
+case "$d_portable" in
+"$undef") ;;
+*)     d_portable="$define" ;;
+esac
+
+: set up shell script to do ~ expansion
+cat >filexp <<EOSS
+$startsh
+: expand filename
+case "\$1" in
+ ~/*|~)
+       echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
+       ;;
+ ~*)
+       if $test -f /bin/csh; then
+               /bin/csh -f -c "glob \$1"
+               failed=\$?
+               echo ""
+               exit \$failed
        else
-               echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+               name=\`$expr x\$1 : '..\([^/]*\)'\`
+               dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
+               if $test ! -d "\$dir"; then
+                       me=\`basename \$0\`
+                       echo "\$me: can't locate home directory for: \$name" >&2
+                       exit 1
+               fi
+               case "\$1" in
+               */*)
+                       echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
+                       ;;
+               *)
+                       echo \$dir
+                       ;;
+               esac
        fi
-else
-       echo "Keeping your $hint cppstdin wrapper."
-fi
-chmod 755 cppstdin
-wrapper=`pwd`/cppstdin
-ok='false'
-cd UU
-
-if $test "X$cppstdin" != "X" && \
-       $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-then
-       echo "You used to use $cppstdin $cppminus so we'll use that again."
-       case "$cpprun" in
-       '') echo "But let's see if we can live without a wrapper..." ;;
-       *)
-               if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
-                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-               then
-                       echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
-                       ok='true'
-               else
-                       echo "(However, $cpprun $cpplast does not work, let's see...)"
-               fi
-               ;;
-       esac
-else
-       case "$cppstdin" in
-       '') ;;
-       *)
-               echo "Good old $cppstdin $cppminus does not seem to be of any help..."
-               ;;
-       esac
-fi
-
-if $ok; then
-       : nothing
-elif echo 'Maybe "'"$cc"' -E" will work...'; \
-       $cc -E <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yup, it does."
-       x_cpp="$cc -E"
-       x_minus='';
-elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
-       $cc -E - <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yup, it does."
-       x_cpp="$cc -E"
-       x_minus='-';
-elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
-       $cc -P <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yipee, that works!"
-       x_cpp="$cc -P"
-       x_minus='';
-elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
-       $cc -P - <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "At long last!"
-       x_cpp="$cc -P"
-       x_minus='-';
-elif echo 'No such luck, maybe "'$cpp'" will work...'; \
-       $cpp <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "It works!"
-       x_cpp="$cpp"
-       x_minus='';
-elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
-       $cpp - <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Hooray, it works!  I was beginning to wonder."
-       x_cpp="$cpp"
-       x_minus='-';
-elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
-       $wrapper <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       x_cpp="$wrapper"
-       x_minus=''
-       echo "Eureka!"
-else
-       dflt=''
-       rp="No dice.  I can't find a C preprocessor.  Name one:"
-       . ./myread
-       x_cpp="$ans"
-       x_minus=''
-       $x_cpp <testcpp.c >testcpp.out 2>&1
-       if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-               echo "OK, that will do." >&4
-       else
-echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
-               exit 1
-       fi
-fi
-
-case "$ok" in
-false)
-       cppstdin="$x_cpp"
-       cppminus="$x_minus"
-       cpprun="$x_cpp"
-       cpplast="$x_minus"
-       set X $x_cpp
-       shift
-       case "$1" in
-       "$cpp")
-               echo "Perhaps can we force $cc -E using a wrapper..."
-               if $wrapper <testcpp.c >testcpp.out 2>&1; \
-                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-               then
-                       echo "Yup, we can."
-                       cppstdin="$wrapper"
-                       cppminus='';
-               else
-                       echo "Nope, we'll have to live without it..."
-               fi
-               ;;
-       esac
-       case "$cpprun" in
-       "$wrapper")
-               cpprun=''
-               cpplast=''
-               ;;
-       esac
-       ;;
-esac
-
-case "$cppstdin" in
-"$wrapper"|'cppstdin') ;;
-*) $rm -f $wrapper;;
-esac
-$rm -f testcpp.c testcpp.out
-
-: decide how portable to be.  Allow command line overrides.
-case "$d_portable" in
-"$undef") ;;
-*)     d_portable="$define" ;;
-esac
-
-: set up shell script to do ~ expansion
-cat >filexp <<EOSS
-$startsh
-: expand filename
-case "\$1" in
- ~/*|~)
-       echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
-       ;;
- ~*)
-       if $test -f /bin/csh; then
-               /bin/csh -f -c "glob \$1"
-               failed=\$?
-               echo ""
-               exit \$failed
-       else
-               name=\`$expr x\$1 : '..\([^/]*\)'\`
-               dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
-               if $test ! -d "\$dir"; then
-                       me=\`basename \$0\`
-                       echo "\$me: can't locate home directory for: \$name" >&2
-                       exit 1
-               fi
-               case "\$1" in
-               */*)
-                       echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
-                       ;;
-               *)
-                       echo \$dir
-                       ;;
-               esac
-       fi
-       ;;
-*)
-       echo \$1
-       ;;
-esac
-EOSS
-chmod +x filexp
-$eunicefix filexp
+       ;;
+*)
+       echo \$1
+       ;;
+esac
+EOSS
+chmod +x filexp
+$eunicefix filexp
 
 : now set up to get a file name
 cat <<EOS >getfile
@@ -3661,7 +3930,9 @@ esac
 
 case "$fn" in
 *\(*)
-       expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
+       : getfile will accept an answer from the comma-separated list
+       : enclosed in parentheses even if it does not meet other criteria.
+       expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
        fn=`echo $fn | sed 's/(.*)//'`
        ;;
 esac
@@ -3921,84 +4192,232 @@ y)     fn=d/
        ;;
 esac
 
-: Set private lib path
-case "$plibpth" in
-'') if ./mips; then
-               plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
-       fi;;
-esac
-case "$libpth" in
-' ') dlist='';;
-'') dlist="$loclibpth $plibpth $glibpth";;
-*) dlist="$libpth";;
-esac
-
-: Now check and see which directories actually exist, avoiding duplicates
-libpth=''
-for xxx in $dlist
-do
-    if $test -d $xxx; then
-               case " $libpth " in
-               *" $xxx "*) ;;
-               *) libpth="$libpth $xxx";;
-               esac
-    fi
-done
-$cat <<'EOM'
-
-Some systems have incompatible or broken versions of libraries.  Among
-the directories listed in the question below, please remove any you
-know not to be holding relevant libraries, and add any that are needed.
-Say "none" for none.
-
-EOM
-case "$libpth" in
-'') dflt='none';;
-*)
-       set X $libpth
-       shift
-       dflt=${1+"$@"}
-       ;;
-esac
-rp="Directories to use for library searches?"
-. ./myread
-case "$ans" in
-none) libpth=' ';;
-*) libpth="$ans";;
-esac
-
-: compute shared library extension
-case "$so" in
-'')
-       if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
-               dflt='sl'
+: see how we invoke the C preprocessor
+echo " "
+echo "Now, how can we feed standard input to your C preprocessor..." >&4
+cat <<'EOT' >testcpp.c
+#define ABC abc
+#define XYZ xyz
+ABC.XYZ
+EOT
+cd ..
+if test ! -f cppstdin; then
+       if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
+               # AIX cc -E doesn't show the absolute headerfile
+               # locations but we'll cheat by using the -M flag.
+               echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
        else
-               dflt='so'
+               echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
        fi
-       ;;
-*) dflt="$so";;
-esac
-$cat <<EOM
-
-On some systems, shared libraries may be available.  Answer 'none' if
-you want to suppress searching of shared libraries for the remainder
-of this configuration.
-
-EOM
-rp='What is the file extension used for shared libraries?'
-. ./myread
-so="$ans"
+else
+       echo "Keeping your $hint cppstdin wrapper."
+fi
+chmod 755 cppstdin
+wrapper=`pwd`/cppstdin
+ok='false'
+cd UU
 
-: Define several unixisms.
-: Hints files or command line option can be used to override them.
-: The convoluted testing is in case hints files set either the old
-: or the new name.
-case "$_exe" in
-'')    case "$exe_ext" in
-    '')        ;;
-       *)      _exe="$exe_ext" ;;
-       esac
-       ;;
+if $test "X$cppstdin" != "X" && \
+       $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+then
+       echo "You used to use $cppstdin $cppminus so we'll use that again."
+       case "$cpprun" in
+       '') echo "But let's see if we can live without a wrapper..." ;;
+       *)
+               if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
+                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+               then
+                       echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
+                       ok='true'
+               else
+                       echo "(However, $cpprun $cpplast does not work, let's see...)"
+               fi
+               ;;
+       esac
+else
+       case "$cppstdin" in
+       '') ;;
+       *)
+               echo "Good old $cppstdin $cppminus does not seem to be of any help..."
+               ;;
+       esac
+fi
+
+if $ok; then
+       : nothing
+elif echo 'Maybe "'"$cc"' -E" will work...'; \
+       $cc -E <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Yup, it does."
+       x_cpp="$cc -E"
+       x_minus='';
+elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
+       $cc -E - <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Yup, it does."
+       x_cpp="$cc -E"
+       x_minus='-';
+elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
+       $cc -P <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Yipee, that works!"
+       x_cpp="$cc -P"
+       x_minus='';
+elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
+       $cc -P - <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "At long last!"
+       x_cpp="$cc -P"
+       x_minus='-';
+elif echo 'No such luck, maybe "'$cpp'" will work...'; \
+       $cpp <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "It works!"
+       x_cpp="$cpp"
+       x_minus='';
+elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
+       $cpp - <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Hooray, it works!  I was beginning to wonder."
+       x_cpp="$cpp"
+       x_minus='-';
+elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
+       $wrapper <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       x_cpp="$wrapper"
+       x_minus=''
+       echo "Eureka!"
+else
+       dflt=''
+       rp="No dice.  I can't find a C preprocessor.  Name one:"
+       . ./myread
+       x_cpp="$ans"
+       x_minus=''
+       $x_cpp <testcpp.c >testcpp.out 2>&1
+       if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+               echo "OK, that will do." >&4
+       else
+echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
+               exit 1
+       fi
+fi
+
+case "$ok" in
+false)
+       cppstdin="$x_cpp"
+       cppminus="$x_minus"
+       cpprun="$x_cpp"
+       cpplast="$x_minus"
+       set X $x_cpp
+       shift
+       case "$1" in
+       "$cpp")
+               echo "Perhaps can we force $cc -E using a wrapper..."
+               if $wrapper <testcpp.c >testcpp.out 2>&1; \
+                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+               then
+                       echo "Yup, we can."
+                       cppstdin="$wrapper"
+                       cppminus='';
+               else
+                       echo "Nope, we'll have to live without it..."
+               fi
+               ;;
+       esac
+       case "$cpprun" in
+       "$wrapper")
+               cpprun=''
+               cpplast=''
+               ;;
+       esac
+       ;;
+esac
+
+case "$cppstdin" in
+"$wrapper"|'cppstdin') ;;
+*) $rm -f $wrapper;;
+esac
+$rm -f testcpp.c testcpp.out
+
+: Set private lib path
+case "$plibpth" in
+'') if ./mips; then
+               plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
+       fi;;
+esac
+case "$libpth" in
+' ') dlist='';;
+'') dlist="$loclibpth $plibpth $glibpth";;
+*) dlist="$libpth";;
+esac
+
+: Now check and see which directories actually exist, avoiding duplicates
+libpth=''
+for xxx in $dlist
+do
+    if $test -d $xxx; then
+               case " $libpth " in
+               *" $xxx "*) ;;
+               *) libpth="$libpth $xxx";;
+               esac
+    fi
+done
+$cat <<'EOM'
+
+Some systems have incompatible or broken versions of libraries.  Among
+the directories listed in the question below, please remove any you
+know not to be holding relevant libraries, and add any that are needed.
+Say "none" for none.
+
+EOM
+case "$libpth" in
+'') dflt='none';;
+*)
+       set X $libpth
+       shift
+       dflt=${1+"$@"}
+       ;;
+esac
+rp="Directories to use for library searches?"
+. ./myread
+case "$ans" in
+none) libpth=' ';;
+*) libpth="$ans";;
+esac
+
+: compute shared library extension
+case "$so" in
+'')
+       if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
+               dflt='sl'
+       else
+               dflt='so'
+       fi
+       ;;
+*) dflt="$so";;
+esac
+$cat <<EOM
+
+On some systems, shared libraries may be available.  Answer 'none' if
+you want to suppress searching of shared libraries for the remainder
+of this configuration.
+
+EOM
+rp='What is the file extension used for shared libraries?'
+. ./myread
+so="$ans"
+
+: Define several unixisms.
+: Hints files or command line option can be used to override them.
+: The convoluted testing is in case hints files set either the old
+: or the new name.
+case "$_exe" in
+'')    case "$exe_ext" in
+       '')     ;;
+       *)      _exe="$exe_ext" ;;
+       esac
+       ;;
 esac
 case "$_a" in
 '')    case "$lib_ext" in
@@ -4031,31 +4450,6 @@ case "$firstmakefile" in
 '') firstmakefile='makefile';;
 esac
 
-case "$usesocks" in
-$define|true|[yY]*)    dflt='y';;
-*) dflt='n';;
-esac
-cat <<EOM
-
-Perl can be built to use the SOCKS proxy protocol library.  To do so,
-Configure must be run with -Dusesocks.  If you use SOCKS you also need
-to use the PerlIO abstraction layer, this will be implicitly selected.
-
-If this doesn't make any sense to you, just accept the default '$dflt'.
-EOM
-rp='Build Perl for SOCKS?'
-. ./myread
-case "$ans" in
-y|Y)   val="$define" ;;     
-*)      val="$undef" ;;
-esac
-set usesocks
-eval $setvar
-
-case "$usesocks" in
-$define|true|[yY]*) useperlio="$define";;
-esac
-
 : Looking for optional libraries
 echo " "
 echo "Checking for optional libraries..." >&4
@@ -4080,7 +4474,7 @@ for thislib in $libswanted; do
        for thisdir in $libspath; do
            xxx=''
            if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
-               xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
+               xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
                $test -f "$xxx" && eval $libscheck
                $test -f "$xxx" && libstyle=shared
            fi
@@ -4476,62 +4870,6 @@ n) echo "OK, that should do.";;
 esac
 $rm -f try try.* core
 
-: define an is-a-typedef? function
-typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
-case "$inclist" in
-"") inclist="sys/types.h";;
-esac;
-eval "varval=\$$var";
-case "$varval" in
-"")
-       $rm -f temp.c;
-       for inc in $inclist; do
-               echo "#include <$inc>" >>temp.c;
-       done;
-       echo "#ifdef $type" >> temp.c;
-       echo "printf(\"We have $type\");" >> temp.c;
-       echo "#endif" >> temp.c;
-       $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
-       if $contains $type temp.E >/dev/null 2>&1; then
-               eval "$var=\$type";
-       else
-               eval "$var=\$def";
-       fi;
-       $rm -f temp.?;;
-*) eval "$var=\$varval";;
-esac'
-
-: define an is-a-typedef? function that prompts if the type is not available.
-typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
-case "$inclist" in
-"") inclist="sys/types.h";;
-esac;
-eval "varval=\$$var";
-case "$varval" in
-"")
-       $rm -f temp.c;
-       for inc in $inclist; do
-               echo "#include <$inc>" >>temp.c;
-       done;
-       echo "#ifdef $type" >> temp.c;
-       echo "printf(\"We have $type\");" >> temp.c;
-       echo "#endif" >> temp.c;
-       $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
-       echo " " ;
-       echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
-       if $contains $type temp.E >/dev/null 2>&1; then
-               echo "$type found." >&4;
-               eval "$var=\$type";
-       else
-               echo "$type NOT found." >&4;
-               dflt="$def";
-               . ./myread ;
-               eval "$var=\$ans";
-       fi;
-       $rm -f temp.?;;
-*) eval "$var=\$varval";;
-esac'
-
 : define a shorthand compile call
 compile='
 mc_file=$1;
@@ -4589,517 +4927,211 @@ EOM
 esac
 $rm -f try try.*
 
-: see what type lseek is declared as in the kernel
-rp="What is the type used for lseek's offset on this system?"
-set off_t lseektype long stdio.h sys/types.h
-eval $typedef_ask
-
+: check for long long
 echo " "
-echo "Checking to see how big your file offsets are..." >&4
-$cat >try.c <<EOCP
-#include <sys/types.h>
+echo "Checking to see if you have long long..." >&4
+echo 'int main() { long long x = 7; return 0; }' > try.c
+set try
+if eval $compile; then
+       val="$define"
+       echo "You have long long."
+else
+       val="$undef"
+       echo "You do not have long long."
+fi
+$rm try.*
+set d_longlong
+eval $setvar
+
+: check for length of long long
+case "${d_longlong}${longlongsize}" in
+$define)
+       echo " "
+       echo "Checking to see how big your long longs are..." >&4
+       $cat >try.c <<'EOCP'
 #include <stdio.h>
 int main()
 {
-    printf("%d\n", (int)sizeof($lseektype));
-    return(0); 
+    printf("%d\n", (int)sizeof(long long));
+    return(0);
+}
+EOCP
+       set try
+       if eval $compile_ok; then
+               longlongsize=`$run ./try`
+               echo "Your long longs are $longlongsize bytes long."
+       else
+               dflt='8'
+               echo " "
+               echo "(I can't seem to compile the test program.  Guessing...)"
+               rp="What is the size of a long long (in bytes)?"
+               . ./myread
+               longlongsize="$ans"
+       fi
+       if $test "X$longsize" = "X$longlongsize"; then
+               echo "(That isn't any different from an ordinary long.)"
+       fi      
+       ;;
+esac
+$rm -f try.* try
+
+: determine filename position in cpp output
+echo " "
+echo "Computing filename position in cpp output for #include directives..." >&4
+case "$osname" in
+vos) testaccess=-e ;;
+*)   testaccess=-r ;;
+esac
+echo '#include <stdio.h>' > foo.c
+$cat >fieldn <<EOF
+$startsh
+$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
+$grep '^[      ]*#.*stdio\.h' | \
+while read cline; do
+       pos=1
+       set \$cline
+       while $test \$# -gt 0; do
+               if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
+                       echo "\$pos"
+                       exit 0
+               fi
+               shift
+               pos=\`expr \$pos + 1\`
+       done
+done
+EOF
+chmod +x fieldn
+fieldn=`./fieldn`
+$rm -f foo.c fieldn
+case $fieldn in
+'') pos='???';;
+1) pos=first;;
+2) pos=second;;
+3) pos=third;;
+*) pos="${fieldn}th";;
+esac
+echo "Your cpp writes the filename in the $pos field of the line."
+
+case "$osname" in
+vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
+*)   cppfilter='' ;;
+esac
+: locate header file
+$cat >findhdr <<EOF
+$startsh
+wanted=\$1
+name=''
+for usrincdir in $usrinc
+do
+       if test -f \$usrincdir/\$wanted; then
+               echo "\$usrincdir/\$wanted"
+               exit 0
+       fi
+done
+awkprg='{ print \$$fieldn }'
+echo "#include <\$wanted>" > foo\$\$.c
+$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
+$cppfilter $grep "^[   ]*#.*\$wanted" | \
+while read cline; do
+       name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
+       case "\$name" in
+       *[/\\\\]\$wanted) echo "\$name"; exit 1;;
+       *[\\\\/]\$wanted) echo "\$name"; exit 1;;
+       *) exit 2;;
+       esac;
+done;
+#
+# status = 0: grep returned 0 lines, case statement not executed
+# status = 1: headerfile found
+# status = 2: while loop executed, no headerfile found
+#
+status=\$?
+$rm -f foo\$\$.c;
+if test \$status -eq 1; then
+       exit 0;
+fi
+exit 1
+EOF
+chmod +x findhdr
+
+: define an alternate in-header-list? function
+inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
+cont=true; xxf="echo \"<\$1> found.\" >&4";
+case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
+*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
+esac;
+case $# in 4) instead=instead;; *) instead="at last";; esac;
+while $test "$cont"; do
+       xxx=`./findhdr $1`
+       var=$2; eval "was=\$$2";
+       if $test "$xxx" && $test -r "$xxx";
+       then eval $xxf;
+       eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
+               cont="";
+       else eval $xxnf;
+       eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
+       set $yyy; shift; shift; yyy=$@;
+       case $# in 0) cont="";;
+       2) xxf="echo \"but I found <\$1> $instead.\" >&4";
+               xxnf="echo \"and I did not find <\$1> either.\" >&4";;
+       *) xxf="echo \"but I found <\$1\> instead.\" >&4";
+               xxnf="echo \"there is no <\$1>, ...\" >&4";;
+       esac;
+done;
+while $test "$yyy";
+do set $yyy; var=$2; eval "was=\$$2";
+       eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
+       set $yyy; shift; shift; yyy=$@;
+done'
+
+: see if inttypes.h is available
+: we want a real compile instead of Inhdr because some systems
+: have an inttypes.h which includes non-existent headers
+echo " "
+$cat >try.c <<EOCP
+#include <inttypes.h>
+int main() {
+       static int32_t foo32 = 0x12345678;
 }
 EOCP
 set try
-if eval $compile_ok; then
-       lseeksize=`$run ./try`
-       echo "Your file offsets are $lseeksize bytes long."
+if eval $compile; then
+       echo "<inttypes.h> found." >&4
+       val="$define"
 else
-       dflt=$longsize
-       echo " "
-       echo "(I can't seem to compile the test program.  Guessing...)"
-       rp="What is the size of your file offsets (in bytes)?"
-       . ./myread
-       lseeksize="$ans"
+       echo "<inttypes.h> NOT found." >&4
+       val="$undef"
 fi
 $rm -f try.c try
+set i_inttypes
+eval $setvar
 
-: see what type file positions are declared as in the library
-rp="What is the type for file position used by fsetpos()?"
-set fpos_t fpostype long stdio.h sys/types.h
-eval $typedef_ask
-
+: check for int64_t
 echo " "
-case "$fpostype" in
-*_t) zzz="$fpostype"   ;;
-*)   zzz="fpos_t"      ;;
-esac
-echo "Checking the size of $zzz..." >&4 
-cat > try.c <<EOCP
+echo "Checking to see if you have int64_t..." >&4
+$cat >try.c <<EOCP
 #include <sys/types.h>
-#include <stdio.h>
-int main() {
-    printf("%d\n", (int)sizeof($fpostype));
-    exit(0);
-}
+#$i_inttypes I_INTTYPES
+#ifdef I_INTTYPES
+#include <inttypes.h>
+#endif
+int main() { int64_t x = 7; }
 EOCP
 set try
-if eval $compile_ok; then
-       yyy=`$run ./try`
-       case "$yyy" in
-       '')     fpossize=4
-               echo "(I can't execute the test program--guessing $fpossize.)" >&4
-               ;;
-       *)      fpossize=$yyy
-               echo "Your $zzz is $fpossize bytes long."
-               ;;
-       esac
+if eval $compile; then
+       val="$define"
+       echo "You have int64_t."
 else
-       dflt="$longsize"
-       echo " " >&4
-       echo "(I can't compile the test program.  Guessing...)" >&4
-       rp="What is the size of your file positions (in bytes)?"
-       . ./myread
-       fpossize="$ans"
+       val="$undef"
+       echo "You do not have int64_t."
 fi
+$rm -f try try.*
+set d_int64_t
+eval $setvar
 
 
-
-# Backward compatibility (uselfs is deprecated).
-case "$uselfs" in
-"$define"|true|[yY]*)
-       cat <<EOM >&4
-
-*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
-EOM
-       uselargefiles="$define"
-       ;;
-esac                          
-
-case "$lseeksize:$fpossize" in
-8:8) cat <<EOM
-
-You can have files larger than 2 gigabytes.
-EOM
-   val="$define" ;;
-*)    case "$uselargefiles" in
-   "$undef"|false|[nN]*) dflt='n' ;;
-   *)  dflt='y' ;;
-   esac
-   cat <<EOM
-
-Perl can be built to understand large files (files larger than 2 gigabytes)
-on some systems.  To do so, Configure can be run with -Duselargefiles.
-
-If this doesn't make any sense to you, just accept the default '$dflt'.
-EOM
-   rp='Try to understand large files, if available?'
-   . ./myread
-   case "$ans" in
-   y|Y)        val="$define" ;;
-   *)          val="$undef"  ;;
-   esac
-   ;;
-esac
-set uselargefiles
-eval $setvar
-case "$uselargefiles" in
-"$define")
-: Look for a hint-file generated 'call-back-unit'.  If the
-: user has specified that a large files perl is to be built,
-: we may need to set or change some other defaults.
-       if $test -f uselargefiles.cbu; then
-               echo "Your platform has some specific hints for large file builds, using them..."
-               . ./uselargefiles.cbu
-               echo " "
-               echo "Rechecking to see how big your file offsets are..." >&4
-               $cat >try.c <<EOCP
-#include <sys/types.h>
-#include <stdio.h>
-int main()
-{
-    printf("%d\n", (int)sizeof($lseektype));
-    return(0); 
-}
-EOCP
-               set try
-               if eval $compile_ok; then
-                       lseeksize=`$run ./try`
-                       $echo "Your file offsets are now $lseeksize bytes long."
-               else
-                       dflt="$lseeksize"
-                       echo " "
-                       echo "(I can't seem to compile the test program.  Guessing...)"
-                       rp="What is the size of your file offsets (in bytes)?"
-                       . ./myread
-                       lseeksize="$ans"
-               fi
-               case "$fpostype" in
-               *_t) zzz="$fpostype"    ;;
-               *)   zzz="fpos_t"       ;;
-               esac
-               $echo $n "Rechecking the size of $zzz...$c" >&4 
-               $cat > try.c <<EOCP
-#include <sys/types.h>
-#include <stdio.h>
-int main() {
-    printf("%d\n", (int)sizeof($fpostype));
-    exit(0);
-}
-EOCP
-               set try
-               if eval $compile_ok; then
-                       yyy=`$run ./try`
-                       dflt="$lseeksize"
-                       case "$yyy" in
-                       '')     echo " "
-                               echo "(I can't execute the test program--guessing $fpossize.)" >&4
-                               ;;
-                       *)      fpossize=$yyy
-                               echo " $fpossize bytes." >&4
-                               ;;
-                       esac
-               else
-                       dflt="$fpossize"
-                       echo " "
-                       echo "(I can't compile the test program.  Guessing...)" >&4
-                       rp="What is the size of your file positions (in bytes)?"
-                       . ./myread
-                       fpossize="$ans"
-               fi
-               $rm -f try.c try
-       fi
-       ;;
-esac
-
-
-case "$usemorebits" in
-"$define"|true|[yY]*)
-       use64bitint="$define"
-       uselongdouble="$define"
-       usemorebits="$define"
-       ;;
-*)     usemorebits="$undef"
-       ;;
-esac
-
-: 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
-echo 'int main() { long long x = 7; return 0; }' > try.c
-set try
-if eval $compile; then
-       val="$define"
-       echo "You have long long."
-else
-       val="$undef"
-       echo "You do not have long long."
-fi
-$rm try.*
-set d_longlong
-eval $setvar
-
-: check for length of long long
-case "${d_longlong}${longlongsize}" in
-$define)
-       echo " "
-       echo "Checking to see how big your long longs are..." >&4
-       $cat >try.c <<'EOCP'
-#include <stdio.h>
-int main()
-{
-    printf("%d\n", (int)sizeof(long long));
-    return(0);
-}
-EOCP
-       set try
-       if eval $compile_ok; then
-               longlongsize=`$run ./try`
-               echo "Your long longs are $longlongsize bytes long."
-       else
-               dflt='8'
-               echo " "
-               echo "(I can't seem to compile the test program.  Guessing...)"
-               rp="What is the size of a long long (in bytes)?"
-               . ./myread
-               longlongsize="$ans"
-       fi
-       if $test "X$longsize" = "X$longlongsize"; then
-               echo "(That isn't any different from an ordinary long.)"
-       fi      
-       ;;
-esac
-$rm -f try.* try
-
-: determine filename position in cpp output
-echo " "
-echo "Computing filename position in cpp output for #include directives..." >&4
-echo '#include <stdio.h>' > foo.c
-$cat >fieldn <<EOF
-$startsh
-$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
-$grep '^[      ]*#.*stdio\.h' | \
-while read cline; do
-       pos=1
-       set \$cline
-       while $test \$# -gt 0; do
-               if $test -r \`echo \$1 | $tr -d '"'\`; then
-                       echo "\$pos"
-                       exit 0
-               fi
-               shift
-               pos=\`expr \$pos + 1\`
-       done
-done
-EOF
-chmod +x fieldn
-fieldn=`./fieldn`
-$rm -f foo.c fieldn
-case $fieldn in
-'') pos='???';;
-1) pos=first;;
-2) pos=second;;
-3) pos=third;;
-*) pos="${fieldn}th";;
-esac
-echo "Your cpp writes the filename in the $pos field of the line."
-
-: locate header file
-$cat >findhdr <<EOF
-$startsh
-wanted=\$1
-name=''
-for usrincdir in $usrinc
-do
-       if test -f \$usrincdir/\$wanted; then
-               echo "\$usrincdir/\$wanted"
-               exit 0
-       fi
-done
-awkprg='{ print \$$fieldn }'
-echo "#include <\$wanted>" > foo\$\$.c
-$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
-$grep "^[      ]*#.*\$wanted" | \
-while read cline; do
-       name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
-       case "\$name" in
-       *[/\\\\]\$wanted) echo "\$name"; exit 1;;
-       *[\\\\/]\$wanted) echo "\$name"; exit 1;;
-       *) exit 2;;
-       esac;
-done;
-#
-# status = 0: grep returned 0 lines, case statement not executed
-# status = 1: headerfile found
-# status = 2: while loop executed, no headerfile found
-#
-status=\$?
-$rm -f foo\$\$.c;
-if test \$status -eq 1; then
-       exit 0;
-fi
-exit 1
-EOF
-chmod +x findhdr
-
-: define an alternate in-header-list? function
-inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
-cont=true; xxf="echo \"<\$1> found.\" >&4";
-case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
-*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
-esac;
-case $# in 4) instead=instead;; *) instead="at last";; esac;
-while $test "$cont"; do
-       xxx=`./findhdr $1`
-       var=$2; eval "was=\$$2";
-       if $test "$xxx" && $test -r "$xxx";
-       then eval $xxf;
-       eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
-               cont="";
-       else eval $xxnf;
-       eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
-       set $yyy; shift; shift; yyy=$@;
-       case $# in 0) cont="";;
-       2) xxf="echo \"but I found <\$1> $instead.\" >&4";
-               xxnf="echo \"and I did not find <\$1> either.\" >&4";;
-       *) xxf="echo \"but I found <\$1\> instead.\" >&4";
-               xxnf="echo \"there is no <\$1>, ...\" >&4";;
-       esac;
-done;
-while $test "$yyy";
-do set $yyy; var=$2; eval "was=\$$2";
-       eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
-       set $yyy; shift; shift; yyy=$@;
-done'
-
-: see if inttypes.h is available
-: we want a real compile instead of Inhdr because some systems
-: have an inttypes.h which includes non-existent headers
-echo " "
-$cat >try.c <<EOCP
-#include <inttypes.h>
-int main() {
-       static int32_t foo32 = 0x12345678;
-}
-EOCP
-set try
-if eval $compile; then
-       echo "<inttypes.h> found." >&4
-       val="$define"
-else
-       echo "<inttypes.h> NOT found." >&4
-       val="$undef"
-fi
-$rm -f try.c try
-set i_inttypes
-eval $setvar
-
-: check for int64_t
-echo " "
-echo "Checking to see if you have int64_t..." >&4
-$cat >try.c <<EOCP
-#include <sys/types.h>
-#$i_inttypes I_INTTYPES
-#ifdef I_INTTYPES
-#include <inttypes.h>
-#endif
-int main() { int64_t x = 7; }
-EOCP
-set try
-if eval $compile; then
-       val="$define"
-       echo "You have int64_t."
-else
-       val="$undef"
-       echo "You do not have int64_t."
-fi
-$rm -f try try.*
-set d_int64_t
-eval $setvar
-
-
-echo " "
-echo "Checking which 64-bit integer type we could use..." >&4
+echo " "
+echo "Checking which 64-bit integer type we could use..." >&4
 
 case "$intsize" in
 8) val=int
@@ -5277,44 +5309,19 @@ rp='Try to use maximal 64-bit support, if available?'
 case "$ans" in
 [yY]*) val="$define" ;;
 *)     val="$undef"  ;;
-esac
-set use64bitall
-eval $setvar
-case "$use64bitall" in
-"$define")
-       case "$use64bitint" in
-       "$undef")
-               cat <<EOM
-
-Since you have chosen a maximally 64-bit build, I'm also turning on
-the use of 64-bit integers.
-EOM
-               use64bitint="$define" ;;
-       esac
-       ;;
-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.
+esac
+set use64bitall
+eval $setvar
+case "$use64bitall" in
+"$define")
+       case "$use64bitint" in
+       "$undef")
+               cat <<EOM
 
+Since you have chosen a maximally 64-bit build, I'm also turning on
+the use of 64-bit integers.
 EOM
-                       use64bitint="$define"
-                       ;;
-               esac
-               ;;
+               use64bitint="$define" ;;
        esac
        ;;
 esac
@@ -5357,26 +5364,43 @@ esac
 
 echo " "
 echo "Checking for GNU C Library..." >&4
-cat >try.c <<EOM
+cat >try.c <<'EOCP'
+/* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
+   alone are insufficient to distinguish different versions, such as
+   2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
+   libc version 2.1.0.      A. Dougherty,  June 3, 2002.
+*/
 #include <stdio.h>
-int main()
+int main(void)
 {
 #ifdef __GLIBC__
-    exit(0);
+#   ifdef __GLIBC_MINOR__
+#       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
+#           include <gnu/libc-version.h>
+           printf("%s\n",  gnu_get_libc_version());
+#       else
+           printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
+#       endif
+#   else
+       printf("%d\n",  __GLIBC__);
+#   endif
+    return 0;
 #else
-    exit(1);
+    return 1;
 #endif
 }
-EOM
+EOCP
 set try
-if eval $compile_ok && $run ./try; then
+if eval $compile_ok && $run ./try > glibc.ver; then
        val="$define"
-       echo "You are using the GNU C Library"
+       gnulibc_version=`$cat glibc.ver`
+       echo "You are using the GNU C Library version $gnulibc_version"
 else
        val="$undef"
+       gnulibc_version=''
        echo "You are not using the GNU C Library"
 fi
-$rm -f try try.*
+$rm -f try try.* glibc.ver
 set d_gnulibc
 eval $setvar
 
@@ -5629,7 +5653,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;\
@@ -5743,7 +5767,7 @@ nm_extract="$com"
 if $test -f /lib/syscalls.exp; then
        echo " "
        echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
-       $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
+       $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
 fi
 ;;
 esac
@@ -5816,63 +5840,6 @@ esac'
 set sqrtl d_sqrtl
 eval $inlibc
 
-case "$ccflags" in
-*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
-esac
-
-case "$uselongdouble" in
-$define|true|[yY]*)    dflt='y';;
-*) dflt='n';;
-esac
-cat <<EOM
-
-Perl can be built to take advantage of long doubles which
-(if available) may give more accuracy and range for floating point numbers.
-
-If this doesn't make any sense to you, just accept the default '$dflt'.
-EOM
-rp='Try to use long doubles if available?'
-. ./myread
-case "$ans" in
-y|Y)   val="$define"   ;;
-*)      val="$undef"   ;;
-esac
-set uselongdouble
-eval $setvar
-
-case "$uselongdouble" in
-true|[yY]*) uselongdouble="$define" ;;
-esac
-
-case "$uselongdouble" in
-$define)
-: Look for a hint-file generated 'call-back-unit'.  If the
-: user has specified that long doubles should be used,
-: we may need to set or change some other defaults.
-       if $test -f uselongdouble.cbu; then
-               echo "Your platform has some specific hints for long doubles, using them..."
-               . ./uselongdouble.cbu
-       else
-               $cat <<EOM
-(Your platform doesn't have any specific hints for long doubles.)
-EOM
-       fi
-       ;;
-esac
-
-case "$uselongdouble:$d_sqrtl" in
-$define:$undef)
-               $cat <<EOM >&4
-
-*** You requested the use of long doubles but you do not seem to have
-*** the mathematic functions for long doubles.  I'm disabling the use
-*** of long doubles.
-
-EOM
-       uselongdouble=$undef
-       ;;
-esac
-
 : check for length of double
 echo " "
 case "$doublesize" in
@@ -5935,65 +5902,267 @@ EOCP
                longdblsize=`$run ./try`
                echo "Your long doubles are $longdblsize bytes long."
        else
-               dflt='8'
-               echo " "
-               echo "(I can't seem to compile the test program.  Guessing...)" >&4
-               rp="What is the size of a long double (in bytes)?"
-               . ./myread
-               longdblsize="$ans"
+               dflt='8'
+               echo " "
+               echo "(I can't seem to compile the test program.  Guessing...)" >&4
+               rp="What is the size of a long double (in bytes)?"
+               . ./myread
+               longdblsize="$ans"
+       fi
+       if $test "X$doublesize" = "X$longdblsize"; then
+               echo "(That isn't any different from an ordinary double.)"
+       fi      
+       ;;
+esac
+$rm -f try.* try
+
+echo " "
+
+if $test X"$d_longdbl" = X"$define"; then
+
+echo "Checking how to print long doubles..." >&4
+
+if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
+       $cat >try.c <<'EOCP'
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+  double d = 123.456;
+  printf("%.3f\n", d);
+}
+EOCP
+       set try
+       if eval $compile; then
+               yyy=`$run ./try`
+               case "$yyy" in
+               123.456)
+                       sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
+                       sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
+                       echo "We will use %f."
+                       ;;
+               esac
+       fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+       $cat >try.c <<'EOCP'
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+  long double d = 123.456;
+  printf("%.3Lf\n", d);
+}
+EOCP
+       set try
+       if eval $compile; then
+               yyy=`$run ./try`
+               case "$yyy" in
+               123.456)
+                       sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
+                       sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
+                       echo "We will use %Lf."
+                       ;;
+               esac
+       fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+       $cat >try.c <<'EOCP'
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+  long double d = 123.456;
+  printf("%.3llf\n", d);
+}
+EOCP
+       set try
+       if eval $compile; then
+               yyy=`$run ./try`
+               case "$yyy" in
+               123.456)
+                       sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
+                       sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
+                       echo "We will use %llf."
+                       ;;
+               esac
+       fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+       $cat >try.c <<'EOCP'
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+  long double d = 123.456;
+  printf("%.3lf\n", d);
+}
+EOCP
+       set try
+       if eval $compile; then
+               yyy=`$run ./try`
+               case "$yyy" in
+               123.456)
+                       sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
+                       sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
+                       echo "We will use %lf."
+                       ;;
+               esac
+       fi
+fi
+
+if $test X"$sPRIfldbl" = X; then
+       echo "Cannot figure out how to print long doubles." >&4
+else
+       sSCNfldbl=$sPRIfldbl    # expect consistency
+fi
+
+$rm -f try try.*
+
+fi # d_longdbl
+
+case "$sPRIfldbl" in
+'')    d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
+       d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
+       d_SCNfldbl="$undef";
+       ;;
+*)     d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
+       d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
+       d_SCNfldbl="$define";
+       ;;
+esac
+
+: see if modfl exists
+set modfl d_modfl
+eval $inlibc
+
+d_modfl_pow32_bug="$undef"
+
+case "$d_longdbl$d_modfl" in
+$define$define)
+       $cat <<EOM
+Checking to see whether your modfl() is okay for large values...
+EOM
+$cat >try.c <<EOCP
+#include <math.h> 
+#include <stdio.h>
+int main() {
+    long double nv = 4294967303.15;
+    long double v, w;
+    v = modfl(nv, &w);         
+#ifdef __GLIBC__
+    printf("glibc");
+#endif
+    printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
+    return 0;
+}
+EOCP
+       case "$osname:$gccversion" in
+       aix:)   saveccflags="$ccflags"
+               ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
+       esac
+       set try
+       if eval $compile; then
+               foo=`$run ./try`
+               case "$foo" in
+               *" 4294967303.150000 1.150000 4294967302.000000")
+                       echo >&4 "Your modfl() is broken for large values."
+                       d_modfl_pow32_bug="$define"
+                       case "$foo" in
+                       glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
+                       ;;
+                       esac
+                       ;;
+               *" 4294967303.150000 0.150000 4294967303.000000")
+                       echo >&4 "Your modfl() seems okay for large values."
+                       ;;
+               *)      echo >&4 "I don't understand your modfl() at all."
+                       d_modfl="$undef"
+                       ;;
+               esac
+               $rm -f try.* try core core.try.*
+       else
+               echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
+               d_modfl="$undef"
        fi
-       if $test "X$doublesize" = "X$longdblsize"; then
-               echo "(That isn't any different from an ordinary double.)"
-       fi      
+       case "$osname:$gccversion" in
+       aix:)   ccflags="$saveccflags" ;; # restore
+       esac
        ;;
 esac
-$rm -f try.* try
 
-case "$useperlio" in
-$define|true|[yY]*|'') dflt='y';;
+case "$ccflags" in
+*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
+esac
+
+case "$uselongdouble" in
+$define|true|[yY]*)    dflt='y';;
 *) dflt='n';;
 esac
 cat <<EOM
 
-Previous version of $package used the standard IO mechanisms as
-defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
-alternate IO mechanisms via the PerlIO abstraction layer, but the
-stdio mechanism is still available if needed.  The abstraction layer
-can use AT&T's sfio (if you already have sfio installed) or regular stdio.
-Using PerlIO with sfio may cause problems with some extension modules.
+Perl can be built to take advantage of long doubles which
+(if available) may give more accuracy and range for floating point numbers.
 
 If this doesn't make any sense to you, just accept the default '$dflt'.
 EOM
-rp='Use the PerlIO abstraction layer?'
+rp='Try to use long doubles if available?'
 . ./myread
 case "$ans" in
-y|Y) 
-       val="$define"
+y|Y)   val="$define"   ;;
+*)      val="$undef"   ;;
+esac
+set uselongdouble
+eval $setvar
+
+case "$uselongdouble" in
+true|[yY]*) uselongdouble="$define" ;;
+esac
+
+case "$uselongdouble" in
+$define)
+: Look for a hint-file generated 'call-back-unit'.  If the
+: user has specified that long doubles should be used,
+: we may need to set or change some other defaults.
+       if $test -f uselongdouble.cbu; then
+               echo "Your platform has some specific hints for long doubles, using them..."
+               . ./uselongdouble.cbu
+       else
+               $cat <<EOM
+(Your platform doesn't have any specific hints for long doubles.)
+EOM
+       fi
        ;;
-*)      
-       echo "Ok, doing things the stdio way."
-       val="$undef"
+esac
+
+message=X
+case "$uselongdouble:$d_sqrtl:$d_modfl" in
+$define:$define:$define)
+       : You have both
+       ;;
+$define:$define:$undef)
+       message="I could not find modfl"
+       ;;
+$define:$undef:$define)
+       message="I could not find sqrtl"
+       ;;
+$define:$undef:$undef)
+       message="I found neither sqrtl nor modfl"
        ;;
 esac
-set useperlio
-eval $setvar 
 
-case "$usesocks" in
-$define|true|[yY]*)
-       case "$useperlio" in
-       $define|true|[yY]*) ;;
-       *)      cat >&4 <<EOM
+if $test "$message" != X; then
+       $cat <<EOM >&4
 
-You are using the SOCKS proxy protocol library which means that you
-should also use the PerlIO layer.  You may be headed for trouble.
+*** You requested the use of long doubles but you do not seem to have
+*** the mathematic functions for long doubles.
+*** ($message)
+*** I'm disabling the use of long doubles.
 
 EOM
-               ;;
-       esac
-       ;;
-esac
 
-       
+       uselongdouble=$undef
+fi
+
 : determine the architecture name
 echo " "
 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
@@ -6080,7 +6249,7 @@ $define)
        echo "Long doubles selected." >&4
        case "$longdblsize" in
        $doublesize)
-               "...but long doubles are equal to doubles, not changing architecture name." >&4
+               echo "...but long doubles are equal to doubles, not changing architecture name." >&4
                ;;
        *)
                case "$archname" in
@@ -6228,7 +6397,6 @@ prefixit='case "$3" in
        esac;;
 esac'
 
-
 : get the patchlevel
 echo " "
 echo "Getting the current patchlevel..." >&4
@@ -6255,11 +6423,15 @@ if $test -r $rsrc/.patch ; then
                perl_patchlevel=`cat $rsrc/.patch`
        fi
 fi
+: Define a handy string here to avoid duplication in myconfig.SH and configpm.
+version_patchlevel_string="version $patchlevel subversion $subversion"
 case "$perl_patchlevel" in
-0)  ;;
-'') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
-*)  $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
+0|'') ;;
+*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
 esac
+
+$echo "(You have $package $version_patchlevel_string.)"
+
 case "$osname" in
 dos|vms)
        : XXX Should be a Configure test for double-dots in filenames.
@@ -6370,45 +6542,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
 
@@ -6471,61 +6604,211 @@ EOM
                esac
                rp='Does your kernel have *secure* setuid scripts?'
                . ./myread
-               case "$ans" in
-               [yY]*)  val="$define";;
-               *)      val="$undef";;
-               esac
+               case "$ans" in
+               [yY]*)  val="$define";;
+               *)      val="$undef";;
+               esac
+       fi
+else
+       echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
+       echo "(That's for file descriptors, not floppy disks.)"
+       val="$undef"
+fi
+set d_suidsafe
+eval $setvar
+
+$rm -f reflect flect
+
+: now see if they want to do setuid emulation
+echo " "
+val="$undef"
+case "$d_suidsafe" in
+"$define")
+       val="$undef"
+       echo "No need to emulate SUID scripts since they are secure here." >&4
+       ;;
+*)
+       $cat <<EOM
+Some systems have disabled setuid scripts, especially systems where
+setuid scripts cannot be secure.  On systems where setuid scripts have
+been disabled, the setuid/setgid bits on scripts are currently
+useless.  It is possible for $package to detect those bits and emulate
+setuid/setgid in a secure fashion.  This emulation will only work if
+setuid scripts have been disabled in your kernel.
+
+EOM
+       case "$d_dosuid" in
+       "$define") dflt=y ;;
+       *) dflt=n ;;
+       esac
+       rp="Do you want to do setuid/setgid emulation?"
+       . ./myread
+       case "$ans" in
+       [yY]*)  val="$define";;
+       *)      val="$undef";;
+       esac
+       ;;
+esac
+set d_dosuid
+eval $setvar
+
+: see if this is a malloc.h system
+set malloc.h i_malloc
+eval $inhdr
+
+: see if stdlib is available
+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
-else
-       echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
-       echo "(That's for file descriptors, not floppy disks.)"
-       val="$undef"
-fi
-set d_suidsafe
-eval $setvar
+       ;;
+esac
+$rm -f try.c try
+case "$use64bitall" in
+"$define"|true|[yY]*)
+       case "$ptrsize" in
+       4)      cat <<EOM >&4
 
-$rm -f reflect flect
+*** You have chosen a maximally 64-bit build, but your pointers
+*** are only 4 bytes wide, disabling maximal 64-bitness.
 
-: now see if they want to do setuid emulation
-echo " "
-val="$undef"
-case "$d_suidsafe" in
-"$define")
-       val="$undef"
-       echo "No need to emulate SUID scripts since they are secure here." >& 4
-       ;;
-*)
-       $cat <<EOM
-Some systems have disabled setuid scripts, especially systems where
-setuid scripts cannot be secure.  On systems where setuid scripts have
-been disabled, the setuid/setgid bits on scripts are currently
-useless.  It is possible for $package to detect those bits and emulate
-setuid/setgid in a secure fashion.  This emulation will only work if
-setuid scripts have been disabled in your kernel.
+EOM
+               use64bitall="$undef"
+               case "$use64bitint" in
+               "$define"|true|[yY]*) ;;
+               *)      cat <<EOM >&4
+
+*** Downgrading from maximal 64-bitness to using 64-bit integers.
 
 EOM
-       case "$d_dosuid" in
-       "$define") dflt=y ;;
-       *) dflt=n ;;
-       esac
-       rp="Do you want to do setuid/setgid emulation?"
-       . ./myread
-       case "$ans" in
-       [yY]*)  val="$define";;
-       *)      val="$undef";;
+                       use64bitint="$define"
+                       ;;
+               esac
+               ;;
        esac
        ;;
 esac
-set d_dosuid
-eval $setvar
-
-: see if this is a malloc.h system
-set malloc.h i_malloc
-eval $inhdr
 
-: see if stdlib is available
-set stdlib.h i_stdlib
-eval $inhdr
 
 : determine which malloc to compile in
 echo " "
@@ -6926,6 +7209,58 @@ else
        installbin="$binexp"
 fi
 
+echo " "
+case "$extras" in
+'') dflt='n';;
+*) dflt='y';;
+esac
+cat <<EOM
+Perl can be built with extra modules or bundles of modules which
+will be fetched from the CPAN and installed alongside Perl.
+
+Notice that you will need access to the CPAN; either via the Internet,
+or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
+be asked later to configure the CPAN.pm module which will in turn do
+the installation of the rest of the extra modules or bundles.)
+
+Notice also that if the modules require any external software such as
+libraries and headers (the libz library and the zlib.h header for the
+Compress::Zlib module, for example) you MUST have any such software
+already installed, this configuration process will NOT install such
+things for you.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
+EOM
+rp='Install any extra modules (y or n)?'
+. ./myread
+case "$ans" in
+y|Y)
+       cat <<EOM
+
+Please list any extra modules or bundles to be installed from CPAN,
+with spaces between the names.  The names can be in any format the
+'install' command of CPAN.pm will understand.  (Answer 'none',
+without the quotes, to install no extra modules or bundles.)
+EOM
+       rp='Extras?'
+       dflt="$extras"
+       . ./myread
+       extras="$ans"
+esac
+case "$extras" in
+''|'none')
+       val=''
+       $rm -f ../extras.lst
+       ;;
+*)     echo "(Saving the list of extras for later...)"
+       echo "$extras" > ../extras.lst
+       val="'$extras'"
+       ;;
+esac
+set extras
+eval $setvar
+echo " "
+
 : Find perl5.005 or later.
 echo "Looking for a previously installed perl5.005 or later... "
 case "$perl5" in
@@ -7013,13 +7348,9 @@ 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'
+$cat <<EOM
 
 In order to ease the process of upgrading, this version of perl 
 can be configured to use modules built and installed with earlier 
@@ -7130,7 +7461,7 @@ y*) usedl="$define"
        esac
     echo "The following dynamic loading files are available:"
        : Can not go over to $dldir because getfile has path hard-coded in.
-       tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
+       tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
        rp="Source file to use for dynamic loading"
        fn="fne"
        gfpth="$src"
@@ -7158,6 +7489,7 @@ EOM
                    esac
                        ;;
                *)  case "$osname" in
+                       darwin) dflt='none' ;;
                        svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
                        *)      dflt='-fpic' ;;
                    esac ;;
@@ -7248,7 +7580,7 @@ EOM
        esac
        for thisflag in $ldflags; do
                case "$thisflag" in
-               -L*|-R*)
+               -L*|-R*|-Wl,-R*)
                        case " $dflt " in
                        *" $thisflag "*) ;;
                        *) dflt="$dflt $thisflag" ;;
@@ -7379,8 +7711,8 @@ true)
                linux*)  # ld won't link with a bare -lperl otherwise.
                        dflt=libperl.$so
                        ;;
-               cygwin*) # include version
-                       dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
+               cygwin*) # ld links against an importlib
+                       dflt=libperl$lib_ext
                        ;;
                *)      # Try to guess based on whether libc has major.minor.
                        case "$libc" in
@@ -7457,13 +7789,13 @@ if "$useshrplib"; then
        aix)
                # We'll set it in Makefile.SH...
                ;;
-       solaris|netbsd)
+       solaris)
                xxx="-R $shrpdir"
                ;;
-       freebsd)
+       freebsd|netbsd)
                xxx="-Wl,-R$shrpdir"
                ;;
-       linux|irix*|dec_osf)
+       bsdos|linux|irix*|dec_osf)
                xxx="-Wl,-rpath,$shrpdir"
                ;;
        next)
@@ -7518,8 +7850,9 @@ esac
 echo " "
 case "$sysman" in
 '') 
-       syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
-       syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
+       syspath='/usr/share/man/man1 /usr/man/man1'
+       syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
+       syspath="$syspath /usr/man/u_man/man1"
        syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
        syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
        syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
@@ -7551,7 +7884,8 @@ case "$man1dir" in
 ' ') dflt=none
        ;;
 '')
-       lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
+       lookpath="$prefixexp/share/man/man1"
+       lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
        lookpath="$lookpath $prefixexp/man/p_man/man1"
        lookpath="$lookpath $prefixexp/man/u_man/man1"
        lookpath="$lookpath $prefixexp/man/man.1"
@@ -7741,7 +8075,7 @@ case "$man3dir" in
 esac
 
 : see if we have to deal with yellow pages, now NIS.
-if $test -d /usr/etc/yp || $test -d /etc/yp; then
+if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
        if $test -f /usr/etc/nibindd; then
                echo " "
                echo "I'm fairly confident you're on a NeXT."
@@ -7848,6 +8182,9 @@ if $test "$cont"; then
                fi
        fi
 fi
+case "$myhostname" in
+'') myhostname=noname ;;
+esac
 : you do not want to know about this
 set $myhostname
 myhostname=$1
@@ -7948,7 +8285,7 @@ case "$myhostname" in
                esac
                case "$dflt" in
                .) echo "(Lost all hope -- silly guess then)"
-                       dflt='.uucp'
+                       dflt='.nonet'
                        ;;
                esac
                $rm -f hosts
@@ -8066,6 +8403,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
 '')
@@ -8110,7 +8453,10 @@ echo "I'll use $startperl to start perl scripts."
 : figure best path for perl in scripts
 case "$perlpath" in
 '')
-       perlpath="$binexp/perl"
+       case "$versiononly" in
+       "$define")      perlpath="$binexp/perl$version";;
+       *)              perlpath="$binexp/perl";;
+       esac
        case "$startperl" in
        *!*) ;;
        *)
@@ -8173,25 +8519,259 @@ scriptdirexp="$ansexp"
 if $test X"$prefix" != X"$installprefix"; then
        installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
 else
-       installscript="$scriptdirexp"
+       installscript="$scriptdirexp"
+fi
+
+: determine where add-on public executables go
+case "$sitebin" in
+'')    dflt=$siteprefix/bin ;;
+*)     dflt=$sitebin ;;
+esac
+fn=d~
+rp='Pathname where the add-on public executables should be installed?'
+. ./getfile
+sitebin="$ans"
+sitebinexp="$ansexp"
+: Change installation prefix, if necessary.
+if $test X"$prefix" != X"$installprefix"; then
+       installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
+else
+       installsitebin="$sitebinexp"
+fi
+
+: define an is-a-typedef? function
+typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
+case "$inclist" in
+"") inclist="sys/types.h";;
+esac;
+eval "varval=\$$var";
+case "$varval" in
+"")
+       $rm -f temp.c;
+       for inc in $inclist; do
+               echo "#include <$inc>" >>temp.c;
+       done;
+       echo "#ifdef $type" >> temp.c;
+       echo "printf(\"We have $type\");" >> temp.c;
+       echo "#endif" >> temp.c;
+       $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
+       if $contains $type temp.E >/dev/null 2>&1; then
+               eval "$var=\$type";
+       else
+               eval "$var=\$def";
+       fi;
+       $rm -f temp.?;;
+*) eval "$var=\$varval";;
+esac'
+
+: define an is-a-typedef? function that prompts if the type is not available.
+typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
+case "$inclist" in
+"") inclist="sys/types.h";;
+esac;
+eval "varval=\$$var";
+case "$varval" in
+"")
+       $rm -f temp.c;
+       for inc in $inclist; do
+               echo "#include <$inc>" >>temp.c;
+       done;
+       echo "#ifdef $type" >> temp.c;
+       echo "printf(\"We have $type\");" >> temp.c;
+       echo "#endif" >> temp.c;
+       $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
+       echo " " ;
+       echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
+       if $contains $type temp.E >/dev/null 2>&1; then
+               echo "$type found." >&4;
+               eval "$var=\$type";
+       else
+               echo "$type NOT found." >&4;
+               dflt="$def";
+               . ./myread ;
+               eval "$var=\$ans";
+       fi;
+       $rm -f temp.?;;
+*) eval "$var=\$varval";;
+esac'
+
+: see what type lseek is declared as in the kernel
+rp="What is the type used for lseek's offset on this system?"
+set off_t lseektype long stdio.h sys/types.h
+eval $typedef_ask
+
+echo " "
+echo "Checking to see how big your file offsets are..." >&4
+$cat >try.c <<EOCP
+#include <sys/types.h>
+#include <stdio.h>
+int main()
+{
+    printf("%d\n", (int)sizeof($lseektype));
+    return(0); 
+}
+EOCP
+set try
+if eval $compile_ok; then
+       lseeksize=`$run ./try`
+       echo "Your file offsets are $lseeksize bytes long."
+else
+       dflt=$longsize
+       echo " "
+       echo "(I can't seem to compile the test program.  Guessing...)"
+       rp="What is the size of your file offsets (in bytes)?"
+       . ./myread
+       lseeksize="$ans"
+fi
+$rm -f try.c try
+
+: see what type file positions are declared as in the library
+rp="What is the type for file position used by fsetpos()?"
+set fpos_t fpostype long stdio.h sys/types.h
+eval $typedef_ask
+
+echo " "
+case "$fpostype" in
+*_t) zzz="$fpostype"   ;;
+*)   zzz="fpos_t"      ;;
+esac
+echo "Checking the size of $zzz..." >&4 
+cat > try.c <<EOCP
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+    printf("%d\n", (int)sizeof($fpostype));
+    exit(0);
+}
+EOCP
+set try
+if eval $compile_ok; then
+       yyy=`$run ./try`
+       case "$yyy" in
+       '')     fpossize=4
+               echo "(I can't execute the test program--guessing $fpossize.)" >&4
+               ;;
+       *)      fpossize=$yyy
+               echo "Your $zzz is $fpossize bytes long."
+               ;;
+       esac
+else
+       dflt="$longsize"
+       echo " " >&4
+       echo "(I can't compile the test program.  Guessing...)" >&4
+       rp="What is the size of your file positions (in bytes)?"
+       . ./myread
+       fpossize="$ans"
 fi
 
-: determine where add-on public executables go
-case "$sitebin" in
-'')    dflt=$siteprefix/bin ;;
-*)     dflt=$sitebin ;;
+
+
+# Backward compatibility (uselfs is deprecated).
+case "$uselfs" in
+"$define"|true|[yY]*)
+       cat <<EOM >&4
+
+*** Configure -Duselfs is deprecated, using -Duselargefiles instead.
+EOM
+       uselargefiles="$define"
+       ;;
+esac                          
+
+case "$lseeksize:$fpossize" in
+8:8) cat <<EOM
+
+You can have files larger than 2 gigabytes.
+EOM
+   val="$define" ;;
+*)    case "$uselargefiles" in
+   "$undef"|false|[nN]*) dflt='n' ;;
+   *)  dflt='y' ;;
+   esac
+   cat <<EOM
+
+Perl can be built to understand large files (files larger than 2 gigabytes)
+on some systems.  To do so, Configure can be run with -Duselargefiles.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
+EOM
+   rp='Try to understand large files, if available?'
+   . ./myread
+   case "$ans" in
+   y|Y)        val="$define" ;;
+   *)          val="$undef"  ;;
+   esac
+   ;;
+esac
+set uselargefiles
+eval $setvar
+case "$uselargefiles" in
+"$define")
+: Look for a hint-file generated 'call-back-unit'.  If the
+: user has specified that a large files perl is to be built,
+: we may need to set or change some other defaults.
+       if $test -f uselargefiles.cbu; then
+               echo "Your platform has some specific hints for large file builds, using them..."
+               . ./uselargefiles.cbu
+               echo " "
+               echo "Rechecking to see how big your file offsets are..." >&4
+               $cat >try.c <<EOCP
+#include <sys/types.h>
+#include <stdio.h>
+int main()
+{
+    printf("%d\n", (int)sizeof($lseektype));
+    return(0); 
+}
+EOCP
+               set try
+               if eval $compile_ok; then
+                       lseeksize=`$run ./try`
+                       $echo "Your file offsets are now $lseeksize bytes long."
+               else
+                       dflt="$lseeksize"
+                       echo " "
+                       echo "(I can't seem to compile the test program.  Guessing...)"
+                       rp="What is the size of your file offsets (in bytes)?"
+                       . ./myread
+                       lseeksize="$ans"
+               fi
+               case "$fpostype" in
+               *_t) zzz="$fpostype"    ;;
+               *)   zzz="fpos_t"       ;;
+               esac
+               $echo $n "Rechecking the size of $zzz...$c" >&4 
+               $cat > try.c <<EOCP
+#include <sys/types.h>
+#include <stdio.h>
+int main() {
+    printf("%d\n", (int)sizeof($fpostype));
+    exit(0);
+}
+EOCP
+               set try
+               if eval $compile_ok; then
+                       yyy=`$run ./try`
+                       dflt="$lseeksize"
+                       case "$yyy" in
+                       '')     echo " "
+                               echo "(I can't execute the test program--guessing $fpossize.)" >&4
+                               ;;
+                       *)      fpossize=$yyy
+                               echo " $fpossize bytes." >&4
+                               ;;
+                       esac
+               else
+                       dflt="$fpossize"
+                       echo " "
+                       echo "(I can't compile the test program.  Guessing...)" >&4
+                       rp="What is the size of your file positions (in bytes)?"
+                       . ./myread
+                       fpossize="$ans"
+               fi
+               $rm -f try.c try
+       fi
+       ;;
 esac
-fn=d~
-rp='Pathname where the add-on public executables should be installed?'
-. ./getfile
-sitebin="$ans"
-sitebinexp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
-       installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
-else
-       installsitebin="$sitebinexp"
-fi
 
 case "$vendorprefix" in
 '')    d_vendorbin="$undef"
 set qgcvt d_qgcvt
 eval $inlibc
 
-echo " "
-
-if $test X"$d_longdbl" = X"$define"; then
-
-echo "Checking how to print long doubles..." >&4
-
-if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
-       $cat >try.c <<'EOCP'
-#include <sys/types.h>
-#include <stdio.h>
-int main() {
-  double d = 123.456;
-  printf("%.3f\n", d);
-}
-EOCP
-       set try
-       if eval $compile; then
-               yyy=`$run ./try`
-               case "$yyy" in
-               123.456)
-                       sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
-                       sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
-                       echo "We will use %f."
-                       ;;
-               esac
-       fi
-fi
-
-if $test X"$sPRIfldbl" = X; then
-       $cat >try.c <<'EOCP'
-#include <sys/types.h>
-#include <stdio.h>
-int main() {
-  long double d = 123.456;
-  printf("%.3Lf\n", d);
-}
-EOCP
-       set try
-       if eval $compile; then
-               yyy=`$run ./try`
-               case "$yyy" in
-               123.456)
-                       sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
-                       sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
-                       echo "We will use %Lf."
-                       ;;
-               esac
-       fi
-fi
-
-if $test X"$sPRIfldbl" = X; then
-       $cat >try.c <<'EOCP'
-#include <sys/types.h>
-#include <stdio.h>
-int main() {
-  long double d = 123.456;
-  printf("%.3llf\n", d);
-}
-EOCP
-       set try
-       if eval $compile; then
-               yyy=`$run ./try`
-               case "$yyy" in
-               123.456)
-                       sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
-                       sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
-                       echo "We will use %llf."
-                       ;;
-               esac
-       fi
-fi
-
-if $test X"$sPRIfldbl" = X; then
-       $cat >try.c <<'EOCP'
-#include <sys/types.h>
-#include <stdio.h>
-int main() {
-  long double d = 123.456;
-  printf("%.3lf\n", d);
-}
-EOCP
-       set try
-       if eval $compile; then
-               yyy=`$run ./try`
-               case "$yyy" in
-               123.456)
-                       sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
-                       sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
-                       echo "We will use %lf."
-                       ;;
-               esac
-       fi
-fi
-
-if $test X"$sPRIfldbl" = X; then
-       echo "Cannot figure out how to print long doubles." >&4
-else
-       sSCNfldbl=$sPRIfldbl    # expect consistency
-fi
-
-$rm -f try try.*
-
-fi # d_longdbl
+: Check how to convert floats to strings.
 
-case "$sPRIfldbl" in
-'')    d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
-       d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
-       d_SCNfldbl="$undef";
-       ;;
-*)     d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
-       d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
-       d_SCNfldbl="$define";
-       ;;
-esac
+if test "X$d_Gconvert" = X; then
 
-: Check how to convert floats to strings.
 echo " "
 echo "Checking for an efficient way to convert floats to strings."
 echo " " > try.c
@@ -8365,9 +8833,13 @@ char *myname = "qgcvt";
 #define DOUBLETYPE long double
 #endif
 #ifdef TRY_sprintf
-#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
+#if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
+#ifdef HAS_PRIgldbl
 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
 #else
+#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
+#endif
+#else
 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
 #endif
 char *myname = "sprintf";
@@ -8410,6 +8882,21 @@ int main()
        Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
        checkit("0.1", buf);
 
+       Gconvert((DOUBLETYPE)0.01, 8, 0, buf); 
+       checkit("0.01", buf);
+
+       Gconvert((DOUBLETYPE)0.001, 8, 0, buf); 
+       checkit("0.001", buf);
+
+       Gconvert((DOUBLETYPE)0.0001, 8, 0, buf); 
+       checkit("0.0001", buf);
+
+       Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
+       if (strlen(buf) > 5)
+           checkit("9e-005", buf); /* for Microsoft ?? */
+       else
+           checkit("9e-05", buf);
+
        Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
        checkit("1", buf);
 
@@ -8448,24 +8935,65 @@ int main()
        Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
        checkit("123.456", buf);
 
+       /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
+       Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
+       /* 34 should be enough to scare even long double
+        * places into using the e notation. */
+       if (strlen(buf) > 5)
+           checkit("1e+034", buf); /* for Microsoft */
+       else
+           checkit("1e+34", buf);
+
+       /* For Perl, if you add additional tests here, also add them to
+        * t/base/num.t for benefit of platforms not using Configure or
+        * overriding d_Gconvert */
+
        exit(0);
 }
 EOP
-case "$d_Gconvert" in
-gconvert*) xxx_list='gconvert gcvt sprintf' ;;
-gcvt*) xxx_list='gcvt gconvert sprintf' ;;
-sprintf*) xxx_list='sprintf gconvert gcvt' ;;
-*) xxx_list='gconvert gcvt sprintf' ;;
-esac
-
-case "$d_longdbl$uselongdouble$d_PRIgldbl" in
-"$define$define$define")
-    # for long doubles prefer first qgcvt, then sprintf
-    xxx_list="`echo $xxx_list|sed s/sprintf//`" 
-    xxx_list="sprintf $xxx_list"
-    case "$d_qgcvt" in
-    "$define") xxx_list="qgcvt $xxx_list" ;;
-    esac
+: first add preferred functions to our list
+xxx_list=""
+for xxx_convert in $gconvert_preference; do
+    case $xxx_convert in
+    gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
+    *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
+    esac 
+done
+: then add any others
+for xxx_convert in gconvert gcvt sprintf; do
+    case "$xxx_list" in
+    *$xxx_convert*) ;;
+    *) xxx_list="$xxx_list $xxx_convert" ;;
+    esac 
+done
+
+case "$d_longdbl$uselongdouble" in
+"$define$define")
+    : again, add prefered functions to our list first
+    xxx_ld_list=""
+    for xxx_convert in $gconvert_ld_preference; do
+        case $xxx_convert in
+        qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
+        *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
+        esac
+    done
+    : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
+    for xxx_convert in qgcvt sprintf $xxx_list; do
+        case "$xxx_ld_list" in
+        $xxx_convert*|*" $xxx_convert"*) ;;
+        *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
+        esac
+    done
+    : if sprintf cannot do long doubles, move it to the end
+    if test "$d_PRIgldbl" != "$define"; then
+        xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
+    fi
+    : if no qgcvt, remove it
+    if test "$d_qgcvt" != "$define"; then
+        xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
+    fi
+    : use the ld_list
+    xxx_list="$xxx_ld_list"
     ;;
 esac
 
@@ -8480,12 +9008,19 @@ for xxx_convert in $xxx_list; do
                        break;
                else
                        echo "...But $xxx_convert didn't work as I expected."
+                       xxx_convert=''
                fi
        else
                echo "$xxx_convert NOT found." >&4
        fi
 done
-       
+
+if test X$xxx_convert = X; then
+    echo "*** WHOA THERE!!! ***" >&4
+    echo "None of ($xxx_list)  seemed to work properly.  I'll use sprintf." >&4
+    xxx_convert=sprintf
+fi
+
 case "$xxx_convert" in
 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
@@ -8493,70 +9028,346 @@ qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
    "$define$define$define")
       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
+   "$define$define$undef")
+      d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
    esac
    ;;  
 esac
 
-: see if _fwalk exists
-set fwalk d__fwalk
-eval $inlibc
-
-: Initialize h_fcntl
-h_fcntl=false
-
-: Initialize h_sysfile
-h_sysfile=false
-
-: access call always available on UNIX
-set access d_access
+fi
+
+: see if _fwalk exists
+set fwalk d__fwalk
+eval $inlibc
+
+: Initialize h_fcntl
+h_fcntl=false
+
+: Initialize h_sysfile
+h_sysfile=false
+
+: access call always available on UNIX
+set access d_access
+eval $inlibc
+
+: locate the flags for 'access()'
+case "$d_access" in
+"$define")
+       echo " "
+       $cat >access.c <<'EOCP'
+#include <sys/types.h>
+#ifdef I_FCNTL
+#include <fcntl.h>
+#endif
+#ifdef I_SYS_FILE
+#include <sys/file.h>
+#endif
+#ifdef I_UNISTD
+#include <unistd.h>
+#endif
+int main() {
+       exit(R_OK);
+}
+EOCP
+       : check sys/file.h first, no particular reason here
+       if $test `./findhdr sys/file.h` && \
+               $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
+               h_sysfile=true;
+               echo "<sys/file.h> defines the *_OK access constants." >&4
+       elif $test `./findhdr fcntl.h` && \
+               $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
+               h_fcntl=true;
+               echo "<fcntl.h> defines the *_OK access constants." >&4
+       elif $test `./findhdr unistd.h` && \
+               $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
+               echo "<unistd.h> defines the *_OK access constants." >&4
+       else
+               echo "I can't find the four *_OK access constants--I'll use mine." >&4
+       fi
+       ;;
+esac
+$rm -f access*
+
+: see if accessx exists
+set accessx d_accessx
+eval $inlibc
+
+: see if alarm exists
+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
+cc="$cc"
+optimize="$optimize"
+ccflags="$ccflags"
+prototype="$prototype"
+define="$define"
+rm=$rm
+usethreads=$usethreads
+i_pthread=$i_pthread
+pthread_h_first=$pthread_h_first
+EOSH
+
+$cat >> protochk <<'EOSH'
+
+$rm -f try.c
+foo="$1"
+shift
+while test $# -ge 2; do
+       case "$1" in
+               $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
+cat >> try.c <<'EOCP'
+#ifdef CAN_PROTOTYPE
+#define        _(args) args
+#else
+#define        _(args) ()
+#endif
+EOCP
+echo "$foo" >> try.c
+echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
+$cc $optimize $ccflags -c try.c > /dev/null 2>&1
+status=$?
+$rm -f try.[co]
+exit $status
+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
+
+: see if sys/select.h has to be included
+set sys/select.h i_sysselct
+eval $inhdr
+
+hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
+while $test $# -ge 2; do
+       case "$1" in
+       $define) echo "#include <$2>";;
+       esac ;
+    shift 2;
+done > try.c;
+echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
+set try;
+if eval $compile; then
+       val="$define";
+else
+       val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c try.o'
+
+: see if we should include time.h, sys/time.h, or both
+echo " "
+if test "X$timeincl" = X; then
+       echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
+       $echo $n "I'm now running the test program...$c"
+       $cat >try.c <<'EOCP'
+#include <sys/types.h>
+#ifdef I_TIME
+#include <time.h>
+#endif
+#ifdef I_SYSTIME
+#ifdef SYSTIMEKERNEL
+#define KERNEL
+#endif
+#include <sys/time.h>
+#endif
+#ifdef I_SYSSELECT
+#include <sys/select.h>
+#endif
+int main()
+{
+       struct tm foo;
+#ifdef S_TIMEVAL
+       struct timeval bar;
+#endif
+#ifdef S_TIMEZONE
+       struct timezone tzp;
+#endif
+       if (foo.tm_sec == foo.tm_sec)
+               exit(0);
+#ifdef S_TIMEVAL
+       if (bar.tv_sec == bar.tv_sec)
+               exit(0);
+#endif
+       exit(1);
+}
+EOCP
+       flags=''
+       for s_timezone in '-DS_TIMEZONE' ''; do
+       sysselect=''
+       for s_timeval in '-DS_TIMEVAL' ''; do
+       for i_systimek in '' '-DSYSTIMEKERNEL'; do
+       for i_time in '' '-DI_TIME'; do
+       for i_systime in '-DI_SYSTIME' ''; do
+               case "$flags" in
+               '') $echo $n ".$c"
+                       set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
+                       if eval $compile; then
+                               set X $i_time $i_systime $i_systimek $sysselect $s_timeval
+                               shift
+                               flags="$*"
+                               echo " "
+                               $echo $n "Succeeded with $flags$c"
+                       fi
+                       ;;
+               esac
+       done
+       done
+       done
+       done
+       done
+       timeincl=''
+       echo " "
+       case "$flags" in
+       *SYSTIMEKERNEL*) i_systimek="$define"
+               timeincl=`./findhdr sys/time.h`
+               echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
+       *) i_systimek="$undef";;
+       esac
+       case "$flags" in
+       *I_TIME*) i_time="$define"
+               timeincl=`./findhdr time.h`" $timeincl"
+               echo "We'll include <time.h>." >&4;;
+       *) i_time="$undef";;
+       esac
+       case "$flags" in
+       *I_SYSTIME*) i_systime="$define"
+               timeincl=`./findhdr sys/time.h`" $timeincl"
+               echo "We'll include <sys/time.h>." >&4;;
+       *) i_systime="$undef";;
+       esac
+       $rm -f try.c try
+fi
+: see if struct tm knows about tm_zone
+case "$i_systime$i_time" in
+*$define*) 
+        echo " "
+        echo "Checking to see if your struct tm has tm_zone field..." >&4
+        set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
+        eval $hasfield
+        ;;
+*)      val="$undef"
+        set d_tm_tm_zone
+        eval $setvar
+        ;;
+esac
+case "$d_tm_tm_zone" in
+"$define")      echo "Yes, it does."   ;;
+*)              echo "No, it doesn't." ;;
+esac
+: see if struct tm knows about tm_gmtoff
+case "$i_systime$i_time" in
+*$define*) 
+        echo " "
+        echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
+        set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
+        eval $hasfield
+        ;;
+*)      val="$undef"
+        set d_tm_tm_gmtoff
+        eval $setvar
+        ;;
+esac
+case "$d_tm_tm_gmtoff" in
+"$define")      echo "Yes, it does."   ;;
+*)              echo "No, it doesn't." ;;
+esac
+
+: see if asctime_r exists
+set asctime_r d_asctime_r
 eval $inlibc
-
-: locate the flags for 'access()'
-case "$d_access" in
+case "$d_asctime_r" in
 "$define")
-       echo " "
-       $cat >access.c <<'EOCP'
-#include <sys/types.h>
-#ifdef I_FCNTL
-#include <fcntl.h>
-#endif
-#ifdef I_SYS_FILE
-#include <sys/file.h>
-#endif
-#ifdef I_UNISTD
-#include <unistd.h>
-#endif
-int main() {
-       exit(R_OK);
-}
-EOCP
-       : check sys/file.h first, no particular reason here
-       if $test `./findhdr sys/file.h` && \
-               $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
-               h_sysfile=true;
-               echo "<sys/file.h> defines the *_OK access constants." >&4
-       elif $test `./findhdr fcntl.h` && \
-               $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
-               h_fcntl=true;
-               echo "<fcntl.h> defines the *_OK access constants." >&4
-       elif $test `./findhdr unistd.h` && \
-               $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
-               echo "<unistd.h> defines the *_OK access constants." >&4
-       else
-               echo "I can't find the four *_OK access constants--I'll use mine." >&4
-       fi
+       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 ;;
+       esac
+       case "$asctime_r_proto" in
+       ''|0) try='char* asctime_r(const struct tm*, char*, int);'
+       ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
+       esac
+       case "$asctime_r_proto" in
+       ''|0) try='int asctime_r(const struct tm*, char*);'
+       ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
+       esac
+       case "$asctime_r_proto" in
+       ''|0) try='int asctime_r(const struct tm*, char*, int);'
+       ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
+       esac
+       case "$asctime_r_proto" in
+       ''|0)   d_asctime_r=undef
+               asctime_r_proto=0
+               echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
+       * )     case "$asctime_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
+               esac
+               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
-$rm -f access*
-
-: see if accessx exists
-set accessx d_accessx
-eval $inlibc
-
-: see if alarm exists
-set alarm d_alarm
-eval $inlibc
 
 : see if atolf exists
 set atolf d_atolf
@@ -8979,6 +9790,10 @@ eval $inlibc
 set chsize d_chsize
 eval $inlibc
 
+: see if class exists
+set class d_class
+eval $inlibc
+
 hasstruct='varname=$1; struct=$2; shift; shift;
 while $test $# -ge 2; do
        case "$1" in
@@ -8997,28 +9812,6 @@ set $varname;
 eval $setvar;
 $rm -f try.c try.o'
 
-: see if sys/types.h has to be included
-set sys/types.h i_systypes
-eval $inhdr
-
-hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
-while $test $# -ge 2; do
-       case "$1" in
-       $define) echo "#include <$2>";;
-       esac ;
-    shift 2;
-done > try.c;
-echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
-set try;
-if eval $compile; then
-       val="$define";
-else
-       val="$undef";
-fi;
-set $varname;
-eval $setvar;
-$rm -f try.c try.o'
-
 socketlib=''
 sockethdr=''
 : see whether socket exists
@@ -9058,7 +9851,7 @@ else
                                                        sockethdr="-I/usr/netinclude"
                                                        ;;
                                                esac
-                                               echo "Found Berkeley sockets interface in lib$net." >& 4 
+                                               echo "Found Berkeley sockets interface in lib$net." >&4 
                                                if $contains setsockopt libc.list >/dev/null 2>&1; then
                                                        d_oldsock="$undef"
                                                else
@@ -9084,7 +9877,7 @@ eval $inlibc
 
 
 echo " "
-echo "Checking the availability of certain socket constants..." >& 4
+echo "Checking the availability of certain socket constants..." >&4
 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
        enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
        $cat >try.c <<EOF
@@ -9140,36 +9933,91 @@ eval $setvar
 
 : see if crypt exists
 echo " "
-if set crypt val -f d_crypt; eval $csym; $val; then
-       echo 'crypt() found.' >&4
-       val="$define"
-       cryptlib=''
-else
-       cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
-       if $test -z "$cryptlib"; then
-               cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
-       else
-               cryptlib=-lcrypt
-       fi
-       if $test -z "$cryptlib"; then
-               cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
-       else
-               cryptlib=-lcrypt
-       fi
-       if $test -z "$cryptlib"; then
-               cryptlib=`./loc libcrypt$_a "" $libpth`
-       else
-               cryptlib=-lcrypt
-       fi
-       if $test -z "$cryptlib"; then
-               echo 'crypt() NOT found.' >&4
-               val="$undef"
-       else
+set crypt d_crypt
+eval $inlibc
+case "$d_crypt" in
+$define) cryptlib='' ;;
+*)     if set crypt val -f d_crypt; eval $csym; $val; then
+               echo 'crypt() found.' >&4
                val="$define"
+               cryptlib=''
+       else
+               cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
+               if $test -z "$cryptlib"; then
+                       cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
+               else
+                       cryptlib=-lcrypt
+               fi
+               if $test -z "$cryptlib"; then
+                       cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
+               else
+                       cryptlib=-lcrypt
+               fi
+               if $test -z "$cryptlib"; then
+                       cryptlib=`./loc libcrypt$_a "" $libpth`
+               else
+                       cryptlib=-lcrypt
+               fi
+               if $test -z "$cryptlib"; then
+                       echo 'crypt() NOT found.' >&4
+                       val="$undef"
+               else
+                       val="$define"
+               fi
        fi
-fi
-set d_crypt
-eval $setvar
+       set d_crypt
+       eval $setvar
+       ;;
+esac
+
+: see if this is a crypt.h system
+set crypt.h i_crypt
+eval $inhdr
+
+: see if crypt_r exists
+set crypt_r d_crypt_r
+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
+       ''|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." >&4 ;;
+       * )     case "$crypt_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
+               esac
+               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
 
 : get csh whereabouts
 case "$csh" in
@@ -9183,6 +10031,100 @@ case "$full_csh" in
 '') full_csh=$csh ;;
 esac
 
+: see if ctermid_r exists
+set ctermid_r d_ctermid_r
+eval $inlibc
+case "$d_ctermid_r" in
+"$define")
+       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
+       ''|0)   d_ctermid_r=undef
+               ctermid_r_proto=0
+               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" ;;
+       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
+       ;;
+esac
+
+: see if ctime_r exists
+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 $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 ;;
+       esac
+       case "$ctime_r_proto" in
+       ''|0) try='char* ctime_r(const time_t*, char*, int);'
+       ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
+       esac
+       case "$ctime_r_proto" in
+       ''|0) try='int ctime_r(const time_t*, char*);'
+       ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
+       esac
+       case "$ctime_r_proto" in
+       ''|0) try='int ctime_r(const time_t*, char*, int);'
+       ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
+       esac
+       case "$ctime_r_proto" in
+       ''|0)   d_ctime_r=undef
+               ctime_r_proto=0
+               echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
+       * )     case "$ctime_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
+               esac
+               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
+
 : see if cuserid exists
 set cuserid d_cuserid
 eval $inlibc
@@ -9222,25 +10164,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
@@ -9348,6 +10271,63 @@ set d_dirnamlen
 eval $setvar
 $rm -f try.c
 
+: see if this is an sysdir system
+set sys/dir.h i_sysdir
+eval $inhdr
+
+: see if this is an sysndir system
+set sys/ndir.h i_sysndir
+eval $inhdr
+
+: Look for dirfd
+echo " "
+$cat >dirfd.c <<EOM
+#include <stdio.h>
+#$i_dirent I_DIRENT            /**/
+#$i_sysdir I_SYS_DIR           /**/
+#$i_sysndir I_SYS_NDIR         /**/
+#$i_systypes I_SYS_TYPES       /**/
+#if defined(I_SYS_TYPES)
+#include <sys/types.h>
+#endif
+#if defined(I_DIRENT)
+#include <dirent.h>
+#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
+#include <sys/dir.h>
+#endif
+#else
+#ifdef I_SYS_NDIR
+#include <sys/ndir.h>
+#else
+#ifdef I_SYS_DIR
+#ifdef hp9000s500
+#include <ndir.h>      /* may be wrong in the future */
+#else
+#include <sys/dir.h>
+#endif
+#endif
+#endif
+#endif 
+int main() {
+       DIR *dirp = opendir(".");
+       if (dirfd(dirp) >= 0)
+               exit(0);
+       else
+               exit(1);
+}
+EOM
+set dirfd
+if eval $compile; then
+       val="$define"
+fi
+case "$val" in
+$define)       echo "dirfd() found." >&4       ;;
+*)             echo "dirfd() NOT found." >&4   ;;
+esac
+set d_dirfd
+eval $setvar
+$rm -f dirfd*
+
 : see if dlerror exists
 xxx_runnm="$runnm"
 runnm=false
@@ -9460,11 +10440,52 @@ EOM
        ;;
 esac
                
-$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
+$rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
 
 set d_dlsymun
 eval $setvar
 
+: see if drand48_r exists
+set drand48_r d_drand48_r
+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
+       ''|0)   d_drand48_r=undef
+               drand48_r_proto=0
+               echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
+       * )     case "$drand48_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
+               esac
+               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
+
 : see if prototype for drand48 is available
 echo " "
 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
@@ -9482,26 +10503,413 @@ eval $inlibc
 set endgrent d_endgrent
 eval $inlibc
 
+: see if this is an grp system
+set grp.h i_grp
+eval $inhdr
+
+case "$i_grp" in
+$define)
+       xxx=`./findhdr grp.h`
+       $cppstdin $cppflags $cppminus < $xxx >$$.h
+
+       if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_grpasswd
+       eval $setvar
+
+       $rm -f $$.h
+       ;;
+*)
+       val="$undef";
+       set d_grpasswd; eval $setvar
+       ;;
+esac
+
+: see if endgrent_r exists
+set endgrent_r d_endgrent_r
+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 ;;
+       esac
+       case "$endgrent_r_proto" in
+       ''|0) try='void endgrent_r(FILE**);'
+       ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
+       esac
+       case "$endgrent_r_proto" in
+       ''|0)   d_endgrent_r=undef
+               endgrent_r_proto=0
+               echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
+       * )     case "$endgrent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
+               esac
+               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
+
 : see if endhostent exists
 set endhostent d_endhent
 eval $inlibc
 
+: see if this is a netdb.h system
+set netdb.h i_netdb
+eval $inhdr
+
+: see if endhostent_r exists
+set endhostent_r d_endhostent_r
+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_D ;;
+       esac
+       case "$endhostent_r_proto" in
+       ''|0) try='void endhostent_r(struct hostent_data*);'
+       ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
+       esac
+       case "$endhostent_r_proto" in
+       ''|0)   d_endhostent_r=undef
+               endhostent_r_proto=0
+               echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
+       * )     case "$endhostent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
+               esac
+               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
+
 : see if endnetent exists
 set endnetent d_endnent
 eval $inlibc
 
+: see if endnetent_r exists
+set endnetent_r d_endnetent_r
+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_D ;;
+       esac
+       case "$endnetent_r_proto" in
+       ''|0) try='void endnetent_r(struct netent_data*);'
+       ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
+       esac
+       case "$endnetent_r_proto" in
+       ''|0)   d_endnetent_r=undef
+               endnetent_r_proto=0
+               echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
+       * )     case "$endnetent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
+               esac
+               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
+
 : see if endprotoent exists
 set endprotoent d_endpent
 eval $inlibc
 
+: see if endprotoent_r exists
+set endprotoent_r d_endprotoent_r
+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_D ;;
+       esac
+       case "$endprotoent_r_proto" in
+       ''|0) try='void endprotoent_r(struct protoent_data*);'
+       ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
+       esac
+       case "$endprotoent_r_proto" in
+       ''|0)   d_endprotoent_r=undef
+               endprotoent_r_proto=0
+               echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
+       * )     case "$endprotoent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
+               esac
+               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
+
 : see if endpwent exists
 set endpwent d_endpwent
 eval $inlibc
 
+: see if this is a pwd.h system
+set pwd.h i_pwd
+eval $inhdr
+
+case "$i_pwd" in
+$define)
+       xxx=`./findhdr pwd.h`
+       $cppstdin $cppflags $cppminus < $xxx >$$.h
+
+       if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwquota
+       eval $setvar
+
+       if $contains 'pw_age' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwage
+       eval $setvar
+
+       if $contains 'pw_change' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwchange
+       eval $setvar
+
+       if $contains 'pw_class' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwclass
+       eval $setvar
+
+       if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwexpire
+       eval $setvar
+
+       if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwcomment
+       eval $setvar
+
+       if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwgecos
+       eval $setvar
+
+       if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwpasswd
+       eval $setvar
+
+       $rm -f $$.h
+       ;;
+*)
+       val="$undef"; 
+       set d_pwquota; eval $setvar
+       set d_pwage; eval $setvar
+       set d_pwchange; eval $setvar
+       set d_pwclass; eval $setvar
+       set d_pwexpire; eval $setvar
+       set d_pwcomment; eval $setvar
+       set d_pwgecos; eval $setvar
+       set d_pwpasswd; eval $setvar
+       ;;
+esac
+
+: see if endpwent_r exists
+set endpwent_r d_endpwent_r
+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 ;;
+       esac
+       case "$endpwent_r_proto" in
+       ''|0) try='void endpwent_r(FILE**);'
+       ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
+       esac
+       case "$endpwent_r_proto" in
+       ''|0)   d_endpwent_r=undef
+               endpwent_r_proto=0
+               echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
+       * )     case "$endpwent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
+               esac
+               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
+
 : see if endservent exists
 set endservent d_endsent
 eval $inlibc
 
+: see if endservent_r exists
+set endservent_r d_endservent_r
+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_D ;;
+       esac
+       case "$endservent_r_proto" in
+       ''|0) try='void endservent_r(struct servent_data*);'
+       ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
+       esac
+       case "$endservent_r_proto" in
+       ''|0)   d_endservent_r=undef
+               endservent_r_proto=0
+               echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
+       * )     case "$endservent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
+               esac
+               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
+
 : Locate the flags for 'open()'
 echo " "
 $cat >try.c <<'EOCP'
@@ -9574,6 +10982,59 @@ case "$i_string" in
 *)       strings=`./findhdr string.h`;;
 esac
 
+: see if this is a sys/file.h system
+val=''
+set sys/file.h val
+eval $inhdr
+
+: do we need to include sys/file.h ?
+case "$val" in
+"$define")
+       echo " "
+       if $h_sysfile; then
+               val="$define"
+               echo "We'll be including <sys/file.h>." >&4
+       else
+               val="$undef"
+               echo "We won't be including <sys/file.h>." >&4
+       fi
+       ;;
+*)
+       h_sysfile=false
+       ;;
+esac
+set i_sysfile
+eval $setvar
+
+: see if fcntl.h is there
+val=''
+set fcntl.h val
+eval $inhdr
+
+: see if we can include fcntl.h
+case "$val" in
+"$define")
+       echo " "
+       if $h_fcntl; then
+               val="$define"
+               echo "We'll be including <fcntl.h>." >&4
+       else
+               val="$undef"
+               if $h_sysfile; then
+       echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
+               else
+                       echo "We won't be including <fcntl.h>." >&4
+               fi
+       fi
+       ;;
+*)
+       h_fcntl=false
+       val="$undef"
+       ;;
+esac
+set i_fcntl
+eval $setvar
+
 : check for non-blocking I/O stuff
 case "$h_sysfile" in
 true) echo "#include <sys/file.h>" > head.c;;
@@ -9589,8 +11050,13 @@ echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
 case "$o_nonblock" in
 '')
        $cat head.c > try.c
-       $cat >>try.c <<'EOCP'
+       $cat >>try.c <<EOCP
 #include <stdio.h>
+#include <stdlib.h>
+#$i_fcntl I_FCNTL
+#ifdef I_FCNTL
+#include <fcntl.h>
+#endif
 int main() {
 #ifdef O_NONBLOCK
        printf("O_NONBLOCK\n");
@@ -9632,6 +11098,11 @@ case "$eagain" in
 #include <sys/types.h>
 #include <signal.h>
 #include <stdio.h> 
+#include <stdlib.h> 
+#$i_fcntl I_FCNTL
+#ifdef I_FCNTL
+#include <fcntl.h>
+#endif
 #define MY_O_NONBLOCK $o_nonblock
 #ifndef errno  /* XXX need better Configure test */
 extern int errno;
@@ -9692,7 +11163,7 @@ int main()
                ret = read(pd[0], buf, 1);      /* Should read EOF */
                alarm(0);
                sprintf(string, "%d\n", ret);
-               write(3, string, strlen(string));
+               write(4, string, strlen(string));
                exit(0);
        }
 
@@ -9706,7 +11177,7 @@ EOCP
        set try
        if eval $compile_ok; then
                echo "$startsh" >mtry
-               echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
+               echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
                chmod +x mtry
                ./mtry >/dev/null 2>&1
                case $? in
@@ -9768,6 +11239,10 @@ EOCP
 esac
 $rm -f try try.* .out core head.c mtry
 
+: see if fchdir exists
+set fchdir d_fchdir
+eval $inlibc
+
 : see if fchmod exists
 set fchmod d_fchmod
 eval $inlibc
@@ -9782,10 +11257,12 @@ eval $inlibc
 
 echo " "
 : See if fcntl-based locking works.
-$cat >try.c <<'EOCP'
+$cat >try.c <<EOCP
 #include <stdlib.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <signal.h>
+$signal_t blech(x) int x; { exit(3); }
 int main() {
 #if defined(F_SETLK) && defined(F_SETLKW)
      struct flock flock;
@@ -9794,6 +11271,8 @@ int main() {
      flock.l_type = F_RDLCK;
      flock.l_whence = SEEK_SET;
      flock.l_start = flock.l_len = 0;
+     signal(SIGALRM, blech);
+     alarm(10);
      retval = fcntl(fd, F_SETLK, &flock);
      close(fd);
      (retval < 0 ? exit(2) : exit(0));
@@ -9813,6 +11292,18 @@ case "$d_fcntl" in
                else
                        echo "Nope, it didn't work."
                        val="$undef"
+                       case "$?" in
+                       3) $cat >&4 <<EOM
+***
+*** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
+*** This is (almost) impossible.
+*** If your NFS lock daemons are not feeling well, something like
+*** this may happen, please investigate.  Cannot continue, aborting.
+***
+EOM
+                               exit 1
+                               ;;
+                       esac
                fi
        else
                echo "I'm unable to compile the test program, so I'll assume not."
@@ -9828,94 +11319,6 @@ eval $setvar
 $rm -f try*
 
 
-: see if sys/select.h has to be included
-set sys/select.h i_sysselct
-eval $inhdr
-
-: see if we should include time.h, sys/time.h, or both
-echo " "
-if test "X$timeincl" = X; then
-       echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
-       $echo $n "I'm now running the test program...$c"
-       $cat >try.c <<'EOCP'
-#include <sys/types.h>
-#ifdef I_TIME
-#include <time.h>
-#endif
-#ifdef I_SYSTIME
-#ifdef SYSTIMEKERNEL
-#define KERNEL
-#endif
-#include <sys/time.h>
-#endif
-#ifdef I_SYSSELECT
-#include <sys/select.h>
-#endif
-int main()
-{
-       struct tm foo;
-#ifdef S_TIMEVAL
-       struct timeval bar;
-#endif
-#ifdef S_TIMEZONE
-       struct timezone tzp;
-#endif
-       if (foo.tm_sec == foo.tm_sec)
-               exit(0);
-#ifdef S_TIMEVAL
-       if (bar.tv_sec == bar.tv_sec)
-               exit(0);
-#endif
-       exit(1);
-}
-EOCP
-       flags=''
-       for s_timezone in '-DS_TIMEZONE' ''; do
-       sysselect=''
-       for s_timeval in '-DS_TIMEVAL' ''; do
-       for i_systimek in '' '-DSYSTIMEKERNEL'; do
-       for i_time in '' '-DI_TIME'; do
-       for i_systime in '-DI_SYSTIME' ''; do
-               case "$flags" in
-               '') $echo $n ".$c"
-                       set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
-                       if eval $compile; then
-                               set X $i_time $i_systime $i_systimek $sysselect $s_timeval
-                               shift
-                               flags="$*"
-                               echo " "
-                               $echo $n "Succeeded with $flags$c"
-                       fi
-                       ;;
-               esac
-       done
-       done
-       done
-       done
-       done
-       timeincl=''
-       echo " "
-       case "$flags" in
-       *SYSTIMEKERNEL*) i_systimek="$define"
-               timeincl=`./findhdr sys/time.h`
-               echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
-       *) i_systimek="$undef";;
-       esac
-       case "$flags" in
-       *I_TIME*) i_time="$define"
-               timeincl=`./findhdr time.h`" $timeincl"
-               echo "We'll include <time.h>." >&4;;
-       *) i_time="$undef";;
-       esac
-       case "$flags" in
-       *I_SYSTIME*) i_systime="$define"
-               timeincl=`./findhdr sys/time.h`" $timeincl"
-               echo "We'll include <sys/time.h>." >&4;;
-       *) i_systime="$undef";;
-       esac
-       $rm -f try.c try
-fi
-
 : check for fd_set items
 $cat <<EOM
 
@@ -9994,33 +11397,17 @@ $rm -f try try.*
 set fgetpos d_fgetpos
 eval $inlibc
 
-: see if flock exists
-set flock d_flock
+: see if finite exists
+set finite d_finite
 eval $inlibc
 
-: see if this is a sys/file.h system
-val=''
-set sys/file.h val
-eval $inhdr
+: see if finitel exists
+set finitel d_finitel
+eval $inlibc
 
-: do we need to include sys/file.h ?
-case "$val" in
-"$define")
-       echo " "
-       if $h_sysfile; then
-               val="$define"
-               echo "We'll be including <sys/file.h>." >&4
-       else
-               val="$undef"
-               echo "We won't be including <sys/file.h>." >&4
-       fi
-       ;;
-*)
-       h_sysfile=false
-       ;;
-esac
-set i_sysfile
-eval $setvar
+: see if flock exists
+set flock d_flock
+eval $inlibc
 
 : see if prototype for flock is available
 echo " "
@@ -10031,6 +11418,10 @@ eval $hasproto
 set fork d_fork
 eval $inlibc
 
+: see if fp_class exists
+set fp_class d_fp_class
+eval $inlibc
+
 : see if pathconf exists
 set pathconf d_pathconf
 eval $inlibc
@@ -10039,6 +11430,18 @@ eval $inlibc
 set fpathconf d_fpathconf
 eval $inlibc
 
+: see if fpclass exists
+set fpclass d_fpclass
+eval $inlibc
+
+: see if fpclassify exists
+set fpclassify d_fpclassify
+eval $inlibc
+
+: see if fpclassl exists
+set fpclassl d_fpclassl
+eval $inlibc
+
 
 : check for fpos64_t
 echo " "
@@ -10138,6 +11541,177 @@ eval $inlibc
 set getgrent d_getgrent
 eval $inlibc
 
+: see if getgrent_r exists
+set getgrent_r d_getgrent_r
+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 ;;
+       esac
+       case "$getgrent_r_proto" in
+       ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
+       ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
+       esac
+       case "$getgrent_r_proto" in
+       ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
+       ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
+       esac
+       case "$getgrent_r_proto" in
+       ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
+       ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
+       esac
+       case "$getgrent_r_proto" in
+       ''|0) try='int getgrent_r(struct group*, char*, int);'
+       ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
+       esac
+       case "$getgrent_r_proto" in
+       ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
+       ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
+       esac
+       case "$getgrent_r_proto" in
+       ''|0)   d_getgrent_r=undef
+               getgrent_r_proto=0
+               echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
+       * )     case "$getgrent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
+               esac
+               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
+
+: see if getgrgid_r exists
+set getgrgid_r d_getgrgid_r
+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 ;;
+       esac
+       case "$getgrgid_r_proto" in
+       ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
+       ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
+       esac
+       case "$getgrgid_r_proto" in
+       ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
+       ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
+       esac
+       case "$getgrgid_r_proto" in
+       ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
+       ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
+       esac
+       case "$getgrgid_r_proto" in
+       ''|0)   d_getgrgid_r=undef
+               getgrgid_r_proto=0
+               echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
+       * )     case "$getgrgid_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
+               esac
+               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
+
+: see if getgrnam_r exists
+set getgrnam_r d_getgrnam_r
+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 ;;
+       esac
+       case "$getgrnam_r_proto" in
+       ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
+       ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
+       esac
+       case "$getgrnam_r_proto" in
+       ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
+       ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
+       esac
+       case "$getgrnam_r_proto" in
+       ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
+       ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
+       esac
+       case "$getgrnam_r_proto" in
+       ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
+       ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
+       esac
+       case "$getgrnam_r_proto" in
+       ''|0)   d_getgrnam_r=undef
+               getgrnam_r_proto=0
+               echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
+       * )     case "$getgrnam_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
+               esac
+               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
+
 : see if gethostbyaddr exists
 set gethostbyaddr d_gethbyaddr
 eval $inlibc
@@ -10229,16 +11803,199 @@ case "$d_uname$d_gethname" in
        *)
        echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
                ;;
-       esac;;
-esac
-case "$d_phostname" in
-'') d_phostname="$undef";;
+       esac;;
+esac
+case "$d_phostname" in
+'') d_phostname="$undef";;
+esac
+
+: see if gethostbyaddr_r exists
+set gethostbyaddr_r d_gethostbyaddr_r
+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 ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
+       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
+       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
+       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0) try='int gethostbyaddr_r(const char*, int, int);'
+       ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
+       esac
+       case "$gethostbyaddr_r_proto" in
+       ''|0)   d_gethostbyaddr_r=undef
+               gethostbyaddr_r_proto=0
+               echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
+       * )     case "$gethostbyaddr_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
+               esac
+               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
+
+: see if gethostbyname_r exists
+set gethostbyname_r d_gethostbyname_r
+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 ;;
+       esac
+       case "$gethostbyname_r_proto" in
+       ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
+       esac
+       case "$gethostbyname_r_proto" in
+       ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
+       ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
+       esac
+       case "$gethostbyname_r_proto" in
+       ''|0)   d_gethostbyname_r=undef
+               gethostbyname_r_proto=0
+               echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
+       * )     case "$gethostbyname_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
+               esac
+               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
+
+: see if gethostent_r exists
+set gethostent_r d_gethostent_r
+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 ;;
+       esac
+       case "$gethostent_r_proto" in
+       ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
+       esac
+       case "$gethostent_r_proto" in
+       ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
+       esac
+       case "$gethostent_r_proto" in
+       ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
+       ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
+       esac
+       case "$gethostent_r_proto" in
+       ''|0) try='int gethostent_r(struct hostent*, char*, int);'
+       ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
+       esac
+       case "$gethostent_r_proto" in
+       ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
+       ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
+       esac
+       case "$gethostent_r_proto" in
+       ''|0)   d_gethostent_r=undef
+               gethostent_r_proto=0
+               echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
+       * )     case "$gethostent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
+               esac
+               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
 
-: see if this is a netdb.h system
-set netdb.h i_netdb
-eval $inhdr
-
 : see if prototypes for various gethostxxx netdb.h functions are available
 echo " "
 set d_gethostprotos gethostent $i_netdb netdb.h
@@ -10252,6 +12009,59 @@ eval $inlibc
 set getlogin d_getlogin
 eval $inlibc
 
+: see if getlogin_r exists
+set getlogin_r d_getlogin_r
+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 ;;
+       esac
+       case "$getlogin_r_proto" in
+       ''|0) try='int getlogin_r(char*, int);'
+       ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
+       esac
+       case "$getlogin_r_proto" in
+       ''|0) try='char* getlogin_r(char*, size_t);'
+       ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
+       esac
+       case "$getlogin_r_proto" in
+       ''|0) try='char* getlogin_r(char*, int);'
+       ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
+       esac
+       case "$getlogin_r_proto" in
+       ''|0)   d_getlogin_r=undef
+               getlogin_r_proto=0
+               echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
+       * )     case "$getlogin_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
+               esac
+               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
+
 : see if getmnt exists
 set getmnt d_getmnt
 eval $inlibc
@@ -10272,6 +12082,185 @@ eval $inlibc
 set getnetent d_getnent
 eval $inlibc
 
+: see if getnetbyaddr_r exists
+set getnetbyaddr_r d_getnetbyaddr_r
+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 ;;
+       esac
+       case "$getnetbyaddr_r_proto" in
+       ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
+       esac
+       case "$getnetbyaddr_r_proto" in
+       ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
+       esac
+       case "$getnetbyaddr_r_proto" in
+       ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
+       esac
+       case "$getnetbyaddr_r_proto" in
+       ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
+       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
+       esac
+       case "$getnetbyaddr_r_proto" in
+       ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
+       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
+       esac
+       case "$getnetbyaddr_r_proto" in
+       ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
+       ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
+       esac
+       case "$getnetbyaddr_r_proto" in
+       ''|0)   d_getnetbyaddr_r=undef
+               getnetbyaddr_r_proto=0
+               echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
+       * )     case "$getnetbyaddr_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
+               esac
+               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
+
+: see if getnetbyname_r exists
+set getnetbyname_r d_getnetbyname_r
+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 ;;
+       esac
+       case "$getnetbyname_r_proto" in
+       ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
+       esac
+       case "$getnetbyname_r_proto" in
+       ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
+       esac
+       case "$getnetbyname_r_proto" in
+       ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
+       ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
+       esac
+       case "$getnetbyname_r_proto" in
+       ''|0)   d_getnetbyname_r=undef
+               getnetbyname_r_proto=0
+               echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
+       * )     case "$getnetbyname_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
+               esac
+               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
+
+: see if getnetent_r exists
+set getnetent_r d_getnetent_r
+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 ;;
+       esac
+       case "$getnetent_r_proto" in
+       ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
+       esac
+       case "$getnetent_r_proto" in
+       ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
+       ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
+       esac
+       case "$getnetent_r_proto" in
+       ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
+       esac
+       case "$getnetent_r_proto" in
+       ''|0) try='int getnetent_r(struct netent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
+       esac
+       case "$getnetent_r_proto" in
+       ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
+       ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
+       esac
+       case "$getnetent_r_proto" in
+       ''|0)   d_getnetent_r=undef
+               getnetent_r_proto=0
+               echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
+       * )     case "$getnetent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
+               esac
+               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
+
 : see if prototypes for various getnetxxx netdb.h functions are available
 echo " "
 set d_getnetprotos getnetent $i_netdb netdb.h
@@ -10310,6 +12299,157 @@ eval $inlibc
 set getpriority d_getprior
 eval $inlibc
 
+: see if getprotobyname_r exists
+set getprotobyname_r d_getprotobyname_r
+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 ;;
+       esac
+       case "$getprotobyname_r_proto" in
+       ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
+       esac
+       case "$getprotobyname_r_proto" in
+       ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
+       ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
+       esac
+       case "$getprotobyname_r_proto" in
+       ''|0)   d_getprotobyname_r=undef
+               getprotobyname_r_proto=0
+               echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
+       * )     case "$getprotobyname_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
+               esac
+               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
+
+: see if getprotobynumber_r exists
+set getprotobynumber_r d_getprotobynumber_r
+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 ;;
+       esac
+       case "$getprotobynumber_r_proto" in
+       ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
+       esac
+       case "$getprotobynumber_r_proto" in
+       ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
+       ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
+       esac
+       case "$getprotobynumber_r_proto" in
+       ''|0)   d_getprotobynumber_r=undef
+               getprotobynumber_r_proto=0
+               echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
+       * )     case "$getprotobynumber_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
+               esac
+               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
+
+: see if getprotoent_r exists
+set getprotoent_r d_getprotoent_r
+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 ;;
+       esac
+       case "$getprotoent_r_proto" in
+       ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
+       esac
+       case "$getprotoent_r_proto" in
+       ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
+       esac
+       case "$getprotoent_r_proto" in
+       ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
+       ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
+       esac
+       case "$getprotoent_r_proto" in
+       ''|0)   d_getprotoent_r=undef
+               getprotoent_r_proto=0
+               echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
+       * )     case "$getprotoent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
+               esac
+               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
+
 : see if prototypes for various getprotoxxx netdb.h functions are available
 echo " "
 set d_getprotoprotos getprotoent $i_netdb netdb.h
@@ -10323,6 +12463,173 @@ eval $inlibc
 set getpwent d_getpwent
 eval $inlibc
 
+: see if getpwent_r exists
+set getpwent_r d_getpwent_r
+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 ;;
+       esac
+       case "$getpwent_r_proto" in
+       ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
+       ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
+       esac
+       case "$getpwent_r_proto" in
+       ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
+       ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
+       esac
+       case "$getpwent_r_proto" in
+       ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
+       ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
+       esac
+       case "$getpwent_r_proto" in
+       ''|0) try='int getpwent_r(struct passwd*, char*, int);'
+       ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
+       esac
+       case "$getpwent_r_proto" in
+       ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
+       ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
+       esac
+       case "$getpwent_r_proto" in
+       ''|0)   d_getpwent_r=undef
+               getpwent_r_proto=0
+               echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
+       * )     case "$getpwent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
+               esac
+               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
+
+: see if getpwnam_r exists
+set getpwnam_r d_getpwnam_r
+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 ;;
+       esac
+       case "$getpwnam_r_proto" in
+       ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
+       ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
+       esac
+       case "$getpwnam_r_proto" in
+       ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
+       ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
+       esac
+       case "$getpwnam_r_proto" in
+       ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
+       ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
+       esac
+       case "$getpwnam_r_proto" in
+       ''|0)   d_getpwnam_r=undef
+               getpwnam_r_proto=0
+               echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
+       * )     case "$getpwnam_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
+               esac
+               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
+
+: see if getpwuid_r exists
+set getpwuid_r d_getpwuid_r
+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 ;;
+       esac
+       case "$getpwuid_r_proto" in
+       ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
+       ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
+       esac
+       case "$getpwuid_r_proto" in
+       ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
+       ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
+       esac
+       case "$getpwuid_r_proto" in
+       ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
+       ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
+       esac
+       case "$getpwuid_r_proto" in
+       ''|0)   d_getpwuid_r=undef
+               getpwuid_r_proto=0
+               echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
+       * )     case "$getpwuid_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
+               esac
+               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
+
 
 : see if getservbyname exists
 set getservbyname d_getsbyname
@@ -10336,6 +12643,157 @@ eval $inlibc
 set getservent d_getsent
 eval $inlibc
 
+: see if getservbyname_r exists
+set getservbyname_r d_getservbyname_r
+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 ;;
+       esac
+       case "$getservbyname_r_proto" in
+       ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
+       esac
+       case "$getservbyname_r_proto" in
+       ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
+       ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
+       esac
+       case "$getservbyname_r_proto" in
+       ''|0)   d_getservbyname_r=undef
+               getservbyname_r_proto=0
+               echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
+       * )     case "$getservbyname_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
+               esac
+               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
+
+: see if getservbyport_r exists
+set getservbyport_r d_getservbyport_r
+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 ;;
+       esac
+       case "$getservbyport_r_proto" in
+       ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
+       esac
+       case "$getservbyport_r_proto" in
+       ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
+       ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
+       esac
+       case "$getservbyport_r_proto" in
+       ''|0)   d_getservbyport_r=undef
+               getservbyport_r_proto=0
+               echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
+       * )     case "$getservbyport_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
+               esac
+               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
+
+: see if getservent_r exists
+set getservent_r d_getservent_r
+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 ;;
+       esac
+       case "$getservent_r_proto" in
+       ''|0) try='int getservent_r(struct servent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
+       esac
+       case "$getservent_r_proto" in
+       ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
+       ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
+       esac
+       case "$getservent_r_proto" in
+       ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
+       ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
+       esac
+       case "$getservent_r_proto" in
+       ''|0)   d_getservent_r=undef
+               getservent_r_proto=0
+               echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
+       * )     case "$getservent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
+               esac
+               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
+
 : see if prototypes for various getservxxx netdb.h functions are available
 echo " "
 set d_getservprotos getservent $i_netdb netdb.h
@@ -10345,6 +12803,55 @@ eval $hasproto
 set getspnam d_getspnam
 eval $inlibc
 
+: see if this is a shadow.h system
+set shadow.h i_shadow
+eval $inhdr
+
+: see if getspnam_r exists
+set getspnam_r d_getspnam_r
+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 ;;
+       esac
+       case "$getspnam_r_proto" in
+       ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
+       ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
+       esac
+       case "$getspnam_r_proto" in
+       ''|0)   d_getspnam_r=undef
+               getspnam_r_proto=0
+               echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
+       * )     case "$getspnam_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
+               esac
+               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
+
 : see if gettimeofday or ftime exists
 set gettimeofday d_gettimeod
 eval $inlibc
@@ -10364,28 +12871,48 @@ case "$d_gettimeod$d_ftime" in
        ;;
 esac
 
-: see if this is an grp system
-set grp.h i_grp
-eval $inhdr
-
-case "$i_grp" in
-$define)
-       xxx=`./findhdr grp.h`
-       $cppstdin $cppflags $cppminus < $xxx >$$.h
-
-       if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
-               val="$define"
-       else
-               val="$undef"
-       fi
-       set d_grpasswd
-       eval $setvar
-
-       $rm -f $$.h
+: see if gmtime_r exists
+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 $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 ;;
+       esac
+       case "$gmtime_r_proto" in
+       ''|0) try='int gmtime_r(const time_t*, struct tm*);'
+       ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
+       esac
+       case "$gmtime_r_proto" in
+       ''|0)   d_gmtime_r=undef
+               gmtime_r_proto=0
+               echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
+       * )     case "$gmtime_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
+               esac
+               echo "Prototype: $try" ;;
+       esac
        ;;
-*)
-       val="$undef";
-       set d_grpasswd; eval $setvar
+       *)      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
 
@@ -10439,10 +12966,6 @@ esac
 set d_htonl
 eval $setvar
 
-: see if iconv exists
-set iconv d_iconv
-eval $inlibc
-
 : index or strchr
 echo " "
 if set index val -f; eval $csym; $val; then
@@ -10505,6 +13028,14 @@ set d_isascii
 eval $setvar
 $rm -f isascii*
 
+: see if isfinite exists
+set isfinite d_isfinite
+eval $inlibc
+
+: see if isinf exists
+set isinf d_isinf
+eval $inlibc
+
 : see if isnan exists
 set isnan d_isnan
 eval $inlibc
@@ -10580,6 +13111,51 @@ eval $setvar
 set link d_link
 eval $inlibc
 
+: see if localtime_r exists
+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 $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 ;;
+       esac
+       case "$localtime_r_proto" in
+       ''|0) try='int localtime_r(const time_t*, struct tm*);'
+       ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
+       esac
+       case "$localtime_r_proto" in
+       ''|0)   d_localtime_r=undef
+               localtime_r_proto=0
+               echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
+       * )     case "$localtime_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
+               esac
+               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
+
 : see if localeconv exists
 set localeconv d_locconv
 eval $inlibc
@@ -10684,65 +13260,6 @@ esac
 
 
 
-: see if modfl exists
-set modfl d_modfl
-eval $inlibc
-
-d_modfl_pow32_bug="$undef"
-
-case "$d_longdbl$d_modfl" in
-$define$define)
-       $cat <<EOM
-Checking to see whether your modfl() is okay for large values...
-EOM
-$cat >try.c <<EOCP
-#include <math.h> 
-#include <stdio.h>
-int main() {
-    long double nv = 4294967303.15;
-    long double v, w;
-    v = modfl(nv, &w);         
-#ifdef __GLIBC__
-    printf("glibc");
-#endif
-    printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
-    return 0;
-}
-EOCP
-       case "$osname:$gccversion" in
-       aix:)   saveccflags="$ccflags"
-               ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
-       esac
-       set try
-       if eval $compile; then
-               foo=`$run ./try`
-               case "$foo" in
-               *" 4294967303.150000 1.150000 4294967302.000000")
-                       echo >&4 "Your modfl() is broken for large values."
-                       d_modfl_pow32_bug="$define"
-                       case "$foo" in
-                       glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
-                       ;;
-                       esac
-                       ;;
-               *" 4294967303.150000 0.150000 4294967303.000000")
-                       echo >&4 "Your modfl() seems okay for large values."
-                       ;;
-               *)      echo >&4 "I don't understand your modfl() at all."
-                       d_modfl="$undef"
-                       ;;
-               esac
-               $rm -f try.* try core core.try.*
-       else
-               echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
-               d_modfl="$undef"
-       fi
-       case "$osname:$gccversion" in
-       aix:)   $ccflags="saveccflags" ;; # restore
-       esac
-       ;;
-esac
-
 : see if mprotect exists
 set mprotect d_mprotect
 eval $inlibc
@@ -10822,6 +13339,14 @@ eval $inlibc
 set nice d_nice
 eval $inlibc
 
+: see if this is a langinfo.h system
+set langinfo.h i_langinfo
+eval $inhdr
+
+: see if nl_langinfo exists
+set nl_langinfo d_nl_langinfo
+eval $inlibc
+
 : check for length of character
 echo " "
 case "$charsize" in
@@ -11107,18 +13632,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
@@ -11147,13 +13672,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 " "
@@ -11222,6 +13740,65 @@ eval $inlibc
 set poll d_poll
 eval $inlibc
 
+: see if readlink exists
+set readlink d_readlink
+eval $inlibc
+
+echo " "
+procselfexe=''
+val="$undef"
+case "$d_readlink" in
+"$define")
+       if $issymlink /proc/self/exe ; then
+               $ls -l /proc/self/exe > reflect
+               if $contains /`basename $ls` reflect >/dev/null 2>&1; then
+                       echo "You have Linux-like /proc/self/exe."
+                       procselfexe='"/proc/self/exe"'
+                       val="$define"
+               fi
+       fi
+       if $issymlink /proc/curproc/file ; then
+               $ls -l /proc/curproc/file > reflect
+               if $contains /`basename $ls` reflect >/dev/null 2>&1; then
+                       echo "You have BSD-like /proc/curproc/file."
+                       procselfexe='"/proc/curproc/file"'
+                       val="$define"
+               fi
+       fi
+       ;;
+esac
+$rm -f reflect
+set d_procselfexe
+eval $setvar
+
+: see whether the pthread_atfork exists
+$cat >try.c <<EOP
+#include <pthread.h>
+#include <stdio.h>
+int main() {
+#ifdef  PTHREAD_ATFORK
+        pthread_atfork(NULL,NULL,NULL);
+#endif
+}
+EOP
+
+: see if pthread_atfork exists
+set try -DPTHREAD_ATFORK
+if eval $compile; then
+    val="$define"
+else
+    val="$undef"
+fi
+case "$usethreads" in
+$define)
+        case "$val" in
+        $define) echo 'pthread_atfork found.' >&4        ;;
+        *)       echo 'pthread_atfork NOT found.' >&4    ;;
+        esac
+esac
+set d_pthread_atfork
+eval $setvar
+
 
 : see whether the various POSIXish _yields exist
 $cat >try.c <<EOP
@@ -11256,129 +13833,82 @@ $define)
        *)       echo 'sched_yield() NOT found.' >&4    ;;
        esac
 esac
-set d_sched_yield
-eval $setvar
-
-: see if pthread_yield exists
-set try -DPTHREAD_YIELD
-if eval $compile; then
-    val="$define"
-    case "$sched_yield" in
-    '') sched_yield='pthread_yield()' ;;
-    esac
-else
-    set try -DPTHREAD_YIELD_NULL
-    if eval $compile; then
-       val="$define"
-       case "$sched_yield" in
-       '') sched_yield='pthread_yield(NULL)' ;;
-       esac
-    else
-       val="$undef"
-    fi
-fi
-case "$usethreads" in
-$define)
-       case "$val" in
-       $define) echo 'pthread_yield() found.' >&4      ;;
-       *)       echo 'pthread_yield() NOT found.' >&4  ;;
-       esac
-       ;;
-esac
-set d_pthread_yield
-eval $setvar
-
-case "$sched_yield" in
-'') sched_yield=undef ;;
-esac
-
-$rm -f try try.*
-
-: see if this is a pwd.h system
-set pwd.h i_pwd
-eval $inhdr
-
-case "$i_pwd" in
-$define)
-       xxx=`./findhdr pwd.h`
-       $cppstdin $cppflags $cppminus < $xxx >$$.h
-
-       if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
-               val="$define"
-       else
-               val="$undef"
-       fi
-       set d_pwquota
-       eval $setvar
-
-       if $contains 'pw_age' $$.h >/dev/null 2>&1; then
-               val="$define"
-       else
-               val="$undef"
-       fi
-       set d_pwage
-       eval $setvar
-
-       if $contains 'pw_change' $$.h >/dev/null 2>&1; then
-               val="$define"
-       else
-               val="$undef"
-       fi
-       set d_pwchange
-       eval $setvar
-
-       if $contains 'pw_class' $$.h >/dev/null 2>&1; then
-               val="$define"
-       else
-               val="$undef"
-       fi
-       set d_pwclass
-       eval $setvar
-
-       if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
-               val="$define"
-       else
-               val="$undef"
-       fi
-       set d_pwexpire
-       eval $setvar
-
-       if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
-               val="$define"
-       else
-               val="$undef"
-       fi
-       set d_pwcomment
-       eval $setvar
+set d_sched_yield
+eval $setvar
 
-       if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
-               val="$define"
-       else
-               val="$undef"
-       fi
-       set d_pwgecos
-       eval $setvar
+: see if pthread_yield exists
+set try -DPTHREAD_YIELD
+if eval $compile; then
+    val="$define"
+    case "$sched_yield" in
+    '') sched_yield='pthread_yield()' ;;
+    esac
+else
+    set try -DPTHREAD_YIELD_NULL
+    if eval $compile; then
+       val="$define"
+       case "$sched_yield" in
+       '') sched_yield='pthread_yield(NULL)' ;;
+       esac
+    else
+       val="$undef"
+    fi
+fi
+case "$usethreads" in
+$define)
+       case "$val" in
+       $define) echo 'pthread_yield() found.' >&4      ;;
+       *)       echo 'pthread_yield() NOT found.' >&4  ;;
+       esac
+       ;;
+esac
+set d_pthread_yield
+eval $setvar
 
-       if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
-               val="$define"
-       else
-               val="$undef"
-       fi
-       set d_pwpasswd
-       eval $setvar
+case "$sched_yield" in
+'') sched_yield=undef ;;
+esac
 
-       $rm -f $$.h
+$rm -f try try.*
+
+: see if random_r exists
+set random_r d_random_r
+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
+       ''|0)   d_random_r=undef
+               random_r_proto=0
+               echo "Disabling random_r, cannot determine prototype." >&4 ;;
+       * )     case "$random_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
+               esac
+               echo "Prototype: $try" ;;
+       esac
        ;;
-*)
-       val="$undef"; 
-       set d_pwquota; eval $setvar
-       set d_pwage; eval $setvar
-       set d_pwchange; eval $setvar
-       set d_pwclass; eval $setvar
-       set d_pwexpire; eval $setvar
-       set d_pwcomment; eval $setvar
-       set d_pwgecos; eval $setvar
-       set d_pwpasswd; eval $setvar
+       *)      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
 
@@ -11392,16 +13922,98 @@ eval $inlibc
 set rewinddir d_rewinddir
 eval $inlibc
 
-: see if readlink exists
-set readlink d_readlink
+: see if readdir64_r exists
+set readdir64_r d_readdir64_r
 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 ;;
+       esac
+       case "$readdir64_r_proto" in
+       ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
+       ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
+       esac
+       case "$readdir64_r_proto" in
+       ''|0)   d_readdir64_r=undef
+               readdir64_r_proto=0
+               echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
+       * )     case "$readdir64_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
+               esac
+               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
 
-: see if readv exists
-set readv d_readv
+: see if readdir_r exists
+set readdir_r d_readdir_r
 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 ;;
+       esac
+       case "$readdir_r_proto" in
+       ''|0) try='int readdir_r(DIR*, struct dirent*);'
+       ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
+       esac
+       case "$readdir_r_proto" in
+       ''|0)   d_readdir_r=undef
+               readdir_r_proto=0
+               echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
+       * )     case "$readdir_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
+               esac
+               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
 
-: see if realpath exists
-set realpath d_realpath
+: see if readv exists
+set readv d_readv
 eval $inlibc
 
 : see if recvmsg exists
@@ -11441,12 +14053,14 @@ set i_memory
 eval $setvar
 
 : can bcopy handle overlapping blocks?
+echo " "
 val="$undef"
-case "$d_bcopy" in
-"$define")
-       echo " "
-       echo "Checking to see if your bcopy() can do overlapping copies..." >&4
-       $cat >try.c <<EOCP
+case "$d_memmove" in
+"$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
+*)     case "$d_bcopy" in
+       "$define")
+               echo "Checking to see if bcopy() can do overlapping copies..." >&4
+               $cat >try.c <<EOCP
 #$i_memory I_MEMORY
 #$i_stdlib I_STDLIB
 #$i_string I_STRING
@@ -11476,6 +14090,8 @@ int len;
 int off;
 int align;
 
+/* Copy "abcde..." string to char abc[] so that gcc doesn't
+   try to store the string in read-only memory. */
 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
 
 for (align = 7; align >= 0; align--) {
@@ -11493,36 +14109,34 @@ for (align = 7; align >= 0; align--) {
 exit(0);
 }
 EOCP
-       set try
-       if eval $compile_ok; then
-               if $run ./try 2>/dev/null; then
-                       echo "Yes, it can."
-                       val="$define"
+               set try
+               if eval $compile_ok; then
+                       if ./try 2>/dev/null; then
+                               echo "Yes, it can."
+                               val="$define"
+                       else
+                               echo "It can't, sorry."
+                       fi
                else
-                       echo "It can't, sorry."
-                       case "$d_memmove" in
-                       "$define") echo "But that's Ok since you have memmove()." ;;
-                       esac
+                       echo "(I can't compile the test program, so we'll assume not...)"
                fi
-       else
-               echo "(I can't compile the test program, so we'll assume not...)"
-               case "$d_memmove" in
-               "$define") echo "But that's Ok since you have memmove()." ;;
-               esac
-       fi
+               ;;
+       esac
+       $rm -f try.* try core
        ;;
 esac
-$rm -f try.* try core
 set d_safebcpy
 eval $setvar
 
 : can memcpy handle overlapping blocks?
+echo " "
 val="$undef"
-case "$d_memcpy" in
-"$define")
-       echo " "
-       echo "Checking to see if your memcpy() can do overlapping copies..." >&4
-       $cat >try.c <<EOCP
+case "$d_memmove" in
+"$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
+*)     case "$d_memcpy" in
+       "$define")
+               echo "Checking to see if memcpy() can do overlapping copies..." >&4
+               $cat >try.c <<EOCP
 #$i_memory I_MEMORY
 #$i_stdlib I_STDLIB
 #$i_string I_STRING
@@ -11571,26 +14185,22 @@ for (align = 7; align >= 0; align--) {
 exit(0);
 }
 EOCP
-       set try
-       if eval $compile_ok; then
-               if $run ./try 2>/dev/null; then
-                       echo "Yes, it can."
-                       val="$define"
+               set try
+               if eval $compile_ok; then
+                       if ./try 2>/dev/null; then
+                               echo "Yes, it can."
+                               val="$define"
+                       else
+                               echo "It can't, sorry."
+                       fi
                else
-                       echo "It can't, sorry."
-                       case "$d_memmove" in
-                       "$define") echo "But that's Ok since you have memmove()." ;;
-                       esac
+                       echo "(I can't compile the test program, so we'll assume not...)"
                fi
-       else
-               echo "(I can't compile the test program, so we'll assume not...)"
-               case "$d_memmove" in
-               "$define") echo "But that's Ok since you have memmove()." ;;
-               esac
-       fi
+               ;;
+       esac
+       $rm -f try.* try core
        ;;
 esac
-$rm -f try.* try core
 set d_safemcpy
 eval $setvar
 
@@ -11906,10 +14516,100 @@ eval $inlibc
 set setgrent d_setgrent
 eval $inlibc
 
+: see if setgrent_r exists
+set setgrent_r d_setgrent_r
+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 ;;
+       esac
+       case "$setgrent_r_proto" in
+       ''|0) try='void setgrent_r(FILE**);'
+       ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
+       esac
+       case "$setgrent_r_proto" in
+       ''|0)   d_setgrent_r=undef
+               setgrent_r_proto=0
+               echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
+       * )     case "$setgrent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
+               esac
+               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
+
 : see if sethostent exists
 set sethostent d_sethent
 eval $inlibc
 
+: see if sethostent_r exists
+set sethostent_r d_sethostent_r
+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 ;;
+       esac
+       case "$sethostent_r_proto" in
+       ''|0) try='void sethostent_r(int, struct hostent_data*);'
+       ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
+       esac
+       case "$sethostent_r_proto" in
+       ''|0)   d_sethostent_r=undef
+               sethostent_r_proto=0
+               echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
+       * )     case "$sethostent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
+               esac
+               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
+
 : see if setitimer exists
 set setitimer d_setitimer
 eval $inlibc
@@ -11922,10 +14622,100 @@ eval $inlibc
 set setlocale d_setlocale
 eval $inlibc
 
+: see if locale.h is available
+set locale.h i_locale
+eval $inhdr
+
+: see if setlocale_r exists
+set setlocale_r d_setlocale_r
+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
+       ''|0)   d_setlocale_r=undef
+               setlocale_r_proto=0
+               echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
+       * )     case "$setlocale_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
+               esac
+               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
+
 : see if setnetent exists
 set setnetent d_setnent
 eval $inlibc
 
+: see if setnetent_r exists
+set setnetent_r d_setnetent_r
+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 ;;
+       esac
+       case "$setnetent_r_proto" in
+       ''|0) try='void setnetent_r(int, struct netent_data*);'
+       ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
+       esac
+       case "$setnetent_r_proto" in
+       ''|0)   d_setnetent_r=undef
+               setnetent_r_proto=0
+               echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
+       * )     case "$setnetent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
+               esac
+               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
+
 : see if setprotoent exists
 set setprotoent d_setpent
 eval $inlibc
@@ -11946,10 +14736,100 @@ eval $inlibc
 set setproctitle d_setproctitle
 eval $inlibc
 
+: see if setprotoent_r exists
+set setprotoent_r d_setprotoent_r
+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 ;;
+       esac
+       case "$setprotoent_r_proto" in
+       ''|0) try='void setprotoent_r(int, struct protoent_data*);'
+       ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
+       esac
+       case "$setprotoent_r_proto" in
+       ''|0)   d_setprotoent_r=undef
+               setprotoent_r_proto=0
+               echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
+       * )     case "$setprotoent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
+               esac
+               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
+
 : see if setpwent exists
 set setpwent d_setpwent
 eval $inlibc
 
+: see if setpwent_r exists
+set setpwent_r d_setpwent_r
+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 ;;
+       esac
+       case "$setpwent_r_proto" in
+       ''|0) try='void setpwent_r(FILE**);'
+       ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
+       esac
+       case "$setpwent_r_proto" in
+       ''|0)   d_setpwent_r=undef
+               setpwent_r_proto=0
+               echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
+       * )     case "$setpwent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
+               esac
+               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
+
 : see if setregid exists
 set setregid d_setregid
 eval $inlibc
@@ -11974,6 +14854,51 @@ eval $inlibc
 set setservent d_setsent
 eval $inlibc
 
+: see if setservent_r exists
+set setservent_r d_setservent_r
+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 ;;
+       esac
+       case "$setservent_r_proto" in
+       ''|0) try='void setservent_r(int, struct servent_data*);'
+       ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
+       esac
+       case "$setservent_r_proto" in
+       ''|0)   d_setservent_r=undef
+               setservent_r_proto=0
+               echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
+       * )     case "$setservent_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
+               esac
+               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
+
 : see if setsid exists
 set setsid d_setsid
 eval $inlibc
@@ -12042,10 +14967,15 @@ esac
 case "$d_sfio" in
 $define) ;;
 *)     : Remove sfio from list of libraries to use
-       set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
-       shift
-       libs="$*"
-       echo "libs = $libs" >&4
+       case "$libs" in
+       *-lsfio*)
+               echo "Removing unneeded -lsfio from library list" >&4
+               set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
+               shift
+               libs="$*"
+               echo "libs = $libs" >&4
+               ;;
+       esac
 ;;
 esac
 
@@ -12224,6 +15154,88 @@ eval $hasproto
 set socks5_init d_socks5_init
 eval $inlibc
 
+: see if srand48_r exists
+set srand48_r d_srand48_r
+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
+       ''|0)   d_srand48_r=undef
+               srand48_r_proto=0
+               echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
+       * )     case "$srand48_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
+               esac
+               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
+
+: see if srandom_r exists
+set srandom_r d_srandom_r
+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
+       ''|0)   d_srandom_r=undef
+               srandom_r_proto=0
+               echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
+       * )     case "$srandom_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
+               esac
+               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
+
 : see if prototype for setresgid is available
 echo " "
 set d_sresgproto setresgid $i_unistd unistd.h
@@ -12379,6 +15391,26 @@ else
        echo "Your stdio doesn't appear very std."
 fi
 $rm -f try.c try
+
+# glibc 2.2.90 and above apparently change stdio streams so Perl's
+# direct buffer manipulation no longer works.  The Configure tests
+# should be changed to correctly detect this, but until then,
+# the following check should at least let perl compile and run.
+# (This quick fix should be updated before 5.8.1.)
+# To be defensive, reject all unknown versions, and all versions  > 2.2.9.
+# A. Dougherty, June 3, 2002.
+case "$d_gnulibc" in
+$define)
+       case "$gnulibc_version" in
+       2.[01]*)  ;;
+       2.2) ;;
+       2.2.[0-9]) ;;
+       *)  echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
+               val="$undef"
+               ;;
+       esac
+       ;;
+esac
 set d_stdstdio
 eval $setvar
 
@@ -12623,6 +15655,55 @@ if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
     fi
 fi
 
+: see if strerror_r exists
+set strerror_r d_strerror_r
+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 ;;
+       esac
+       case "$strerror_r_proto" in
+       ''|0) try='int strerror_r(int, char*, int);'
+       ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
+       esac
+       case "$strerror_r_proto" in
+       ''|0) try='char* strerror_r(int, char*, size_t);'
+       ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
+       esac
+       case "$strerror_r_proto" in
+       ''|0)   d_strerror_r=undef
+               strerror_r_proto=0
+               echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
+       * )     case "$strerror_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
+               esac
+               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
+
 : see if strftime exists
 set strftime d_strftime
 eval $inlibc
@@ -12923,6 +16004,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
@@ -12945,10 +16044,100 @@ else
        clocktype='int'
 fi
 
+: see if tmpnam_r exists
+set tmpnam_r d_tmpnam_r
+eval $inlibc
+case "$d_tmpnam_r" in
+"$define")
+       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
+       ''|0)   d_tmpnam_r=undef
+               tmpnam_r_proto=0
+               echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
+       * )     case "$tmpnam_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
+               esac
+               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
+
 : see if truncate exists
 set truncate d_truncate
 eval $inlibc
 
+: see if ttyname_r exists
+set ttyname_r d_ttyname_r
+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 ;;
+       esac
+       case "$ttyname_r_proto" in
+       ''|0) try='int ttyname_r(int, char*, int);'
+       ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
+       esac
+       case "$ttyname_r_proto" in
+       ''|0) try='char* ttyname_r(int, char*, int);'
+       ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
+       esac
+       case "$ttyname_r_proto" in
+       ''|0)   d_ttyname_r=undef
+               ttyname_r_proto=0
+               echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
+       * )     case "$ttyname_r_proto" in
+               REENTRANT_PROTO*) ;;
+               *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
+               esac
+               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
+
 : see if tzname[] exists
 echo " "
 if set tzname val -a d_tzname; eval $csym; $val; then
@@ -12968,7 +16157,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*)
@@ -12991,21 +16180,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);
@@ -13032,7 +16223,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"
                        ;;
@@ -13050,13 +16241,19 @@ $cat <<EOM
 
 Checking to see whether you can access character data unalignedly...
 EOM
-$cat >try.c <<EOCP
+case "$d_u32align" in
+'')   $cat >try.c <<EOCP
 #include <stdio.h>
 #define U32 $u32type
-#define BYTEORDER $byteorder
+#define BYTEORDER 0x$byteorder
+#define U8 $u8type
+#include <signal.h>
+#ifdef SIGBUS
+$signal_t bletch(s) int s; { exit(4); }
+#endif
 int main() {
 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
-    U8 buf[] = "\0\0\0\1\0\0\0\0";
+    U8 buf[8];
     U32 *up;
     int i;
 
@@ -13067,6 +16264,19 @@ int main() {
 
     fflush(stdout);
 
+#ifdef SIGBUS
+    signal(SIGBUS, bletch);
+#endif
+
+    buf[0] = 0;
+    buf[1] = 0;
+    buf[2] = 0;
+    buf[3] = 1;
+    buf[5] = 0;
+    buf[6] = 0;
+    buf[7] = 0;
+    buf[8] = 1;
+
     for (i = 0; i < 4; i++) {
        up = (U32*)(buf + i);
        if (! ((*up == 1 << (8*i)) ||   /* big-endian */
@@ -13099,7 +16309,7 @@ int main() {
 EOCP
 set try
 if eval $compile_ok; then
-       echo "(Testing for character data alignment may dump core.)" >&4
+       echo "(Testing for character data alignment may crash the test.  That's okay.)" >&4
        $run ./try 2>&1 >/dev/null
        case "$?" in
        0)      cat >&4 <<EOM
@@ -13113,7 +16323,6 @@ EOM
                d_u32align="$define"
                ;;
        esac
-       $rm -f core core.try.* try.core
 else
        rp='Can you access character data at unaligned addresses?'
        dflt='n'
@@ -13123,6 +16332,9 @@ else
        *)      d_u32align="$define" ;;
        esac
 fi
+$rm -f core core.try.* try.core
+;;
+esac
 
 : see if ualarm exists
 set ualarm d_ualarm
@@ -13132,6 +16344,10 @@ eval $inlibc
 set umask d_umask
 eval $inlibc
 
+: see if unordered exists
+set unordered d_unordered
+eval $inlibc
+
 : see if usleep exists
 set usleep d_usleep
 eval $inlibc
@@ -13191,14 +16407,6 @@ $define) usevfork='true';;
 *) usevfork='false';;
 esac
 
-: see if this is an sysdir system
-set sys/dir.h i_sysdir
-eval $inhdr
-
-: see if this is an sysndir system
-set sys/ndir.h i_sysndir
-eval $inhdr
-
 : see if closedir exists
 set closedir d_closedir
 eval $inlibc
@@ -13791,7 +16999,6 @@ if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
     output=''
     set try -DTRY_FPUTC
     if eval $compile; then
-           $rm -f try.out
            $run ./try 2>/dev/null
            code="$?"
            $from try.out
@@ -13803,7 +17010,6 @@ if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
     '')
            set try -DTRY_FPRINTF
            if eval $compile; then
-                   $rm -f try.out
                    $run ./try 2>/dev/null
                    code="$?"
                    $from try.out
@@ -13818,7 +17024,6 @@ fi
 case "$fflushNULL" in
 '')    set try -DTRY_FFLUSH_NULL $output
        if eval $compile; then
-               $rm -f try.out
                $run ./try 2>/dev/null
                code="$?"
                $from try.out
@@ -13943,7 +17148,6 @@ EOM
                                $cat >&4 <<EOM
 (Now testing the other method--but note that this also may fail.)
 EOM
-                               $rm -f try.out
                                $run ./try 2>/dev/null
                                code=$?
                                $from try.out
@@ -14314,7 +17518,7 @@ else
 fi
 
 case "$ivdformat" in
-'') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
+'') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
     exit 1
     ;;
 esac
@@ -14574,47 +17778,6 @@ EOCP
        ;;
 esac
 
-: define a fucntion to check prototypes
-$cat > protochk <<EOSH
-$startsh
-cc="$cc"
-optimize="$optimize"
-ccflags="$ccflags"
-prototype="$prototype"
-define="$define"
-rm=$rm
-EOSH
-
-$cat >> protochk <<'EOSH'
-
-$rm -f try.c
-foo="$1"
-shift
-while test $# -ge 2; do
-       case "$1" in
-               $define) echo "#include <$2>" >> try.c ;;
-               literal) echo "$2" >> try.c ;;
-       esac
-    shift 2
-done
-test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
-cat >> try.c <<'EOCP'
-#ifdef CAN_PROTOTYPE
-#define        _(args) args
-#else
-#define        _(args) ()
-#endif
-EOCP
-echo "$foo" >> try.c
-echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
-$cc $optimize $ccflags -c try.c > /dev/null 2>&1
-status=$?
-$rm -f try.[co]
-exit $status
-EOSH
-chmod +x protochk
-$eunicefix protochk
-
 : see what type is used for size_t
 rp="What is the type used for the length parameter for string functions?"
 set size_t sizetype 'unsigned int' stdio.h sys/types.h
@@ -14748,6 +17911,7 @@ EOM
        esac
 fi
 : locate the preferred pager for this system
+fn=f/
 case "$pager" in
 '')
        dflt=''
@@ -14767,10 +17931,14 @@ case "$pager" in
        '') dflt=/usr/ucb/more;;
        esac
        ;;
-*) dflt="$pager";;
+*)     dflt="$pager"
+       : Instruct ./getfile to trust the hinted or previous pager value,
+       : even if it does not begin with a slash.  For example, on os2,
+       : pager might be cmd /c more.  See comments in UU/getfile.
+       fn="f/($pager)"
+       ;;
 esac
 echo " "
-fn=f/
 rp='What pager is used on your system?'
 . ./getfile
 pager="$ans"
@@ -14781,10 +17949,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'
@@ -15140,7 +18305,7 @@ $cat >>signal_cmd <<'EOS'
 
 set signal
 if eval $compile_ok; then
-       $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
+       $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
 else
        echo "(I can't seem be able to compile the whole test program)" >&4
        echo "(I'll try it in little pieces.)" >&4
@@ -15174,7 +18339,7 @@ EOCP
        done
        if $test -s signal.ls1; then
                $cat signal.nsg signal.ls1 |
-                       $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
+                       $sort -n | $uniq | $awk -f signal.awk >signal.lst
        fi
 
 fi
@@ -15403,24 +18568,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()."
@@ -15560,11 +18707,11 @@ case "$yacc" in
 esac
 echo " "
 comp='yacc'
-if $test -f "$byacc"; then
+if $test -f "$byacc$_exe"; then
        dflt="$byacc"
        comp="byacc or $comp"
 fi
-if $test -f "$bison"; then
+if $test -f "$bison$_exe"; then
        comp="$comp or bison -y"
 fi
 rp="Which compiler compiler ($comp) shall I use?"
@@ -15582,51 +18729,25 @@ case "$yacc" in
        ;;
 esac
 
-: see if fcntl.h is there
-val=''
-set fcntl.h val
+: see if this is a fp.h system
+set fp.h i_fp
 eval $inhdr
 
-: see if we can include fcntl.h
-case "$val" in
-"$define")
-       echo " "
-       if $h_fcntl; then
-               val="$define"
-               echo "We'll be including <fcntl.h>." >&4
-       else
-               val="$undef"
-               if $h_sysfile; then
-       echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
-               else
-                       echo "We won't be including <fcntl.h>." >&4
-               fi
-       fi
-       ;;
-*)
-       h_fcntl=false
-       val="$undef"
-       ;;
-esac
-set i_fcntl
-eval $setvar
-
-: see if this is a iconv.h system
-set iconv.h i_iconv
+: see if this is a fp_class.h system
+set fp_class.h i_fp_class
 eval $inhdr
 
 : see if this is a ieeefp.h system
-set ieeefp.h i_ieeefp
-eval $inhdr
+case "$i_ieeefp" in
+'' ) set ieeefp.h i_ieeefp
+     eval $inhdr
+     ;;
+esac
 
 : see if this is a libutil.h system
 set libutil.h i_libutil
 eval $inhdr
 
-: see if locale.h is available
-set locale.h i_locale
-eval $inhdr
-
 : see if mach cthreads are available
 if test "X$usethreads" = "X$define"; then
        set mach/cthreads.h i_machcthr
@@ -15648,6 +18769,20 @@ eval $inhdr
 : see if ndbm.h is available
 set ndbm.h t_ndbm
 eval $inhdr
+
+case "$t_ndbm" in
+$undef)
+    # Some Linux distributions such as RedHat 7.1 put the
+    # ndbm.h header in /usr/include/gdbm/ndbm.h.
+    if $test -f /usr/include/gdbm/ndbm.h; then
+       echo '<gdbm/ndbm.h> found.'
+        ccflags="$ccflags -I/usr/include/gdbm"
+        cppflags="$cppflags -I/usr/include/gdbm"
+        t_ndbm=$define
+    fi
+    ;;
+esac
+
 case "$t_ndbm" in
 $define)
        : see if dbm_open exists
@@ -15718,9 +18853,10 @@ BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
 bull c cadmus clipper CMU COFF COMPILER_VERSION
 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
-Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
-FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
-GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
+Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
+FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
+GLIBC GLIBC_MINOR
+GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
 H3050R H3050RX hbullx20 hcx host_mips
 hp200 hp300 hp700 HP700 hp800 hp9000
 hp9000s200 hp9000s300 hp9000s400 hp9000s500
@@ -15763,7 +18899,11 @@ tower tower32 tower32_200 tower32_600 tower32_700
 tower32_800 tower32_850 tss
 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
-unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
+unix UNIX95 UNIX99 unixpc unos
+USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
+USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
+USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
+USGr4 USGr4_2
 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
@@ -15837,7 +18977,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
@@ -15898,7 +19038,6 @@ else
                $test "$silent" || sleep 1
        fi
 fi
-$rm -f ccsym* Cppsym.*
 
 : see if this is a termio system
 val="$undef"
@@ -15955,10 +19094,6 @@ set i_termio; eval $setvar
 val=$val2; set i_sgtty; eval $setvar
 val=$val3; set i_termios; eval $setvar
 
-: see if this is a shadow.h system
-set shadow.h i_shadow
-eval $inhdr
-
 : see if stddef is available
 set stddef.h i_stddef
 eval $inhdr
@@ -16115,7 +19250,7 @@ find_extensions='
            else
                if $test -d $xxx -a $# -lt 10; then
                    set $1$xxx/ $*;
-                   cd $xxx;
+                   cd "$xxx";
                    eval $find_extensions;
                    cd ..;
                    shift;
@@ -16125,17 +19260,21 @@ find_extensions='
        esac;
     done'
 tdir=`pwd`
-cd $rsrc/ext
+cd "$rsrc/ext"
 set X
 shift
 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.
+known_extensions="$known_extensions threads/shared"
 set X $nonxs_extensions
 shift
 nonxs_extensions="$*"
 set X $known_extensions
 shift
 known_extensions="$*"
-cd $tdir
+cd "$tdir"
 
 : Now see which are supported on this system.
 avail_ext=''
@@ -16151,11 +19290,16 @@ for xxx in $known_extensions ; do
                $define) avail_ext="$avail_ext $xxx" ;;
                esac
                ;;
+       I18N/Langinfo|i18n_lan)
+               case "$i_langinfo$d_nl_langinfo" in 
+               $define$define) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
        NDBM_File|ndbm_fil)
                case "$i_ndbm" in
                $define)
                    case "$osname-$use64bitint" in
-                   hpux-define)
+                   cygwin-*|hpux-define)
                        case "$libs" in
                        *-lndbm*) avail_ext="$avail_ext $xxx" ;;
                        esac
@@ -16169,7 +19313,7 @@ for xxx in $known_extensions ; do
                case "${i_dbm}${i_rpcsvcdbm}" in
                *"${define}"*)
                    case "$osname-$use64bitint" in
-                   hpux-define)
+                   cygwin-*|hpux-define)
                        case "$libs" in
                        *-ldbm*) avail_ext="$avail_ext $xxx" ;;
                        esac
@@ -16191,7 +19335,12 @@ for xxx in $known_extensions ; do
                ;;
        Socket|socket)
                case "$d_socket" in 
-               true|$define|y) avail_ext="$avail_ext $xxx" ;;
+               true|$define|y)
+                   case "$osname" in
+                   beos) ;; # not unless BONE
+                   *) avail_ext="$avail_ext $xxx" ;;
+                   esac
+                   ;;
                esac
                ;;
        Sys/Syslog|sys/syslog)
@@ -16208,6 +19357,33 @@ for xxx in $known_extensions ; do
                         esac
                esac
                ;;
+       XS/APItest|xs/apitest)
+               # This is just for testing.  Skip it unless we have dynamic loading.
+
+               case "$usedl" in
+               $define) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       XS/Typemap|xs/typemap)
+               # This is just for testing.  Skip it unless we have dynamic loading.
+               case "$usedl" in
+               $define) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       threads|threads/shared)
+               # 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
                case "${d_msg}${d_sem}${d_shm}" in 
@@ -16344,6 +19520,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
@@ -16391,6 +19581,12 @@ if test -d ../UU; then
        cd ..
 fi
 
+: configuration may be patched via a 'config.arch' file
+if $test -f config.arch; then
+       echo "I see a config.arch file, loading it."
+       . ./config.arch
+fi
+
 : configuration may be patched via a 'config.over' file
 if $test -f config.over; then
        echo " "
@@ -16464,11 +19660,11 @@ archlibexp='$archlibexp'
 archname64='$archname64'
 archname='$archname'
 archobjs='$archobjs'
+asctime_r_proto='$asctime_r_proto'
 awk='$awk'
 baserev='$baserev'
 bash='$bash'
 bin='$bin'
-bincompat5005='$bincompat5005'
 binexp='$binexp'
 bison='$bison'
 byacc='$byacc'
@@ -16506,8 +19702,11 @@ cppminus='$cppminus'
 cpprun='$cpprun'
 cppstdin='$cppstdin'
 cppsymbols='$cppsymbols'
+crypt_r_proto='$crypt_r_proto'
 cryptlib='$cryptlib'
 csh='$csh'
+ctermid_r_proto='$ctermid_r_proto'
+ctime_r_proto='$ctime_r_proto'
 d_Gconvert='$d_Gconvert'
 d_PRIEUldbl='$d_PRIEUldbl'
 d_PRIFUldbl='$d_PRIFUldbl'
@@ -16527,12 +19726,12 @@ d_access='$d_access'
 d_accessx='$d_accessx'
 d_alarm='$d_alarm'
 d_archlib='$d_archlib'
+d_asctime_r='$d_asctime_r'
 d_atolf='$d_atolf'
 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'
@@ -16543,31 +19742,44 @@ d_charvspr='$d_charvspr'
 d_chown='$d_chown'
 d_chroot='$d_chroot'
 d_chsize='$d_chsize'
+d_class='$d_class'
 d_closedir='$d_closedir'
 d_cmsghdr_s='$d_cmsghdr_s'
 d_const='$d_const'
 d_crypt='$d_crypt'
+d_crypt_r='$d_crypt_r'
 d_csh='$d_csh'
+d_ctermid_r='$d_ctermid_r'
+d_ctime_r='$d_ctime_r'
 d_cuserid='$d_cuserid'
 d_dbl_dig='$d_dbl_dig'
 d_dbminitproto='$d_dbminitproto'
 d_difftime='$d_difftime'
+d_dirfd='$d_dirfd'
 d_dirnamlen='$d_dirnamlen'
 d_dlerror='$d_dlerror'
 d_dlopen='$d_dlopen'
 d_dlsymun='$d_dlsymun'
 d_dosuid='$d_dosuid'
+d_drand48_r='$d_drand48_r'
 d_drand48proto='$d_drand48proto'
 d_dup2='$d_dup2'
 d_eaccess='$d_eaccess'
 d_endgrent='$d_endgrent'
+d_endgrent_r='$d_endgrent_r'
 d_endhent='$d_endhent'
+d_endhostent_r='$d_endhostent_r'
 d_endnent='$d_endnent'
+d_endnetent_r='$d_endnetent_r'
 d_endpent='$d_endpent'
+d_endprotoent_r='$d_endprotoent_r'
 d_endpwent='$d_endpwent'
+d_endpwent_r='$d_endpwent_r'
 d_endsent='$d_endsent'
+d_endservent_r='$d_endservent_r'
 d_eofnblk='$d_eofnblk'
 d_eunice='$d_eunice'
+d_fchdir='$d_fchdir'
 d_fchmod='$d_fchmod'
 d_fchown='$d_fchown'
 d_fcntl='$d_fcntl'
@@ -16576,11 +19788,17 @@ d_fd_macros='$d_fd_macros'
 d_fd_set='$d_fd_set'
 d_fds_bits='$d_fds_bits'
 d_fgetpos='$d_fgetpos'
+d_finite='$d_finite'
+d_finitel='$d_finitel'
 d_flexfnam='$d_flexfnam'
 d_flock='$d_flock'
 d_flockproto='$d_flockproto'
 d_fork='$d_fork'
+d_fp_class='$d_fp_class'
 d_fpathconf='$d_fpathconf'
+d_fpclass='$d_fpclass'
+d_fpclassify='$d_fpclassify'
+d_fpclassl='$d_fpclassl'
 d_fpos64_t='$d_fpos64_t'
 d_frexpl='$d_frexpl'
 d_fs_data_s='$d_fs_data_s'
@@ -16595,19 +19813,29 @@ d_getcwd='$d_getcwd'
 d_getespwnam='$d_getespwnam'
 d_getfsstat='$d_getfsstat'
 d_getgrent='$d_getgrent'
+d_getgrent_r='$d_getgrent_r'
+d_getgrgid_r='$d_getgrgid_r'
+d_getgrnam_r='$d_getgrnam_r'
 d_getgrps='$d_getgrps'
 d_gethbyaddr='$d_gethbyaddr'
 d_gethbyname='$d_gethbyname'
 d_gethent='$d_gethent'
 d_gethname='$d_gethname'
+d_gethostbyaddr_r='$d_gethostbyaddr_r'
+d_gethostbyname_r='$d_gethostbyname_r'
+d_gethostent_r='$d_gethostent_r'
 d_gethostprotos='$d_gethostprotos'
 d_getitimer='$d_getitimer'
 d_getlogin='$d_getlogin'
+d_getlogin_r='$d_getlogin_r'
 d_getmnt='$d_getmnt'
 d_getmntent='$d_getmntent'
 d_getnbyaddr='$d_getnbyaddr'
 d_getnbyname='$d_getnbyname'
 d_getnent='$d_getnent'
+d_getnetbyaddr_r='$d_getnetbyaddr_r'
+d_getnetbyname_r='$d_getnetbyname_r'
+d_getnetent_r='$d_getnetent_r'
 d_getnetprotos='$d_getnetprotos'
 d_getpagsz='$d_getpagsz'
 d_getpbyname='$d_getpbyname'
@@ -16618,30 +19846,43 @@ d_getpgrp2='$d_getpgrp2'
 d_getpgrp='$d_getpgrp'
 d_getppid='$d_getppid'
 d_getprior='$d_getprior'
+d_getprotobyname_r='$d_getprotobyname_r'
+d_getprotobynumber_r='$d_getprotobynumber_r'
+d_getprotoent_r='$d_getprotoent_r'
 d_getprotoprotos='$d_getprotoprotos'
 d_getprpwnam='$d_getprpwnam'
 d_getpwent='$d_getpwent'
+d_getpwent_r='$d_getpwent_r'
+d_getpwnam_r='$d_getpwnam_r'
+d_getpwuid_r='$d_getpwuid_r'
 d_getsbyname='$d_getsbyname'
 d_getsbyport='$d_getsbyport'
 d_getsent='$d_getsent'
+d_getservbyname_r='$d_getservbyname_r'
+d_getservbyport_r='$d_getservbyport_r'
+d_getservent_r='$d_getservent_r'
 d_getservprotos='$d_getservprotos'
 d_getspnam='$d_getspnam'
+d_getspnam_r='$d_getspnam_r'
 d_gettimeod='$d_gettimeod'
+d_gmtime_r='$d_gmtime_r'
 d_gnulibc='$d_gnulibc'
 d_grpasswd='$d_grpasswd'
 d_hasmntopt='$d_hasmntopt'
 d_htonl='$d_htonl'
-d_iconv='$d_iconv'
 d_index='$d_index'
 d_inetaton='$d_inetaton'
 d_int64_t='$d_int64_t'
 d_isascii='$d_isascii'
+d_isfinite='$d_isfinite'
+d_isinf='$d_isinf'
 d_isnan='$d_isnan'
 d_isnanl='$d_isnanl'
 d_killpg='$d_killpg'
 d_lchown='$d_lchown'
 d_ldbl_dig='$d_ldbl_dig'
 d_link='$d_link'
+d_localtime_r='$d_localtime_r'
 d_locconv='$d_locconv'
 d_lockf='$d_lockf'
 d_longdbl='$d_longdbl'
@@ -16682,8 +19923,8 @@ d_msync='$d_msync'
 d_munmap='$d_munmap'
 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'
@@ -16696,6 +19937,8 @@ d_phostname='$d_phostname'
 d_pipe='$d_pipe'
 d_poll='$d_poll'
 d_portable='$d_portable'
+d_procselfexe='$d_procselfexe'
+d_pthread_atfork='$d_pthread_atfork'
 d_pthread_yield='$d_pthread_yield'
 d_pwage='$d_pwage'
 d_pwchange='$d_pwchange'
@@ -16707,10 +19950,12 @@ d_pwpasswd='$d_pwpasswd'
 d_pwquota='$d_pwquota'
 d_qgcvt='$d_qgcvt'
 d_quad='$d_quad'
+d_random_r='$d_random_r'
+d_readdir64_r='$d_readdir64_r'
 d_readdir='$d_readdir'
+d_readdir_r='$d_readdir_r'
 d_readlink='$d_readlink'
 d_readv='$d_readv'
-d_realpath='$d_realpath'
 d_recvmsg='$d_recvmsg'
 d_rename='$d_rename'
 d_rewinddir='$d_rewinddir'
@@ -16733,19 +19978,25 @@ d_sendmsg='$d_sendmsg'
 d_setegid='$d_setegid'
 d_seteuid='$d_seteuid'
 d_setgrent='$d_setgrent'
+d_setgrent_r='$d_setgrent_r'
 d_setgrps='$d_setgrps'
 d_sethent='$d_sethent'
+d_sethostent_r='$d_sethostent_r'
 d_setitimer='$d_setitimer'
 d_setlinebuf='$d_setlinebuf'
 d_setlocale='$d_setlocale'
+d_setlocale_r='$d_setlocale_r'
 d_setnent='$d_setnent'
+d_setnetent_r='$d_setnetent_r'
 d_setpent='$d_setpent'
 d_setpgid='$d_setpgid'
 d_setpgrp2='$d_setpgrp2'
 d_setpgrp='$d_setpgrp'
 d_setprior='$d_setprior'
 d_setproctitle='$d_setproctitle'
+d_setprotoent_r='$d_setprotoent_r'
 d_setpwent='$d_setpwent'
+d_setpwent_r='$d_setpwent_r'
 d_setregid='$d_setregid'
 d_setresgid='$d_setresgid'
 d_setresuid='$d_setresuid'
@@ -16753,6 +20004,7 @@ d_setreuid='$d_setreuid'
 d_setrgid='$d_setrgid'
 d_setruid='$d_setruid'
 d_setsent='$d_setsent'
+d_setservent_r='$d_setservent_r'
 d_setsid='$d_setsid'
 d_setvbuf='$d_setvbuf'
 d_sfio='$d_sfio'
@@ -16772,6 +20024,8 @@ d_socklen_t='$d_socklen_t'
 d_sockpair='$d_sockpair'
 d_socks5_init='$d_socks5_init'
 d_sqrtl='$d_sqrtl'
+d_srand48_r='$d_srand48_r'
+d_srandom_r='$d_srandom_r'
 d_sresgproto='$d_sresgproto'
 d_sresuproto='$d_sresuproto'
 d_statblks='$d_statblks'
@@ -16790,6 +20044,7 @@ d_strcoll='$d_strcoll'
 d_strctcpy='$d_strctcpy'
 d_strerrm='$d_strerrm'
 d_strerror='$d_strerror'
+d_strerror_r='$d_strerror_r'
 d_strftime='$d_strftime'
 d_strtod='$d_strtod'
 d_strtol='$d_strtol'
@@ -16814,13 +20069,18 @@ d_telldir='$d_telldir'
 d_telldirproto='$d_telldirproto'
 d_time='$d_time'
 d_times='$d_times'
+d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
+d_tm_tm_zone='$d_tm_tm_zone'
+d_tmpnam_r='$d_tmpnam_r'
 d_truncate='$d_truncate'
+d_ttyname_r='$d_ttyname_r'
 d_tzname='$d_tzname'
 d_u32align='$d_u32align'
 d_ualarm='$d_ualarm'
 d_umask='$d_umask'
 d_uname='$d_uname'
 d_union_semun='$d_union_semun'
+d_unordered='$d_unordered'
 d_usleep='$d_usleep'
 d_usleepproto='$d_usleepproto'
 d_ustat='$d_ustat'
@@ -16851,16 +20111,24 @@ dlext='$dlext'
 dlsrc='$dlsrc'
 doublesize='$doublesize'
 drand01='$drand01'
+drand48_r_proto='$drand48_r_proto'
 dynamic_ext='$dynamic_ext'
 eagain='$eagain'
 ebcdic='$ebcdic'
 echo='$echo'
 egrep='$egrep'
 emacs='$emacs'
+endgrent_r_proto='$endgrent_r_proto'
+endhostent_r_proto='$endhostent_r_proto'
+endnetent_r_proto='$endnetent_r_proto'
+endprotoent_r_proto='$endprotoent_r_proto'
+endpwent_r_proto='$endpwent_r_proto'
+endservent_r_proto='$endservent_r_proto'
 eunicefix='$eunicefix'
 exe_ext='$exe_ext'
 expr='$expr'
 extensions='$extensions'
+extras='$extras'
 fflushNULL='$fflushNULL'
 fflushall='$fflushall'
 find='$find'
@@ -16875,11 +20143,34 @@ full_csh='$full_csh'
 full_sed='$full_sed'
 gccosandvers='$gccosandvers'
 gccversion='$gccversion'
+getgrent_r_proto='$getgrent_r_proto'
+getgrgid_r_proto='$getgrgid_r_proto'
+getgrnam_r_proto='$getgrnam_r_proto'
+gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
+gethostbyname_r_proto='$gethostbyname_r_proto'
+gethostent_r_proto='$gethostent_r_proto'
+getlogin_r_proto='$getlogin_r_proto'
+getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
+getnetbyname_r_proto='$getnetbyname_r_proto'
+getnetent_r_proto='$getnetent_r_proto'
+getprotobyname_r_proto='$getprotobyname_r_proto'
+getprotobynumber_r_proto='$getprotobynumber_r_proto'
+getprotoent_r_proto='$getprotoent_r_proto'
+getpwent_r_proto='$getpwent_r_proto'
+getpwnam_r_proto='$getpwnam_r_proto'
+getpwuid_r_proto='$getpwuid_r_proto'
+getservbyname_r_proto='$getservbyname_r_proto'
+getservbyport_r_proto='$getservbyport_r_proto'
+getservent_r_proto='$getservent_r_proto'
+getspnam_r_proto='$getspnam_r_proto'
 gidformat='$gidformat'
 gidsign='$gidsign'
 gidsize='$gidsize'
 gidtype='$gidtype'
 glibpth='$glibpth'
+gmake='$gmake'
+gmtime_r_proto='$gmtime_r_proto'
+gnulibc_version='$gnulibc_version'
 grep='$grep'
 groupcat='$groupcat'
 groupstype='$groupstype'
@@ -16898,6 +20189,7 @@ i8size='$i8size'
 i8type='$i8type'
 i_arpainet='$i_arpainet'
 i_bsdioctl='$i_bsdioctl'
+i_crypt='$i_crypt'
 i_db='$i_db'
 i_dbm='$i_dbm'
 i_dirent='$i_dirent'
@@ -16905,11 +20197,13 @@ i_dld='$i_dld'
 i_dlfcn='$i_dlfcn'
 i_fcntl='$i_fcntl'
 i_float='$i_float'
+i_fp='$i_fp'
+i_fp_class='$i_fp_class'
 i_gdbm='$i_gdbm'
 i_grp='$i_grp'
-i_iconv='$i_iconv'
 i_ieeefp='$i_ieeefp'
 i_inttypes='$i_inttypes'
+i_langinfo='$i_langinfo'
 i_libutil='$i_libutil'
 i_limits='$i_limits'
 i_locale='$i_locale'
@@ -17025,6 +20319,7 @@ lint='$lint'
 lkflags='$lkflags'
 ln='$ln'
 lns='$lns'
+localtime_r_proto='$localtime_r_proto'
 locincpth='$locincpth'
 loclibpth='$loclibpth'
 longdblsize='$longdblsize'
@@ -17073,6 +20368,7 @@ nroff='$nroff'
 nvEUformat='$nvEUformat'
 nvFUformat='$nvFUformat'
 nvGUformat='$nvGUformat'
+nv_preserves_uv_bits='$nv_preserves_uv_bits'
 nveformat='$nveformat'
 nvfformat='$nvfformat'
 nvgformat='$nvgformat'
@@ -17108,15 +20404,19 @@ prefix='$prefix'
 prefixexp='$prefixexp'
 privlib='$privlib'
 privlibexp='$privlibexp'
+procselfexe='$procselfexe'
 prototype='$prototype'
 ptrsize='$ptrsize'
 quadkind='$quadkind'
 quadtype='$quadtype'
 randbits='$randbits'
 randfunc='$randfunc'
+random_r_proto='$random_r_proto'
 randseedtype='$randseedtype'
 ranlib='$ranlib'
 rd_nodata='$rd_nodata'
+readdir64_r_proto='$readdir64_r_proto'
+readdir_r_proto='$readdir_r_proto'
 revision='$revision'
 rm='$rm'
 rmail='$rmail'
@@ -17143,6 +20443,13 @@ seedfunc='$seedfunc'
 selectminbits='$selectminbits'
 selecttype='$selecttype'
 sendmail='$sendmail'
+setgrent_r_proto='$setgrent_r_proto'
+sethostent_r_proto='$sethostent_r_proto'
+setlocale_r_proto='$setlocale_r_proto'
+setnetent_r_proto='$setnetent_r_proto'
+setprotoent_r_proto='$setprotoent_r_proto'
+setpwent_r_proto='$setpwent_r_proto'
+setservent_r_proto='$setservent_r_proto'
 sh='$sh'
 shar='$shar'
 sharpbang='$sharpbang'
@@ -17177,6 +20484,8 @@ socksizetype='$socksizetype'
 sort='$sort'
 spackage='$spackage'
 spitshell='$spitshell'
+srand48_r_proto='$srand48_r_proto'
+srandom_r_proto='$srandom_r_proto'
 src='$src'
 ssizetype='$ssizetype'
 startperl='$startperl'
@@ -17189,6 +20498,7 @@ stdio_cnt='$stdio_cnt'
 stdio_filbuf='$stdio_filbuf'
 stdio_ptr='$stdio_ptr'
 stdio_stream_array='$stdio_stream_array'
+strerror_r_proto='$strerror_r_proto'
 strings='$strings'
 submit='$submit'
 subversion='$subversion'
@@ -17201,11 +20511,13 @@ tee='$tee'
 test='$test'
 timeincl='$timeincl'
 timetype='$timetype'
+tmpnam_r_proto='$tmpnam_r_proto'
 to='$to'
 touch='$touch'
 tr='$tr'
 trnl='$trnl'
 troff='$troff'
+ttyname_r_proto='$ttyname_r_proto'
 u16size='$u16size'
 u16type='$u16type'
 u32size='$u32size'
@@ -17261,6 +20573,7 @@ vendorlibexp='$vendorlibexp'
 vendorprefix='$vendorprefix'
 vendorprefixexp='$vendorprefixexp'
 version='$version'
+version_patchlevel_string='$version_patchlevel_string'
 versiononly='$versiononly'
 vi='$vi'
 voidflags='$voidflags'
@@ -17341,7 +20654,7 @@ echo " "
 exec 1>&4
 pwd=`pwd`
 . ./UU/extract
-cd $pwd
+cd "$pwd"
 
 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
        dflt=y