This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Default to accepting a hinted $randfunc even when $csym
[perl5.git] / Configure
index a436259..94fe25b 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,8 +20,8 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Tue Jul  7 10:10:21 EDT 1998 [metaconfig 3.0 PL70]
-# (with additional metaconfig patches by doughera@lafayette.edu)
+# Generated on Sun Nov 29 18:15:39 EET 1998 [metaconfig 3.0 PL70]
+# (with additional metaconfig patches by jhi@iki.fi)
 
 cat >/tmp/c1$$ <<EOF
 ARGGGHHHH!!!!!
@@ -56,33 +56,6 @@ case "$0" in
        ;;
 esac
 
-: the newline for tr
-if test X"$trnl" = X; then
-       case "`echo foo|tr '\n' x 2>/dev/null`" in
-       foox)
-               trnl='\n'
-               ;;
-       esac
-fi
-if test X"$trnl" = X; then
-       case "`echo foo|tr '\012' x 2>/dev/null`" in
-       foox)
-               trnl='\012'
-               ;;
-       esac
-fi
-if test -n "$DJGPP"; then
-       trnl='\012'
-fi
-if test X"$trnl" = X; then
-       cat <<EOM >&2
-
-$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
-
-EOM
-       exit 1
-fi
-
 : Proper separator for the PATH environment variable
 p_=:
 : On OS/2 this directory should exist if this is not floppy only system :-]
@@ -317,6 +290,7 @@ cppminus=''
 cpprun=''
 cppstdin=''
 d_access=''
+d_accessx=''
 d_alarm=''
 d_attribut=''
 d_bcmp=''
@@ -343,10 +317,14 @@ d_dlopen=''
 d_dlsymun=''
 d_dosuid=''
 d_suidsafe=''
+d_drand48proto=''
 d_dup2=''
+d_eaccess=''
+d_endgrent=''
 d_endhent=''
 d_endnent=''
 d_endpent=''
+d_endpwent=''
 d_endsent=''
 d_fchmod=''
 d_fchown=''
@@ -358,10 +336,13 @@ d_fgetpos=''
 d_flexfnam=''
 d_flock=''
 d_fork=''
+d_fseeko=''
 d_fsetpos=''
+d_ftello=''
 d_ftime=''
 d_gettimeod=''
 d_Gconvert=''
+d_getgrent=''
 d_getgrps=''
 d_gethbyaddr=''
 d_gethbyname=''
@@ -386,12 +367,12 @@ d_getprior=''
 d_getpbyname=''
 d_getpbynumber=''
 d_getprotoprotos=''
+d_getpwent=''
 d_getsent=''
 d_getservprotos=''
 d_getsbyname=''
 d_getsbyport=''
 d_gnulibc=''
-i_arpainet=''
 d_htonl=''
 d_inetaton=''
 d_isascii=''
@@ -428,14 +409,17 @@ d_pause=''
 d_pipe=''
 d_poll=''
 d_portable=''
+d_pthread_create_joinable=''
+pthread_create_joinable=''
 d_pthread_yield=''
 d_sched_yield=''
-d_pthreads_created_joinable=''
+sched_yield=''
 d_readdir=''
 d_rewinddir=''
 d_seekdir=''
 d_telldir=''
 d_readlink=''
+d_readv=''
 d_rename=''
 d_rmdir=''
 d_safebcpy=''
@@ -448,6 +432,7 @@ d_semget=''
 d_semop=''
 d_setegid=''
 d_seteuid=''
+d_setgrent=''
 d_setgrps=''
 d_sethent=''
 d_setlinebuf=''
@@ -459,6 +444,7 @@ d_setpgrp2=''
 d_bsdsetpgrp=''
 d_setpgrp=''
 d_setprior=''
+d_setpwent=''
 d_setregid=''
 d_setresgid=''
 d_setresuid=''
@@ -479,7 +465,17 @@ d_shmdt=''
 d_shmget=''
 d_sigaction=''
 d_sigsetjmp=''
+d_cmsghdr_s=''
+d_msg_ctrunc=''
+d_msg_dontroute=''
+d_msg_oob=''
+d_msg_peek=''
+d_msg_proxy=''
+d_msghdr_s=''
 d_oldsock=''
+d_recvmsg=''
+d_scm_rights=''
+d_sendmsg=''
 d_socket=''
 d_sockpair=''
 sockethdr=''
@@ -533,6 +529,14 @@ d_wait4=''
 d_waitpid=''
 d_wcstombs=''
 d_wctomb=''
+d_writev=''
+d_dbmclose64=''
+d_dbminit64=''
+d_delete64=''
+d_fetch64=''
+d_firstkey64=''
+d_nextkey64=''
+d_store64=''
 dlext=''
 cccdlflags=''
 ccdlflags=''
@@ -541,11 +545,13 @@ ld=''
 lddlflags=''
 usedl=''
 doublesize=''
+ebcdic=''
 fpostype=''
 gidtype=''
 groupstype=''
 h_fcntl=''
 h_sysfile=''
+i_arpainet=''
 db_hashtype=''
 db_prefixtype=''
 i_db=''
@@ -560,12 +566,12 @@ i_fcntl=''
 i_float=''
 i_gdbm=''
 d_grpasswd=''
-d_setgrent=''
-d_getgrent=''
-d_endgrent=''
 i_grp=''
+d_int64t=''
+i_inttypes=''
 i_limits=''
 i_locale=''
+i_machcthr=''
 i_malloc=''
 i_math=''
 i_memory=''
@@ -574,6 +580,7 @@ i_netdb=''
 i_neterrno=''
 i_niin=''
 i_sysin=''
+i_poll=''
 d_pwage=''
 d_pwchange=''
 d_pwclass=''
@@ -582,15 +589,13 @@ d_pwexpire=''
 d_pwgecos=''
 d_pwpasswd=''
 d_pwquota=''
-d_setpwent=''
-d_getpwent=''
-d_endpwent=''
 i_pwd=''
 i_sfio=''
 i_stddef=''
 i_stdlib=''
 i_string=''
 strings=''
+i_sysaccess=''
 i_sysdir=''
 i_sysfile=''
 d_voidtty=''
@@ -601,10 +606,13 @@ i_syssockio=''
 i_sysndir=''
 i_sysparam=''
 i_sysresrc=''
+i_syssecrt=''
 i_sysselct=''
 i_sysstat=''
 i_systimes=''
 i_systypes=''
+d_iovec_s=''
+i_sysuio=''
 i_sysun=''
 i_syswait=''
 i_sgtty=''
@@ -624,6 +632,22 @@ i_vfork=''
 intsize=''
 longsize=''
 shortsize=''
+d_dirent64_s=''
+d_flock64_s=''
+d_fstat64=''
+d_ftruncate64=''
+d_ino64t=''
+d_lockf64=''
+d_lseek64=''
+d_lstat64=''
+d_off64t=''
+d_open64=''
+d_opendir64=''
+d_readdir64=''
+d_seekdir64=''
+d_stat64=''
+d_telldir64=''
+d_truncate64=''
 libc=''
 libperl=''
 shrpenv=''
@@ -633,8 +657,10 @@ libpth=''
 loclibpth=''
 plibpth=''
 xlibpth=''
+ignore_versioned_solibs=''
 libs=''
 lns=''
+lseeksize=''
 lseektype=''
 make_set_make=''
 d_mymalloc=''
@@ -693,15 +719,21 @@ privlib=''
 privlibexp=''
 prototype=''
 ptrsize=''
+drand01=''
 randbits=''
+randfunc=''
+randseedtype=''
+seedfunc=''
 installscript=''
 scriptdir=''
 scriptdirexp=''
+selectminbits=''
 selecttype=''
 sh=''
 sig_name=''
 sig_name_init=''
 sig_num=''
+sig_num_init=''
 installsitearch=''
 sitearch=''
 sitearchexp=''
@@ -718,8 +750,21 @@ ssizetype=''
 startperl=''
 startsh=''
 stdchar=''
+d_fgetpos64=''
+d_fopen64=''
+d_freopen64=''
+d_fseek64=''
+d_fseeko64=''
+d_fsetpos64=''
+d_ftell64=''
+d_ftello64=''
+d_tmpfile64=''
 sysman=''
+trnl=''
 uidtype=''
+archname64=''
+use64bits=''
+usemultiplicity=''
 nm_opt=''
 nm_so_opt=''
 runnm=''
@@ -733,7 +778,6 @@ mips_type=''
 usrinc=''
 defvoidused=''
 voidflags=''
-ebcdic=''
 CONFIG=''
 
 define='define'
@@ -750,6 +794,33 @@ if test -f /etc/unixtovms.exe; then
        eunicefix=/etc/unixtovms.exe
 fi
 
+i_whoami=''
+: change the next line if compiling for Xenix/286 on Xenix/386
+xlibpth='/usr/lib/386 /lib/386'
+
+: Possible local library directories to search.
+loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
+loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
+
+: general looking path for locating libraries
+glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
+glibpth="$glibpth /lib /usr/lib $xlibpth"
+glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
+glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
+
+: Private path used by Configure to find libraries.  Its value
+: is prepended to libpth. This variable takes care of special
+: machines, like the mips.  Usually, it should be empty.
+plibpth=''
+
+: Possible local include directories to search.
+: Set locincpth to "" in a hint file to defeat local include searches.
+locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
+locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
+:
+: no include file wanted by default
+inclwanted=''
+
 : list of known cpp symbols, sorted alphabetically
 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
@@ -761,8 +832,8 @@ al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
 al="$al VMS Xenix286"
-al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI _POWER"
-al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
+al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
+al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
@@ -815,40 +886,15 @@ al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
 al="$al xenix z8000"
 
-i_whoami=''
-: change the next line if compiling for Xenix/286 on Xenix/386
-xlibpth='/usr/lib/386 /lib/386'
-
-: Possible local library directories to search.
-loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
-loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
-
-: general looking path for locating libraries
-glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
-glibpth="$glibpth /lib /usr/lib $xlibpth"
-glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
-glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
-
-: Private path used by Configure to find libraries.  Its value
-: is prepended to libpth. This variable takes care of special
-: machines, like the mips.  Usually, it should be empty.
-plibpth=''
-
-: default library list
-libswanted=''
-: Possible local include directories to search.
-: Set locincpth to "" in a hint file to defeat local include searches.
-locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
-:
-: no include file wanted by default
-inclwanted=''
-
 : Trailing extension.  Override this in a hint file, if needed.
 _exe=''
 : Extra object files, if any, needed on this platform.
 archobjs=''
 groupstype=''
+: default library list
+libswanted=''
+: some systems want to use only the non-versioned libso:s
+ignore_versioned_solibs=''
 : full support for void wanted by default
 defvoidused=15
 
@@ -856,6 +902,7 @@ defvoidused=15
 useposix=true
 : set useopcode=false in your hint file to disable the Opcode extension.
 useopcode=true
+: set usemultiplicity on the Configure command line to enable multiplicity.
 : set usethreads on the Configure command line to enable threads.
 : List of libraries we want.
 : If anyone needs -lnet, put it in a hint file.
@@ -904,7 +951,7 @@ case "$sh" in
 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
 
 Usually it's in /bin/sh.  How did you even get this far?
-Please contact me (Andy Dougherty) at doughera@lafayette.edu and 
+Please contact me (Jarkko Hietaniemi) at jhi@iki.fi and 
 we'll try to straighten this all out.
 EOM
        exit 1
@@ -1240,7 +1287,7 @@ cat >extract <<'EOS'
 CONFIG=true
 echo "Doing variable substitutions on .SH files..."
 if test -f $src/MANIFEST; then
-       set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH'`
+       set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
 else
        echo "(Looking for .SH files under the source directory.)"
        set x `(cd $src; find . -name "*.SH" -print)`
@@ -1373,7 +1420,7 @@ THIS PACKAGE SEEMS TO BE INCOMPLETE.
 You have the option of continuing the configuration process, despite the
 distinct possibility that your kit is damaged, by typing 'y'es.  If you
 do, don't blame me if something goes wrong.  I advise you to type 'n'o
-and contact the author (doughera@lafayette.edu).
+and contact the author (jhi@iki.fi).
 
 EOM
                echo $n "Continue? [n] $c" >&4
@@ -1396,6 +1443,30 @@ else
 fi
 rm -f missing x??
 
+echo " "
+: Find the appropriate value for a newline for tr
+if test -n "$DJGPP"; then
+       trnl='\012'
+fi
+if test X"$trnl" = X; then
+       case "`echo foo|tr '\n' x 2>/dev/null`" in
+       foox) trnl='\n' ;;
+       esac
+fi
+if test X"$trnl" = X; then
+       case "`echo foo|tr '\012' x 2>/dev/null`" in
+       foox) trnl='\012' ;;
+       esac
+fi
+if test X"$trnl" = X; then
+       cat <<EOM >&2
+
+$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
+
+EOM
+       exit 1
+fi
+
 : compute the number of columns on the terminal for proper question formatting
 case "$COLUMNS" in
 '') COLUMNS='80';;
@@ -1574,7 +1645,7 @@ Much effort has been expended to ensure that this shell script will run on any
 Unix system.  If despite that it blows up on yours, your best bet is to edit
 Configure and run it again.  If you can't run Configure for some reason,
 you'll have to generate a config.sh file by hand.  Whatever problems you
-have, let me (doughera@lafayette.edu) know how I blew it.
+have, let me (jhi@iki.fi) know how I blew it.
 
 This installation script affects things in two ways:
 
@@ -1646,7 +1717,6 @@ comm
 cp
 echo
 expr
-find
 grep
 ls
 make
@@ -1668,14 +1738,11 @@ date
 egrep
 gzip
 less
-line
 ln
 more
 nm
 nroff
-perl
 pg
-sendmail
 tee
 test
 uname
@@ -1841,14 +1908,14 @@ ABYZ)
            *C9D1*|*c9d1*)
                echo "Hey, this might be EBCDIC." >&4
                if test "X$up" = X -o "X$low" = X; then
-                   case "`echo IJ | tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
+                   case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
                    ij) up='[A-IJ-RS-Z]'
                        low='[a-ij-rs-z]'
                        ;;
                    esac
                fi
                if test "X$up" = X -o "X$low" = X; then
-                   case "`echo IJ | tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
+                   case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
                    ij) up='A-IJ-RS-Z'
                        low='a-ij-rs-z'
                        ;;
@@ -1941,7 +2008,7 @@ EOM
        (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
        dflt=''
        : Half the following guesses are probably wrong... If you have better
-       : tests or hints, please send them to doughera@lafayette.edu
+       : tests or hints, please send them to jhi@iki.fi
        : The metaconfig authors would also appreciate a copy...
        $test -f /irix && osname=irix
        $test -f /xenix && osname=sco_xenix
@@ -1956,7 +2023,7 @@ EOM
        $test -d /usr/apollo/bin && osname=apollo
        $test -f /etc/saf/_sactab && osname=svr4
        $test -d /usr/include/minix && osname=minix
-       if $test -d /MachTen; then
+       if $test -d /MachTen -o -d /MachTen_Folder; then
                osname=machten
                if $test -x /sbin/version; then
                        osvers=`/sbin/version | $awk '{print $2}' |
@@ -1968,6 +2035,12 @@ EOM
                        osvers="$2.$3"
                fi
        fi
+       $test -f /sys/posix.dll &&
+              $test -f /usr/bin/what &&
+              set X `/usr/bin/what /sys/posix.dll` &&
+              $test "$3" = UWIN &&
+              osname=uwin &&
+              osvers="$5"
        if $test -f $uname; then
                set X $myuname
                shift
@@ -2025,7 +2098,7 @@ EOM
                        osvers="$3"
                        ;;
                dynixptx*) osname=dynixptx
-                       osvers="$3"
+                       osvers=`echo "$4"|sed 's/^v//'`
                        ;;
                freebsd) osname=freebsd 
                        osvers="$3" ;;
@@ -2059,6 +2132,9 @@ EOM
                bsd386) osname=bsd386
                        osvers=`$uname -r`
                        ;;
+                POSIX-BC | posix-bc ) osname=posix-bc
+                        osvers="$3"
+                        ;;
                powerux | power_ux | powermax_os | powermaxos | \
                powerunix | power_unix) osname=powerux
                        osvers="$3"
@@ -2414,6 +2490,54 @@ esac
 set d_oldpthreads
 eval $setvar
 
+cat <<EOM
+
+Perl can be built so that multiple Perl interpreters can coexist
+within the same Perl executable.  To do so, Configure must be run with
+-Dusemultiplicity.
+
+Normally you do not need this and you should answer no.
+
+EOM
+case "$usemultiplicity" in
+$define|true|[yY]*)    dflt='y';;
+*) dflt='n';;
+esac
+rp='Build Perl for multiplicity?'
+. ./myread
+case "$ans" in
+y|Y)   val="$define" ;;     
+*)      val="$undef" ;;
+esac
+set usemultiplicity
+eval $setvar 
+
+cat <<EOM
+
+Perl can be built to take advantage of explicit 64-bit interfaces,
+on some systems.  To do so, Configure must be run with -Duse64bits.
+
+If this doesn't make any sense to you, just accept the default 'n'.
+EOM
+case "$use64bits" in
+$define|true|[yY]*)    dflt='y';;
+*) dflt='n';;
+esac
+rp='Try to use explicit 64-bit interfaces, if available?'
+. ./myread
+case "$ans" in
+y|Y) 
+       val="$define"
+       ;;     
+*)      
+       val="$undef"
+       ;;
+esac
+set use64bits
+eval $setvar
+
+archname64=''
+
 : determine the architecture name
 echo " "
 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
@@ -2436,26 +2560,56 @@ case "$myarchname" in
        archname=''
        ;;
 esac
+myarchname="$tarch"
 case "$archname" in
 '') dflt="$tarch";;
 *) dflt="$archname";;
 esac
 rp='What is your architecture name'
 . ./myread
+archname="$ans"
 case "$usethreads" in
-$define)  echo "Threads selected." >&4
-          case "$ans" in
-          *-thread) echo "...and architecture name already ends in -thread." >&4
-                    archname="$ans"
-                    ;;
-          *)        archname="$ans-thread"
-                    echo "...setting architecture name to $archname." >&4
-                    ;;
-          esac
-          ;;
-*)        archname="$ans" ;;
+$define)
+       echo "Threads selected." >&4
+       case "$archname" in
+        *-thread*) echo "...and architecture name already has -thread." >&4
+                ;;
+        *)      archname="$archname-thread"
+                echo "...setting architecture name to $archname." >&4
+                ;;
+        esac
+       ;;
 esac
-myarchname="$tarch"
+case "$usemultiplicity" in
+$define)
+       echo "Multiplicity selected." >&4
+       case "$archname" in
+        *-multi*) echo "...and architecture name already has -multi." >&4
+                ;;
+        *)      archname="$archname-multi"
+                echo "...setting architecture name to $archname." >&4
+                ;;
+        esac
+       ;;
+esac
+case "$use64bits" in
+$define)
+       echo "Explicit 64-bitness selected." >&4
+       case "$archname64" in
+       '')
+               ;;
+       *)
+               case "$archname" in
+               *-$archname64*) echo "...and architecture name already has $archname64." >&4
+                       ;;
+               *)      archname="$archname-$archname64"
+                       echo "...setting architecture name to $archname." >&4
+                       ;;
+               esac
+               ;;
+       esac
+esac
+
 : is AFS running?
 echo " "
 case "$afs" in
@@ -3442,7 +3596,11 @@ cat <<'EOT' >testcpp.c
 ABC.XYZ
 EOT
 cd ..
-echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+if test ! -f cppstdin; then
+       echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+else
+       echo "Keeping your $hint cppstdin wrapper."
+fi
 chmod 755 cppstdin
 wrapper=`pwd`/cppstdin
 ok='false'
@@ -3693,7 +3851,8 @@ case "$libswanted" in
 esac
 for thislib in $libswanted; do
        
-       if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
+       if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
+               $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
                echo "Found -l$thislib (shared)."
                case " $dflt " in
                *"-l$thislib "*);;
@@ -3980,10 +4139,21 @@ rmlist="$rmlist pdp11"
 : coherency check
 echo " "
 echo "Checking your choice of C compiler and flags for coherency..." >&4
+$cat > try.c <<'EOF'
+#include <stdio.h>
+main() { printf("Ok\n"); exit(0); }
+EOF
 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
 shift
-$cat >try.msg <<EOM
-I've tried to compile and run a simple program with:
+$cat >try.msg <<'EOM'
+I've tried to compile and run the following simple program:
+
+EOM
+$cat try.c
+
+$cat >> try.msg <<EOM
+
+I used the command:
 
        $*
        ./try
@@ -3991,10 +4161,6 @@ I've tried to compile and run a simple program with:
 and I got the following output:
 
 EOM
-$cat > try.c <<'EOF'
-#include <stdio.h>
-main() { printf("Ok\n"); exit(0); }
-EOF
 dflt=y
 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
        if sh -c './try' >>try.msg 2>&1; then
@@ -4031,7 +4197,7 @@ y)
        $cat try.msg >&4
        case "$knowitall" in
        '')
-               echo "(The supplied flags might be incorrect with this C compiler.)"
+               echo "(The supplied flags or libraries might be incorrect.)"
                ;;
        *) dflt=n;;
        esac
@@ -4149,9 +4315,8 @@ eval $inhdr
 : determine which malloc to compile in
 echo " "
 case "$usemymalloc" in
-''|y*|true)    dflt='y' ;;
-n*|false)      dflt='n' ;;
-*)     dflt="$usemymalloc" ;;
+''|[yY]*|true|$define) dflt='y' ;;
+*)     dflt='n' ;;
 esac
 rp="Do you wish to attempt to use the malloc that comes with $package?"
 . ./myread
@@ -4253,7 +4418,7 @@ understands function prototypes.  Unfortunately, your C compiler
        $cc $ccflags
 doesn't seem to understand them.  Sorry about that.
 
-If GNU cc is avaiable for your system, perhaps you could try that instead.  
+If GNU cc is available for your system, perhaps you could try that instead.  
 
 Eventually, we hope to support building Perl with pre-ANSI compilers.
 If you would like to help in that effort, please contact <perlbug@perl.org>.
@@ -4308,32 +4473,6 @@ shift;
 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
 
 echo " "
-echo "Determining whether or not we are on an EBCDIC system..." >&4
-cat >tebcdic.c <<EOM
-int main()
-{
-  if ('M'==0xd4) return 0;
-  return 1;
-}
-EOM
-val=$undef
-set tebcdic
-if eval $compile_ok; then
-       if ./tebcdic; then
-               echo "You have EBCDIC." >&4
-               val="$define"
-       else
-               echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
-       fi
-else
-       echo "I'm unable to compile the test program." >&4
-       echo "I'll asuume ASCII or some ISO Latin." >&4
-fi
-$rm -f tebcdic.c tebcdic
-set ebcdic
-eval $setvar
-
-echo " "
 echo "Checking for GNU C Library..." >&4
 cat >gnulibc.c <<EOM
 #include <stdio.h>
@@ -5069,7 +5208,7 @@ EOM
 To build perl, you must add the current working directory to your
 $xxx environment variable before running make.  You can do
 this with
-   $xxx=\`pwd\`; export $xxx
+   $xxx=\`pwd\`:\$$xxx; export $xxx
 for Bourne-style shells, or
    setenv $xxx \`pwd\`
 for Csh-style shells.  You *MUST* do this before running make.
@@ -5147,7 +5286,7 @@ case "$shrpdir" in
 *)     $cat >&4 <<EOM
 WARNING:  Use of the shrpdir variable for the installation location of
 the shared $libperl is not supported.  It was never documented and
-will not work in this version.  Let me (doughera@lafayette.edu)
+will not work in this version.  Let me (jhi@iki.fi)
 know of any problems this may cause.
 
 EOM
@@ -6004,9 +6143,9 @@ eval $setvar
 
 : Check how to convert floats to strings.
 if test "X$d_Gconvert" = X; then
-    echo " "
-    echo "Checking for an efficient way to convert floats to strings."
-    $cat >try.c <<'EOP'
+       echo " "
+       echo "Checking for an efficient way to convert floats to strings."
+       $cat >try.c <<'EOP'
 #ifdef TRY_gconvert
 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
 char *myname = "gconvert";
@@ -6065,35 +6204,35 @@ main()
        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_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
 
-    for xxx_convert in $xxx_list; do
-       echo "Trying $xxx_convert"
-       $rm -f try try$_o
-       set try -DTRY_$xxx_convert
-       if eval $compile; then
-               echo "$xxx_convert" found. >&4
-               if ./try; then
-                       echo "I'll use $xxx_convert to convert floats into a string." >&4
-                       break;
+       for xxx_convert in $xxx_list; do
+               echo "Trying $xxx_convert"
+               $rm -f try try$_o
+               set try -DTRY_$xxx_convert
+               if eval $compile; then
+                       echo "$xxx_convert" found. >&4
+                       if ./try; then
+                               echo "I'll use $xxx_convert to convert floats into a string." >&4
+                               break;
+                       else
+                               echo "...But $xxx_convert didn't work as I expected."
+                       fi
                else
-                       echo "...But $xxx_convert didn't work as I expected."
+                       echo "$xxx_convert NOT found." >&4
                fi
-       else
-               echo "$xxx_convert NOT found." >&4
-       fi
-    done
+       done
                
-    case "$xxx_convert" in
-    gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
-    gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
-    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
-    esac
+       case "$xxx_convert" in
+       gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
+       gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
+       *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
+       esac
 fi
 
 : Initialize h_fcntl
@@ -6144,6 +6283,10 @@ EOCP
 esac
 $rm -f access*
 
+: see if accessx exists
+set accessx d_accessx
+eval $inlibc
+
 : see if alarm exists
 set alarm d_alarm
 eval $inlibc
@@ -6606,30 +6749,171 @@ eval $inlibc
 set chsize d_chsize
 eval $inlibc
 
-: check for const keyword
-echo " "
-echo 'Checking to see if your C compiler knows about "const"...' >&4
-$cat >const.c <<'EOCP'
-typedef struct spug { int drokk; } spug;
-main()
-{
-       const char *foo;
-       const spug y;
-}
-EOCP
-if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
-       val="$define"
-       echo "Yup, it does."
+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; foo.$field = 0; }" >> try.c;
+if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
+       val="$define";
 else
-       val="$undef"
-       echo "Nope, it doesn't."
-fi
-set d_const
-eval $setvar
+       val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c try.o'
 
-: see if crypt exists
-echo " "
-if set crypt val -f d_crypt; eval $csym; $val; then
+: see if this is a sys/uio.h system
+set sys/uio.h i_sysuio
+eval $inhdr
+
+echo "Checking to see if your system supports struct iovec..." >&4
+set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
+eval $hasfield
+case "$d_iovec_s" in
+"$define")      echo "Yup, it does." >&4
+                ;;
+*)              echo "Nope, it doesn't." >&4
+                ;;
+esac
+
+socketlib=''
+sockethdr=''
+: see whether socket exists
+echo " "
+$echo $n "Hmm... $c" >&4
+if set socket val -f d_socket; eval $csym; $val; then
+       echo "Looks like you have Berkeley networking support." >&4
+       d_socket="$define"
+       if set setsockopt val -f; eval $csym; $val; then
+               d_oldsock="$undef"
+       else
+               echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
+               d_oldsock="$define"
+       fi
+else
+       if $contains socklib libc.list >/dev/null 2>&1; then
+               echo "Looks like you have Berkeley networking support." >&4
+               d_socket="$define"
+               : we will have to assume that it supports the 4.2 BSD interface
+               d_oldsock="$undef"
+       else
+               echo "You don't have Berkeley networking in libc$_a..." >&4
+               if test "X$d_socket" = "X$define"; then
+                  echo "...but you seem to believe that you have sockets." >&4
+               else
+                       for net in net socket
+                       do
+                               if test -f /usr/lib/lib$net$_a; then
+                                       ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
+                                       $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
+                                       if $contains socket libc.list >/dev/null 2>&1; then
+                                               d_socket="$define"
+                                               socketlib="-l$net"
+                                               case "$net" in
+                                               net)
+                                                       echo "...but the Wollongong group seems to have hacked it in." >&4
+                                                       sockethdr="-I/usr/netinclude"
+                                                       ;;
+                                               esac
+                                               echo "Found Berkeley sockets interface in lib$net." >& 4 
+                                               if $contains setsockopt libc.list >/dev/null 2>&1; then
+                                                       d_oldsock="$undef"
+                                               else
+                                                       echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
+                                                       d_oldsock="$define"
+                                               fi
+                                               break
+                                       fi
+                               fi
+                       done
+                       if test "X$d_socket" != "X$define"; then
+                          echo "or anywhere else I see." >&4
+                          d_socket="$undef"
+                          d_oldsock="$undef"
+                       fi
+               fi
+       fi
+fi
+
+: see if socketpair exists
+set socketpair d_sockpair
+eval $inlibc
+
+
+echo " "
+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
+#include <sys/types.h>
+#include <sys/socket.h>
+int main() {
+    int i = $ENUM;
+}
+EOF
+       val="$undef"
+       set try; if eval $compile; then
+               val="$define"
+       fi
+       set d_${enum}; eval $setvar
+       $rm -f try.c try
+done
+
+set sendmsg d_sendmsg
+eval $inlibc
+
+set recvmsg d_recvmsg
+eval $inlibc
+
+echo " "
+$echo $n "Checking to see if your system supports struct msghdr...$c" >&4
+set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
+eval $hasfield
+case "$d_msghdr_s" in
+"$define")      echo "Yup, it does." >&4
+                ;;
+*)              echo "Nope, it doesn't." >&4
+                ;;
+esac
+
+$echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
+set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
+eval $hasfield
+case "$d_cmsghdr_s" in
+"$define")      echo "Yup, it does." >&4
+                ;;
+*)              echo "Nope, it doesn't." >&4
+                ;;
+esac
+
+: check for const keyword
+echo " "
+echo 'Checking to see if your C compiler knows about "const"...' >&4
+$cat >const.c <<'EOCP'
+typedef struct spug { int drokk; } spug;
+main()
+{
+       const char *foo;
+       const spug y;
+}
+EOCP
+if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
+       val="$define"
+       echo "Yup, it does."
+else
+       val="$undef"
+       echo "Nope, it doesn't."
+fi
+set d_const
+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=''
@@ -6660,6 +6944,18 @@ fi
 set d_crypt
 eval $setvar
 
+: get csh whereabouts
+case "$csh" in
+'csh') val="$undef" ;;
+*) val="$define" ;;
+esac
+set d_csh
+eval $setvar
+: Respect a hint or command line value for full_csh.
+case "$full_csh" in
+'') full_csh=$csh ;;
+esac
+
 : see if cuserid exists
 set cuserid d_cuserid
 eval $inlibc
@@ -6699,10 +6995,52 @@ $rm -f dbl_dig.?
 set d_dbl_dig
 eval $setvar
 
+
+if $test X"$use64bits" = X"$define"; then
+       : see if dbminit64 exists
+       set dbminit64 d_dbminit64
+       eval $inlibc
+
+       : see if dbmclose64 exists
+       set dbmclose64 d_dbmclose64
+       eval $inlibc
+
+       : see if fetch64 exists
+       set fetch64 d_fetch64
+       eval $inlibc
+
+       : see if store64 exists
+       set store64 d_store64
+       eval $inlibc
+
+       : see if delete64 exists
+       set delete64 d_delete64
+       eval $inlibc
+
+       : see if firstkey64 exists
+       set firstkey64 d_firstkey64
+       eval $inlibc
+
+       : see if nextkey64 exists
+       set nextkey64 d_nextkey64
+       eval $inlibc
+else
+       val="$undef"
+       for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
+       do
+               set $xxx
+               eval $setvar
+       done
+fi
+
 : see if difftime exists
 set difftime d_difftime
 eval $inlibc
 
+: see if sys/stat.h is available
+set sys/stat.h i_sysstat
+eval $inhdr
+
 : see if this is a dirent system
 echo " "
 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
@@ -6771,6 +7109,138 @@ set d_dirnamlen
 eval $setvar
 $rm -f try.c
 
+
+if $test X"$use64bits" = X"$define"; then
+       : see if fstat64 exists
+       set fstat64 d_fstat64
+       eval $inlibc
+
+       : see if ftruncate64 exists
+       set ftruncate64 d_ftruncate64
+       eval $inlibc
+
+       : see if lockf64 exists
+       set lockf64 d_lockf64
+       eval $inlibc
+
+       : see if lseek64 exists
+       set lseek64 d_lseek64
+       eval $inlibc
+
+       : see if lstat64 exists
+       set lstat64 d_lstat64
+       eval $inlibc
+
+       : see if open64 exists
+       set open64 d_open64
+       eval $inlibc
+
+       : see if opendir64 exists
+       set opendir64 d_opendir64
+       eval $inlibc
+
+       : see if readdir64 exists
+       set readdir64 d_readdir64
+       eval $inlibc
+
+       : see if seekdir64 exists
+       set seekdir64 d_seekdir64
+       eval $inlibc
+
+       : see if stat64 exists
+       set stat64 d_stat64
+       eval $inlibc
+
+       : see if telldir64 exists
+       set telldir64 d_telldir64
+       eval $inlibc
+
+       : see if truncate64 exists
+       set truncate64 d_truncate64
+       eval $inlibc
+
+       : check for off64_t
+       echo " "
+       echo $n "Checking to see if your system supports off64_t...$c" >&4
+       $cat >try.c <<EOCP
+#include <sys/types.h>
+off64_t foo() { off64_t x; x = 7; return x; }'
+EOCP
+       if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
+               val="$define"
+               echo " Yup, it does." >&4
+       else
+               val="$undef"
+               echo " Nope, it doesn't." >&4
+       fi
+       $rm -f try.*
+       set d_off64t
+       eval $setvar
+
+       : check for ino64_t
+       echo " "
+       echo $n "Checking to see if your system supports ino64_t...$c" >&4
+       val="$undef"
+       case "$i_sysstat" in
+       "$define" )
+               $cat >try.c <<EOCP
+#include <sys/types.h>
+#include <sys/stat.h>
+ino64_t foo() { ino64_t x; x = 7; return x; }'
+EOCP
+               if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
+                       val="$define"
+               fi
+               $rm -f try.*
+               ;;
+       esac
+       if $test "X$val" = X"$define"; then
+               echo " Yup, it does." >&4
+       else
+               echo " Nope, it doesn't." >&4
+       fi
+       set d_ino64t
+       eval $setvar
+
+       : check for struct flock64
+       echo " "
+       echo "Checking to see if your system supports struct flock64..." >&4
+       if $h_fcntl; then
+               set d_flock64_s flock64 l_len define fcntl.h
+               eval $hasfield
+       else
+               val="$undef"
+               set d_flock64_s
+               eval $setvar
+       fi
+       case "$d_flock64_s" in
+       "$define")      echo "Yup, it does." >&4
+                       ;;
+       *)              echo "Nope, it doesn't." >&4
+                       ;;
+       esac
+
+       : check for struct dirent64
+       echo " "
+       echo "Checking to see if your system supports struct dirent64..." >&4
+       set d_dirent64_s dirent64 d_off $i_dirent dirent.h
+       eval $hasfield
+       case "$d_dirent64_s" in
+       "$define")      echo "Yup, it does." >&4
+                       ;;
+       *)              echo "Nope, it doesn't." >&4
+                       ;;
+       esac
+
+else
+       val="$undef"
+       for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64t d_ino64t d_flock64_s d_dirent64_s
+       do
+               set $xxx
+               eval $setvar
+       done
+fi
+
 : see if dlerror exists
 xxx_runnm="$runnm"
 runnm=false
@@ -6887,10 +7357,42 @@ $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
 set d_dlsymun
 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 prototype for drand48 is available
+echo " "
+set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
+eval $hasproto
+
 : see if dup2 exists
 set dup2 d_dup2
 eval $inlibc
 
+: see if eaccess exists
+set eaccess d_eaccess
+eval $inlibc
+
+: see if endgrent exists
+set endgrent d_endgrent
+eval $inlibc
+
 : see if endhostent exists
 set endhostent d_endhent
 eval $inlibc
@@ -6903,6 +7405,10 @@ eval $inlibc
 set endprotoent d_endpent
 eval $inlibc
 
+: see if endpwent exists
+set endpwent d_endpwent
+eval $inlibc
+
 : see if endservent exists
 set endservent d_endsent
 eval $inlibc
@@ -7146,10 +7652,218 @@ eval $inlibc
 set fcntl d_fcntl
 eval $inlibc
 
+: 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
+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
+
+Checking to see how well your C compiler handles fd_set and friends ...
+EOM
+$cat >fd_set.c <<EOCP
+#$i_systime I_SYS_TIME
+#$i_sysselct I_SYS_SELECT
+#$d_socket HAS_SOCKET
+#include <sys/types.h>
+#ifdef HAS_SOCKET
+#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
+#endif
+#ifdef I_SYS_TIME
+#include <sys/time.h>
+#endif
+#ifdef I_SYS_SELECT
+#include <sys/select.h>
+#endif
+main() {
+       fd_set fds;
+
+#ifdef TRYBITS
+       if(fds.fds_bits);
+#endif
+
+#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
+       exit(0);
+#else
+       exit(1);
+#endif
+}
+EOCP
+set fd_set -DTRYBITS
+if eval $compile; then
+       d_fds_bits="$define"
+       d_fd_set="$define"
+       echo "Well, your system knows about the normal fd_set typedef..." >&4
+       if ./fd_set; then
+               echo "and you have the normal fd_set macros (just as I'd expect)." >&4
+               d_fd_macros="$define"
+       else
+               $cat >&4 <<'EOM'
+but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
+EOM
+               d_fd_macros="$undef"
+       fi
+else
+       $cat <<'EOM'
+Hmm, your compiler has some difficulty with fd_set.  Checking further...
+EOM
+       set fd_set
+       if eval $compile; then
+               d_fds_bits="$undef"
+               d_fd_set="$define"
+               echo "Well, your system has some sort of fd_set available..." >&4
+               if ./fd_set; then
+                       echo "and you have the normal fd_set macros." >&4
+                       d_fd_macros="$define"
+               else
+                       $cat <<'EOM'
+but not the normal fd_set macros!  Gross!  More work for me...
+EOM
+                       d_fd_macros="$undef"
+               fi
+       else
+       echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
+               d_fd_set="$undef"
+               d_fds_bits="$undef"
+               d_fd_macros="$undef"
+       fi
+fi
+$rm -f fd_set*
+
 : see if fgetpos exists
 set fgetpos d_fgetpos
 eval $inlibc
 
+
+if $test X"$use64bits" = X"$define"; then
+       : see if fgetpos64 exists
+       set fgetpos64 d_fgetpos64
+       eval $inlibc
+
+       : see if fopen64 exists
+       set freopen64 d_fopen64
+       eval $inlibc
+
+       : see if freopen64 exists
+       set freopen64 d_freopen64
+       eval $inlibc
+
+       : see if fseek64 exists
+       set fseek64 d_fseek64
+       eval $inlibc
+
+       : see if fseeko64 exists
+       set fseeko64 d_fseeko64
+       eval $inlibc
+
+       : see if fsetpos64 exists
+       set fsetpos64 d_fsetpos64
+       eval $inlibc
+
+       : see if ftell64 exists
+       set ftell64 d_ftell64
+       eval $inlibc
+
+       : see if ftello64 exists
+       set ftello64 d_ftello64
+       eval $inlibc
+
+       : see if tmpfile64 exists
+       set tmpfile64 d_tmpfile64
+       eval $inlibc
+else
+       val="$undef"
+       for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
+       do
+               set $xxx
+               eval $setvar
+       done
+fi
+
 : see if flock exists
 set flock d_flock
 eval $inlibc
@@ -7166,10 +7880,22 @@ eval $inlibc
 set fpathconf d_fpathconf
 eval $inlibc
 
+: see if fseeko exists
+set fseeko d_fseeko
+eval $inlibc
+
 : see if fsetpos exists
 set fsetpos d_fsetpos
 eval $inlibc
 
+: see if ftello exists
+set ftello d_ftello
+eval $inlibc
+
+: see if getgrent exists
+set getgrent d_getgrent
+eval $inlibc
+
 : see if gethostbyaddr exists
 set gethostbyaddr d_gethbyaddr
 eval $inlibc
@@ -7182,24 +7908,88 @@ eval $inlibc
 set gethostent d_gethent
 eval $inlibc
 
-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 how we will look up host name
+echo " "
+if false; then
+       : dummy stub to allow use of elif
+elif set gethostname val -f d_gethname; eval $csym; $val; then
+       echo 'gethostname() found.' >&4
+       d_gethname="$define"
+       call=gethostname
+elif set uname val -f d_uname; eval $csym; $val; then
+       if ./xenix; then
+               $cat <<'EOM'
+uname() was found, but you're running xenix, and older versions of xenix
+have a broken uname(). If you don't really know whether your xenix is old
+enough to have a broken system call, use the default answer.
+
+EOM
+               dflt=y
+               case "$d_uname" in
+               "$define") dflt=n;;
+               esac
+               rp='Is your uname() broken?'
+               . ./myread
+               case "$ans" in
+               n*) d_uname="$define"; call=uname;;
+               esac
+       else
+               echo 'uname() found.' >&4
+               d_uname="$define"
+               call=uname
+       fi
+fi
+case "$d_gethname" in
+'') d_gethname="$undef";;
+esac
+case "$d_uname" in
+'') d_uname="$undef";;
+esac
+case "$d_uname$d_gethname" in
+*define*)
+       dflt=n
+       cat <<EOM
+Every now and then someone has a $call() that lies about the hostname
+but can't be fixed for political or economic reasons.  If you wish, I can
+pretend $call() isn't there and maybe compute hostname at run-time
+thanks to the '$phostname' command.
+
+EOM
+       rp="Shall I ignore $call() from now on?"
+       . ./myread
+       case "$ans" in
+       y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
+       esac;;
+esac
+case "$phostname" in
+'') aphostname='';;
+*) case "$aphostname" in
+       /*) ;;
+       *) set X $phostname
+               shift
+               file=$1
+               shift
+               file=`./loc $file $file $pth`
+               aphostname=`echo $file $*`
+               ;;
+       esac
+       ;;
+esac
+case "$d_uname$d_gethname" in
+*define*) ;;
+*)
+       case "$phostname" in
+       '')
+               echo "There will be no way for $package to get your hostname." >&4;;
+       *)
+       echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
+               ;;
+       esac;;
+esac
+case "$d_phostname" in
+'') d_phostname="$undef";;
+esac
 
 : see if this is a netdb.h system
 set netdb.h i_netdb
@@ -7265,6 +8055,11 @@ echo " "
 set d_getprotoprotos getprotoent $i_netdb netdb.h
 eval $hasproto
 
+: see if getpwent exists
+set getpwent d_getpwent
+eval $inlibc
+
+
 : see if getservbyname exists
 set getservbyname d_getsbyname
 eval $inlibc
@@ -7301,11 +8096,36 @@ 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
+       ;;
+*)
+       val="$undef";
+       set d_grpasswd; eval $setvar
+       ;;
+esac
+
 : see if this is a netinet/in.h or sys/in.h system
 set netinet/in.h i_niin sys/in.h i_sysin
 eval $inhdr
 
-: see if this is an arpa/inet.h
+: see if arpa/inet.h has to be included
 set arpa/inet.h i_arpainet
 eval $inhdr
 
@@ -7406,6 +8226,57 @@ set d_index; eval $setvar
 set inet_aton d_inetaton
 eval $inlibc
 
+: 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>
+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
+case "$use64bits" in
+"$define" )
+       echo " "
+       echo $n "Checking to see if your system supports int64_t...$c" >&4
+       $cat >try.c <<EOCP
+#include <sys/types.h>
+#$i_inttypes I_INTTYPES
+#ifdef I_INTTYPES
+#include <inttypes.h>
+#endif
+int64_t foo() { int64_t x; x = 7; return x; }
+EOCP
+       if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
+               val="$define"
+               echo " Yup, it does." >&4
+       else
+               val="$undef"
+               echo " Nope, it doesn't." >&4
+       fi
+       $rm -f try.*
+       ;;
+*)     val="$undef"
+       ;;
+esac
+set d_int64t
+eval $setvar
+
+
 : Look for isascii
 echo " "
 $cat >isascii.c <<'EOCP'
@@ -7479,6 +8350,33 @@ eval $inlibc
 set lockf d_lockf
 eval $inlibc
 
+: check for length of double
+echo " "
+case "$doublesize" in
+'')
+       $echo $n "Checking to see how big your double precision numbers are...$c" >&4
+       $cat >try.c <<'EOCP'
+#include <stdio.h>
+main()
+{
+       printf("%d\n", sizeof(double));
+}
+EOCP
+       set try
+       if eval $compile_ok; then
+               doublesize=`./try`
+               $echo " $doublesize bytes." >&4
+       else
+               dflt='8'
+               echo "(I can't seem to compile the test program.  Guessing...)"
+               rp="What is the size of a double precision number (in bytes)?"
+               . ./myread
+               doublesize="$ans"
+       fi
+       ;;
+esac
+$rm -f try.c try
+
 : check for long doubles
 echo " "
 echo $n "Checking to see if your system supports long doubles...$c" >&4
@@ -7518,6 +8416,9 @@ EOCP
                . ./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.c try
@@ -7561,6 +8462,9 @@ EOCP
                . ./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.c try
@@ -7635,7 +8539,7 @@ case "$osname" in
 freebsd)
     case "`ipcs 2>&1`" in
     "SVID messages"*"not configured"*)
-       echo "But your FreeBSD kernel does not have the msg*(2) configured." >&4
+       echo "Your $osname does not have the msg*(2) configured." >&4
         h_msg=false
        val="$undef"
        set msgctl d_msgctl
@@ -7677,81 +8581,133 @@ eval $inlibc
 set poll d_poll
 eval $inlibc
 
+: how to create joinable pthreads
+if test "X$usethreads" = "X$define"; then
+       echo " "
+       echo "Checking what constant to use for creating joinable pthreads..." >&4 
+       $cat >try.c <<'EOCP'
+#include <pthread.h>
+int main() {
+    int detachstate = JOINABLE;
+}
+EOCP
+       set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
+       if eval $compile; then
+               echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
+               val="$undef"
+               set d_pthread_create_joinable
+               eval $setvar
+               val=0
+               set pthread_create_joinable
+               eval $setvar
+       else
+               set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
+               if eval $compile; then
+                       echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
+                       val="$define"
+                       set d_pthread_create_joinable
+                       eval $setvar
+                       val=PTHREAD_CREATE_UNDETACHED
+                       set pthread_create_joinable
+                       eval $setvar
+               else            
+                       set try -DJOINABLE=__UNDETACHED
+                       if eval $compile; then
+                               echo "You seem to use __UNDETACHED." >&2
+                               val="$define"
+                               set d_pthread_create_joinable
+                               eval $setvar
+                               val=__UNDETACHED
+                               set pthread_create_joinable
+                               eval $setvar
+                       else
+                               echo "Egads, nothing obvious found.  Guessing that you use 0." >&2
+                               val="$define"
+                               set d_pthread_create_joinable
+                               eval $setvar
+                               val=0
+                               set pthread_create_joinable
+                               eval $setvar
+                       fi
+               fi
+       fi
+       $rm -f try try.*
+else
+    d_pthread_create_joinable="$undef"
+    pthread_create_joinable=0
+fi
+
 
-: see whether the various POSIXish _yields exist within given cccmd
+: see whether the various POSIXish _yields exist
 $cat >try.c <<EOP
 #include <pthread.h>
+#include <stdio.h>
 main() {
-       YIELD();
-       exit(0);
+#ifdef SCHED_YIELD
+       sched_yield();
+#else
+#ifdef PTHREAD_YIELD
+       pthread_yield();
+#else
+#ifdef PTHREAD_YIELD_NULL
+       pthread_yield(NULL);
+#endif
+#endif
+#endif
 }
 EOP
-: see if pthread_yield exists within given cccmd,
-: if we do not usethreads this may well end up undef.
-set try -DYIELD=pthread_yield
+: see if sched_yield exists
+set try -DSCHED_YIELD
 if eval $compile; then
     val="$define"
-    echo 'pthread_yield() found.' >&4
+    sched_yield='sched_yield()'
 else
     val="$undef"
-    echo 'pthread_yield() NOT found.' >&4
 fi
-set d_pthread_yield
+case "$usethreads" in
+$define)
+       case "$val" in
+       $define) echo 'sched_yield() found.' >&4        ;;
+       *)       echo 'sched_yield() NOT found.' >&4    ;;
+       esac
+esac
+set d_sched_yield
 eval $setvar
 
-: see if sched_yield exists within given cccmd,
-: if we do not usethreads this may well end up undef.
-set try -DYIELD=sched_yield
+: see if pthread_yield exists
+set try -DPTHREAD_YIELD
 if eval $compile; then
     val="$define"
-    echo 'sched_yield() found.' >&4
+    case "$sched_yield" in
+    '') sched_yield='pthread_yield()' ;;
+    esac
 else
-    val="$undef"
-    echo 'sched_yield() NOT found.' >&4
+    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
-set d_sched_yield
+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
-$rm -f try try.*
 
-: test whether pthreads are created in joinable -- aka undetached -- state
-if test "X$usethreads" = "X$define"; then
-       echo $n "Checking whether pthreads are created joinable. $c" >&4 
-       $cat >try.c <<'EOCP'
-#include <pthread.h>
-#include <stdio.h>
-int main() {
-    pthread_attr_t attr;
-    int detachstate;
-    printf("%s\n",
-       pthread_attr_init(&attr) == 0 &&
-        pthread_attr_getdetachstate(&attr, &detachstate) == 0 &&
-        detachstate == PTHREAD_CREATE_DETACHED ?
-        "detached" : "joinable");
-    exit(0);
-}
-EOCP
-       set try
-       if eval $compile; then
-               yyy=`./try`
-               case "$yyy" in
-                       detached) echo "Nope, they aren't." >&4 ;;
-                       *) echo "Yup, they are." >&4 ;;
-               esac
-       else
-               echo " "
-               echo "(I can't execute the test program--assuming they are.)" >&4
-               yyy=joinable
-       fi
-       $rm -f try try.*
-       case "$yyy" in
-               detached) val="$undef" ;;
-               *) val="$define" ;;
-       esac
-       set d_pthreads_created_joinable
-       eval $setvar
-else
-    d_pthreads_created_joinable="$undef"
-fi
+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
@@ -7759,18 +8715,6 @@ eval $inhdr
 
 case "$i_pwd" in
 $define)
-       : see if setpwent exists
-       set setpwent d_setpwent
-       eval $inlibc
-
-       : see if getpwent exists
-       set getpwent d_getpwent
-       eval $inlibc
-
-       : see if endpwent exists
-       set endpwent d_endpwent
-       eval $inlibc
-
        xxx=`./findhdr pwd.h`
        $cppstdin $cppflags $cppminus < $xxx >$$.h
 
@@ -7840,11 +8784,8 @@ $define)
 
        $rm -f $$.h
        ;;
-*)     # Assume all is lost as far as the d_*pw* go.
+*)
        val="$undef"; 
-       set d_setpwent; eval $setvar
-       set d_getpwent; eval $setvar
-       set d_endpwent; eval $setvar
        set d_pwquota; eval $setvar
        set d_pwage; eval $setvar
        set d_pwchange; eval $setvar
@@ -7870,6 +8811,10 @@ eval $inlibc
 set readlink d_readlink
 eval $inlibc
 
+: see if readv exists
+set readv d_readv
+eval $inlibc
+
 : see if rename exists
 set rename d_rename
 eval $inlibc
@@ -8136,7 +9081,7 @@ case "$osname" in
 freebsd)
     case "`ipcs 2>&1`" in
     "SVID messages"*"not configured"*)
-       echo "But your FreeBSD kernel does not have the sem*(2) configured." >&4
+       echo "Your $osname does not have the sem*(2) configured." >&4
         h_sem=false
        val="$undef"
        set semctl d_semctl
@@ -8176,7 +9121,7 @@ else
     echo "You do not have union semun in <sys/sem.h>." >&4
     val="$undef"
 fi
-$rm -f try try.c
+$rm -f try try.c try.h
 set d_union_semun
 eval $setvar
 
@@ -8185,6 +9130,31 @@ case "$d_sem" in
 $define)
     : see whether semctl IPC_STAT can use union semun
     echo " "
+    $cat > try.h <<END
+#ifndef S_IRUSR
+#   ifdef S_IREAD
+#      define S_IRUSR S_IREAD
+#      define S_IWUSR S_IWRITE
+#      define S_IXUSR S_IEXEC
+#   else
+#      define S_IRUSR 0400
+#      define S_IWUSR 0200
+#      define S_IXUSR 0100
+#   endif
+#   define S_IRGRP (S_IRUSR>>3)
+#   define S_IWGRP (S_IWUSR>>3)
+#   define S_IXGRP (S_IXUSR>>3)
+#   define S_IROTH (S_IRUSR>>6)
+#   define S_IWOTH (S_IWUSR>>6)
+#   define S_IXOTH (S_IXUSR>>6)
+#endif
+#ifndef S_IRWXU
+#   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
+#   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
+#   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
+#endif
+END
+
     $cat > try.c <<END
 #include <sys/types.h>
 #include <sys/ipc.h>
@@ -8192,6 +9162,7 @@ $define)
 #include <sys/stat.h>
 #include <stdio.h>
 #include <errno.h>
+#include "try.h"
 #ifndef errno
 extern int errno;
 #endif
@@ -8257,6 +9228,7 @@ END
 #include <sys/ipc.h>
 #include <sys/sem.h>
 #include <sys/stat.h>
+#include "try.h"
 #include <stdio.h>
 #include <errno.h>
 #ifndef errno
@@ -8300,11 +9272,12 @@ END
     eval $setvar
     case "$d_semctl_semid_ds" in
     $define)
-        echo "You can $also use struct semid_ds * for semctl IPC_STAT." >&4
+        echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
         ;;
-    *)  echo "You cannot use struct semid_ds * for semctl IPC_STAT." >&4
+    *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
         ;;
     esac
+    $rm -f try.h
     ;;
 *)  val="$undef"
 
@@ -8327,6 +9300,10 @@ eval $inlibc
 set seteuid d_seteuid
 eval $inlibc
 
+: see if setgrent exists
+set setgrent d_setgrent
+eval $inlibc
+
 : see if sethostent exists
 set sethostent d_sethent
 eval $inlibc
@@ -8359,6 +9336,10 @@ eval $inlibc
 set setpriority d_setprior
 eval $inlibc
 
+: see if setpwent exists
+set setpwent d_setpwent
+eval $inlibc
+
 : see if setregid exists
 set setregid d_setregid
 eval $inlibc
@@ -8499,7 +9480,7 @@ case "$osname" in
 freebsd)
     case "`ipcs 2>&1`" in
     "SVID shared memory"*"not configured"*)
-       echo "But your FreeBSD kernel does not have the shm*(2) configured." >&4
+       echo "Your $osname does not have the shm*(2) configured." >&4
         h_shm=false
        val="$undef"
        set shmctl d_shmctl
@@ -8566,107 +9547,41 @@ main()
                exit(set);
        set = 0;
        siglongjmp(env, 1);
-       exit(1);
-}
-EOP
-       set try
-       if eval $compile; then
-               if ./try >/dev/null 2>&1; then
-                       echo "POSIX sigsetjmp found." >&4
-                       val="$define"
-               else
-                       $cat >&4 <<EOM
-Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
-I'll ignore them.
-EOM
-                       val="$undef"
-               fi
-       else
-               echo "sigsetjmp not found." >&4
-               val="$undef"
-       fi
-       ;;
-*) val="$d_sigsetjmp"
-       case "$d_sigsetjmp" in
-       $define) echo "POSIX sigsetjmp found." >&4;;
-       $undef) echo "sigsetjmp not found." >&4;;
-       esac
-       ;;
-esac
-set d_sigsetjmp
-eval $setvar
-$rm -f try.c try
-
-socketlib=''
-sockethdr=''
-: see whether socket exists
-echo " "
-$echo $n "Hmm... $c" >&4
-if set socket val -f d_socket; eval $csym; $val; then
-       echo "Looks like you have Berkeley networking support." >&4
-       d_socket="$define"
-       if set setsockopt val -f; eval $csym; $val; then
-               d_oldsock="$undef"
-       else
-               echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
-               d_oldsock="$define"
-       fi
-else
-       if $contains socklib libc.list >/dev/null 2>&1; then
-               echo "Looks like you have Berkeley networking support." >&4
-               d_socket="$define"
-               : we will have to assume that it supports the 4.2 BSD interface
-               d_oldsock="$undef"
-       else
-               echo "You don't have Berkeley networking in libc$_a..." >&4
-               if test -f /usr/lib/libnet$_a; then
-                       ( ($nm $nm_opt /usr/lib/libnet$_a | eval $nm_extract) ||  \
-                       $ar t /usr/lib/libnet$_a) 2>/dev/null >> libc.list
-                       if $contains socket libc.list >/dev/null 2>&1; then
-                       echo "...but the Wollongong group seems to have hacked it in." >&4
-                               socketlib="-lnet"
-                               sockethdr="-I/usr/netinclude"
-                               d_socket="$define"
-                               if $contains setsockopt libc.list >/dev/null 2>&1; then
-                                       d_oldsock="$undef"
-                               else
-                                       echo "...using the old 4.1c interface, rather than 4.2" >&4
-                                       d_oldsock="$define"
-                               fi
-                       else
-                               echo "or even in libnet$_a, which is peculiar." >&4
-                               d_socket="$undef"
-                               d_oldsock="$undef"
-                       fi
+       exit(1);
+}
+EOP
+       set try
+       if eval $compile; then
+               if ./try >/dev/null 2>&1; then
+                       echo "POSIX sigsetjmp found." >&4
+                       val="$define"
                else
-                       echo "or anywhere else I see." >&4
-                       d_socket="$undef"
-                       d_oldsock="$undef"
+                       $cat >&4 <<EOM
+Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
+I'll ignore them.
+EOM
+                       val="$undef"
                fi
-       fi
-fi
-
-: see if socketpair exists
-set socketpair d_sockpair
-eval $inlibc
-
-: see if stat knows about block sizes
-echo " "
-xxx=`./findhdr sys/stat.h`
-if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
-       if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
-               echo "Your stat() knows about block sizes." >&4
-               val="$define"
        else
-               echo "Your stat() doesn't know about block sizes." >&4
+               echo "sigsetjmp not found." >&4
                val="$undef"
        fi
-else
-       echo "Your stat() doesn't know about block sizes." >&4
-       val="$undef"
-fi
-set d_statblks
+       ;;
+*) val="$d_sigsetjmp"
+       case "$d_sigsetjmp" in
+       $define) echo "POSIX sigsetjmp found." >&4;;
+       $undef) echo "sigsetjmp not found." >&4;;
+       esac
+       ;;
+esac
+set d_sigsetjmp
 eval $setvar
+$rm -f try.c try
+
+: see if stat knows about block sizes
+echo " "
+set d_statblks stat st_blocks $i_sysstat sys/stat.h
+eval $hasfield
 
 : see if _ptr and _cnt from stdio act std
 echo " "
@@ -8827,38 +9742,38 @@ $rm -f try.*
 echo " "
 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
     if set strerror val -f d_strerror; eval $csym; $val; then
-       echo 'strerror() found.' >&4
-       d_strerror="$define"
-       d_strerrm='strerror(e)'
-       if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
-           echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
-           d_syserrlst="$define"
-       else
-           echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
-           d_syserrlst="$undef"
-       fi
+               echo 'strerror() found.' >&4
+               d_strerror="$define"
+               d_strerrm='strerror(e)'
+               if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
+                       echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
+                       d_syserrlst="$define"
+               else
+                       echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
+                       d_syserrlst="$undef"
+               fi
     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
-       $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
-       echo 'strerror() found in string header.' >&4
-       d_strerror="$define"
-       d_strerrm='strerror(e)'
-       if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
-       echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
-           d_syserrlst="$define"
-       else
-           echo "(You don't appear to have any sys_errlist[], how can this be?)"
-       d_syserrlst="$undef"
-       fi
+                       $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
+               echo 'strerror() found in string header.' >&4
+               d_strerror="$define"
+               d_strerrm='strerror(e)'
+               if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
+                       echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
+                               d_syserrlst="$define"
+               else
+                       echo "(You don't appear to have any sys_errlist[], how can this be?)"
+                       d_syserrlst="$undef"
+               fi
     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
-echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
-       d_strerror="$undef"
-       d_syserrlst="$define"
-       d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
+               echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
+               d_strerror="$undef"
+               d_syserrlst="$define"
+               d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
     else
-       echo 'strerror() and sys_errlist[] NOT found.' >&4
-       d_strerror="$undef"
-       d_syserrlst="$undef"
-       d_strerrm='"unknown"'
+               echo 'strerror() and sys_errlist[] NOT found.' >&4
+               d_strerror="$undef"
+               d_syserrlst="$undef"
+               d_strerrm='"unknown"'
     fi
 fi
 
@@ -9000,43 +9915,6 @@ eval $setvar
 set umask d_umask
 eval $inlibc
 
-: see how we will look up host name
-echo " "
-if false; then
-       : dummy stub to allow use of elif
-elif set uname val -f d_uname; eval $csym; $val; then
-       if ./xenix; then
-               $cat <<'EOM'
-uname() was found, but you're running xenix, and older versions of xenix
-have a broken uname(). If you don't really know whether your xenix is old
-enough to have a broken system call, use the default answer.
-
-EOM
-               dflt=y
-               case "$d_uname" in
-               "$define") dflt=n;;
-               esac
-               rp='Is your uname() broken?'
-               . ./myread
-               case "$ans" in
-               n*) d_uname="$define"; call=uname;;
-               esac
-       else
-               echo 'uname() found.' >&4
-               d_uname="$define"
-               call=uname
-       fi
-fi
-case "$d_gethname" in
-'') d_gethname="$undef";;
-esac
-case "$d_uname" in
-'') d_uname="$undef";;
-esac
-case "$d_phostname" in
-'') d_phostname="$undef";;
-esac
-
 : backward compatibility for d_hvfork
 if test X$d_hvfork != X; then
        d_vfork="$d_hvfork"
@@ -9191,6 +10069,10 @@ eval $inlibc
 set wctomb d_wctomb
 eval $inlibc
 
+: see if writev exists
+set writev d_writev
+eval $inlibc
+
 : preserve RCS keywords in files with variable substitution, grrr
 Date='$Date'
 Id='$Id'
@@ -9583,50 +10465,169 @@ EOM
 esac
 $rm -f try.* .out
 
-: check for length of double
+
+: How can we generate normalized random numbers ?
 echo " "
-case "$doublesize" in
+echo "Looking for a random number function..." >&4
+case "$randfunc" in
 '')
-       $echo $n "Checking to see how big your double precision numbers are...$c" >&4
-       $cat >try.c <<'EOCP'
+       if set drand48 val -f; eval $csym; $val; then
+               dflt="drand48"
+               echo "Good, found drand48()." >&4
+       elif set random val -f; eval $csym; $val; then
+               dflt="random"
+               echo "OK, found random()." >&4
+       else
+               dflt="rand"
+               echo "Yick, looks like I have to use rand()." >&4
+       fi
+       echo " "
+       ;;
+*)
+       dflt="$randfunc"
+       ;;
+esac
+cont=true
+
+case "$ccflags" in
+*-Dmy_rand=*|*-Dmy_srand=*)
+       echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
+       ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
+       ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
+       ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
+       ;;
+esac
+
+while $test "$cont"; do
+       rp="Use which function to generate random numbers?"
+       . ./myread
+       if $test "$ans" = "$dflt"; then
+               : null
+       else
+               randbits=''
+       fi
+       randfunc="$ans"
+       if set $ans val -f; eval $csym; $val; then
+               cont=''
+       else
+                dflt=y
+                rp="I cannot find function $ans.  Use that name anyway?"
+               . ./myread
+               dflt=rand
+               case "$ans" in
+                       [yY]*) cont='';;
+               esac
+       fi
+       case "$cont" in
+       '')
+               case "$randfunc" in
+               drand48)
+                       drand01="drand48()"
+                       seedfunc="srand48"
+                       randbits=48
+                       randseedtype=long
+                       ;;
+               rand|random)
+                       case "$randbits" in
+                       '')
+echo "Checking to see how many bits your $randfunc() function produces..." >&4
+                               $cat >try.c <<EOCP
+#$i_unistd I_UNISTD
+#$i_stdlib I_STDLIB
 #include <stdio.h>
+#ifdef I_UNISTD
+#  include <unistd.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
 main()
 {
-       printf("%d\n", sizeof(double));
+       register int i;
+       register unsigned long tmp;
+       register unsigned long max = 0L;
+
+       for (i = 1000; i; i--) {
+               tmp = (unsigned long) $randfunc();
+               if (tmp > max) max = tmp;
+       }
+       for (i = 0; max; i++)
+               max /= 2;
+       printf("%d\n",i);
 }
 EOCP
-       set try
-       if eval $compile_ok; then
-               doublesize=`./try`
-               $echo " $doublesize bytes." >&4
+                               set try
+                               if eval $compile_ok; then
+                                       dflt=`try`
+                               else
+                                       dflt='?'
+                                       echo "(I can't seem to compile the test program...)"
+                               fi
+                               ;;
+                       *)
+                               dflt="$randbits"
+                               ;;
+                       esac
+                       rp="How many bits does your $randfunc() function produce?"
+                       . ./myread
+                       randbits="$ans"
+                       $rm -f try.c try
+                       drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
+                       seedfunc="s$randfunc"
+                       randseedtype=unsigned
+                       ;;
+               *)
+                       dflt="31"
+                       rp="How many bits does your $randfunc() function produce?"
+                       . ./myread
+                       randbits="$ans"
+                       seedfunc="s$randfunc"
+                       drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
+                       if set $seedfunc val -f; eval $csym; $val; then
+                               echo "(Using $seedfunc() to seed random generator)"
+                       else
+                               echo "(Warning: no $seedfunc() to seed random generator)"
+                               seedfunc=rand
+                       fi
+                       randseedtype=unsigned
+                       ;;
+               esac
+               ;;
+       esac
+done
+
+echo " "
+echo "Determining whether or not we are on an EBCDIC system..." >&4
+$cat >tebcdic.c <<'EOM'
+int main()
+{
+  if ('M'==0xd4) return 0;
+  return 1;
+}
+EOM
+
+val=$undef
+set tebcdic
+if eval $compile_ok; then
+       if ./tebcdic; then
+               echo "You have EBCDIC." >&4
+               val="$define"
        else
-               dflt='8'
-               echo "(I can't seem to compile the test program.  Guessing...)"
-               rp="What is the size of a double precision number (in bytes)?"
-               . ./myread
-               doublesize="$ans"
+               echo "Nope, no EBCDIC.  Assuming ASCII or some ISO Latin." >&4
        fi
-       ;;
-esac
-$rm -f try.c try
+else
+       echo "I'm unable to compile the test program." >&4
+       echo "I'll assume ASCII or some ISO Latin." >&4
+fi
+$rm -f tebcdic.c tebcdic
+set ebcdic
+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
 
-: get csh whereabouts
-case "$csh" in
-'csh') val="$undef" ;;
-*) val="$define" ;;
-esac
-set d_csh
-eval $setvar
-: Respect a hint or command line value for full_csh.
-case "$full_csh" in
-'') full_csh=$csh ;;
-esac
-
 : Store the full pathname to the sed program for use in the C program
 full_sed=$sed
 
@@ -9689,6 +10690,30 @@ set off_t lseektype long stdio.h sys/types.h
 eval $typedef_ask
 
 echo " "
+$echo $n "Checking to see how big your file offsets are...$c" >&4
+$cat >try.c <<EOCP
+#include <sys/types.h>
+#include <stdio.h>
+main()
+{
+       printf("%d\n", sizeof($lseektype));
+}
+EOCP
+set try
+if eval $compile_ok; then
+       lseeksize=`./try`
+       $echo " $lseeksize bytes." >&4
+else
+       dflt='4'
+       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
+
+echo " "
 echo "Checking if your $make program sets \$(MAKE)..." >&4
 case "$make_set_make" in
 '')
@@ -9921,82 +10946,33 @@ echo " "
 case "$ptrsize" in
 '')
        $echo $n "Checking to see how big your pointers are...$c" >&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>
-main()
-{
-       printf("%d\n", sizeof(VOID_PTR));
-       exit(0);
-}
-EOCP
-       set try
-       if eval $compile_ok; then
-               ptrsize=`./try`
-               $echo " $ptrsize bytes." >&4
-       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 size of random number generator
-echo " "
-case "$randbits" in
-'')
-       echo "Checking to see how many bits your rand function produces..." >&4
-       $cat >try.c <<EOCP
-#$i_unistd I_UNISTD
-#$i_stdlib I_STDLIB
-#include <stdio.h>
-#ifdef I_UNISTD
-#  include <unistd.h>
-#endif
-#ifdef I_STDLIB
-#  include <stdlib.h>
-#endif
-EOCP
+       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>
 main()
 {
-       register int i;
-       register unsigned long tmp;
-       register unsigned long max = 0L;
-
-       for (i = 1000; i; i--) {
-               tmp = (unsigned long)rand();
-               if (tmp > max) max = tmp;
-       }
-       for (i = 0; max; i++)
-               max /= 2;
-       printf("%d\n",i);
+       printf("%d\n", sizeof(VOID_PTR));
+       exit(0);
 }
 EOCP
        set try
        if eval $compile_ok; then
-               dflt=`./try$_exe`
+               ptrsize=`./try`
+               $echo " $ptrsize bytes." >&4
        else
-               dflt='?'
-               echo "(I can't seem to compile the test program...)"
+               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
        ;;
-*)
-       dflt="$randbits"
-       ;;
 esac
-rp='How many bits does your rand() function produce?'
-. ./myread
-randbits="$ans"
-$rm -f try.* try
+$rm -f try.c try
 
 : see if ar generates random libraries by itself
 echo " "
@@ -10041,168 +11017,6 @@ else
 fi
 $rm -f foo* bar* 
 
-: 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
-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
-
-Checking to see how well your C compiler handles fd_set and friends ...
-EOM
-$cat >fd_set.c <<EOCP
-#$i_systime I_SYS_TIME
-#$i_sysselct I_SYS_SELECT
-#$d_socket HAS_SOCKET
-#include <sys/types.h>
-#ifdef HAS_SOCKET
-#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
-#endif
-#ifdef I_SYS_TIME
-#include <sys/time.h>
-#endif
-#ifdef I_SYS_SELECT
-#include <sys/select.h>
-#endif
-main() {
-       fd_set fds;
-
-#ifdef TRYBITS
-       if(fds.fds_bits);
-#endif
-
-#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
-       exit(0);
-#else
-       exit(1);
-#endif
-}
-EOCP
-set fd_set -DTRYBITS
-if eval $compile; then
-       d_fds_bits="$define"
-       d_fd_set="$define"
-       echo "Well, your system knows about the normal fd_set typedef..." >&4
-       if ./fd_set; then
-               echo "and you have the normal fd_set macros (just as I'd expect)." >&4
-               d_fd_macros="$define"
-       else
-               $cat >&4 <<'EOM'
-but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
-EOM
-               d_fd_macros="$undef"
-       fi
-else
-       $cat <<'EOM'
-Hmm, your compiler has some difficulty with fd_set.  Checking further...
-EOM
-       set fd_set
-       if eval $compile; then
-               d_fds_bits="$undef"
-               d_fd_set="$define"
-               echo "Well, your system has some sort of fd_set available..." >&4
-               if ./fd_set; then
-                       echo "and you have the normal fd_set macros." >&4
-                       d_fd_macros="$define"
-               else
-                       $cat <<'EOM'
-but not the normal fd_set macros!  Gross!  More work for me...
-EOM
-                       d_fd_macros="$undef"
-               fi
-       else
-       echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
-               d_fd_set="$undef"
-               d_fds_bits="$undef"
-               d_fd_macros="$undef"
-       fi
-fi
-$rm -f fd_set*
-
 : check for type of arguments to select. 
 case "$selecttype" in
 '') case "$d_select" in
@@ -10217,8 +11031,10 @@ EOM
                : The first arg can be int, unsigned, or size_t
                : The last arg may or may not be 'const'
                val=''
+               : void pointer has been seen but using that
+               : breaks the selectminbits test
                for xxx in 'fd_set *' 'int *'; do
-                       for nfd in 'int' 'size_t' 'unsigned' ; do
+                       for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
                                for tmo in 'struct timeval *' 'const struct timeval *'; do
                                        case "$val" in
                                        '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
@@ -10250,6 +11066,100 @@ EOM
        ;;
 esac
 
+: check for the select 'width'
+case "$selectminbits" in
+'') case "$d_select" in
+       $define)
+               $cat <<EOM
+
+Checking to see on how many bits at a time your select() operates...
+EOM
+               $cat >try.c <<EOCP
+#include <sys/types.h>
+#$i_time I_TIME
+#$i_systime I_SYS_TIME
+#$i_systimek I_SYS_TIME_KERNEL
+#ifdef I_TIME
+#   include <time.h>
+#endif
+#ifdef I_SYS_TIME
+#   ifdef I_SYS_TIME_KERNEL
+#      define KERNEL
+#   endif
+#   include <sys/time.h>
+#   ifdef I_SYS_TIME_KERNEL
+#      undef KERNEL
+#   endif
+#endif
+#$i_sysselct I_SYS_SELECT
+#ifdef I_SYS_SELECT
+#include <sys/select.h>
+#endif
+#include <stdio.h>
+$selecttype b;
+#define S sizeof(*(b))
+#define MINBITS        64
+#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
+#define NBITS  (NBYTES * 8)
+int main() {
+    char s[NBYTES];
+    struct timeval t;
+    int i;
+    FILE* fp;
+    int fd;
+
+    fclose(stdin);
+    fp = fopen("try.c", "r");
+    if (fp == 0)
+      exit(1);
+    fd = fileno(fp);
+    if (fd < 0)
+      exit(2);
+    b = ($selecttype)s;
+    for (i = 0; i < NBITS; i++)
+       FD_SET(i, b);
+    t.tv_sec  = 0;
+    t.tv_usec = 0;
+    select(fd + 1, b, 0, 0, &t);
+    for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
+    printf("%d\n", i + 1);
+    return 0;
+}
+EOCP
+               set try
+               if eval $compile_ok; then
+                       selectminbits=`./try`
+                       case "$selectminbits" in
+                       '')     cat >&4 <<EOM
+Cannot figure out on how many bits at a time your select() operates.
+I'll play safe and guess it is 32 bits.
+EOM
+                               selectminbits=32
+                               bits="32 bits"
+                               ;;
+                       1)      bits="1 bit" ;;
+                       *)      bits="$selectminbits bits" ;;
+                       esac
+                       echo "Your select() operates on $bits at a time." >&4
+               else
+                       rp='What is the minimum number of bits your select() operates on?'
+                       case "$byteorder" in
+                       1234|12345678)  dflt=32 ;;
+                       *)              dflt=1  ;;
+                       esac
+                       . ./myread
+                       val=$ans
+                       selectminbits="$val"
+               fi
+               $rm -f try.* try
+               ;;
+       *)      : no select, so pick a harmless default
+               selectminbits='32'
+               ;;
+       esac
+       ;;
+esac
+
 : Trace out the files included by signal.h, then look for SIGxxx names.
 : Remove SIGARRAYSIZE used by HPUX.
 : Remove SIGTYP void lines used by OS2.
@@ -10458,7 +11368,13 @@ $eunicefix signal_cmd
 : generate list of signal names
 echo " "
 case "$sig_name_init" in
-'')
+'') doinit=yes ;;
+*)  case "$sig_num_init" in
+    ''|*,*) doinit=yes ;;
+    esac ;;
+esac
+case "$doinit" in
+yes)
        echo "Generating a list of signal names and numbers..." >&4
        . ./signal_cmd
        sig_name=`$awk '{printf "%s ", $1}' signal.lst`
@@ -10466,7 +11382,9 @@ case "$sig_name_init" in
        sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
                                                { printf "\"%s\", ", $1 }
                                                END { printf "0\n" }' signal.lst`
-       sig_num=`$awk 'BEGIN { printf "0, " }
+       sig_num=`$awk '{printf "%d ", $2}' signal.lst`
+       sig_num="0 $sig_num"
+       sig_num_init=`$awk 'BEGIN { printf "0, " }
                                        { printf "%d, ", $2}
                                        END { printf "0\n"}' signal.lst`
        ;;
 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
+               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';
+               echo 'time() not found, hope that will do.' >&4
+               val="$undef"
+               timetype='int';
     fi
     set d_time
     eval $setvar
@@ -10665,49 +11583,19 @@ esac
 set i_fcntl
 eval $setvar
 
-: see if this is an grp system
-set grp.h i_grp
+: see if locale.h is available
+set locale.h i_locale
 eval $inhdr
 
-case "$i_grp" in
-$define)
-       : see if setgrent exists
-       set setgrent d_setgrent
-       eval $inlibc
-
-       : see if getgrent exists
-       set getgrent d_getgrent
-       eval $inlibc
-
-       : see if endgrent exists
-       set endgrent d_endgrent
-       eval $inlibc
-
-       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
+: see if mach cthreads are available
+if test "X$usethreads" = "X$define"; then
+       set mach/cthreads.h i_machcthr
+       eval $inhdr
+else
+       i_machcthr="$undef"
+fi
 
-       $rm -f $$.h
-       ;;
-*)     # Assume all is lost as far as the d_*gr* go.
-       val="$undef"; 
-       set d_setgrent; eval $setvar
-       set d_getgrent; eval $setvar
-       set d_endgrent; eval $setvar
-       set d_grpasswd; eval $setvar
-       ;;
-esac
 
-: see if locale.h is available
-set locale.h i_locale
-eval $inhdr
 
 : see if this is a math.h system
 set math.h i_math
@@ -10762,6 +11650,10 @@ esac
 set i_neterrno
 eval $setvar
 
+: see if this is a poll.h system
+set poll.h i_poll
+eval $inhdr
+
 : get C preprocessor symbols handy
 echo " "
 $echo $n "Hmm... $c"
@@ -10830,7 +11722,13 @@ $rm -f try.c
 EOS
 chmod +x ccsym
 $eunicefix ccsym
-./ccsym | $sort | $uniq >ccsym.raw
+./ccsym > ccsym1.raw
+if $test -s ccsym1.raw; then
+       $sort ccsym1.raw | $uniq >ccsym.raw
+else
+       mv ccsym1.raw ccsym.raw
+fi
+
 $awk '/\=/ { print $0; next }
        { print $0"=1" }' ccsym.raw >ccsym.list
 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
@@ -11026,6 +11924,10 @@ $rm -f varargs*
 set stddef.h i_stddef
 eval $inhdr
 
+: see if sys/access.h is available
+set sys/access.h i_sysaccess
+eval $inhdr
+
 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
 set sys/filio.h i_sysfilio
 eval $inhdr
@@ -11055,8 +11957,8 @@ eval $inhdr
 set sys/resource.h i_sysresrc
 eval $inhdr
 
-: see if sys/stat.h is available
-set sys/stat.h i_sysstat
+: see if sys/security.h is available
+set sys/security.h i_syssecrt
 eval $inhdr
 
 : see if this is a sys/un.h system
@@ -11195,6 +12097,7 @@ for xxx in $known_extensions ; do
                esac
                ;;
        IPC/SysV|ipc/sysv)
+               : XXX Do we need a useipcsysv variable here
                case "${d_msg}${d_sem}${d_shm}" in 
                *"${define}"*) avail_ext="$avail_ext $xxx" ;;
                esac
@@ -11424,6 +12327,7 @@ apiversion='$apiversion'
 ar='$ar'
 archlib='$archlib'
 archlibexp='$archlibexp'
+archname64='$archname64'
 archname='$archname'
 archobjs='$archobjs'
 awk='$awk'
@@ -11464,6 +12368,7 @@ cryptlib='$cryptlib'
 csh='$csh'
 d_Gconvert='$d_Gconvert'
 d_access='$d_access'
+d_accessx='$d_accessx'
 d_alarm='$d_alarm'
 d_archlib='$d_archlib'
 d_attribut='$d_attribut'
@@ -11480,18 +12385,25 @@ d_chown='$d_chown'
 d_chroot='$d_chroot'
 d_chsize='$d_chsize'
 d_closedir='$d_closedir'
+d_cmsghdr_s='$d_cmsghdr_s'
 d_const='$d_const'
 d_crypt='$d_crypt'
 d_csh='$d_csh'
 d_cuserid='$d_cuserid'
 d_dbl_dig='$d_dbl_dig'
+d_dbmclose64='$d_dbmclose64'
+d_dbminit64='$d_dbminit64'
+d_delete64='$d_delete64'
 d_difftime='$d_difftime'
+d_dirent64_s='$d_dirent64_s'
 d_dirnamlen='$d_dirnamlen'
 d_dlerror='$d_dlerror'
 d_dlopen='$d_dlopen'
 d_dlsymun='$d_dlsymun'
 d_dosuid='$d_dosuid'
+d_drand48proto='$d_drand48proto'
 d_dup2='$d_dup2'
+d_eaccess='$d_eaccess'
 d_endgrent='$d_endgrent'
 d_endhent='$d_endhent'
 d_endnent='$d_endnent'
@@ -11506,13 +12418,28 @@ d_fcntl='$d_fcntl'
 d_fd_macros='$d_fd_macros'
 d_fd_set='$d_fd_set'
 d_fds_bits='$d_fds_bits'
+d_fetch64='$d_fetch64'
+d_fgetpos64='$d_fgetpos64'
 d_fgetpos='$d_fgetpos'
+d_firstkey64='$d_firstkey64'
 d_flexfnam='$d_flexfnam'
+d_flock64_s='$d_flock64_s'
 d_flock='$d_flock'
+d_fopen64='$d_fopen64'
 d_fork='$d_fork'
 d_fpathconf='$d_fpathconf'
+d_freopen64='$d_freopen64'
+d_fseek64='$d_fseek64'
+d_fseeko64='$d_fseeko64'
+d_fseeko='$d_fseeko'
+d_fsetpos64='$d_fsetpos64'
 d_fsetpos='$d_fsetpos'
+d_fstat64='$d_fstat64'
+d_ftell64='$d_ftell64'
+d_ftello64='$d_ftello64'
+d_ftello='$d_ftello'
 d_ftime='$d_ftime'
+d_ftruncate64='$d_ftruncate64'
 d_getgrent='$d_getgrent'
 d_getgrps='$d_getgrps'
 d_gethbyaddr='$d_gethbyaddr'
@@ -11545,14 +12472,20 @@ d_grpasswd='$d_grpasswd'
 d_htonl='$d_htonl'
 d_index='$d_index'
 d_inetaton='$d_inetaton'
+d_ino64t='$d_ino64t'
+d_int64t='$d_int64t'
+d_iovec_s='$d_iovec_s'
 d_isascii='$d_isascii'
 d_killpg='$d_killpg'
 d_lchown='$d_lchown'
 d_link='$d_link'
 d_locconv='$d_locconv'
+d_lockf64='$d_lockf64'
 d_lockf='$d_lockf'
 d_longdbl='$d_longdbl'
 d_longlong='$d_longlong'
+d_lseek64='$d_lseek64'
+d_lstat64='$d_lstat64'
 d_lstat='$d_lstat'
 d_mblen='$d_mblen'
 d_mbstowcs='$d_mbstowcs'
@@ -11565,33 +12498,46 @@ d_mkdir='$d_mkdir'
 d_mkfifo='$d_mkfifo'
 d_mktime='$d_mktime'
 d_msg='$d_msg'
+d_msg_ctrunc='$d_msg_ctrunc'
+d_msg_dontroute='$d_msg_dontroute'
+d_msg_oob='$d_msg_oob'
+d_msg_peek='$d_msg_peek'
+d_msg_proxy='$d_msg_proxy'
 d_msgctl='$d_msgctl'
 d_msgget='$d_msgget'
+d_msghdr_s='$d_msghdr_s'
 d_msgrcv='$d_msgrcv'
 d_msgsnd='$d_msgsnd'
 d_mymalloc='$d_mymalloc'
+d_nextkey64='$d_nextkey64'
 d_nice='$d_nice'
+d_off64t='$d_off64t'
 d_oldpthreads='$d_oldpthreads'
 d_oldsock='$d_oldsock'
 d_open3='$d_open3'
+d_open64='$d_open64'
+d_opendir64='$d_opendir64'
 d_pathconf='$d_pathconf'
 d_pause='$d_pause'
 d_phostname='$d_phostname'
 d_pipe='$d_pipe'
 d_poll='$d_poll'
 d_portable='$d_portable'
+d_pthread_create_joinable='$d_pthread_create_joinable'
 d_pthread_yield='$d_pthread_yield'
-d_pthreads_created_joinable='$d_pthreads_created_joinable'
 d_pwage='$d_pwage'
 d_pwchange='$d_pwchange'
 d_pwclass='$d_pwclass'
 d_pwcomment='$d_pwcomment'
 d_pwexpire='$d_pwexpire'
 d_pwgecos='$d_pwgecos'
-d_pwquota='$d_pwquota'
 d_pwpasswd='$d_pwpasswd'
+d_pwquota='$d_pwquota'
+d_readdir64='$d_readdir64'
 d_readdir='$d_readdir'
 d_readlink='$d_readlink'
+d_readv='$d_readv'
+d_recvmsg='$d_recvmsg'
 d_rename='$d_rename'
 d_rewinddir='$d_rewinddir'
 d_rmdir='$d_rmdir'
@@ -11599,6 +12545,8 @@ d_safebcpy='$d_safebcpy'
 d_safemcpy='$d_safemcpy'
 d_sanemcmp='$d_sanemcmp'
 d_sched_yield='$d_sched_yield'
+d_scm_rights='$d_scm_rights'
+d_seekdir64='$d_seekdir64'
 d_seekdir='$d_seekdir'
 d_select='$d_select'
 d_sem='$d_sem'
@@ -11607,6 +12555,7 @@ d_semctl_semid_ds='$d_semctl_semid_ds'
 d_semctl_semun='$d_semctl_semun'
 d_semget='$d_semget'
 d_semop='$d_semop'
+d_sendmsg='$d_sendmsg'
 d_setegid='$d_setegid'
 d_seteuid='$d_seteuid'
 d_setgrent='$d_setgrent'
@@ -11641,11 +12590,13 @@ d_sigaction='$d_sigaction'
 d_sigsetjmp='$d_sigsetjmp'
 d_socket='$d_socket'
 d_sockpair='$d_sockpair'
+d_stat64='$d_stat64'
 d_statblks='$d_statblks'
 d_stdio_cnt_lval='$d_stdio_cnt_lval'
 d_stdio_ptr_lval='$d_stdio_ptr_lval'
 d_stdiobase='$d_stdiobase'
 d_stdstdio='$d_stdstdio'
+d_store64='$d_store64'
 d_strchr='$d_strchr'
 d_strcoll='$d_strcoll'
 d_strctcpy='$d_strctcpy'
@@ -11664,9 +12615,12 @@ d_syserrlst='$d_syserrlst'
 d_system='$d_system'
 d_tcgetpgrp='$d_tcgetpgrp'
 d_tcsetpgrp='$d_tcsetpgrp'
+d_telldir64='$d_telldir64'
 d_telldir='$d_telldir'
 d_time='$d_time'
 d_times='$d_times'
+d_tmpfile64='$d_tmpfile64'
+d_truncate64='$d_truncate64'
 d_truncate='$d_truncate'
 d_tzname='$d_tzname'
 d_umask='$d_umask'
@@ -11682,6 +12636,7 @@ d_wait4='$d_wait4'
 d_waitpid='$d_waitpid'
 d_wcstombs='$d_wcstombs'
 d_wctomb='$d_wctomb'
+d_writev='$d_writev'
 d_xenix='$d_xenix'
 date='$date'
 db_hashtype='$db_hashtype'
@@ -11691,6 +12646,7 @@ direntrytype='$direntrytype'
 dlext='$dlext'
 dlsrc='$dlsrc'
 doublesize='$doublesize'
+drand01='$drand01'
 dynamic_ext='$dynamic_ext'
 eagain='$eagain'
 ebcdic='$ebcdic'
@@ -11731,8 +12687,10 @@ i_fcntl='$i_fcntl'
 i_float='$i_float'
 i_gdbm='$i_gdbm'
 i_grp='$i_grp'
+i_inttypes='$i_inttypes'
 i_limits='$i_limits'
 i_locale='$i_locale'
+i_machcthr='$i_machcthr'
 i_malloc='$i_malloc'
 i_math='$i_math'
 i_memory='$i_memory'
@@ -11740,6 +12698,7 @@ i_ndbm='$i_ndbm'
 i_netdb='$i_netdb'
 i_neterrno='$i_neterrno'
 i_niin='$i_niin'
+i_poll='$i_poll'
 i_pwd='$i_pwd'
 i_rpcsvcdbm='$i_rpcsvcdbm'
 i_sfio='$i_sfio'
@@ -11748,6 +12707,7 @@ i_stdarg='$i_stdarg'
 i_stddef='$i_stddef'
 i_stdlib='$i_stdlib'
 i_string='$i_string'
+i_sysaccess='$i_sysaccess'
 i_sysdir='$i_sysdir'
 i_sysfile='$i_sysfile'
 i_sysfilio='$i_sysfilio'
@@ -11756,6 +12716,7 @@ i_sysioctl='$i_sysioctl'
 i_sysndir='$i_sysndir'
 i_sysparam='$i_sysparam'
 i_sysresrc='$i_sysresrc'
+i_syssecrt='$i_syssecrt'
 i_sysselct='$i_sysselct'
 i_syssockio='$i_syssockio'
 i_sysstat='$i_sysstat'
@@ -11763,6 +12724,7 @@ i_systime='$i_systime'
 i_systimek='$i_systimek'
 i_systimes='$i_systimes'
 i_systypes='$i_systypes'
+i_sysuio='$i_sysuio'
 i_sysun='$i_sysun'
 i_syswait='$i_syswait'
 i_termio='$i_termio'
@@ -11774,6 +12736,7 @@ i_values='$i_values'
 i_varargs='$i_varargs'
 i_varhdr='$i_varhdr'
 i_vfork='$i_vfork'
+ignore_versioned_solibs='$ignore_versioned_solibs'
 incpath='$incpath'
 inews='$inews'
 installarchlib='$installarchlib'
@@ -11811,6 +12774,7 @@ longsize='$longsize'
 lp='$lp'
 lpr='$lpr'
 ls='$ls'
+lseeksize='$lseeksize'
 lseektype='$lseektype'
 mail='$mail'
 mailx='$mailx'
@@ -11872,16 +12836,22 @@ prefixexp='$prefixexp'
 privlib='$privlib'
 privlibexp='$privlibexp'
 prototype='$prototype'
+pthread_create_joinable='$pthread_create_joinable'
 ptrsize='$ptrsize'
 randbits='$randbits'
+randfunc='$randfunc'
+randseedtype='$randseedtype'
 ranlib='$ranlib'
 rd_nodata='$rd_nodata'
 rm='$rm'
 rmail='$rmail'
 runnm='$runnm'
+sched_yield='$sched_yield'
 scriptdir='$scriptdir'
 scriptdirexp='$scriptdirexp'
 sed='$sed'
+seedfunc='$seedfunc'
+selectminbits='$selectminbits'
 selecttype='$selecttype'
 sendmail='$sendmail'
 sh='$sh'
@@ -11894,6 +12864,7 @@ shsharp='$shsharp'
 sig_name='$sig_name'
 sig_name_init='$sig_name_init'
 sig_num='$sig_num'
+sig_num_init='$sig_num_init'
 signal_t='$signal_t'
 sitearch='$sitearch'
 sitearchexp='$sitearchexp'
@@ -11939,7 +12910,9 @@ troff='$troff'
 uidtype='$uidtype'
 uname='$uname'
 uniq='$uniq'
+use64bits='$use64bits'
 usedl='$usedl'
+usemultiplicity='$usemultiplicity'
 usemymalloc='$usemymalloc'
 usenm='$usenm'
 useopcode='$useopcode'
@@ -12023,51 +12996,6 @@ esac
 : if this fails, just run all the .SH files by hand
 . ./config.sh
 
-case "$ebcdic" in
-$define)
-    xxx=''
-    echo "This is an EBCDIC system, checking if any parser files need regenerating." >&4
-    rm -f y.tab.c y.tab.h
-    yacc -d perly.y >/dev/null 2>&1
-    if cmp -s y.tab.c perly.c; then
-        rm -f y.tab.c
-    else
-        echo "perly.y -> perly.c" >&4
-        mv -f y.tab.c perly.c
-        chmod u+w perly.c
-        sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
-            -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c
-        xxx="$xxx perly.c"
-    fi
-    if cmp -s y.tab.h perly.h; then
-        rm -f y.tab.h
-    else
-        echo "perly.y -> perly.h" >&4
-        mv -f y.tab.h perly.h
-        xxx="$xxx perly.h"
-    fi
-    echo "x2p/a2p.y" >&4
-    cd x2p
-    rm -f y.tab.c
-    yacc a2p.y >/dev/null 2>&1
-    if cmp -s y.tab.c a2p.c
-    then
-        rm -f y.tab.c
-    else
-        echo "a2p.y -> a2p.c" >&4
-        mv -f y.tab.c a2p.c
-        chmod u+w a2p.c
-        sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
-            -e 's/y\.tab/a2p/g' a2p.c >a2p.tmp && mv a2p.tmp a2p.c
-        xxx="$xxx a2p.c"
-    fi
-    cd ..
-    case "$xxx" in
-    '') echo "No parser files were regenerated.  That's okay." >&4 ;;
-    esac
-    ;;
-esac
-
 echo " "
 exec 1>&4
 . ./UU/extract
@@ -12079,26 +13007,26 @@ if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
        *)
                $cat <<EOM
 
-Now you need to generate make dependencies by running "make depend".
-You might prefer to run it in background: "make depend > makedepend.out &"
+Now you need to generate make dependencies by running "$make depend".
+You might prefer to run it in background: "$make depend > makedepend.out &"
 It can take a while, so you might not want to run it right now.
 
 EOM
                ;;
        esac
-       rp="Run make depend now?"
+       rp="Run $make depend now?"
        . UU/myread
        case "$ans" in
        y*)
-               make depend && echo "Now you must run a make."
+               $make depend && echo "Now you must run a $make."
                ;;
        *)
-               echo "You must run 'make depend' then 'make'."
+               echo "You must run '$make depend' then '$make'."
                ;;
        esac
 elif test -f [Mm]akefile; then
        echo " "
-       echo "Now you must run a make."
+       echo "Now you must run a $make."
 else
        echo "Done."
 fi