Changes to allow compiler with gcc-2.8.1 in C++ mode,
[p5sagit/p5-mst-13.2.git] / Configure
index a34a5db..4430ece 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Wed Feb 25 16:44:06 EST 1998 [metaconfig 3.0 PL70]
+# Generated on Thu Apr  2 09:30:50 EST 1998 [metaconfig 3.0 PL70]
 
 cat >/tmp/c1$$ <<EOF
 ARGGGHHHH!!!!!
@@ -176,7 +176,6 @@ emacs=''
 expr=''
 find=''
 flex=''
-gcc=''
 grep=''
 gzip=''
 inews=''
@@ -194,6 +193,7 @@ make=''
 mkdir=''
 more=''
 mv=''
+nm=''
 nroff=''
 perl=''
 pg=''
@@ -211,6 +211,7 @@ submit=''
 tail=''
 tar=''
 tbl=''
+tee=''
 test=''
 touch=''
 tr=''
@@ -258,8 +259,6 @@ baserev=''
 bin=''
 binexp=''
 installbin=''
-bincompat3=''
-d_bincompat3=''
 byteorder=''
 cc=''
 gccversion=''
@@ -306,6 +305,10 @@ d_dlsymun=''
 d_dosuid=''
 d_suidsafe=''
 d_dup2=''
+d_endhent=''
+d_endnent=''
+d_endpent=''
+d_endsent=''
 d_fchmod=''
 d_fchown=''
 d_fcntl=''
@@ -328,14 +331,26 @@ aphostname=''
 d_gethname=''
 d_phostname=''
 d_uname=''
+d_gethostprotos=''
 d_getlogin=''
 d_getnbyaddr=''
+d_getnbyname=''
+d_getnent=''
+d_getnetprotos=''
+d_getpent=''
 d_getpgid=''
 d_getpgrp2=''
 d_bsdgetpgrp=''
 d_getpgrp=''
 d_getppid=''
 d_getprior=''
+d_getpbyname=''
+d_getpbynumber=''
+d_getprotoprotos=''
+d_getsent=''
+d_getservprotos=''
+d_getsbyname=''
+d_getsbyport=''
 d_gnulibc=''
 d_htonl=''
 d_inetaton=''
@@ -344,6 +359,10 @@ d_killpg=''
 d_link=''
 d_locconv=''
 d_lockf=''
+d_longdbl=''
+longdblsize=''
+d_longlong=''
+longlongsize=''
 d_lstat=''
 d_mblen=''
 d_mbstowcs=''
@@ -354,6 +373,7 @@ d_memmove=''
 d_memset=''
 d_mkdir=''
 d_mkfifo=''
+d_mkstemp=''
 d_mktime=''
 d_msg=''
 d_msgctl=''
@@ -389,8 +409,11 @@ d_semop=''
 d_setegid=''
 d_seteuid=''
 d_setgrps=''
+d_sethent=''
 d_setlinebuf=''
 d_setlocale=''
+d_setnent=''
+d_setpent=''
 d_setpgid=''
 d_setpgrp2=''
 d_bsdsetpgrp=''
@@ -402,7 +425,9 @@ d_setresuid=''
 d_setreuid=''
 d_setrgid=''
 d_setruid=''
+d_setsent=''
 d_setsid=''
+d_setvbuf=''
 d_sfio=''
 usesfio=''
 d_shm=''
@@ -472,6 +497,7 @@ dlsrc=''
 ld=''
 lddlflags=''
 usedl=''
+doublesize=''
 fpostype=''
 gidtype=''
 groupstype=''
@@ -612,6 +638,7 @@ installprivlib=''
 privlib=''
 privlibexp=''
 prototype=''
+ptrsize=''
 randbits=''
 installscript=''
 scriptdir=''
@@ -644,6 +671,7 @@ nm_so_opt=''
 runnm=''
 usenm=''
 useperlio=''
+d_oldpthreads=''
 usethreads=''
 incpath=''
 mips=''
@@ -775,7 +803,8 @@ useposix=true
 useopcode=true
 : set usethreads on the Configure command line to enable threads.
 : List of libraries we want.
-libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
+: If anyone needs -lnet, put it in a hint file.
+libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
 libswanted="$libswanted ucb bsd BSD PW x"
 : We probably want to search /usr/shlib before most other libraries.
@@ -1566,10 +1595,12 @@ less
 line
 ln
 more
+nm
 nroff
 perl
 pg
 sendmail
+tee
 test
 uname
 zip
@@ -1878,6 +1909,8 @@ EOM
                        *.08.*) osvers=9 ;;
                        *.09.*) osvers=9 ;;
                        *.10.*) osvers=10 ;;
+                       *.11.*) osvers=11 ;;
+                       *.12.*) osvers=12 ;;
                        *)      osvers="$3" ;;
                        esac
                        ;;
@@ -2250,6 +2283,19 @@ y|Y)     val="$define" ;;
 esac
 set usethreads
 eval $setvar 
+: Look for a hint-file generated 'call-back-unit'.  Now that the
+: user has specified if a threading perl is to be built, we may need 
+: to set or change some other defaults.
+if $test -f usethreads.cbu; then
+    . ./usethreads.cbu
+fi
+case "$d_oldpthreads" in
+'')    : Configure tests would be welcome here.  For now, assume undef.
+       val="$undef" ;;
+*)     val="$d_oldpthreads" ;;
+esac
+set d_oldpthreads
+eval $setvar
 
 : determine the architecture name
 echo " "
@@ -2676,8 +2722,8 @@ baserev=5.0
 echo " "
 echo "Getting the current patchlevel..." >&4
 if $test -r $rsrc/patchlevel.h;then
-       patchlevel=`awk '/PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
-       subversion=`awk '/SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
+       patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
+       subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
 else
        patchlevel=0
        subversion=0
@@ -2998,39 +3044,6 @@ else
        installbin="$binexp"
 fi
 
-
-: Binary compatibility with 5.003 is not possible with 5.004_50 and later.
-if test $patchlevel -ge 4 -o $subversion -ge 50; then
-    val=$undef
-else
-       $cat <<EOM
-
-Perl 5.004 can be compiled for binary compatibility with 5.003.
-If you decide to do so, you will be able to continue using any
-extensions that were compiled for Perl 5.003.  However, binary
-compatibility forces Perl to expose some of its internal symbols
-in the same way that 5.003 did.  So you may have symbol conflicts
-if you embed a binary-compatible Perl in other programs.
-
-EOM
-       case "$d_bincompat3" in
-       "$undef") dflt=n ;;
-       *) dflt=y ;;
-       esac
-       rp='Binary compatibility with Perl 5.003?'
-       . ./myread
-       case "$ans" in
-       y*) val="$define" ;;
-       *)  val="$undef" ;;
-       esac
-fi
-set d_bincompat3
-eval $setvar
-case "$d_bincompat3" in
-"$define") bincompat3=y ;;
-*) bincompat3=n ;;
-esac
-
 : determine where manual pages are on this system
 echo " "
 case "$sysman" in
@@ -3049,393 +3062,6 @@ else
        echo "Could not find manual pages in source form." >&4
 fi
 
-: determine where manual pages go
-set man1dir man1dir none
-eval $prefixit
-$cat <<EOM
-
-$spackage has manual pages available in source form.
-EOM
-case "$nroff" in
-nroff)
-       echo "However, you don't have nroff, so they're probably useless to you."
-       case "$man1dir" in
-       '') man1dir="none";;
-       esac;;
-esac
-echo "If you don't want the manual sources installed, answer 'none'."
-case "$man1dir" in
-' ') dflt=none
-       ;;
-'')
-       lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
-       lookpath="$lookpath $prefixexp/man/p_man/man1"
-       lookpath="$lookpath $prefixexp/man/u_man/man1"
-       lookpath="$lookpath $prefixexp/man/man.1"
-       case "$sysman" in
-       */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
-       *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
-       esac
-       set dflt
-       eval $prefixup
-       ;;
-*)  dflt="$man1dir"
-       ;;
-esac
-echo " "
-fn=dn+~
-rp="Where do the main $spackage manual pages (source) go?"
-. ./getfile
-if $test "X$man1direxp" != "X$ansexp"; then
-       installman1dir=''
-fi
-man1dir="$ans"
-man1direxp="$ansexp"
-case "$man1dir" in
-'') man1dir=' '
-       installman1dir='';;
-esac
-if $afs; then
-       $cat <<EOM
-
-Since you are running AFS, I need to distinguish the directory in which
-manual pages reside from the directory in which they are installed (and from
-which they are presumably copied to the former directory by occult means).
-
-EOM
-       case "$installman1dir" in
-       '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installman1dir";;
-       esac
-       fn=de~
-       rp='Where will man pages be installed?'
-       . ./getfile
-       installman1dir="$ans"
-else
-       installman1dir="$man1direxp"
-fi
-
-: What suffix to use on installed man pages
-
-case "$man1dir" in
-' ')
-       man1ext='0'
-       ;;
-*)
-       rp="What suffix should be used for the main $spackage man pages?"
-       case "$man1ext" in
-       '')     case "$man1dir" in
-               *1)  dflt=1 ;;
-               *1p) dflt=1p ;;
-               *1pm) dflt=1pm ;;
-               *l) dflt=l;;
-               *n) dflt=n;;
-               *o) dflt=o;;
-               *p) dflt=p;;
-               *C) dflt=C;;
-               *L) dflt=L;;
-               *L1) dflt=L1;;
-               *) dflt=1;;
-               esac
-               ;;
-       *)      dflt="$man1ext";;
-       esac
-       . ./myread
-       man1ext="$ans"
-       ;;
-esac
-
-: see if we can have long filenames
-echo " "
-rmlist="$rmlist /tmp/cf$$"
-$test -d /tmp/cf$$ || mkdir /tmp/cf$$
-first=123456789abcdef
-second=/tmp/cf$$/$first
-$rm -f $first $second
-if (echo hi >$first) 2>/dev/null; then
-       if $test -f 123456789abcde; then
-               echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
-               val="$undef"
-       else
-               if (echo hi >$second) 2>/dev/null; then
-                       if $test -f /tmp/cf$$/123456789abcde; then
-                               $cat <<'EOM'
-That's peculiar... You can have filenames longer than 14 characters, but only
-on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
-I shall consider your system cannot support long filenames at all.
-EOM
-                               val="$undef"
-                       else
-                               echo 'You can have filenames longer than 14 characters.' >&4
-                               val="$define"
-                       fi
-               else
-                       $cat <<'EOM'
-How confusing! Some of your filesystems are sane enough to allow filenames
-longer than 14 characters but some others like /tmp can't even think about them.
-So, for now on, I shall assume your kernel does not allow them at all.
-EOM
-                       val="$undef"
-               fi
-       fi
-else
-       $cat <<'EOM'
-You can't have filenames longer than 14 chars.  You can't even think about them!
-EOM
-       val="$undef"
-fi 
-set d_flexfnam
-eval $setvar
-$rm -rf /tmp/cf$$ 123456789abcde*
-
-: determine where library module manual pages go
-set man3dir man3dir none
-eval $prefixit
-$cat <<EOM
-
-$spackage has manual pages for many of the library modules.
-EOM
-
-case "$nroff" in
-nroff)
-       $cat <<'EOM'
-However, you don't have nroff, so they're probably useless to you.
-EOM
-       case "$man3dir" in
-       '') man3dir="none";;
-       esac;;
-esac
-
-case "$d_flexfnam" in
-undef)
-       $cat <<'EOM'
-However, your system can't handle the long file names like File::Basename.3. 
-EOM
-       case "$man3dir" in
-       '') man3dir="none";;
-       esac;;
-esac
-
-echo "If you don't want the manual sources installed, answer 'none'."
-prog=`echo $package | $sed 's/-*[0-9.]*$//'`
-case "$man3dir" in
-'')    case "$prefix" in 
-       *$prog*) dflt=`echo $man1dir | 
-                       $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
-       *)      dflt="$privlib/man/man3" ;;
-       esac
-       ;;
-' ') dflt=none;;
-*)     dflt="$man3dir" ;;
-esac
-echo " "
-
-fn=dn+~
-rp="Where do the $package library man pages (source) go?"
-. ./getfile
-if test "X$man3direxp" != "X$ansexp"; then
-       installman3dir=''
-fi
-
-man3dir="$ans"
-man3direxp="$ansexp"
-case "$man3dir" in
-'') man3dir=' '
-       installman3dir='';;
-esac
-if $afs; then
-       $cat <<EOM
-
-Since you are running AFS, I need to distinguish the directory in which
-manual pages reside from the directory in which they are installed (and from
-which they are presumably copied to the former directory by occult means).
-
-EOM
-       case "$installman3dir" in
-       '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installman3dir";;
-       esac
-       fn=de~
-       rp='Where will man pages be installed?'
-       . ./getfile
-       installman3dir="$ans"
-else
-       installman3dir="$man3direxp"
-fi
-
-: What suffix to use on installed man pages
-
-case "$man3dir" in
-' ')
-       man3ext='0'
-       ;;
-*)
-       rp="What suffix should be used for the $package library man pages?"
-       case "$man3ext" in
-       '')     case "$man3dir" in
-               *3)  dflt=3 ;;
-               *3p) dflt=3p ;;
-               *3pm) dflt=3pm ;;
-               *l) dflt=l;;
-               *n) dflt=n;;
-               *o) dflt=o;;
-               *p) dflt=p;;
-               *C) dflt=C;;
-               *L) dflt=L;;
-               *L3) dflt=L3;;
-               *) dflt=3;;
-               esac
-               ;;
-       *)      dflt="$man3ext";;
-       esac
-       . ./myread
-       man3ext="$ans"
-       ;;
-esac
-
-: determine where public executable scripts go
-set scriptdir scriptdir
-eval $prefixit
-case "$scriptdir" in
-'')
-       dflt="$bin"
-       : guess some guesses
-       $test -d /usr/share/scripts && dflt=/usr/share/scripts
-       $test -d /usr/share/bin && dflt=/usr/share/bin
-       $test -d /usr/local/script && dflt=/usr/local/script
-       $test -d $prefixexp/script && dflt=$prefixexp/script
-       set dflt
-       eval $prefixup
-       ;;
-*)  dflt="$scriptdir"
-       ;;
-esac
-$cat <<EOM
-Some installations have a separate directory just for executable scripts so
-that they can mount it across multiple architectures but keep the scripts in
-one spot.  You might, for example, have a subdirectory of /usr/share for this.
-Or you might just lump your scripts in with all your other executables.
-EOM
-fn=d~
-rp='Where do you keep publicly executable scripts?'
-. ./getfile
-if $test "X$ansexp" != "X$scriptdirexp"; then
-       installscript=''
-fi
-scriptdir="$ans"
-scriptdirexp="$ansexp"
-if $afs; then
-       $cat <<EOM
-
-Since you are running AFS, I need to distinguish the directory in which
-scripts reside from the directory in which they are installed (and from
-which they are presumably copied to the former directory by occult means).
-
-EOM
-       case "$installscript" in
-       '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installscript";;
-       esac
-       fn=de~
-       rp='Where will public scripts be installed?'
-       . ./getfile
-       installscript="$ans"
-else
-       installscript="$scriptdirexp"
-fi
-
-: determine where site specific libraries go.
-set sitelib sitelib
-eval $prefixit
-case "$sitelib" in
-'')
-       prog=`echo $package | $sed 's/-*[0-9.]*$//'`
-       dflt="$privlib/site_$prog" ;;
-*)     dflt="$sitelib" ;;
-esac
-$cat <<EOM
-
-The installation process will also create a directory for
-site-specific extensions and modules.  Some users find it convenient
-to place all local files in this directory rather than in the main
-distribution directory.
-
-EOM
-fn=d~+
-rp='Pathname for the site-specific library files?'
-. ./getfile
-if $test "X$sitelibexp" != "X$ansexp"; then
-       installsitelib=''
-fi
-sitelib="$ans"
-sitelibexp="$ansexp"
-if $afs; then
-       $cat <<EOM
-
-Since you are running AFS, I need to distinguish the directory in
-which site-specific files reside from the directory in which they are
-installed (and from which they are presumably copied to the former
-directory by occult means).
-
-EOM
-       case "$installsitelib" in
-       '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installsitelib";;
-       esac
-       fn=de~
-       rp='Where will site-specific files be installed?'
-       . ./getfile
-       installsitelib="$ans"
-else
-       installsitelib="$sitelibexp"
-fi
-
-: determine where site specific architecture-dependent libraries go.
-xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
-: xxx is usuually lib/site_perl/archname.
-set sitearch sitearch none
-eval $prefixit
-case "$sitearch" in
-'')    dflt="$sitelib/$archname" ;;
-*)     dflt="$sitearch" ;;
-esac
-$cat <<EOM
-
-The installation process will also create a directory for
-architecture-dependent site-specific extensions and modules.
-
-EOM
-fn=nd~+
-rp='Pathname for the site-specific architecture-dependent library files?'
-. ./getfile
-if $test "X$sitearchexp" != "X$ansexp"; then
-       installsitearch=''
-fi
-sitearch="$ans"
-sitearchexp="$ansexp"
-if $afs; then
-       $cat <<EOM
-
-Since you are running AFS, I need to distinguish the directory in
-which site-specific architecture-dependent library files reside from
-the directory in which they are installed (and from which they are
-presumably copied to the former directory by occult means).
-
-EOM
-       case "$installsitearch" in
-       '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installsitearch";;
-       esac
-       fn=de~
-       rp='Where will site-specific architecture-dependent files be installed?'
-       . ./getfile
-       installsitearch="$ans"
-else
-       installsitearch="$sitearchexp"
-fi
-
 : see what memory models we can support
 case "$models" in
 '')
@@ -3483,6 +3109,8 @@ put the appropriate flags later when it asks you for other cc and ld flags.
 Venix systems may wish to put "none" and let the compiler figure things out.
 (In the following question multiple model names should be space separated.)
 
+The default for most systems is "none".
+
 EOM
 rp="Which memory models are supported?"
 . ./myread
@@ -3601,8 +3229,9 @@ if ./usg; then
                esac;;
        *)  dflt="$cc";;
        esac
-       $cat <<'EOM'
-On some systems the default C compiler will not resolve multiple global
+       case "$dflt" in
+       *M*)    $cat <<'EOM'
+On some older systems the default C compiler will not resolve multiple global
 references that happen to have the same name.  On some such systems the "Mcc"
 command may be used to force these to be resolved.  On other systems a "cc -M"
 command is required.  (Note that the -M flag on other systems indicates a
@@ -3610,7 +3239,9 @@ memory model to use!) If you have the Gnu C compiler, you might wish to use
 that instead.
 
 EOM
-       rp="What command will force resolution on this system?"
+       ;;
+       esac
+       rp="Use which C compiler?"
        . ./myread
        cc="$ans"
 else
@@ -3622,6 +3253,12 @@ else
        . ./myread
        cc="$ans"
 fi
+: Look for a hint-file generated 'call-back-unit'.  Now that the
+: user has specified the compiler, we may need to set or change some
+: other defaults.
+if $test -f cc.cbu; then
+    . ./cc.cbu
+fi
 echo " "
 echo "Checking for GNU cc in disguise and/or its version number..." >&4
 $cat >gccvers.c <<EOM
@@ -4324,7 +3961,12 @@ $rm -f try try.* core
 compile='
 mc_file=$1;
 shift;
-$cc $optimize $ccflags $ldflags -o ${mc_file}$_exe $* ${mc_file}.c $libs > /dev/null 2>&1;'
+$cc $optimize $ccflags $ldflags -o ${mc_file}$_exe $* ${mc_file}.c $libs > /dev/null 2>&1;'
+: define a shorthand compile call for compilations that should be ok.
+compile_ok='
+mc_file=$1;
+shift;
+$cc $optimize $ccflags $ldflags -o ${mc_file}$_exe $* ${mc_file}.c $libs;'
 
 echo " "
 echo "Checking for GNU C Library..." >&4
@@ -4337,7 +3979,7 @@ main()
 EOM
 set gnulibc
 if eval $compile && \
-  ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
+  ./gnulibc | $contains '^GNU C Library'; then
        val="$define"
        echo "You are using the GNU C Library"
 else
@@ -4351,12 +3993,26 @@ eval $setvar
 : see if nm is to be used to determine whether a symbol is defined or not
 case "$usenm" in
 '')
+       dflt=''
        case "$d_gnulibc" in
-       $define)
+       "$define")
+               echo " "
+               echo "nm probably won't work on the GNU C Library." >&4
                dflt=n
                ;;
-       *)
-               dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
+       esac
+       case "$dflt" in
+       '') 
+               if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
+                       echo " "
+                       echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
+                       echo "'nm' won't be sufficient on this sytem." >&4
+                       dflt=n
+               fi
+               ;;
+       esac
+       case "$dflt" in
+       '') dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
                if $test $dflt -gt 20; then
                        dflt=y
                else
@@ -4367,26 +4023,28 @@ case "$usenm" in
        ;;
 *)
        case "$usenm" in
-       true) dflt=y;;
+       true|$define) dflt=y;;
        *) dflt=n;;
        esac
        ;;
 esac
 $cat <<EOM
 
-I can use 'nm' to extract the symbols from your C libraries. This is a time
-consuming task which may generate huge output on the disk (up to 3 megabytes)
-but that should make the symbols extraction faster. The alternative is to skip
-the 'nm' extraction part and to compile a small test program instead to
-determine whether each symbol is present. If you have a fast C compiler and/or
-if your 'nm' output cannot be parsed, this may be the best solution.
-You shouldn't let me use 'nm' if you have the GNU C Library.
+I can use $nm to extract the symbols from your C libraries. This
+is a time consuming task which may generate huge output on the disk (up
+to 3 megabytes) but that should make the symbols extraction faster. The
+alternative is to skip the 'nm' extraction part and to compile a small
+test program instead to determine whether each symbol is present. If
+you have a fast C compiler and/or if your 'nm' output cannot be parsed,
+this may be the best solution.
+
+You probably shouldn't let me use 'nm' if you are using the GNU C Library.
 
 EOM
-rp='Shall I use nm to extract C symbols from the libraries?'
+rp="Shall I use $nm to extract C symbols from the libraries?"
 . ./myread
 case "$ans" in
-n|N) usenm=false;;
+[Nn]*) usenm=false;;
 *) usenm=true;;
 esac
 
@@ -4415,7 +4073,7 @@ esac
 case "$nm_so_opt" in
 '')    case "$myuname" in
        *linux*)
-               if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
+               if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
                        nm_so_opt='--dynamic'
                fi
                ;;
@@ -4574,8 +4232,8 @@ $echo $n "This may take a while...$c" >&4
 
 for file in $*; do
        case $file in
-       *$so*) nm $nm_so_opt $nm_opt $file 2>/dev/null;;
-       *) nm $nm_opt $file 2>/dev/null;;
+       *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
+       *) $nm $nm_opt $file 2>/dev/null;;
        esac
 done >libc.tmp
 
@@ -4638,7 +4296,7 @@ elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
        $contains '^fprintf$' libc.list >/dev/null 2>&1; then
                eval $xrun
 else
-       nm -p $* 2>/dev/null >libc.tmp
+       $nm -p $* 2>/dev/null >libc.tmp
        $grep fprintf libc.tmp > libc.ptf
        if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
                eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
@@ -4647,23 +4305,38 @@ else
                eval $xrun
        else
                echo " "
-               echo "nm didn't seem to work right. Trying ar instead..." >&4
+               echo "$nm didn't seem to work right. Trying $ar instead..." >&4
                com=''
-               if ar t $libc > libc.tmp; then
-                       for thisname in $libnames; do
-                               ar t $thisname >>libc.tmp
+               if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
+                       for thisname in $libnames $libc; do
+                               $ar t $thisname >>libc.tmp
                        done
                        $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
                        echo "Ok." >&4
+               elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
+                       # Repeat libc to extract forwarders to DLL entries too
+                       for thisname in $libnames $libc; do
+                               $ar tv $thisname >>libc.tmp
+                               # Revision 50 of EMX has bug in $ar.
+                               # it will not extract forwarders to DLL entries
+                               # Use emximp which will extract exactly them.
+                               emximp -o tmp.imp $thisname \
+                                   2>/dev/null && \
+                                   $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
+                                   < tmp.imp >>libc.tmp
+                               $rm tmp.imp
+                       done
+                       $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
+                       echo "Ok." >&4
                else
-                       echo "ar didn't seem to work right." >&4
+                       echo "$ar didn't seem to work right." >&4
                        echo "Maybe this is a Cray...trying bld instead..." >&4
                        if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
                        then
                                for thisname in $libnames; do
                                        bld t $libnames | \
                                        $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
-                                       ar t $thisname >>libc.tmp
+                                       $ar t $thisname >>libc.tmp
                                done
                                echo "Ok." >&4
                        else
@@ -4868,7 +4541,7 @@ $undef|n|false)
            $define) dflt='y' ;;
        esac
        : Does a dl_xxx.xs file exist for this operating system
-       $test -f ../$dldir/dl_${osname}.xs && dflt='y'
+       $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
        ;;
 esac
 rp="Do you wish to use dynamic loading?"
@@ -4878,7 +4551,7 @@ case "$ans" in
 y*) usedl="$define"
        case "$dlsrc" in
        '')
-               if $test -f ../$dldir/dl_${osname}.xs ; then
+               if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
                        dflt="$dldir/dl_${osname}.xs"
                elif $test "$d_dlopen" = "$define" ; then
                        dflt="$dldir/dl_dlopen.xs"
@@ -4893,15 +4566,17 @@ y*) usedl="$define"
        esac
     echo "The following dynamic loading files are available:"
        : Can not go over to $dldir because getfile has path hard-coded in.
-    cd ..; ls -C $dldir/dl*.xs; cd UU
-    rp="Source file to use for dynamic loading"
-    fn="fne"
-    . ./getfile
+       tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
+       rp="Source file to use for dynamic loading"
+       fn="fne"
+       # XXX This getfile call will fail the existence check if you try 
+       # building away from $src (this is not supported yet).
+       . ./getfile
        usedl="$define"
        : emulate basename
        dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
 
-    $cat << EOM
+       $cat << EOM
 
 Some systems may require passing special flags to $cc -c to
 compile modules that will be used to create a shared library.
@@ -5118,12 +4793,14 @@ EOM
                # Why does next4 have to be so different?
                case "${osname}${osvers}" in
                next4*) xxx='DYLD_LIBRARY_PATH' ;;
+               os2*)   xxx='' ;; # Nothing special needed.
                *)              xxx='LD_LIBRARY_PATH' ;;
                esac
-               $cat <<EOM >&4
+               if test X"$xxx" != "X"; then
+                       $cat <<EOM  | $tee -a ../config.msg >&4
 
 To build perl, you must add the current working directory to your
-$xxx environtment variable before running make.  You can do
+$xxx environment variable before running make.  You can do
 this with
    $xxx=\`pwd\`; export $xxx
 for Bourne-style shells, or
@@ -5131,6 +4808,7 @@ for Bourne-style shells, or
 for Csh-style shells.  You *MUST* do this before running make.
 
 EOM
+               fi
                ;;
        *)      useshrplib='false' ;;
        esac
@@ -5224,56 +4902,300 @@ EOM
        ;;
 esac
 
-# How will the perl executable find the installed shared $libperl?
-# Add $xxx to ccdlflags.
-# If we can't figure out a command-line option, use $shrpenv to
-# set env LD_RUN_PATH.  The main perl makefile uses this.
-shrpdir=$archlibexp/CORE
-xxx=''
-tmp_shrpenv=''
-if "$useshrplib"; then
-    case "$osname" in 
-       aix)
-               # We'll set it in Makefile.SH...
-               ;;
-       solaris|netbsd)
-               xxx="-R $shrpdir"
-               ;;
-       freebsd)
-               xxx="-Wl,-R$shrpdir"
-               ;;
-       linux|irix*|dec_osf)
-               xxx="-Wl,-rpath,$shrpdir"
-               ;;
-       next)
-               # next doesn't like the default...
-               ;;
-       *)
-               tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
-               ;;
+# How will the perl executable find the installed shared $libperl?
+# Add $xxx to ccdlflags.
+# If we can't figure out a command-line option, use $shrpenv to
+# set env LD_RUN_PATH.  The main perl makefile uses this.
+shrpdir=$archlibexp/CORE
+xxx=''
+tmp_shrpenv=''
+if "$useshrplib"; then
+    case "$osname" in 
+       aix)
+               # We'll set it in Makefile.SH...
+               ;;
+       solaris|netbsd)
+               xxx="-R $shrpdir"
+               ;;
+       freebsd)
+               xxx="-Wl,-R$shrpdir"
+               ;;
+       linux|irix*|dec_osf)
+               xxx="-Wl,-rpath,$shrpdir"
+               ;;
+       next)
+               # next doesn't like the default...
+               ;;
+       *)
+               tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
+               ;;
+       esac
+       case "$xxx" in
+       '') ;;
+       *)      
+               # Only add $xxx if it isn't already in ccdlflags.
+               case " $ccdlflags " in
+               *" $xxx "*)     ;;
+               *)      ccdlflags="$ccdlflags $xxx"
+                       cat <<EOM >&4
+
+Adding $xxx to the flags
+passed to $ld so that the perl executable will find the 
+installed shared $libperl.
+
+EOM
+                       ;;
+               esac
+               ;;
+       esac
+fi
+# Respect a hint or command-line value.
+case "$shrpenv" in
+'') shrpenv="$tmp_shrpenv" ;;
+esac
+
+: determine where manual pages go
+set man1dir man1dir none
+eval $prefixit
+$cat <<EOM
+
+$spackage has manual pages available in source form.
+EOM
+case "$nroff" in
+nroff)
+       echo "However, you don't have nroff, so they're probably useless to you."
+       case "$man1dir" in
+       '') man1dir="none";;
+       esac;;
+esac
+echo "If you don't want the manual sources installed, answer 'none'."
+case "$man1dir" in
+' ') dflt=none
+       ;;
+'')
+       lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
+       lookpath="$lookpath $prefixexp/man/p_man/man1"
+       lookpath="$lookpath $prefixexp/man/u_man/man1"
+       lookpath="$lookpath $prefixexp/man/man.1"
+       case "$sysman" in
+       */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
+       *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
+       esac
+       set dflt
+       eval $prefixup
+       ;;
+*)  dflt="$man1dir"
+       ;;
+esac
+echo " "
+fn=dn+~
+rp="Where do the main $spackage manual pages (source) go?"
+. ./getfile
+if $test "X$man1direxp" != "X$ansexp"; then
+       installman1dir=''
+fi
+man1dir="$ans"
+man1direxp="$ansexp"
+case "$man1dir" in
+'') man1dir=' '
+       installman1dir='';;
+esac
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+manual pages reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
+
+EOM
+       case "$installman1dir" in
+       '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installman1dir";;
+       esac
+       fn=de~
+       rp='Where will man pages be installed?'
+       . ./getfile
+       installman1dir="$ans"
+else
+       installman1dir="$man1direxp"
+fi
+
+: What suffix to use on installed man pages
+
+case "$man1dir" in
+' ')
+       man1ext='0'
+       ;;
+*)
+       rp="What suffix should be used for the main $spackage man pages?"
+       case "$man1ext" in
+       '')     case "$man1dir" in
+               *1)  dflt=1 ;;
+               *1p) dflt=1p ;;
+               *1pm) dflt=1pm ;;
+               *l) dflt=l;;
+               *n) dflt=n;;
+               *o) dflt=o;;
+               *p) dflt=p;;
+               *C) dflt=C;;
+               *L) dflt=L;;
+               *L1) dflt=L1;;
+               *) dflt=1;;
+               esac
+               ;;
+       *)      dflt="$man1ext";;
+       esac
+       . ./myread
+       man1ext="$ans"
+       ;;
+esac
+
+: see if we can have long filenames
+echo " "
+rmlist="$rmlist /tmp/cf$$"
+$test -d /tmp/cf$$ || mkdir /tmp/cf$$
+first=123456789abcdef
+second=/tmp/cf$$/$first
+$rm -f $first $second
+if (echo hi >$first) 2>/dev/null; then
+       if $test -f 123456789abcde; then
+               echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
+               val="$undef"
+       else
+               if (echo hi >$second) 2>/dev/null; then
+                       if $test -f /tmp/cf$$/123456789abcde; then
+                               $cat <<'EOM'
+That's peculiar... You can have filenames longer than 14 characters, but only
+on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
+I shall consider your system cannot support long filenames at all.
+EOM
+                               val="$undef"
+                       else
+                               echo 'You can have filenames longer than 14 characters.' >&4
+                               val="$define"
+                       fi
+               else
+                       $cat <<'EOM'
+How confusing! Some of your filesystems are sane enough to allow filenames
+longer than 14 characters but some others like /tmp can't even think about them.
+So, for now on, I shall assume your kernel does not allow them at all.
+EOM
+                       val="$undef"
+               fi
+       fi
+else
+       $cat <<'EOM'
+You can't have filenames longer than 14 chars.  You can't even think about them!
+EOM
+       val="$undef"
+fi 
+set d_flexfnam
+eval $setvar
+$rm -rf /tmp/cf$$ 123456789abcde*
+
+: determine where library module manual pages go
+set man3dir man3dir none
+eval $prefixit
+$cat <<EOM
+
+$spackage has manual pages for many of the library modules.
+EOM
+
+case "$nroff" in
+nroff)
+       $cat <<'EOM'
+However, you don't have nroff, so they're probably useless to you.
+EOM
+       case "$man3dir" in
+       '') man3dir="none";;
+       esac;;
+esac
+
+case "$d_flexfnam" in
+undef)
+       $cat <<'EOM'
+However, your system can't handle the long file names like File::Basename.3. 
+EOM
+       case "$man3dir" in
+       '') man3dir="none";;
+       esac;;
+esac
+
+echo "If you don't want the manual sources installed, answer 'none'."
+prog=`echo $package | $sed 's/-*[0-9.]*$//'`
+case "$man3dir" in
+'')    case "$prefix" in 
+       *$prog*) dflt=`echo $man1dir | 
+                       $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
+       *)      dflt="$privlib/man/man3" ;;
+       esac
+       ;;
+' ') dflt=none;;
+*)     dflt="$man3dir" ;;
+esac
+echo " "
+
+fn=dn+~
+rp="Where do the $package library man pages (source) go?"
+. ./getfile
+if test "X$man3direxp" != "X$ansexp"; then
+       installman3dir=''
+fi
+
+man3dir="$ans"
+man3direxp="$ansexp"
+case "$man3dir" in
+'') man3dir=' '
+       installman3dir='';;
+esac
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+manual pages reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
+
+EOM
+       case "$installman3dir" in
+       '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installman3dir";;
        esac
-       case "$xxx" in
-       '') ;;
-       *)      
-               # Only add $xxx if it isn't already in ccdlflags.
-               case " $ccdlflags " in
-               *" $xxx "*)     ;;
-               *)      ccdlflags="$ccdlflags $xxx"
-                       cat <<EOM >&4
+       fn=de~
+       rp='Where will man pages be installed?'
+       . ./getfile
+       installman3dir="$ans"
+else
+       installman3dir="$man3direxp"
+fi
 
-Adding $xxx to the flags
-passed to $ld so that the perl executable will find the 
-installed shared $libperl.
+: What suffix to use on installed man pages
 
-EOM
-                       ;;
+case "$man3dir" in
+' ')
+       man3ext='0'
+       ;;
+*)
+       rp="What suffix should be used for the $package library man pages?"
+       case "$man3ext" in
+       '')     case "$man3dir" in
+               *3)  dflt=3 ;;
+               *3p) dflt=3p ;;
+               *3pm) dflt=3pm ;;
+               *l) dflt=l;;
+               *n) dflt=n;;
+               *o) dflt=o;;
+               *p) dflt=p;;
+               *C) dflt=C;;
+               *L) dflt=L;;
+               *L3) dflt=L3;;
+               *) dflt=3;;
                esac
                ;;
+       *)      dflt="$man3ext";;
        esac
-fi
-# Respect a hint or command-line value.
-case "$shrpenv" in
-'') shrpenv="$tmp_shrpenv" ;;
+       . ./myread
+       man3ext="$ans"
+       ;;
 esac
 
 : see if we have to deal with yellow pages, now NIS.
@@ -5638,6 +5560,149 @@ case "$startperl" in
 *)     echo "I'll use $perlpath in \"eval 'exec'\"" ;;
 esac
 
+: determine where public executable scripts go
+set scriptdir scriptdir
+eval $prefixit
+case "$scriptdir" in
+'')
+       dflt="$bin"
+       : guess some guesses
+       $test -d /usr/share/scripts && dflt=/usr/share/scripts
+       $test -d /usr/share/bin && dflt=/usr/share/bin
+       $test -d /usr/local/script && dflt=/usr/local/script
+       $test -d $prefixexp/script && dflt=$prefixexp/script
+       set dflt
+       eval $prefixup
+       ;;
+*)  dflt="$scriptdir"
+       ;;
+esac
+$cat <<EOM
+Some installations have a separate directory just for executable scripts so
+that they can mount it across multiple architectures but keep the scripts in
+one spot.  You might, for example, have a subdirectory of /usr/share for this.
+Or you might just lump your scripts in with all your other executables.
+EOM
+fn=d~
+rp='Where do you keep publicly executable scripts?'
+. ./getfile
+if $test "X$ansexp" != "X$scriptdirexp"; then
+       installscript=''
+fi
+scriptdir="$ans"
+scriptdirexp="$ansexp"
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+scripts reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
+
+EOM
+       case "$installscript" in
+       '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installscript";;
+       esac
+       fn=de~
+       rp='Where will public scripts be installed?'
+       . ./getfile
+       installscript="$ans"
+else
+       installscript="$scriptdirexp"
+fi
+
+: determine where site specific libraries go.
+set sitelib sitelib
+eval $prefixit
+case "$sitelib" in
+'')
+       prog=`echo $package | $sed 's/-*[0-9.]*$//'`
+       dflt="$privlib/site_$prog" ;;
+*)     dflt="$sitelib" ;;
+esac
+$cat <<EOM
+
+The installation process will also create a directory for
+site-specific extensions and modules.  Some users find it convenient
+to place all local files in this directory rather than in the main
+distribution directory.
+
+EOM
+fn=d~+
+rp='Pathname for the site-specific library files?'
+. ./getfile
+if $test "X$sitelibexp" != "X$ansexp"; then
+       installsitelib=''
+fi
+sitelib="$ans"
+sitelibexp="$ansexp"
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in
+which site-specific files reside from the directory in which they are
+installed (and from which they are presumably copied to the former
+directory by occult means).
+
+EOM
+       case "$installsitelib" in
+       '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installsitelib";;
+       esac
+       fn=de~
+       rp='Where will site-specific files be installed?'
+       . ./getfile
+       installsitelib="$ans"
+else
+       installsitelib="$sitelibexp"
+fi
+
+: determine where site specific architecture-dependent libraries go.
+xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
+: xxx is usuually lib/site_perl/archname.
+set sitearch sitearch none
+eval $prefixit
+case "$sitearch" in
+'')    dflt="$sitelib/$archname" ;;
+*)     dflt="$sitearch" ;;
+esac
+$cat <<EOM
+
+The installation process will also create a directory for
+architecture-dependent site-specific extensions and modules.
+
+EOM
+fn=nd~+
+rp='Pathname for the site-specific architecture-dependent library files?'
+. ./getfile
+if $test "X$sitearchexp" != "X$ansexp"; then
+       installsitearch=''
+fi
+sitearch="$ans"
+sitearchexp="$ansexp"
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in
+which site-specific architecture-dependent library files reside from
+the directory in which they are installed (and from which they are
+presumably copied to the former directory by occult means).
+
+EOM
+       case "$installsitearch" in
+       '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installsitearch";;
+       esac
+       fn=de~
+       rp='Where will site-specific architecture-dependent files be installed?'
+       . ./getfile
+       installsitearch="$ans"
+else
+       installsitearch="$sitearchexp"
+fi
+
 cat <<EOM
 
 Previous version of $package used the standard IO mechanisms as defined
@@ -5990,7 +6055,7 @@ main()
 }
 EOCP
        set intsize
-       if eval $compile && ./intsize > /dev/null; then
+       if eval $compile_ok && ./intsize > /dev/null; then
                eval `./intsize`
                echo "Your integers are $intsize bytes long."
                echo "Your long integers are $longsize bytes long."
@@ -6067,33 +6132,40 @@ $rm -f $$.tmp
 : check for ability to cast large floats to 32-bit ints.
 echo " "
 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
-if $test "$intsize" -eq 4; then
+if $test "$intsize" -ge 4; then
        xxx=int
 else
        xxx=long
 fi
 $cat >try.c <<EOCP
+#include <stdio.h>
 #include <sys/types.h>
 #include <signal.h>
-$signal_t blech() { exit(3); }
+$signal_t blech(s) int s; { exit(3); }
 main()
 {
        $xxx i32;
-       double f;
+       double f, g;
        int result = 0;
        signal(SIGFPE, blech);
 
-       f = (double) 0x7fffffff;
-       f = 10 * f;
-       i32  = ($xxx) f;
+       /* Don't let compiler optimize the test away */
+       sscanf("2147483647", "%lf", &f); /* f = (double) 0x7fffffff; */
+       g = 10 * f;
+       i32  = ($xxx) g;
 
+       /* x86 processors will probably give 0x8000 0000, which is a
+       sign change.  We don't want that.  We want to mimic SPARC
+          behavior here, which is to preserve the sign and give
+          back 0x7fff ffff.
+       */
        if (i32 != ($xxx) f)
                result |= 1;
        exit(result);
 }
 EOCP
 set try
-if eval $compile; then
+if eval $compile_ok; then
        ./try
        yyy=$?
 else
@@ -6116,20 +6188,26 @@ $rm -f try try.*
 echo " "
 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
 $cat >try.c <<EOCP
+#include <stdio.h>
 #include <sys/types.h>
 #include <signal.h>
-$signal_t blech() { exit(7); }
-$signal_t blech_in_list() { exit(4); }
+$signal_t blech(s) int s; { exit(7); }
+$signal_t blech_in_list(s) int s; { exit(4); }
 unsigned long dummy_long(p) unsigned long p; { return p; }
 unsigned int dummy_int(p) unsigned int p; { return p; }
 unsigned short dummy_short(p) unsigned short p; { return p; }
 main()
 {
-       double f = -123.;
+       double f;
        unsigned long along;
        unsigned int aint;
        unsigned short ashort;
        int result = 0;
+       /* Frustrate gcc-2.7.2's optimizer which failed this test with
+          a direct f = -123. assignment.  gcc-2.8.0 reportedly
+          optimized the whole file away
+       */
+       sscanf("-123.", "%lf", &f);  /* f = -123.; */
 
        signal(SIGFPE, blech);
        along = (unsigned long)f;
@@ -6141,7 +6219,7 @@ main()
                result |= 1;
        if (ashort != (unsigned short)-123)
                result |= 1;
-       f = (double)0x40000000;
+       sscanf("1073741824.", "%lf", &f); /* f = (double)0x40000000; */
        f = f + f;
        along = 0;
        along = (unsigned long)f;
@@ -6160,7 +6238,7 @@ main()
        if (result)
                exit(result);
        signal(SIGFPE, blech_in_list);
-       f = 123.;
+       sscanf("123.", "%lf", &f);  /* f = 123.; */
        along = dummy_long((unsigned long)f);
        aint = dummy_int((unsigned int)f);
        ashort = dummy_short((unsigned short)f);
@@ -6175,7 +6253,7 @@ main()
 }
 EOCP
 set try
-if eval $compile; then
+if eval $compile_ok; then
        ./try
        castflags=$?
 else
@@ -6294,22 +6372,10 @@ else
                val="$undef"
        else
                val="$define"
-       fi
-fi
-set d_crypt
-eval $setvar
-
-: get csh whereabouts
-case "$csh" in
-'csh') val="$undef" ;;
-*) val="$define" ;;
-esac
-set d_csh
+       fi
+fi
+set d_crypt
 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
@@ -6542,6 +6608,22 @@ eval $setvar
 set dup2 d_dup2
 eval $inlibc
 
+: see if endhostent exists
+set endhostent d_endhent
+eval $inlibc
+
+: see if endnetent exists
+set endnetent d_endnent
+eval $inlibc
+
+: see if endprotoent exists
+set endprotoent d_endpent
+eval $inlibc
+
+: see if endservent exists
+set endservent d_endsent
+eval $inlibc
+
 : Locate the flags for 'open()'
 echo " "
 $cat >open3.c <<'EOCP'
@@ -6625,7 +6707,7 @@ main() {
 }
 EOCP
        set try
-       if eval $compile; then
+       if eval $compile_ok; then
                o_nonblock=`./try`
                case "$o_nonblock" in
                '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
@@ -6649,7 +6731,9 @@ case "$eagain" in
 #include <sys/types.h>
 #include <signal.h>
 #define MY_O_NONBLOCK $o_nonblock
+#ifndef errno  /* XXX need better Configure test */
 extern int errno;
+#endif
 $signal_t blech(x) int x; { exit(3); }
 EOCP
        $cat >> try.c <<'EOCP'
@@ -6704,7 +6788,7 @@ main()
 }
 EOCP
        set try
-       if eval $compile; then
+       if eval $compile_ok; then
                echo "$startsh" >mtry
                echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
                chmod +x mtry
@@ -6803,14 +6887,80 @@ eval $inlibc
 set fsetpos d_fsetpos
 eval $inlibc
 
+: see if gethostbyaddr exists
+set gethostbyaddr d_gethbyaddr
+eval $inlibc
+
+: see if gethostbyname exists
+set gethostbyname d_gethbyname
+eval $inlibc
+
 : see if gethostent exists
 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 if this is a netdb.h system
+set netdb.h i_netdb
+eval $inhdr
+
+: see if prototypes for various gethostxxx netdb.h functions are available
+echo " "
+set d_gethostprotos gethostent $i_netdb netdb.h
+eval $hasproto
+
 : see if getlogin exists
 set getlogin d_getlogin
 eval $inlibc
 
+: see if getnetbyaddr exists
+set getnetbyaddr d_getnbyaddr
+eval $inlibc
+
+: see if getnetbyname exists
+set getnetbyname d_getnbyname
+eval $inlibc
+
+: see if getnetent exists
+set getnetent d_getnent
+eval $inlibc
+
+: see if prototypes for various getnetxxx netdb.h functions are available
+echo " "
+set d_getnetprotos getnetent $i_netdb netdb.h
+eval $hasproto
+
+
+: see if getprotobyname exists
+set getprotobyname d_getpbyname
+eval $inlibc
+
+: see if getprotobynumber exists
+set getprotobynumber d_getpbynumber
+eval $inlibc
+
+: see if getprotoent exists
+set getprotoent d_getpent
+eval $inlibc
+
 : see if getpgid exists
 set getpgid d_getpgid
 eval $inlibc
@@ -6827,6 +6977,29 @@ eval $inlibc
 set getpriority d_getprior
 eval $inlibc
 
+: see if prototypes for various getprotoxxx netdb.h functions are available
+echo " "
+set d_getprotoprotos getprotoent $i_netdb netdb.h
+eval $hasproto
+
+
+: see if getservbyname exists
+set getservbyname d_getsbyname
+eval $inlibc
+
+: see if getservbyport exists
+set getservbyport d_getsbyport
+eval $inlibc
+
+: see if getservent exists
+set getservent d_getsent
+eval $inlibc
+
+: see if prototypes for various getservxxx netdb.h functions are available
+echo " "
+set d_getservprotos getservent $i_netdb netdb.h
+eval $hasproto
+
 : see if gettimeofday or ftime exists
 set gettimeofday d_gettimeod
 eval $inlibc
@@ -6984,6 +7157,92 @@ eval $inlibc
 set lockf d_lockf
 eval $inlibc
 
+: check for long doubles
+echo " "
+echo $n "Checking to see if your system supports long doubles...$c" >&4
+echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
+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 try.*
+set d_longdbl
+eval $setvar
+
+: check for length of long double
+case "${d_longdbl}${longdblsize}" in
+$define)
+       echo " "
+       $echo $n "Checking to see how big your long doubles are...$c" >&4
+       $cat >try.c <<'EOCP'
+#include <stdio.h>
+main()
+{
+       printf("%d\n", sizeof(long double));
+}
+EOCP
+       set try
+       if eval $compile_ok; then
+               longdblsize=`./try`
+               $echo " $longdblsize bytes." >&4
+       else
+               dflt='8'
+               echo " "
+               echo "(I can't seem to compile the test program.  Guessing...)"
+               rp="What is the size of a long double (in bytes)?"
+               . ./myread
+               longdblsize="$ans"
+       fi
+       ;;
+esac
+$rm -f try.c try
+
+: check for long long
+echo " "
+echo $n "Checking to see if your system supports long long...$c" >&4
+echo 'long long foo() { long long x; x = 7; return x; }' > try.c
+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 try.*
+set d_longlong
+eval $setvar
+
+: check for length of long long
+case "${d_longlong}${longlongsize}" in
+$define)
+       echo " "
+       $echo $n "Checking to see how big your long longs are...$c" >&4
+       $cat >try.c <<'EOCP'
+#include <stdio.h>
+main()
+{
+       printf("%d\n", sizeof(long long));
+}
+EOCP
+       set try
+       if eval $compile_ok; then
+               longlongsize=`./try`
+               $echo " $longlongsize bytes." >&4
+       else
+               dflt='8'
+               echo " "
+               echo "(I can't seem to compile the test program.  Guessing...)"
+               rp="What is the size of a long long (in bytes)?"
+               . ./myread
+               longlongsize="$ans"
+       fi
+       ;;
+esac
+$rm -f try.c try
+
 : see if lstat exists
 set lstat d_lstat
 eval $inlibc
@@ -7024,6 +7283,10 @@ eval $inlibc
 set mkfifo d_mkfifo
 eval $inlibc
 
+: see if mkstemp exists
+set mkstemp d_mkstemp
+eval $inlibc
+
 : see if mktime exists
 set mktime d_mktime
 eval $inlibc
@@ -7199,8 +7462,8 @@ eval $setvar
 $rm -f try try.*
 
 : test whether pthreads are created in joinable -- aka undetached -- state
-if test "X$usethreads" != X; then
-       echo >&4 "Checking whether pthreads are created joinable."
+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>
@@ -7219,11 +7482,12 @@ EOCP
        if eval $compile; then
                yyy=`./try`
                case "$yyy" in
-                       detached) echo "Nope, they aren't." ;;
-                       *) echo "Yup, they are." ;;
+                       detached) echo "Nope, they aren't." >&4 ;;
+                       *) echo "Yup, they are." >&4 ;;
                esac
        else
-               echo "(I can't execute the test program--assuming they are.)"
+               echo " "
+               echo "(I can't execute the test program--assuming they are.)" >&4
                yyy=joinable
        fi
        $rm -f try try.*
@@ -7407,7 +7671,7 @@ exit(0);
 }
 EOCP
        set try
-       if eval $compile; then
+       if eval $compile_ok; then
                if ./try 2>/dev/null; then
                        echo "Yes, it can."
                        val="$define"
@@ -7485,7 +7749,7 @@ exit(0);
 }
 EOCP
        set try
-       if eval $compile; then
+       if eval $compile_ok; then
                if ./try 2>/dev/null; then
                        echo "Yes, it can."
                        val="$define"
@@ -7545,7 +7809,7 @@ exit(0);
 }
 EOCP
        set try
-       if eval $compile; then
+       if eval $compile_ok; then
                if ./try 2>/dev/null; then
                        echo "Yes, it can."
                        val="$define"
@@ -7602,6 +7866,10 @@ eval $inlibc
 set seteuid d_seteuid
 eval $inlibc
 
+: see if sethostent exists
+set sethostent d_sethent
+eval $inlibc
+
 : see if setlinebuf exists
 set setlinebuf d_setlinebuf
 eval $inlibc
@@ -7610,6 +7878,14 @@ eval $inlibc
 set setlocale d_setlocale
 eval $inlibc
 
+: see if setnetent exists
+set setnetent d_setnent
+eval $inlibc
+
+: see if setprotoent exists
+set setprotoent d_setpent
+eval $inlibc
+
 : see if setpgid exists
 set setpgid d_setpgid
 eval $inlibc
@@ -7642,10 +7918,18 @@ eval $inlibc
 set setruid d_setruid
 eval $inlibc
 
+: see if setservent exists
+set setservent d_setsent
+eval $inlibc
+
 : see if setsid exists
 set setsid d_setsid
 eval $inlibc
 
+: see if setvbuf exists
+set setvbuf d_setvbuf
+eval $inlibc
+
 : see if sfio.h is available
 set sfio.h i_sfio
 eval $inhdr
@@ -7765,12 +8049,7 @@ echo " "
 : see if we have sigaction
 if set sigaction val -f d_sigaction; eval $csym; $val; then
        echo 'sigaction() found.' >&4
-       val="$define"
-else
-       echo 'sigaction NOT found.' >&4
-       val="$undef"
-fi
-$cat > try.c <<'EOP'
+       $cat > try.c <<'EOP'
 #include <stdio.h>
 #include <sys/types.h>
 #include <signal.h>
@@ -7779,11 +8058,15 @@ main()
     struct sigaction act, oact;
 }
 EOP
-set try
-if eval $compile; then
-       :
+       set try
+       if eval $compile_ok; then
+               val="$define"
+       else
+               echo "But you don't seem to have a useable struct sigaction." >&4
+               val="$undef"
+       fi
 else
-       echo "But you don't seem to have a useable struct sigaction." >&4
+       echo 'sigaction NOT found.' >&4
        val="$undef"
 fi
 set d_sigaction; eval $setvar
@@ -7857,8 +8140,8 @@ else
        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
+                       ( ($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"
@@ -8159,6 +8442,34 @@ case "$varval" in
 *) eval "$var=\$varval";;
 esac'
 
+: define an is-a-typedef? function that prompts if the type is not available.
+typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
+case "$inclist" in
+"") inclist="sys/types.h";;
+esac;
+eval "varval=\$$var";
+case "$varval" in
+"")
+       $rm -f temp.c;
+       for inc in $inclist; do
+               echo "#include <$inc>" >>temp.c;
+       done;
+       $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
+       echo " " ;
+       echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
+       if $contains $type temp.E >/dev/null 2>&1; then
+               echo "$type found." >&4;
+               eval "$var=\$type";
+       else
+               echo "$type NOT found." >&4;
+               dflt="$def";
+               . ./myread ;
+               eval "$var=\$ans";
+       fi;
+       $rm -f temp.?;;
+*) eval "$var=\$varval";;
+esac'
+
 : see if this is a sys/times.h system
 set sys/times.h i_systimes
 eval $inhdr
@@ -8172,13 +8483,9 @@ if set times val -f d_times; eval $csym; $val; then
        case "$i_systimes" in
        "$define") inc='sys/times.h';;
        esac
+       rp="What is the type returned by times() on this system?"
        set clock_t clocktype long stdio.h sys/types.h $inc
-       eval $typedef
-       dflt="$clocktype"
-       echo " "
-       rp="What type is returned by times() on this system?"
-       . ./myread
-       clocktype="$ans"
+       eval $typedef_ask
 else
        echo 'times() NOT found, hope that will do.' >&4
        d_times="$undef"
@@ -8321,7 +8628,7 @@ case "$d_closedir" in
 int main() { return closedir(opendir(".")); }
 EOM
        set closedir
-       if eval $compile; then
+       if eval $compile_ok; then
                if ./closedir > /dev/null 2>&1 ; then
                        echo "Yes, it does."
                        val="$undef"
@@ -8410,7 +8717,7 @@ main()
 }
 EOCP
        set try
-       if eval $compile; then
+       if eval $compile_ok; then
                dflt=`./try`
        else
                dflt='8'
@@ -8475,96 +8782,51 @@ EOCP
                cat <<'EOM'
 (I can't seem to compile the test program.  Guessing big-endian...)
 EOM
-       fi
-       case "$xxx_prompt" in
-       y)
-               rp="What is the order of bytes in a long?"
-               . ./myread
-               byteorder="$ans"
-               ;;
-       *)      byteorder=$dflt
-               ;;
-       esac
-       ;;
-esac
-$rm -f try.c try
-
-: how do we catenate cpp tokens here?
-echo " "
-echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
-$cat >cpp_stuff.c <<'EOCP'
-#define RCAT(a,b)a/**/b
-#define ACAT(a,b)a ## b
-RCAT(Rei,ser)
-ACAT(Cir,cus)
-EOCP
-$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
-if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
-       echo "Oh!  Smells like ANSI's been here." >&4
-       echo "We can catify or stringify, separately or together!"
-       cpp_stuff=42
-elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
-       echo "Ah, yes!  The good old days!" >&4
-       echo "However, in the good old days we don't know how to stringify and"
-       echo "catify at the same time."
-       cpp_stuff=1
-else
-       $cat >&4 <<EOM
-Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
-to have to edit the values of CAT[2-5] in config.h...
-EOM
-       cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
-fi
-$rm -f cpp_stuff.*
-
-: see if this is a db.h system
-set db.h i_db
-eval $inhdr
-
-case "$i_db" in
-define)
-       : Check the return type needed for hash 
-       echo " "
-       echo "Checking return type needed for hash for Berkeley DB ..." >&4
-       $cat >try.c <<EOCP
-#$d_const HASCONST
-#ifndef HASCONST
-#define const
-#endif
-#include <sys/types.h>
-#include <db.h>
-
-#ifndef DB_VERSION_MAJOR
-u_int32_t hash_cb (ptr, size)
-const void *ptr;
-size_t size;
-{
-}
-HASHINFO info;
-main()
-{
-       info.hash = hash_cb;
-}
-#endif
-EOCP
-       if $cc $ccflags -c try.c >try.out 2>&1 ; then
-               if $contains warning try.out >>/dev/null 2>&1 ; then
-                       db_hashtype='int'
-               else
-                       db_hashtype='u_int32_t'
-               fi
-       else
-               : XXX Maybe we should just give up here.
-               db_hashtype=u_int32_t
-               echo "Help:  I can't seem to compile the db test program." >&4
-               echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
-       fi
-       $rm -f try.*
-       echo "Your version of Berkeley DB uses $db_hashtype for hash."
-       ;;
-*)     db_hashtype=u_int32_t
+       fi
+       case "$xxx_prompt" in
+       y)
+               rp="What is the order of bytes in a long?"
+               . ./myread
+               byteorder="$ans"
+               ;;
+       *)      byteorder=$dflt
+               ;;
+       esac
        ;;
 esac
+$rm -f try.c try
+
+: how do we catenate cpp tokens here?
+echo " "
+echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
+$cat >cpp_stuff.c <<'EOCP'
+#define RCAT(a,b)a/**/b
+#define ACAT(a,b)a ## b
+RCAT(Rei,ser)
+ACAT(Cir,cus)
+EOCP
+$cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
+if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
+       echo "Oh!  Smells like ANSI's been here." >&4
+       echo "We can catify or stringify, separately or together!"
+       cpp_stuff=42
+elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
+       echo "Ah, yes!  The good old days!" >&4
+       echo "However, in the good old days we don't know how to stringify and"
+       echo "catify at the same time."
+       cpp_stuff=1
+else
+       $cat >&4 <<EOM
+Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
+to have to edit the values of CAT[2-5] in config.h...
+EOM
+       cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
+fi
+$rm -f cpp_stuff.*
+
+: see if this is a db.h system
+set db.h i_db
+eval $inhdr
 
 case "$i_db" in
 $define)
@@ -8601,12 +8863,11 @@ main()
     printf("db.h and libdb are compatible\n") ;
 
     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
-              + DB_VERSION_PATCH ;
+               + DB_VERSION_PATCH ;
 
     /* needs to be >= 2.3.4 */
     if (Version < 2003004) {
-    /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH 
-< 5) { */
+    /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
        printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
         exit(2);       
     }
@@ -8645,6 +8906,51 @@ esac
 
 case "$i_db" in
 define)
+       : Check the return type needed for hash 
+       echo " "
+       echo "Checking return type needed for hash for Berkeley DB ..." >&4
+       $cat >try.c <<EOCP
+#$d_const HASCONST
+#ifndef HASCONST
+#define const
+#endif
+#include <sys/types.h>
+#include <db.h>
+
+#ifndef DB_VERSION_MAJOR
+u_int32_t hash_cb (ptr, size)
+const void *ptr;
+size_t size;
+{
+}
+HASHINFO info;
+main()
+{
+       info.hash = hash_cb;
+}
+#endif
+EOCP
+       if $cc $ccflags -c try.c >try.out 2>&1 ; then
+               if $contains warning try.out >>/dev/null 2>&1 ; then
+                       db_hashtype='int'
+               else
+                       db_hashtype='u_int32_t'
+               fi
+       else
+               : XXX Maybe we should just give up here.
+               db_hashtype=u_int32_t
+               $cat try.out >&4
+               echo "Help:  I can't seem to compile the db test program." >&4
+               echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
+       fi
+       $rm -f try.*
+       echo "Your version of Berkeley DB uses $db_hashtype for hash."
+       ;;
+*)     db_hashtype=u_int32_t
+       ;;
+esac
+case "$i_db" in
+define)
        : Check the return type needed for prefix 
        echo " "
        echo "Checking return type needed for prefix for Berkeley DB ..." >&4
@@ -8678,6 +8984,7 @@ EOCP
        else
                db_prefixtype='size_t'
                : XXX Maybe we should just give up here.
+               $cat try.out >&4
                echo "Help:  I can't seem to compile the db test program." >&4
                echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
        fi
@@ -8783,19 +9090,56 @@ case "$voidflags" in
 esac
 $rm -f try.* .out
 
-: see what type file positions are declared as in the library
-set fpos_t fpostype long stdio.h sys/types.h
-eval $typedef
+: check for length of double
 echo " "
-dflt="$fpostype"
+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 >&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
+
+: see what type file positions are declared as in the library
 rp="What is the type for file position used by fsetpos()?"
-. ./myread
-fpostype="$ans"
+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
 
 : see what type gids are declared as in the kernel
+echo " "
+echo "Looking for the type for group ids returned by getgid()."
 set gid_t gidtype xxx stdio.h sys/types.h
 eval $typedef
 case "$gidtype" in
@@ -8809,10 +9153,13 @@ xxx)
        ;;
 *) dflt="$gidtype";;
 esac
-echo " "
-rp="What is the type for group ids returned by getgid()?"
-. ./myread
-gidtype="$ans"
+case "$gidtype" in
+gid_t) echo "gid_t found." ;;
+*)     rp="What is the type for group ids returned by getgid()?"
+       . ./myread
+       gidtype="$ans"
+       ;;
+esac
 
 : see if getgroups exists
 set getgroups d_getgrps
@@ -8832,11 +9179,11 @@ case "$d_getgrps$d_setgrps" in
        *)  dflt="$groupstype" ;;
        esac
        $cat <<EOM
-What is the type of the second argument to getgroups() and setgroups()?
+What type of pointer is the second argument to getgroups() and setgroups()?
 Usually this is the same as group ids, $gidtype, but not always.
 
 EOM
-       rp='What type is the second argument to getgroups() and setgroups()?'
+       rp='What type pointer is the second argument to getgroups() and setgroups()?'
        . ./myread
        groupstype="$ans"
        ;;
@@ -8844,13 +9191,9 @@ EOM
 esac
 
 : see what type lseek is declared as in the kernel
+rp="What is the type used for lseek's offset on this system?"
 set off_t lseektype long stdio.h sys/types.h
-eval $typedef
-echo " "
-dflt="$lseektype"
-rp="What type is lseek's offset on this system declared as?"
-. ./myread
-lseektype="$ans"
+eval $typedef_ask
 
 echo " "
 echo "Checking if your $make program sets \$(MAKE)..." >&4
@@ -8873,13 +9216,9 @@ case "$make_set_make" in
 esac
 
 : see what type is used for mode_t
+rp="What is the type used for file modes for system calls (e.g. fchmod())?"
 set mode_t modetype int stdio.h sys/types.h
-eval $typedef
-dflt="$modetype"
-echo " "
-rp="What type is used for file modes?"
-. ./myread
-modetype="$ans"
+eval $typedef_ask
 
 : Cruising for prototypes
 echo " "
@@ -8940,30 +9279,10 @@ EOSH
 chmod +x protochk
 $eunicefix protochk
 
-: see if gethostbyaddr exists
-set gethostbyaddr d_gethbyaddr
-eval $inlibc
-
-: see if gethostbyname exists
-set gethostbyname d_gethbyname
-eval $inlibc
-
-: see if getnetbyaddr exists
-set getnetbyaddr d_getnbyaddr
-eval $inlibc
-
-: see if this is a netdb.h system
-set netdb.h i_netdb
-eval $inhdr
-
 : see what type is used for size_t
+rp="What is the type used for the length parameter for string functions?"
 set size_t sizetype 'unsigned int' stdio.h sys/types.h
-eval $typedef
-dflt="$sizetype"
-echo " "
-rp="What type is used for the length parameter for string functions?"
-. ./myread
-sizetype="$ans"
+eval $typedef_ask
 
 : check for type of arguments to gethostbyaddr. 
 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
@@ -9088,7 +9407,7 @@ EOM
                esac
                ;;
        *)      : no getnetbyaddr, so pick harmless default
-               netdb_name_type='long'
+               netdb_net_type='long'
                ;;
        esac
 fi
@@ -9118,13 +9437,42 @@ rp='What pager is used on your system?'
 pager="$ans"
 
 : see what type pids are declared as in the kernel
+rp="What is the type of process ids on this system?"
 set pid_t pidtype int stdio.h sys/types.h
-eval $typedef
-dflt="$pidtype"
+eval $typedef_ask
+
+: check for length of pointer
 echo " "
-rp="What type are process ids on this system declared as?"
-. ./myread
-pidtype="$ans"
+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 " "
@@ -9159,7 +9507,7 @@ main()
 }
 EOCP
        set try
-       if eval $compile; then
+       if eval $compile_ok; then
                dflt=`./try$_exe`
        else
                dflt='?'
@@ -9456,9 +9804,10 @@ xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
 : generate a few handy files for later
-$cat > signal.c <<'EOP'
+$cat > signal.c <<'EOCP'
 #include <sys/types.h>
 #include <signal.h>
+#include <stdio.h>
 int main() {
 
 /* Strange style to avoid deeply-nested #if/#else/#endif */
@@ -9513,7 +9862,10 @@ int main() {
 
 printf("NSIG %d\n", NSIG);
 
-EOP
+#ifndef JUST_NSIG
+
+EOCP
+
 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
 {
        printf "#ifdef SIG"; printf $1; printf "\n"
@@ -9522,6 +9874,7 @@ echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
        printf "#endif\n"
 }
 END {
+       printf "#endif /* JUST_NSIG */\n";
        printf "}\n";
 }
 ' >>signal.c
@@ -9558,22 +9911,69 @@ END {
 EOP
 $cat >signal_cmd <<EOS
 $startsh
-$test -s signal.lst && exit 0
-if $cc $optimize $ccflags $ldflags -o signal signal.c $libs >/dev/null 2>&1; then
+if $test -s signal.lst; then
+    echo "Using your existing signal.lst file"
+       exit 0
+fi
+xxx="$xxx"
+EOS
+$cat >>signal_cmd <<'EOS'
+
+set signal
+if eval $compile_ok; then
        ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
 else
-       echo "(I can't seem be able to compile the test program -- Guessing)"
+       echo "(I can't seem be able to compile the whole test program)" >&4
+       echo "(I'll try it in little pieces.)" >&4
+       set signal -DJUST_NSIG
+       if eval $compile_ok; then
+               ./signal$_exe > signal.nsg
+               $cat signal.nsg
+       else
+               echo "I can't seem to figure out how many signals you have." >&4
+               echo "Guessing 50." >&4
+               echo 'NSIG 50' > signal.nsg
+       fi
+       : Now look at all the signal names, one at a time.
+       for xx in `echo $xxx | $tr ' ' '\012' | $sort | $uniq`; do
+               $cat > signal.c <<EOCP
+#include <sys/types.h>
+#include <signal.h>
+#include <stdio.h>
+int main() {
+printf("$xx %d\n", SIG${xx});
+return 0;
+}
+EOCP
+               set signal
+               if eval $compile; then
+                       echo "SIG${xx} found."
+                       ./signal$_exe  >> signal.ls1
+               else
+                       echo "SIG${xx} NOT found."
+               fi
+       done
+       if $test -s signal.ls1; then
+               $cat signal.nsg signal.ls1 |
+                       $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
+       fi
+
+fi
+if $test -s signal.lst; then
+       :
+else
+       echo "(AAK! I can't compile the test programs -- Guessing)" >&4
        echo 'kill -l' >signal
-       set X \`csh -f <signal\`
+       set X `csh -f <signal`
        $rm -f signal
        shift
-       case \$# in
+       case $# in
        0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
        esac
-       echo \$@ | $tr ' ' '\012' | \
-               $awk '{ printf \$1; printf " %d\n", ++s; }' >signal.lst
+       echo $@ | $tr ' ' '\012' | \
+               $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
 fi
-$rm -f signal.c signal signal$_o
+$rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
 EOS
 chmod a+x signal_cmd
 $eunicefix signal_cmd
@@ -9583,7 +9983,7 @@ echo " "
 case "$sig_name_init" in
 '')
        echo "Generating a list of signal names and numbers..." >&4
-       ./signal_cmd
+       . ./signal_cmd
        sig_name=`$awk '{printf "%s ", $1}' signal.lst`
        sig_name="ZERO $sig_name"
        sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
@@ -9634,7 +10034,7 @@ main()
 EOM
 echo " "
 set ssize
-if eval $compile && ./ssize > /dev/null; then
+if eval $compile_ok && ./ssize > /dev/null; then
        ssizetype=`./ssize`
        echo "I'll be using $ssizetype for functions returning a byte count." >&4
 else
@@ -9668,13 +10068,9 @@ echo " "
 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
-       dflt="$timetype"
-       echo " "
-       rp="What type is returned by time() on this system?"
-       . ./myread
-       timetype="$ans"
+       eval $typedef_ask
 else
        echo 'time() not found, hope that will do.' >&4
        val="$undef"
@@ -9684,6 +10080,8 @@ set d_time
 eval $setvar
 
 : see what type uids are declared as in the kernel
+echo " "
+echo "Looking for the type for user ids returned by getuid()."
 set uid_t uidtype xxx stdio.h sys/types.h
 eval $typedef
 case "$uidtype" in
@@ -9697,10 +10095,13 @@ xxx)
        ;;
 *) dflt="$uidtype";;
 esac
-echo " "
-rp="What is the type for user ids returned by getuid()?"
-. ./myread
-uidtype="$ans"
+case "$uidtype" in
+uid_t) echo "uid_t found." ;;
+*)     rp="What is the type for user ids returned by getuid()?"
+       . ./myread
+       uidtype="$ans"
+       ;;
+esac
 
 : see if dbm.h is available
 : see if dbmclose exists
@@ -10196,7 +10597,8 @@ eval $setvar
 
 echo " "
 echo "Looking for extensions..." >&4
-cd ../ext
+tdir=`pwd`
+cd $rsrc/ext
 : If we are using the old config.sh, known_extensions may contain
 : old or inaccurate or duplicate values.
 known_extensions=''
@@ -10205,67 +10607,76 @@ known_extensions=''
 : some additional extensions into the source tree and expect them
 : to be built.
 for xxx in * ; do
-    case "$xxx" in
-    DynaLoader) ;;
-    *) if $test -f $xxx/$xxx.xs; then
-           known_extensions="$known_extensions $xxx"
-       else
-           if $test -d $xxx; then
-               cd $xxx
-               for yyy in * ; do
-                   if $test -f $yyy/$yyy.xs; then
-                       known_extensions="$known_extensions $xxx/$yyy"
-                   fi
-               done
-               cd ..
-           fi
-       fi ;;
-    esac
+       case "$xxx" in
+       DynaLoader) ;;
+       *)      if $test -f $xxx/$xxx.xs; then
+                       known_extensions="$known_extensions $xxx"
+               else
+                       if $test -d $xxx; then
+                               cd $xxx
+                               for yyy in * ; do
+                               if $test -f $yyy/$yyy.xs; then
+                                       known_extensions="$known_extensions $xxx/$yyy"
+                               fi
+                               done
+                               cd ..
+                       fi
+               fi 
+               ;;
+       esac
 done
 set X $known_extensions
 shift
 known_extensions="$*"
-cd ../UU
+cd $tdir
 
 : Now see which are supported on this system.
 avail_ext=''
 for xxx in $known_extensions ; do
-    case "$xxx" in
-    DB_File|db_file) case "$i_db" in
-           $define) avail_ext="$avail_ext $xxx" ;;
-           esac
-           ;;
-    GDBM_File|gdbm_fil) case "$i_gdbm" in 
-           $define) avail_ext="$avail_ext $xxx" ;;
-           esac
-           ;;
-    NDBM_File|ndbm_fil) case "$i_ndbm" in
-           $define) avail_ext="$avail_ext $xxx" ;;
-           esac
-           ;;
-    ODBM_File|odbm_fil) case "${i_dbm}${i_rpcsvcdbm}" in
-           *"${define}"*) avail_ext="$avail_ext $xxx" ;;
-           esac
-           ;;
-    POSIX|posix) case "$useposix" in
-           true|define|y) avail_ext="$avail_ext $xxx" ;;
-           esac
-           ;;
-    Opcode|opcode) case "$useopcode" in
-           true|define|y) avail_ext="$avail_ext $xxx" ;;
-           esac
-           ;;
-    Socket|socket) case "$d_socket" in 
-           true|$define|y) avail_ext="$avail_ext $xxx" ;;
-           esac
-           ;;
-    Thread|thread) case "$usethreads" in 
-           true|$define|y) avail_ext="$avail_ext $xxx" ;;
-           esac
-           ;;
-    *)      avail_ext="$avail_ext $xxx"
-           ;;
-    esac
+       case "$xxx" in
+       DB_File|db_file)
+               case "$i_db" in
+               $define) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       GDBM_File|gdbm_fil)
+               case "$i_gdbm" in 
+               $define) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       NDBM_File|ndbm_fil)
+               case "$i_ndbm" in
+               $define) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       ODBM_File|odbm_fil) 
+               case "${i_dbm}${i_rpcsvcdbm}" in
+               *"${define}"*) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       POSIX|posix)
+               case "$useposix" in
+               true|define|y) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       Opcode|opcode)
+               case "$useopcode" in
+               true|define|y) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       Socket|socket)
+               case "$d_socket" in 
+               true|$define|y) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       Thread|thread)
+               case "$usethreads" in 
+               true|$define|y) avail_ext="$avail_ext $xxx" ;;
+               esac
+               ;;
+       *)      avail_ext="$avail_ext $xxx"
+               ;;
+       esac
 done
 
 set X $avail_ext
@@ -10279,11 +10690,28 @@ A number of extensions are supplied with $package.  You may choose to
 compile these extensions for dynamic loading (the default), compile
 them into the $package executable (static loading), or not include
 them at all.  Answer "none" to include no extensions.
+Note that DynaLoader is always built and need not be mentioned here.
 
 EOM
        case "$dynamic_ext" in
        '') dflt="$avail_ext" ;;
-       *)      dflt="$dynamic_ext" ;;
+       *)      dflt="$dynamic_ext"
+               # Perhaps we are reusing an old out-of-date config.sh.
+               case "$hint" in
+               previous)
+                       if test X"$dynamic_ext" != X$"avail_ext"; then
+                               $cat <<EOM
+NOTICE:  Your previous config.sh list may be incorrect. 
+The extensions now available to you are 
+       ${avail_ext}
+but the default list from your previous config.sh is
+       ${dynamic_ext} 
+
+EOM
+                       fi
+                       ;;
+               esac
+               ;;
        esac
        case "$dflt" in
        '')     dflt=none;;
@@ -10327,13 +10755,29 @@ EOM
        $cat <<EOM
 A number of extensions are supplied with $package.  Answer "none" 
 to include no extensions. 
+Note that DynaLoader is always built and need not be mentioned here.
 
 EOM
        case "$static_ext" in
        '') dflt="$avail_ext" ;;
-       *)      dflt="$static_ext" ;;
-       esac
+       *)      dflt="$static_ext"
+               # Perhaps we are reusing an old out-of-date config.sh.
+               case "$hint" in
+               previous)
+                       if test X"$static_ext" != X$"avail_ext"; then
+                               $cat <<EOM
+NOTICE:  Your previous config.sh list may be incorrect. 
+The extensions now available to you are 
+       ${avail_ext}
+but the default list from your previous config.sh is
+       ${static_ext} 
 
+EOM
+                       fi
+                       ;;
+               esac
+               ;;
+       esac
        case "$dflt" in
        '')     dflt=none;;
        esac
@@ -10442,7 +10886,6 @@ awk='$awk'
 baserev='$baserev'
 bash='$bash'
 bin='$bin'
-bincompat3='$bincompat3'
 binexp='$binexp'
 bison='$bison'
 byacc='$byacc'
@@ -10482,7 +10925,6 @@ d_archlib='$d_archlib'
 d_attribut='$d_attribut'
 d_bcmp='$d_bcmp'
 d_bcopy='$d_bcopy'
-d_bincompat3='$d_bincompat3'
 d_bsd='$d_bsd'
 d_bsdgetpgrp='$d_bsdgetpgrp'
 d_bsdsetpgrp='$d_bsdsetpgrp'
@@ -10506,6 +10948,10 @@ d_dlopen='$d_dlopen'
 d_dlsymun='$d_dlsymun'
 d_dosuid='$d_dosuid'
 d_dup2='$d_dup2'
+d_endhent='$d_endhent'
+d_endnent='$d_endnent'
+d_endpent='$d_endpent'
+d_endsent='$d_endsent'
 d_eofnblk='$d_eofnblk'
 d_eunice='$d_eunice'
 d_fchmod='$d_fchmod'
@@ -10526,13 +10972,25 @@ d_gethbyaddr='$d_gethbyaddr'
 d_gethbyname='$d_gethbyname'
 d_gethent='$d_gethent'
 d_gethname='$d_gethname'
+d_gethostprotos='$d_gethostprotos'
 d_getlogin='$d_getlogin'
 d_getnbyaddr='$d_getnbyaddr'
+d_getnbyname='$d_getnbyname'
+d_getnent='$d_getnent'
+d_getnetprotos='$d_getnetprotos'
+d_getpbyname='$d_getpbyname'
+d_getpbynumber='$d_getpbynumber'
+d_getpent='$d_getpent'
 d_getpgid='$d_getpgid'
 d_getpgrp2='$d_getpgrp2'
 d_getpgrp='$d_getpgrp'
 d_getppid='$d_getppid'
 d_getprior='$d_getprior'
+d_getprotoprotos='$d_getprotoprotos'
+d_getsbyname='$d_getsbyname'
+d_getsbyport='$d_getsbyport'
+d_getsent='$d_getsent'
+d_getservprotos='$d_getservprotos'
 d_gettimeod='$d_gettimeod'
 d_gnulibc='$d_gnulibc'
 d_htonl='$d_htonl'
@@ -10543,6 +11001,8 @@ d_killpg='$d_killpg'
 d_link='$d_link'
 d_locconv='$d_locconv'
 d_lockf='$d_lockf'
+d_longdbl='$d_longdbl'
+d_longlong='$d_longlong'
 d_lstat='$d_lstat'
 d_mblen='$d_mblen'
 d_mbstowcs='$d_mbstowcs'
@@ -10553,6 +11013,7 @@ d_memmove='$d_memmove'
 d_memset='$d_memset'
 d_mkdir='$d_mkdir'
 d_mkfifo='$d_mkfifo'
+d_mkstemp='$d_mkstemp'
 d_mktime='$d_mktime'
 d_msg='$d_msg'
 d_msgctl='$d_msgctl'
@@ -10561,6 +11022,7 @@ d_msgrcv='$d_msgrcv'
 d_msgsnd='$d_msgsnd'
 d_mymalloc='$d_mymalloc'
 d_nice='$d_nice'
+d_oldpthreads='$d_oldpthreads'
 d_oldsock='$d_oldsock'
 d_open3='$d_open3'
 d_pathconf='$d_pathconf'
@@ -10595,8 +11057,11 @@ d_semop='$d_semop'
 d_setegid='$d_setegid'
 d_seteuid='$d_seteuid'
 d_setgrps='$d_setgrps'
+d_sethent='$d_sethent'
 d_setlinebuf='$d_setlinebuf'
 d_setlocale='$d_setlocale'
+d_setnent='$d_setnent'
+d_setpent='$d_setpent'
 d_setpgid='$d_setpgid'
 d_setpgrp2='$d_setpgrp2'
 d_setpgrp='$d_setpgrp'
@@ -10607,7 +11072,9 @@ d_setresuid='$d_setresuid'
 d_setreuid='$d_setreuid'
 d_setrgid='$d_setrgid'
 d_setruid='$d_setruid'
+d_setsent='$d_setsent'
 d_setsid='$d_setsid'
+d_setvbuf='$d_setvbuf'
 d_sfio='$d_sfio'
 d_shm='$d_shm'
 d_shmat='$d_shmat'
@@ -10667,6 +11134,7 @@ defvoidused='$defvoidused'
 direntrytype='$direntrytype'
 dlext='$dlext'
 dlsrc='$dlsrc'
+doublesize='$doublesize'
 dynamic_ext='$dynamic_ext'
 eagain='$eagain'
 echo='$echo'
@@ -10683,7 +11151,6 @@ fpostype='$fpostype'
 freetype='$freetype'
 full_csh='$full_csh'
 full_sed='$full_sed'
-gcc='$gcc'
 gccversion='$gccversion'
 gidtype='$gidtype'
 glibpth='$glibpth'
@@ -10780,6 +11247,8 @@ ln='$ln'
 lns='$lns'
 locincpth='$locincpth'
 loclibpth='$loclibpth'
+longdblsize='$longdblsize'
+longlongsize='$longlongsize'
 longsize='$longsize'
 lp='$lp'
 lpr='$lpr'
@@ -10815,6 +11284,7 @@ netdb_hlen_type='$netdb_hlen_type'
 netdb_host_type='$netdb_host_type'
 netdb_name_type='$netdb_name_type'
 netdb_net_type='$netdb_net_type'
+nm='$nm'
 nm_opt='$nm_opt'
 nm_so_opt='$nm_so_opt'
 nroff='$nroff'
@@ -10843,6 +11313,7 @@ prefixexp='$prefixexp'
 privlib='$privlib'
 privlibexp='$privlibexp'
 prototype='$prototype'
+ptrsize='$ptrsize'
 randbits='$randbits'
 ranlib='$ranlib'
 rd_nodata='$rd_nodata'
@@ -10898,6 +11369,7 @@ sysman='$sysman'
 tail='$tail'
 tar='$tar'
 tbl='$tbl'
+tee='$tee'
 test='$test'
 timeincl='$timeincl'
 timetype='$timetype'
@@ -11032,7 +11504,12 @@ the policy defaults.
 
 EOM
 fi
-
+if $test -f config.msg; then
+    echo "Hmm.  I also noted the following information while running:"
+    echo " "
+    $cat config.msg >&4
+    $rm -f config.msg
+fi
 $rm -f kit*isdone ark*isdone
 $rm -rf UU