This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Incorporate new single-statement macros
[perl5.git] / Configure
index 38e554c..34c39ce 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -18,9 +18,9 @@
 # archive site. Check with Archie if you don't know where that can be.)
 #
 
-# $Id: Head.U,v 3.0.1.3 1993/12/15 08:15:07 ram Exp $
+# $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
 #
-# Generated on Wed May  4 14:59:36 EDT 1994 [metaconfig 3.0 PL22]
+# Generated on Wed Feb 21 14:26:18 EST 1996 [metaconfig 3.0 PL60]
 
 cat >/tmp/c1$$ <<EOF
 ARGGGHHHH!!!!!
@@ -46,17 +46,48 @@ true || exec sh $0 $argv:q
 (exit $?0) || exec sh $0 $argv:q
 rm -f /tmp/c1$$ /tmp/c2$$
 
-: Sanity checks
-PATH=".:$PATH:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin"
-PATH=$PATH:'/usr/5bin:/etc:/usr/gnu/bin:/usr/new:/usr/new/bin:/usr/nbin'
-PATH=$PATH:'/sys5.3/bin:/sys5.3/usr/bin:/bsd4.3/bin:/bsd4.3/usr/ucb'
-PATH=$PATH:'/bsd4.3/usr/bin:/usr/bsd:/bsd43/bin:/usr/ccs/bin'
-PATH=$PATH:'/etc:/usr/lib:/usr/ucblib:/lib:/usr/ccs/lib'
-PATH=$PATH:'/sbin:/usr/sbin:/usr/libexec'
+: compute my invocation name
+me=$0
+case "$0" in
+*/*)
+       me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
+       test "$me" || me=$0
+       ;;
+esac
+
+: Proper PATH separator
+p_=:
+: On OS/2 this directory should exist if this is not floppy only system :-]
+if test -d c:/.; then
+       p_=\;
+       PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
+       OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
+fi
+
+: Proper PATH setting
+paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
+paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
+paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
+paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
+paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
+paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
+paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
+paths="$paths /sbin /usr/sbin /usr/libexec"
+
+for p in $paths
+do
+       case "$p_$PATH$p_" in
+       *$p_$p$p_*) ;;
+       *) test -d $p && PATH=$PATH$p_$p ;;
+       esac
+done
+
+PATH=.$p_$PATH
 export PATH
 
+: Sanity checks
 if test ! -t 0; then
-       echo "Say 'sh Configure', not 'sh <Configure'"
+       echo "Say 'sh $me', not 'sh <$me'"
        exit 1
 fi
 
@@ -68,22 +99,29 @@ if test -f /hp-ux -a -f /bin/ksh; then
                cat <<'EOM'
 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
 EOM
+               unset ENV
                exec /bin/ksh $0 "$@"
        fi
 else
        : Warn them if they use ksh on other systems
        (PATH=.; alias -x) >/dev/null 2>&1 && \
-               cat <<'EOM'
-(I see you are using the Korn shell.  Some ksh's blow up on Configure,
+               cat <<EOM
+(I see you are using the Korn shell.  Some ksh's blow up on $me,
 especially on exotic machines.  If yours does, try the Bourne shell instead.)
 EOM
 fi
 
 : Configure runs within the UU subdirectory
 test -d UU || mkdir UU
-cd UU && rm -f *
+cd UU && rm -f ./*
 
+dynamic_ext=''
 extensions=''
+known_extensions=''
+static_ext=''
+useposix=''
+usesafe=''
+d_bsd=''
 d_eunice=''
 d_xenix=''
 eunicefix=''
@@ -96,6 +134,7 @@ cat=''
 chgrp=''
 chmod=''
 chown=''
+comm=''
 compress=''
 cp=''
 cpio=''
@@ -152,6 +191,8 @@ uniq=''
 uuname=''
 vi=''
 zcat=''
+full_sed=''
+libswanted=''
 hint=''
 myuname=''
 osname=''
@@ -166,8 +207,22 @@ RCSfile=''
 Revision=''
 Source=''
 State=''
+ar=''
+archobjs=''
+exe_ext=''
+firstmakefile=''
+lib_ext=''
+obj_ext=''
+path_sep=''
 afs=''
-memalignbytes=''
+alignbytes=''
+archlib=''
+archlibexp=''
+d_archlib=''
+installarchlib=''
+archname=''
+myarchname=''
+baserev=''
 bin=''
 binexp=''
 installbin=''
@@ -178,64 +233,103 @@ ccflags=''
 cppflags=''
 ldflags=''
 lkflags=''
+locincpth=''
 optimize=''
+cf_email=''
 cf_by=''
 cf_time=''
 contains=''
+cpp_stuff=''
 cpplast=''
 cppminus=''
 cpprun=''
 cppstdin=''
 d_access=''
+d_alarm=''
+d_attribut=''
 d_bcmp=''
 d_bcopy=''
 d_bzero=''
 d_casti32=''
 castflags=''
 d_castneg=''
-d_charsprf=''
+d_chown=''
+d_chroot=''
 d_chsize=''
+d_closedir=''
+d_void_closedir=''
 d_const=''
 cryptlib=''
 d_crypt=''
 d_csh=''
+full_csh=''
+d_cuserid=''
+d_dbl_dig=''
+d_difftime=''
+d_dlerror=''
+d_dlopen=''
+d_dlsymun=''
 d_dosuid=''
+d_suidsafe=''
 d_dup2=''
 d_fchmod=''
 d_fchown=''
 d_fcntl=''
+d_fd_macros=''
+d_fd_set=''
+d_fds_bits=''
+d_fgetpos=''
 d_flexfnam=''
 d_flock=''
+d_fork=''
+d_fsetpos=''
+d_Gconvert=''
 d_getgrps=''
 d_gethent=''
 aphostname=''
 d_gethname=''
 d_phostname=''
 d_uname=''
+d_getlogin=''
 d_getpgrp2=''
 d_getpgrp=''
+d_getppid=''
 d_getprior=''
 d_htonl=''
 d_isascii=''
 d_killpg=''
 d_link=''
+d_locconv=''
+d_lockf=''
 d_lstat=''
+d_mblen=''
+d_mbstowcs=''
+d_mbtowc=''
 d_memcmp=''
 d_memcpy=''
 d_memmove=''
 d_memset=''
 d_mkdir=''
+d_mkfifo=''
+d_mktime=''
 d_msg=''
 d_msgctl=''
 d_msgget=''
 d_msgrcv=''
 d_msgsnd=''
+d_nice=''
 d_open3=''
+d_fpathconf=''
+d_pathconf=''
+d_pause=''
+d_pipe=''
+d_poll=''
 d_portable=''
 d_readdir=''
 d_rewinddir=''
 d_seekdir=''
 d_telldir=''
+d_readlink=''
 d_rename=''
 d_rmdir=''
 d_safebcpy=''
@@ -247,6 +341,7 @@ d_semget=''
 d_semop=''
 d_setegid=''
 d_seteuid=''
+d_setlinebuf=''
 d_setlocale=''
 d_setpgid=''
 d_setpgrp2=''
@@ -262,38 +357,54 @@ d_setruid=''
 d_setsid=''
 d_shm=''
 d_shmat=''
-d_voidshmat=''
+d_shmatprototype=''
+shmattype=''
 d_shmctl=''
 d_shmdt=''
 d_shmget=''
+d_sigsetjmp=''
+d_sigaction=''
+d_sigintrp=''
+d_sigvec=''
+d_sigvectr=''
 d_oldsock=''
 d_socket=''
 d_sockpair=''
 sockethdr=''
 socketlib=''
 d_statblks=''
+d_stdio_cnt_lval=''
+d_stdio_ptr_lval=''
+d_stdiobase=''
 d_stdstdio=''
+stdio_base=''
+stdio_bufsiz=''
+stdio_cnt=''
+stdio_ptr=''
 d_index=''
 d_strchr=''
+d_strcoll=''
 d_strctcpy=''
 d_strerrm=''
 d_strerror=''
 d_sysernlst=''
 d_syserrlst=''
+d_strxfrm=''
 d_symlink=''
 d_syscall=''
+d_sysconf=''
 d_system=''
+d_tcgetpgrp=''
+d_tcsetpgrp=''
 d_time=''
 timetype=''
 clocktype=''
 d_times=''
 d_truncate=''
-d_usendir=''
-i_ndir=''
-ndirc=''
-ndirlib=''
-ndiro=''
+d_tzname=''
+d_umask=''
 d_vfork=''
+usevfork=''
 d_voidsig=''
 signal_t=''
 d_volatile=''
@@ -301,25 +412,40 @@ d_charvspr=''
 d_vprintf=''
 d_wait4=''
 d_waitpid=''
+d_wcstombs=''
+d_wctomb=''
+dlext=''
 cccdlflags=''
 ccdlflags=''
-dldir=''
-dlobj=''
+d_shrplib=''
 dlsrc=''
+ld=''
 lddlflags=''
-shlibsuffix=''
+shrpdir=''
 usedl=''
+fpostype=''
 gidtype=''
 groupstype=''
 h_fcntl=''
 h_sysfile=''
+db_hashtype=''
+db_prefixtype=''
+i_db=''
 i_dbm=''
+i_rpcsvcdbm=''
 d_dirnamlen=''
+direntrytype=''
 i_dirent=''
+i_dld=''
 i_dlfcn=''
 i_fcntl=''
+i_float=''
 i_gdbm=''
 i_grp=''
+i_limits=''
+i_locale=''
+i_malloc=''
+i_math=''
 i_memory=''
 i_ndbm=''
 i_neterrno=''
@@ -332,19 +458,24 @@ d_pwcomment=''
 d_pwexpire=''
 d_pwquota=''
 i_pwd=''
-i_sdbm=''
-i_stdarg=''
 i_stddef=''
+i_stdlib=''
 i_string=''
 strings=''
 i_sysdir=''
 i_sysfile=''
 d_voidtty=''
 i_bsdioctl=''
+i_sysfilio=''
 i_sysioctl=''
 i_syssockio=''
 i_sysndir=''
+i_sysparam=''
 i_sysselct=''
+i_sysstat=''
+i_systimes=''
+i_systypes=''
+i_sysun=''
 i_sgtty=''
 i_termio=''
 i_termios=''
@@ -354,64 +485,97 @@ i_time=''
 timeincl=''
 i_unistd=''
 i_utime=''
+i_stdarg=''
 i_varargs=''
 i_varhdr=''
 i_vfork=''
 intsize=''
-lib=''
-libexp=''
 libc=''
+glibpth=''
 libpth=''
+loclibpth=''
 plibpth=''
 xlibpth=''
 libs=''
 lns=''
 lseektype=''
 d_mymalloc=''
+freetype=''
 mallocobj=''
 mallocsrc=''
 malloctype=''
 usemymalloc=''
-installmansrc=''
-manext=''
-mansrc=''
-mansrcexp=''
+installman1dir=''
+man1dir=''
+man1direxp=''
+man1ext=''
+installman3dir=''
+man3dir=''
+man3direxp=''
+man3ext=''
 huge=''
 large=''
 medium=''
 models=''
 small=''
 split=''
+modetype=''
 mydomain=''
 myhostname=''
 phostname=''
 c=''
 n=''
+d_eofnblk=''
+eagain=''
+o_nonblock=''
+rd_nodata=''
 groupcat=''
 hostcat=''
 passcat=''
+d_oldarchlib=''
+oldarchlib=''
+oldarchlibexp=''
 orderlib=''
 ranlib=''
 package=''
 spackage=''
+pager=''
+patchlevel=''
+perladmin=''
+perlpath=''
+prefix=''
+prefixexp=''
 installprivlib=''
 privlib=''
 privlibexp=''
 prototype=''
-ptrsize=''
 randbits=''
 installscript=''
 scriptdir=''
 scriptdirexp=''
+selecttype=''
 sig_name=''
+sig_num=''
+installsitearch=''
+sitearch=''
+sitearchexp=''
+installsitelib=''
+sitelib=''
+sitelibexp=''
+sizetype=''
+so=''
 sharpbang=''
 shsharp=''
 spitshell=''
+ssizetype=''
+startperl=''
 startsh=''
 stdchar=''
+subversion=''
 sysman=''
 uidtype=''
 nm_opt=''
+nm_so_opt=''
 runnm=''
 usenm=''
 incpath=''
@@ -420,16 +584,153 @@ mips_type=''
 usrinc=''
 defvoidused=''
 voidflags=''
-yacc=''
-yaccflags=''
 CONFIG=''
 
+define='define'
+undef='undef'
+smallmach='pdp11 i8086 z8000 i80286 iAPX286'
+rmlist=''
+
+: We must find out about Eunice early
+eunicefix=':'
+if test -f /etc/unixtovms; then
+       eunicefix=/etc/unixtovms
+fi
+if test -f /etc/unixtovms.exe; then
+       eunicefix=/etc/unixtovms.exe
+fi
+
+: 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"
+al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
+al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
+al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
+al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
+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 _AM29000 _COFF _CRAY _CX_UX _EPI"
+al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
+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"
+al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
+al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
+al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
+al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
+al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
+al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
+al="$al __SVR4_2__ __UMAXV__"
+al="$al ____386BSD____ __alpha __alpha__ __amiga"
+al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
+al="$al __host_mips__"
+al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
+al="$al __hp9000s500 __hp9000s700 __hp9000s800"
+al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
+al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
+al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
+al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
+al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
+al="$al __mc88100 __mc88100__ __mips __mips__"
+al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
+al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
+al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
+al="$al _host_mips _mips _unix"
+al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
+al="$al apollo ardent att386 att3b"
+al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
+al="$al cadmus clipper concurrent convex cray ctix"
+al="$al dmert encore gcos gcx gimpel gould"
+al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
+al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
+al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
+al="$al i186 i286 i386 i486 i8086"
+al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
+al="$al ksr1 linux luna luna88k m68k m88100 m88k"
+al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
+al="$al mc68040 mc68060 mc68k mc68k32 mc700"
+al="$al mc88000 mc88100 merlin mert mips mvs n16"
+al="$al ncl_el ncl_mr"
+al="$al news1500 news1700 news1800 news1900 news3700"
+al="$al news700 news800 news900 ns16000 ns32000"
+al="$al ns32016 ns32332 ns32k nsc32000 os osf"
+al="$al parisc pc532 pdp11 plexus posix pyr"
+al="$al riscix riscos scs sequent sgi sinix sony sony_news"
+al="$al sonyrisc sparc sparclite spectrum stardent stratos"
+al="$al sun sun3 sun386 svr4 sysV68 sysV88"
+al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
+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"
+
+groupstype=''
+i_whoami=''
+: default library list
+libswanted=''
+: set useposix=false in your hint file to disable the POSIX extension.
+useposix=true
+: set usesafe=false in your hint if you want to skip the Safe extension.
+usesafe=true
+: Define several unixisms.  These can be used in hint files.
+exe_ext='' 
+: Extra object files, if any, needed on this platform.
+archobjs=''
+: 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=''
+
+: 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="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib"
+glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small"
+glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib"
+
+: 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=''
+
+: full support for void wanted by default
+defvoidused=15
+
+: List of libraries we want.
+libswanted='net 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.
+: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
+glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
+glibpth="/usr/shlib $glibpth"
+: Do not use vfork unless overridden by a hint file.
+usevfork=false
+
 : script used to extract .SH files with variable substitutions
 cat >extract <<'EOS'
 CONFIG=true
 echo "Doing variable substitutions on .SH files..."
 if test -f MANIFEST; then
-       set x `awk '{print $1}' <MANIFEST | grep '\.SH'`
+       shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
+       : Pick up possible extension manifests.
+       for dir in ext/* ; do
+               if test -f $dir/MANIFEST; then
+                       xxx=`awk '{print $1}' < $dir/MANIFEST | 
+                               sed -n "/\.SH$/ s@^@$dir/@p"`
+                       shlist="$shlist $xxx"
+               fi
+       done
+       set x $shlist
 else
        echo "(Looking for .SH files under the current directory.)"
        set x `find . -name "*.SH" -print`
@@ -464,7 +765,7 @@ EOS
 : produce awk script to parse command line options
 cat >options.awk <<'EOF'
 BEGIN {
-       optstr = "deEf:hrsSV";  # getopt-style specification
+       optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
 
        len = length(optstr);
        for (i = 1; i <= len; i++) {
@@ -508,7 +809,8 @@ END {
 EOF
 
 : process the command line options
-set X `for arg in "$@"; do echo $arg; done | awk -f options.awk`
+set X `for arg in "$@"; do echo "X$arg"; done |
+       sed -e s/X// | awk -f options.awk`
 eval "set $*"
 shift
 rm -f options.awk
@@ -521,6 +823,9 @@ alldone=''
 error=''
 silent=''
 extractsh=''
+override=''
+knowitall=''
+rm -f optdef.sh
 
 : option parsing
 while test $# -gt 0; do
@@ -533,7 +838,7 @@ while test $# -gt 0; do
                if test -r "$1"; then
                        config_sh="$1"
                else
-                       echo "Configure: cannot read config file $1." >&2
+                       echo "$me: cannot read config file $1." >&2
                        error=true
                fi
                cd UU
@@ -542,11 +847,38 @@ while test $# -gt 0; do
        -r) shift; reuseval=true;;
        -s) shift; silent=true;;
        -E) shift; alldone=exit;;
+       -K) shift; knowitall=true;;
+       -O) shift; override=true;;
        -S) shift; extractsh=true;;
-       -V) echo "Configure generated by metaconfig 3.0 PL22." >&2
+       -D)
+               shift
+               case "$1" in
+               *=)
+                       echo "$me: use '-U symbol=', not '-D symbol='." >&2
+                       echo "$me: ignoring -D $1" >&2
+                       ;;
+               *=*) echo "$1" | \
+                               sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
+               *) echo "$1='define'" >> optdef.sh;;
+               esac
+               shift
+               ;;
+       -U)
+               shift
+               case "$1" in
+               *=) echo "$1" >> optdef.sh;;
+               *=*)
+                       echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
+                       echo "$me: ignoring -U $1" >&2
+                       ;;
+               *) echo "$1='undef'" >> optdef.sh;;
+               esac
+               shift
+               ;;
+       -V) echo "$me generated by metaconfig 3.0 PL60." >&2
                exit 0;;
        --) break;;
-       -*) echo "Configure: unknown option $1" >&2; shift; error=true;;
+       -*) echo "$me: unknown option $1" >&2; shift; error=true;;
        *) break;;
        esac
 done
@@ -554,15 +886,24 @@ done
 case "$error" in
 true)
        cat >&2 <<EOM
-Usage: Configure [-dehrESV] [-f config.sh]
+Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
+                 [-U symbol] [-U symbol=]
   -d : use defaults for all answers.
   -e : go on without questioning past the production of config.sh.
   -f : specify an alternate default configuration file.
   -h : print this help message and exit (with an error status).
   -r : reuse C symbols value if possible (skips costly nm extraction).
   -s : silent mode, only echoes questions and essential information.
+  -D : define symbol to have some value:
+         -D symbol         symbol gets the value 'define'
+         -D symbol=value   symbol gets the value 'value'
   -E : stop at the end of questions, after having produced config.sh.
+  -K : do not use unless you know what you are doing.
+  -O : let -D and -U override definitions from loaded configuration file.
   -S : perform variable substitutions on all .SH files (can mix with -f)
+  -U : undefine symbol:
+         -U symbol    symbol gets the value 'undef'
+         -U symbol=   symbol gets completely empty
   -V : print version number and exit (with a zero status).
 EOM
        exit 1
@@ -574,6 +915,10 @@ case "$silent" in
 true) exec 1>/dev/null;;
 esac
 
+: run the defines and the undefines, if any, but leave the file out there...
+touch optdef.sh
+. ./optdef.sh
+
 case "$extractsh" in
 true)
        case "$config_sh" in
@@ -585,6 +930,7 @@ true)
        echo "Fetching answers from $config_sh..."
        cd ..
        . $config
+       test "$override" && . ./optdef.sh
        echo " "
        . ./UU/extract
        rm -rf UU
@@ -595,71 +941,19 @@ esac
 
 : set package name
 package=perl5
+first=`echo $package | sed -e 's/^\(.\).*/\1/'`
+last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
+case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
+ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
+*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
+esac
 
 : Eunice requires " " instead of "", can you believe it
 echo " "
 : Here we go...
 echo "Beginning of configuration questions for $package."
 
-define='define'
-undef='undef'
-smallmach='pdp11 i8086 z8000 i80286 iAPX286'
-rmlist=''
-
-trap 'echo " "; rm -rf $rmlist; exit 1' 1 2 3 15
-
-: We must find out about Eunice early
-eunicefix=':'
-if test -f /etc/unixtovms; then
-       eunicefix=/etc/unixtovms
-fi
-if test -f /etc/unixtovms.exe; then
-       eunicefix=/etc/unixtovms.exe
-fi
-
-: list of known cpp symbols
-attrlist="__alpha __bsdi__ BSD_NET2 DGUX M_I186 M_I286 M_I386"
-attrlist="$attrlist M_I8086 M_XENIX UTS __DGUX__"
-attrlist="$attrlist _AIX __STDC__ __m88k__ ansi bsd4_2 gcos gimpel"
-attrlist="$attrlist hp9000s300 hp9000s400 hp9000s500 hp9000s700"
-attrlist="$attrlist hp9000s800 hpux"
-attrlist="$attrlist i186 i386 i486 i8086 iAPX286 ibm interdata"
-attrlist="$attrlist m88k mc300 mc500 mc68000 mc68k mc700 mert"
-attrlist="$attrlist mips NeXT ns16000 ns32000 nsc32000 os"
-attrlist="$attrlist __osf__ pdp11 posix"
-attrlist="$attrlist pyr sinix sony sparc sun tower tower32 tower32_600"
-attrlist="$attrlist tower32_800 tss u3b2 u3b20 u3b200 u3b5 ultrix unix"
-attrlist="$attrlist __unix__ vax venix xenix z8000"
-
-i_whoami=''
-: List of extensions we want:
-extensions=''
-gccversion=''
-: no include file wanted by default
-inclwanted=''
-
-: File to use for dynamic loading
-usedl=''
-gidtype=''
-groupstype=''
-: change the next line if compiling for Xenix/286 on Xenix/386
-xlibpth='/usr/lib/386 /lib/386'
-
-: general looking path for locating libraries
-libpth="/usr/lib/large /lib /usr/lib $xlibpth /lib/large"
-libpth="$libpth /usr/lib/small /lib/small"
-libpth="$libpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
-
-: Private path used by Configure to find libraries.  Its value
-: is prepend to libpth. This variable takes care of special
-: machines, like the mips.  Usually, it should be empty.
-plibpth=''
-
-libswanted=" net socket inet nsl nm sdbm gdbm ndbm dbm malloc dl dld sun m c_s posix cposix ndir dir ucb bsd BSD PW x "
-
-: full support for void wanted by default
-defvoidused=15
-
+trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
 
 : Some greps do not return status, grrr.
 echo "grimblepritz" >grimble
@@ -719,7 +1013,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 (lwall@netlabs.com).
+and contact the author (doughera@lafcol.lafayette.edu).
 
 EOM
                echo $n "Continue? [n] $c" >&4
@@ -791,6 +1085,21 @@ while expr "X\$ans" : "X!" >/dev/null; do
        case  "\$answ" in
        "\$ans")
                case "\$ans" in
+               \\&*)
+                       set x \`expr "X\$ans" : "X&\(.*\)\$"\`
+                       shift
+                       case "\$1" in
+                       -d)
+                               fastread=yes
+                               echo "(OK, I'll run with -d after this question.)" >&4
+                               ;;
+                       -*)
+                               echo "*** Sorry, \$1 not supported yet." >&4
+                               ;;
+                       esac
+                       $myecho
+                       ans=!
+                       ;;
                "!")
                        sh 1>&4
                        echo " "
@@ -861,7 +1170,7 @@ if $needman; then
        cat <<EOH
  
 This installation shell script will examine your system and ask you questions
-to determine how the perl package should be installed. If you get
+to determine how the perl5 package should be installed. If you get
 stuck on a question, you may use a ! shell escape to start a subshell or
 execute a command.  Many of the questions will have default answers in square
 brackets; typing carriage return will give you the default.
@@ -890,6 +1199,8 @@ and you will be prompted again.
 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
 the questions and use the computed defaults (or the previous answers if there
 was already a config.sh file). Type 'Configure -h' for a list of options.
+You may also start interactively and then answer '& -d' at any prompt to turn
+on the non-interactive behaviour for the remaining of the execution.
 
 EOH
        . ./myread
@@ -897,9 +1208,9 @@ EOH
 
 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.  Also, let me (lwall@netlabs.com)
-know how I blew it.  If you can't run Configure for some reason, you'll have to
-generate a config.sh file by hand.
+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@lafcol.lafayette.edu) know how I blew it.
 
 This installation script affects things in two ways:
 
@@ -923,13 +1234,15 @@ fi
 : see if sh knows # comments
 echo " "
 echo "Checking your sh to see if it knows about # comments..." >&4
-if sh -c '#' >/dev/null 2>&1 ; then
+if `sh -c '#' >/dev/null 2>&1`; then
        echo "Your sh handles # comments correctly."
        shsharp=true
        spitshell=cat
        echo " "
        echo "Okay, let's see if #! works on this system..."
-       echo "#!/bin/cat" >try
+       xcat=/bin/cat
+       test -f $xcat || xcat=/usr/bin/cat
+       echo "#!$xcat" >try
        $eunicefix try
        chmod +x try
        ./try > today
@@ -937,7 +1250,7 @@ if sh -c '#' >/dev/null 2>&1 ; then
                echo "It does."
                sharpbang='#!'
        else
-               echo "#! /bin/cat" > try
+               echo "#! $xcat" > try
                $eunicefix try
                chmod +x try
                ./try > today
@@ -952,10 +1265,12 @@ if sh -c '#' >/dev/null 2>&1 ; then
 else
        echo "Your sh doesn't grok # comments--I will strip them later on."
        shsharp=false
+       cd ..
        echo "exec grep -v '^[  ]*#'" >spitshell
        chmod +x spitshell
        $eunicefix spitshell
        spitshell=`pwd`/spitshell
+       cd UU
        echo "I presume that if # doesn't work, #! won't work either!"
        sharpbang=': use '
 fi
@@ -1005,8 +1320,11 @@ for dir in \$*; do
        fi
        ;;
        *)
-       if test -f \$dir/\$thing; then
-               echo \$dir/\$thing
+       for thisthing in \$dir/\$thing; do
+               : just loop through to pick last item
+       done
+       if test -f \$thisthing; then
+               echo \$thisthing
                exit 0
        elif test -f \$dir/\$thing.exe; then
                : on Eunice apparently
@@ -1024,13 +1342,15 @@ $eunicefix loc
 loclist="
 awk
 cat
+comm
 cp
 echo
 expr
+find
 grep
 ln
+ls
 mkdir
-mv
 rm
 sed
 sort
@@ -1040,20 +1360,22 @@ uniq
 "
 trylist="
 Mcc
-bison
 byacc
 cpp
 csh
 date
 egrep
-find
+less
 line
+more
 nroff
 perl
+pg
+sendmail
 test
 uname
 "
-pth=`echo $PATH | sed -e 's/:/ /g'`
+pth=`echo $PATH | sed -e "s/$p_/ /g"`
 pth="$pth /lib /usr/lib"
 for file in $loclist; do
        xxx=`./loc $file $file $pth`
@@ -1063,8 +1385,13 @@ for file in $loclist; do
        /*)
                echo $file is in $xxx.
                ;;
+       ?:[\\/]*)
+               echo $file is in $xxx.
+               ;;
        *)
-               echo "I don't know where $file is.  I hope it's in everyone's PATH."
+               echo "I don't know where '$file' is, and my life depends on it." >&4
+               echo "Go find a public domain implementation or fix your PATH setting!" >&4
+               exit 1
                ;;
        esac
 done
@@ -1079,6 +1406,9 @@ for file in $trylist; do
        /*)
                echo $file is in $xxx.
                ;;
+       ?:[\\/]*)
+               echo $file is in $xxx.
+               ;;
        *)
                echo "I don't see $file out there, $say."
                say=either
@@ -1096,7 +1426,7 @@ test)
        echo "Hopefully test is built into your sh."
        ;;
 *)
-       if sh -c "PATH= test true" >/dev/null 2>&1; then
+       if `sh -c "PATH= test true" >/dev/null 2>&1`; then
                echo "Using the test built into your sh."
                test=test
                _test=test
@@ -1134,24 +1464,65 @@ FOO
        ;;
 esac
 
+: determine whether symbolic links are supported
+echo " "
+$touch blurfl
+if $ln -s blurfl sym > /dev/null 2>&1 ; then
+       echo "Symbolic links are supported." >&4
+       lns="$ln -s"
+else
+       echo "Symbolic links are NOT supported." >&4
+       lns="$ln"
+fi
+$rm -f blurfl sym
+
+: see whether [:lower:] and [:upper:] are supported character classes
+echo " "
+up='[A-Z]'
+low='[a-z]'
+case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
+ABYZ)
+       echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
+       up='[:upper:]'
+       low='[:lower:]'
+       ;;
+*)
+       echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
+       ;;
+esac
+: set up the translation script tr, must be called with ./tr of course
+cat >tr <<EOSC
+$startsh
+case "\$1\$2" in
+'[A-Z][a-z]') exec $tr '$up' '$low';;
+'[a-z][A-Z]') exec $tr '$low' '$up';;
+esac
+exec $tr "\$@"
+EOSC
+chmod +x tr
+$eunicefix tr
+
 : Try to determine whether config.sh was made on this system
 case "$config_sh" in
 '')
 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
-myuname=`echo $myuname | $sed -e 's/^[^=]*=//' | \
-       tr '[A-Z]' '[a-z]' | tr '\012' ' '`
+myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
+       ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
+newmyuname="$myuname"
 dflt=n
-if test "$fastread" = yes; then
-       dflt=y
-elif test -f ../config.sh; then
-       oldmyuname=''
-       if $contains myuname= ../config.sh >/dev/null 2>&1; then
-               eval "old`grep myuname= ../config.sh`"
-       fi
-       if test "X$myuname" = "X$oldmyuname"; then
-               dflt=y
+case "$knowitall" in
+'')
+       if test -f ../config.sh; then
+               if $contains myuname= ../config.sh >/dev/null 2>&1; then
+                       eval "`grep myuname= ../config.sh`"
+               fi
+               if test "X$myuname" = "X$newmyuname"; then
+                       dflt=y
+               fi
        fi
-fi
+       ;;
+*) dflt=y;;
+esac
 
 : Get old answers from old config file if Configure was run on the
 : same system, otherwise use the hints.
@@ -1164,12 +1535,12 @@ if test -f config.sh; then
        case "$ans" in
        n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
        *)  echo "Fetching default answers from your old config.sh file..." >&4
-               tmp="$n"
-               tans="$c"
+               tmp_n="$n"
+               tmp_c="$c"
                . ./config.sh
                cp config.sh UU
-               n="$tmp"
-               c="$tans"
+               n="$tmp_n"
+               c="$tmp_c"
                hint=previous
                ;;
        esac
@@ -1183,21 +1554,35 @@ EOM
        cd 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 lwall@netlabs.com
+       : tests or hints, please send them to doughera@lafcol.lafayette.edu
        : The metaconfig authors would also appreciate a copy...
-       $test -f /irix && osname=sgi
+       $test -f /irix && osname=irix
        $test -f /xenix && osname=sco_xenix
        $test -f /dynix && osname=dynix
        $test -f /dnix && osname=dnix
+       $test -f /unicos && osname=unicos && osvers=`$uname -r`
        $test -f /bin/mips && /bin/mips && osname=mips
-       $test -d /NextApps && test -f /usr/adm/software_version && osname=next
+       $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
+               $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
+       $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
+               osname=machten 
+               if $test -x /sbin/version; then
+                       osvers=`/sbin/version | $awk '{print $2}' | 
+                       $sed -e 's/[A-Za-z]$//'`
+               elif $test -x /usr/etc/version; then
+                       osvers=`/usr/etc/version | $awk '{print $2}' | 
+                       $sed -e 's/[A-Za-z]$//'`
+               else
+                       osvers="$2.$3"
+               fi
+       fi
        if $test -f $uname; then
                set X $myuname
                shift
 
-               $test -f $5.sh && dflt="$dflt $5"
-
                case "$5" in
                fps*) osname=fps ;;
                mips*)
@@ -1208,65 +1593,137 @@ EOM
                [23]100) osname=mips ;;
                next*) osname=next ;;
                news*) osname=news ;;
-               i386*) if $test -f /etc/kconfig; then
-                           osname=isc
-                               if $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
-                                       osvers=3.2.3
+               i386*)
+                       if $test -f /etc/kconfig; then
+                               osname=isc
+                               if test "$lns" = "ln -s"; then
+                                       osvers=4
+                               elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
+                                       osvers=3
                                elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
-                                       osvers=3.2.2
-                           fi
-                      fi
-                      ;;
+                                       osvers=2
+                               fi
+                       fi
+                       ;;
                esac
 
                case "$1" in
-               aix) osname=aix_rs ;;
-               sunos) osname=sunos
+               aix) osname=aix
+                       tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
+                       case "$tmp" in
+                       'not found') osvers="$4"."$3" ;;
+                       '<3240'|'<>3240') osvers=3.2.0 ;;
+                       '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
+                       '=3250'|'>3250') osvers=3.2.5 ;;
+                       *) osvers=$tmp;;
+                       esac
+                       ;;
+               dnix) osname=dnix
+                       osvers="$3"
+                       ;;
+               domainos) osname=apollo
+                       osvers="$3"
+                       ;;
+               dgux) osname=dgux 
+                       osvers="$3"
+                       ;;
+               freebsd) osname=freebsd 
+                       osvers="$3" ;;
+               genix) osname=genix ;;
+               hp*) osname=hpux 
                        case "$3" in
-                       [34]*) osvers=$3 ;;
-                       5*) osname=solaris
-                               osvers=`echo $3 | $sed 's/^5/2/g'` ;;
+                       *.08.*) osvers=9 ;;
+                       *.09.*) osvers=9 ;;
+                       *.10.*) osvers=10 ;;
+                       *)      osvers="$3" ;;
+                       esac
+                       ;;
+               irix) osname=irix
+                       case "$3" in
+                       4*) osvers=4 ;;
+                       5*) osvers=5 ;;
+                       *)      osvers="$3" ;;
+                       esac
+                       ;;
+               linux) osname=linux
+                       case "$3" in
+                       1*) osvers=1 ;;
+                       *)      osvers="$3" ;;
                        esac
                        ;;
+               netbsd*) osname=netbsd 
+                       osvers="$3"
+                       ;;
+               bsd386) osname=bsd386
+                       osvers=`$uname -r`
+                       ;;
+               next*) osname=next ;;
                solaris) osname=solaris
                        case "$3" in
                        5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
+                       *)      osvers="$3" ;;
                        esac
                        ;;
-               dnix) osname=dnix ;;
-               dgux) osname=dgux ;;
-               genix) osname=genix ;;
-               hp*ux) osname=hpux ;;
-               next) osname=next ;;
-               irix) osname=sgi ;;
-               ultrix) osname=ultrix
+               sunos) osname=sunos
+                       case "$3" in
+                       5*) osname=solaris
+                               osvers=`echo $3 | $sed 's/^5/2/g'` ;;
+                       *)      osvers="$3" ;;
+                       esac
+                       ;;
+               titanos) osname=titanos
                        case "$3" in
                        1*) osvers=1 ;;
                        2*) osvers=2 ;;
                        3*) osvers=3 ;;
                        4*) osvers=4 ;;
+                       *)      osvers="$3" ;;
                        esac
                        ;;
+               ultrix) osname=ultrix
+                       osvers="$3"
+                       ;;
                osf1)   case "$5" in
-                               alpha)  osname=dec_osf
-                                       case "$3" in
-                       [vt]1\.*) osvers=1 ;;
-                        [vt]2\.*) osvers=2 ;;
-                        [vt]3\.*) osvers=3 ;;
-                                       esac
-                    ;;
-                       hp*)    osname=hp_osf1  ;;      # TR
-                       mips)   osname=mips_osf1 ;;     # TR
-                       # TR =  Technology Releases: (un^N)supported
+                               alpha)
+                                       osname=dec_osf
+                                       osvers=`echo "$3" | sed 's/^[vt]//'`
+                                       ;;
+                       hp*)    osname=hp_osf1  ;;
+                       mips)   osname=mips_osf1 ;;
                        esac
                        ;;
-               uts) osname=uts ;;
+               uts) osname=uts 
+                       osvers="$3"
+                       ;;
                $2) case "$osname" in
                        *isc*) ;;
+                       *freebsd*) ;;
+                       svr*)
+                               : svr4.x or possibly later
+                               case "svr$3" in 
+                               ${osname}*)
+                                       osname=svr$3
+                                       osvers=$4
+                                       ;;
+                               esac
+                               case "$osname" in
+                               svr4.0)
+                                       : Check for ESIX
+                                       if test -f /stand/boot ; then
+                                               eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
+                                               if test -n "$INITPROG" -a -f "$INITPROG"; then
+                       isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
+                                                       if test -n "$isesix"; then
+                                                               osname=esix4
+                                                       fi
+                                               fi
+                                       fi
+                                       ;;
+                               esac
+                               ;;
                        *)      if test -f /etc/systemid; then
-                               osname=sco
-                               : Does anyone know if these next gyrations are needed
-                               set `echo $3 | $sed 's/\./ /g'` $4
+                                       osname=sco
+                                       set `echo $3 | $sed 's/\./ /g'` $4
                                        if $test -f sco_$1_$2_$3.sh; then
                                                osvers=$1.$2.$3
                                        elif $test -f sco_$1_$2.sh; then
@@ -1274,40 +1731,79 @@ EOM
                                        elif $test -f sco_$1.sh; then
                                                osvers=$1
                                        fi
+                               else
+                                       case "$osname" in
+                                       '') : Still unknown.  Probably a generic Sys V.
+                                               osname="sysv"
+                                               osvers="$3"
+                                               ;;
+                                       esac
                                fi
                                ;;
                        esac
                        ;;
+               *)      case "$osname" in
+                       '') : Still unknown.  Probably a generic BSD.
+                               osname="$1"
+                               osvers="$3"
+                               ;;
+                       esac
+                       ;;
                esac
        else
                if test -f /vmunix -a -f news_os.sh; then
-                       (what /vmunix | tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
+                       (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
                        if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
                                osname=news_os
                        fi
                        $rm -f ../UU/kernel.what
+               elif test -d c:/.; then
+                       set X $myuname
+                       osname=os2
+                       osvers="$5"
                fi
        fi
        
-       : Now look for a hint file osname_osvers
-       file=`echo "${osname}_${osvers}" | sed -e 's@\.@_@g' -e 's@_$@@'`
-       case "$file" in
-       '') dflt=none ;;
-       *)  case "$osvers" in
-               '') dflt=$file 
-                       ;;
-               *)  if $test -f $file.sh ; then
-                               dflt=$file
-                       elif $test -f "${osname}.sh" ; then
-                               dflt="${osname}"
-                       else
-                               dflt=none
-                       fi
+       : Now look for a hint file osname_osvers, unless one has been
+       : specified already.
+       case "$hintfile" in
+       ''|' ')
+               file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
+               : Also try without trailing minor version numbers.
+               xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
+               xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
+               xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
+               xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
+               case "$file" in
+               '') dflt=none ;;
+               *)  case "$osvers" in
+                       '') dflt=$file
+                               ;;
+                       *)  if $test -f $file.sh ; then
+                                       dflt=$file
+                               elif $test -f $xfile.sh ; then
+                                       dflt=$xfile
+                               elif $test -f $xxfile.sh ; then
+                                       dflt=$xxfile
+                               elif $test -f $xxxfile.sh ; then
+                                       dflt=$xxxfile
+                               elif $test -f $xxxxfile.sh ; then
+                                       dflt=$xxxxfile
+                               elif $test -f "${osname}.sh" ; then
+                                       dflt="${osname}"
+                               else
+                                       dflt=none
+                               fi
+                               ;;
+                       esac
                        ;;
                esac
                ;;
+       *)
+               dflt=`echo $hintfile | $sed 's/\.sh$//'`
+               ;;
        esac
-                       
+
        $cat <<EOM
 
 You may give one or more space-separated answers, or "none" if appropriate.
@@ -1345,9 +1841,9 @@ EOM
        hint=recommended
        : Remember our hint file for later.
        if $test -f "$file.sh" ; then
-               hintfile="$file.sh"
+               hintfile="$file"
        else
-               hintfile=none
+               hintfile=''
        fi
 
        cd ..
@@ -1357,18 +1853,20 @@ cd UU
 *)
        echo " "
        echo "Fetching default answers from $config_sh..." >&4
-       tmp="$n"
-       tans="$c"
+       tmp_n="$n"
+       tmp_c="$c"
        cd ..
        cp $config_sh config.sh 2>/dev/null
        . ./config.sh
        cd UU
        cp ../config.sh .
-       n="$tmp"
-       c="$tans"
+       n="$tmp_n"
+       c="$tmp_c"
        hint=previous
        ;;
 esac
+test "$override" && . ./optdef.sh
+myuname="$newmyuname"
 
 : Restore computed paths
 for file in $loclist $trylist; do
@@ -1376,15 +1874,18 @@ for file in $loclist $trylist; do
 done
 
 cat << EOM
+
 Configure uses the operating system name and version to set some defaults.
-Say "none" to leave it blank.
-EOM
+The default value is probably right if the name rings a bell. Otherwise,
+since spelling matters for me, either accept the default or answer "none"
+to leave it blank.
 
+EOM
 case "$osname" in
-       ''|' ')  
+       ''|' ')
                case "$hintfile" in
-               none) dflt=none ;;
-               *)  dflt=`echo $hintfile | sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
+               ''|' '|none) dflt=none ;;
+               *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
                esac
                ;;
        *) dflt="$osname" ;;
@@ -1392,429 +1893,128 @@ esac
 rp="Operating system name?"
 . ./myread
 case "$ans" in
-    none)  osname='' ;;
-    *) osname="$ans" ;;
-esac
-
-case "$osvers" in
-       ''|' ')  
-               case "$hintfile" in
-               none) dflt=none ;;
-               *)      dflt=`echo $hintfile | sed -e 's/\.sh$//' -e 's/^[^_]*//'`
-               dflt=`echo $dflt | sed -e 's/^_//' -e 's/_/./g'` ;;
-               esac
-               ;;
-       *) dflt="$osvers" ;;
-esac
-rp="Operating system version?"
-. ./myread
-case "$ans" in
-    none)  osvers='' ;;
-    *) osvers="$ans" ;;
+none)  osname='' ;;
+*) osname=`echo "$ans" | $sed -e 's/[  ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
 esac
 : who configured the system
 cf_time=`$date 2>&1`
-cf_by=`( (logname) 2>/dev/null || whoami) 2>&1`
+(logname > .temp) >/dev/null 2>&1
+$test -s .temp || (whoami > .temp) >/dev/null 2>&1
+$test -s .temp || echo unknown > .temp
+cf_by=`$cat .temp`
+$rm -f .temp
 
-: determine where manual pages are on this system
+: determine the architecture name
 echo " "
-case "$sysman" in
-'') 
-       syspath='/usr/man/man1 /usr/man/man1 /usr/man/mann'
-       syspath="$syspath /usr/man/manl /usr/man/local/man1"
-       syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
-       syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
-       syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
-       syspath="$syspath /usr/man/man.L /local/man/man1"
-       sysman=`./loc . $syspath`
+if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
+       tarch=`arch`"-$osname"
+elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
+       if uname -m > tmparch 2>&1 ; then
+               tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
+       else
+               tarch="$osname"
+       fi
+       $rm -f tmparch
+else
+       tarch="$osname"
+fi
+case "$myarchname" in
+''|"$tarch") ;;
+*)
+       echo "(Your architecture name used to be $myarchname.)"
+       archname=''
        ;;
 esac
-if $test -d "$sysman"; then
-       echo "System manual is in $sysman." >&4
+case "$archname" in
+'') dflt="$tarch";;
+*) dflt="$archname";;
+esac
+rp='What is your architecture name'
+. ./myread
+archname="$ans"
+myarchname="$tarch"
+
+: is AFS running?
+echo " "
+if test -d /afs; then
+       echo "AFS may be running... I'll be extra cautious then..." >&4
+       afs=true
 else
-       echo "Could not find manual pages in source form." >&4
+       echo "AFS does not seem to be running..." >&4
+       afs=false
 fi
 
-: see what memory models we can support
-case "$models" in
-'')
-       $cat >pdp11.c <<'EOP'
-main() {
-#ifdef pdp11
-       exit(0);
-#else
-       exit(1);
-#endif
-}
-EOP
-       cc -o pdp11 pdp11.c >/dev/null 2>&1
-       if ./pdp11 2>/dev/null; then
-               dflt='unsplit split'
-       else
-               tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
-               case "$tans" in
-               X) dflt='none';;
-               *) if $test -d /lib/small || $test -d /usr/lib/small; then
-                               dflt='small'
-                       else
-                               dflt=''
-                       fi
-                       if $test -d /lib/medium || $test -d /usr/lib/medium; then
-                               dflt="$dflt medium"
-                       fi
-                       if $test -d /lib/large || $test -d /usr/lib/large; then
-                               dflt="$dflt large"
-                       fi
-                       if $test -d /lib/huge || $test -d /usr/lib/huge; then
-                               dflt="$dflt huge"
-                       fi
-               esac
-       fi;;
-*) dflt="$models";;
+: decide how portable to be.  Allow command line overrides.
+case "$d_portable" in
+"$undef") ;;
+*)     d_portable="$define" ;;
 esac
-$cat <<EOM
-Some systems have different model sizes.  On most systems they are called
-small, medium, large, and huge.  On the PDP11 they are called unsplit and
-split.  If your system doesn't support different memory models, say "none".
-If you wish to force everything to one memory model, say "none" here and
-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.)
-
-EOM
-rp="Which memory models are supported?"
-. ./myread
-models="$ans"
 
-case "$models" in
-none)
-       small=''
-       medium=''
-       large=''
-       huge=''
-       unsplit=''
-       split=''
+: set up shell script to do ~ expansion
+cat >filexp <<EOSS
+$startsh
+: expand filename
+case "\$1" in
+ ~/*|~)
+       echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
        ;;
-*split)
-       case "$split" in
-       '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
-                        $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
-                       dflt='-i'
-               else
-                       dflt='none'
-               fi;;
-       *) dflt="$split";;
-       esac
-       rp="What flag indicates separate I and D space?"
-       . ./myread
-       tans="$ans"
-       case "$tans" in
-       none) tans='';;
-       esac
-       split="$tans"
-       unsplit='';;
-*large*|*small*|*medium*|*huge*)
-       case "$models" in
-       *large*)
-               case "$large" in
-               '') dflt='-Ml';;
-               *) dflt="$large";;
-               esac
-       rp="What flag indicates large model?"
-       . ./myread
-       tans="$ans"
-       case "$tans" in
-       none) tans='';
-       esac
-       large="$tans";;
-       *) large='';;
-       esac
-       case "$models" in
-       *huge*) case "$huge" in
-               '') dflt='-Mh';;
-               *) dflt="$huge";;
-               esac
-               rp="What flag indicates huge model?"
-               . ./myread
-               tans="$ans"
-               case "$tans" in
-               none) tans='';
-               esac
-               huge="$tans";;
-       *) huge="$large";;
-       esac
-       case "$models" in
-       *medium*) case "$medium" in
-               '') dflt='-Mm';;
-               *) dflt="$medium";;
-               esac
-               rp="What flag indicates medium model?"
-               . ./myread
-               tans="$ans"
-               case "$tans" in
-               none) tans='';
-               esac
-               medium="$tans";;
-       *) medium="$large";;
-       esac
-       case "$models" in
-       *small*) case "$small" in
-               '') dflt='none';;
-               *) dflt="$small";;
-               esac
-               rp="What flag indicates small model?"
-               . ./myread
-               tans="$ans"
-               case "$tans" in
-               none) tans='';
+ ~*)
+       if $test -f /bin/csh; then
+               /bin/csh -f -c "glob \$1"
+               failed=\$?
+               echo ""
+               exit \$failed
+       else
+               name=\`$expr x\$1 : '..\([^/]*\)'\`
+               dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
+               if $test ! -d "\$dir"; then
+                       me=\`basename \$0\`
+                       echo "\$me: can't locate home directory for: \$name" >&2
+                       exit 1
+               fi
+               case "\$1" in
+               */*)
+                       echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
+                       ;;
+               *)
+                       echo \$dir
+                       ;;
                esac
-               small="$tans";;
-       *) small='';;
-       esac
+       fi
        ;;
 *)
-       echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
+       echo \$1
        ;;
 esac
+EOSS
+chmod +x filexp
+$eunicefix filexp
 
-: make some quick guesses about what we are up against
-echo " "
-$echo $n "Hmm...  $c"
-echo exit 1 >bsd
-echo exit 1 >usg
-echo exit 1 >v7
-echo exit 1 >osf1
-echo exit 1 >eunice
-echo exit 1 >xenix
-echo exit 1 >venix
-$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
-if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
-then
-       echo "Looks kind of like an OSF/1 system, but we'll see..."
-       echo exit 0 >osf1
-elif test `echo abc | tr a-z A-Z` = Abc ; then
-       xxx=`./loc addbib blurfl $pth`
-       if $test -f $xxx; then
-       echo "Looks kind of like a USG system with BSD features, but we'll see..."
-               echo exit 0 >bsd
-               echo exit 0 >usg
-       else
-               if $contains SIGTSTP foo >/dev/null 2>&1 ; then
-                       echo "Looks kind of like an extended USG system, but we'll see..."
-               else
-                       echo "Looks kind of like a USG system, but we'll see..."
-               fi
-               echo exit 0 >usg
-       fi
-elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
-       echo "Looks kind of like a BSD system, but we'll see..."
-       echo exit 0 >bsd
-else
-       echo "Looks kind of like a Version 7 system, but we'll see..."
-       echo exit 0 >v7
-fi
-case "$eunicefix" in
-*unixtovms*)
-       $cat <<'EOI'
-There is, however, a strange, musty smell in the air that reminds me of
-something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
-EOI
-       echo exit 0 >eunice
-       d_eunice="$define"
-: it so happens the Eunice I know will not run shell scripts in Unix format
+: now set up to get a file name
+cat <<'EOSC' >getfile
+tilde=''
+fullpath=''
+already=''
+skip=''
+none_ok=''
+exp_file=''
+nopath_ok=''
+orig_rp="$rp"
+orig_dflt="$dflt"
+
+case "$fn" in
+*\(*)
+       expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
+       fn=`echo $fn | sed 's/(.*)//'`
        ;;
-*)
-       echo " "
-       echo "Congratulations.  You aren't running Eunice."
-       d_eunice="$undef"
+esac
+
+case "$fn" in
+*:*)
+       loc_file=`expr $fn : '.*:\(.*\)'`
+       fn=`expr $fn : '\(.*\):.*'`
        ;;
 esac
-if test -f /xenix; then
-       echo "Actually, this looks more like a XENIX system..."
-       echo exit 0 >xenix
-       d_xenix="$define"
-else
-       echo " "
-       echo "It's not Xenix..."
-       d_xenix="$undef"
-fi
-chmod +x xenix
-$eunicefix xenix
-if test -f /venix; then
-       echo "Actually, this looks more like a VENIX system..."
-       echo exit 0 >venix
-else
-       echo " "
-       if xenix; then
-               : null
-       else
-               echo "Nor is it Venix..."
-       fi
-fi
-chmod +x bsd usg v7 osf1 eunice xenix venix
-$eunicefix bsd usg v7 osf1 eunice xenix venix
-$rm -f foo
-
-: see if we need a special compiler
-echo " "
-if usg; then
-       case "$cc" in
-       '') case "$Mcc" in
-               /*) dflt='Mcc';;
-               *) case "$large" in
-                       -M*) dflt='cc';;
-                       *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
-                                       if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
-                                               dflt='cc'
-                                       else
-                                               dflt='cc -M'
-                                       fi
-                               else
-                                       dflt='cc'
-                               fi;;
-                       esac;;
-               esac;;
-       *)  dflt="$cc";;
-       esac
-       $cat <<'EOM'
-On some 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
-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?"
-       . ./myread
-       cc="$ans"
-else
-       case "$cc" in
-       '') dflt=cc;;
-       *) dflt="$cc";;
-       esac
-       rp="Use which C compiler?"
-       . ./myread
-       cc="$ans"
-fi
-case "$cc" in
-gcc*)   echo "Checking out which version of gcc"
-$cat >gccvers.c <<EOM
-#include <stdio.h>
-int main()
-{
-char *v;
-v = "unknown";
-#ifdef __GNUC__
-#  ifdef __VERSION__
-       v = __VERSION__;
-#  endif
-#endif
-switch((int) v[0])
-  {
-    case '1':  printf("1\n"); break;
-    case '2':  printf("2\n"); break;
-    case '3':  printf("3\n"); break;
-    default:   break;
-  }
-#ifdef __GNUC__
-return 0;
-#else
-return 1;
-#endif
-}
-EOM
-       if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
-           gccversion=`./gccvers`
-               echo "You appear to have version $gccversion."
-       else
-               echo "Doesn't appear to be GNU cc."
-       fi
-       $rm -f gccvers*
-       if $test "$gccversion" = '1'; then
-               cpp=`./loc gcc-cpp $cpp $pth`
-       fi
-       ;;
-esac
-: decide how portable to be
-case "$d_portable" in
-"$define") dflt=y;;
-*)     dflt=n;;
-esac
-$cat <<'EOH'
-I can set things up so that your shell scripts and binaries are more portable,
-at what may be a noticable cost in performance.  In particular, if you
-ask to be portable, the following happens:
-
-     1) Shell scripts will rely on the PATH variable rather than using
-       the paths derived above.
-     2) ~username interpretations will be done at run time rather than
-       by Configure.
-
-EOH
-rp="Do you expect to run these scripts and binaries on multiple machines?"
-. ./myread
-case "$ans" in
-       y*) d_portable="$define"
-       for file in $loclist $trylist; do
-               eval $file="\$file"
-       done
-       ;;
-       *)  d_portable="$undef" ;;
-esac
-
-: set up shell script to do ~ expansion
-cat >filexp <<EOSS
-$startsh
-: expand filename
-case "\$1" in
- ~/*|~)
-       echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
-       ;;
- ~*)
-       if $test -f /bin/csh; then
-               /bin/csh -f -c "glob \$1"
-               failed=$?
-               echo ""
-               exit \$failed
-       else
-               name=\`$expr x\$1 : '..\([^/]*\)'\`
-               dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
-               if $test ! -d "\$dir"; then
-                       me=\`basename \$0\`
-                       echo "\$me: can't locate home directory for: \$name" >&2
-                       exit 1
-               fi
-               case "\$1" in
-               */*)
-                       echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
-                       ;;
-               *)
-                       echo \$dir
-                       ;;
-               esac
-       fi
-       ;;
-*)
-       echo \$1
-       ;;
-esac
-EOSS
-chmod +x filexp
-$eunicefix filexp
-
-: now set up to get a file name
-cat <<'EOSC' >getfile
-tilde=''
-fullpath=''
-already=''
-skip=''
-none_ok=''
-exp_file=''
-orig_rp="$rp"
-orig_dflt="$dflt"
 
 case "$fn" in
 *~*) tilde=true;;
@@ -1831,11 +2031,14 @@ esac
 case "$fn" in
 *e*) exp_file=true;;
 esac
+case "$fn" in
+*p*) nopath_ok=true;;
+esac
 
 case "$fn" in
 *f*) type='File';;
 *d*) type='Directory';;
-*l*) type='Locate'; fn=`expr $fn : '.*:\(.*\)'`;;
+*l*) type='Locate';;
 esac
 
 what="$type"
@@ -1861,6 +2064,13 @@ while test "$type"; do
        true) rp="$rp (~name ok)";;
        esac
        . UU/myread
+       if test -f UU/getfile.ok && \
+               $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
+       then
+               value="$ans"
+               ansexp="$ans"
+               break
+       fi
        case "$ans" in
        none)
                value=''
@@ -1878,7 +2088,7 @@ while test "$type"; do
                        case $? in
                        0)
                                if test "$ans" != "$value"; then
-                                       echo "(That is $value on this particular system.)"
+                                       echo "(That expands to $value on this system.)"
                                fi
                                ;;
                        *) value="$ans";;
@@ -1931,13 +2141,23 @@ while test "$type"; do
                                fi
                                ;;
                        Locate)
-                               if test -d "$value"; then
-                                       echo "(Looking for $fn in directory $value.)"
-                                       value="$value/$fn"
+                               if test -d "$ansexp"; then
+                                       echo "(Looking for $loc_file in directory $value.)"
+                                       value="$value/$loc_file"
+                                       ansexp="$ansexp/$loc_file"
                                fi
-                               if test -f "$value"; then
+                               if test -f "$ansexp"; then
                                        type=''
                                fi
+                               case "$nopath_ok" in
+                               true)   case "$value" in
+                                       */*) ;;
+                                       *)      echo "Assuming $value will be in people's path."
+                                               type=''
+                                               ;;
+                                       esac
+                                       ;;
+                               esac
                                ;;
                        esac
 
@@ -1971,1250 +2191,3710 @@ cd UU
 ans="$value"
 rp="$orig_rp"
 dflt="$orig_dflt"
+rm -f getfile.ok
 EOSC
 
-: What should the include directory be ?
-echo " "
-$echo $n "Hmm...  $c"
-case "$usrinc" in
-'') dflt='/usr/include';;
-*) dflt=$usrinc;;
-esac
-incpath=''
-mips_type=''
-if $test -f /bin/mips && /bin/mips; then
-       echo "Looks like a MIPS system..."
-       $cat >usr.c <<'EOCP'
-#ifdef SYSTYPE_BSD43
-/bsd43
-#endif
-EOCP
-       if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
-               dflt='/bsd43/usr/include'
-               incpath='/bsd43'
-               mips_type='BSD 4.3'
-       else
-               mips_type='System V'
-       fi
-       $rm -f usr.c usr.out
-       echo "and you're compiling with the $mips_type compiler and libraries."
-else
-       echo "Doesn't look like a MIPS system."
-       echo "exit 1" >mips
-       chmod +x mips
-       $eunicefix mips
-fi
-echo " "
-fn=d/
-rp='Where are the include files you want to use?'
-. ./getfile
-usrinc="$ans"
-
-: determine optimize, if desired, or use for debug flag also
-case "$optimize" in
-' ') dflt="none";;
-'') dflt="-g";;
-*) dflt="$optimize";;
+: determine root of directory hierarchy where package will be installed.
+case "$prefix" in
+'')
+       dflt=`./loc . /usr/local /usr/local /local /opt /usr`
+       ;;
+*)
+       dflt="$prefix"
+       ;;
 esac
-$cat <<EOH
-
-Some C compilers have problems with their optimizers, by default, $package
-compiles with the -O flag to use the optimizer.  Alternately, you might want
-to use the symbolic debugger, which uses the -g flag (on traditional Unix
-systems).  Either flag can be specified here.  To use neither flag, specify
-the word "none".
+$cat <<EOM
 
-EOH
-rp="What optimizer/debugger flag should be used?"
-. ./myread
-optimize="$ans"
-case "$optimize" in
-'none') optimize=" ";;
-esac
+By default, $package will be installed in $dflt/bin, manual
+pages under $dflt/man, etc..., i.e. with $dflt as prefix for
+all installation directories. Typically set to /usr/local, but you
+may choose /usr if you wish to install $package among your system
+binaries. If you wish to have binaries under /bin but manual pages
+under /usr/local/man, that's ok: you will be prompted separately
+for each of the installation directories, the prefix being only used
+to set the defaults.
 
-dflt=''
-case "$ccflags" in
-'')    case "$cc" in
-       *gcc*) if $test "$gccversion" = "1"; then
-                       dflt='-fpcc-struct-return'
-                  fi ;;
-       esac
-       case "$optimize" in
-       *-g*) dflt="$dflt -DDEBUGGING";;
-       esac
-       case "$cc" in
-       *gcc*)  if test -d /etc/conf/kconfig.d &&
-                 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
-               then
-                       dflt="$dflt -posix"
-               fi
-               ;;
+EOM
+fn=d~
+rp='Installation prefix to use?'
+. ./getfile
+oldprefix=''
+case "$prefix" in
+'') ;;
+*)
+       case "$ans" in
+       "$prefix") ;;
+       *) oldprefix="$prefix";;
        esac
        ;;
 esac
+prefix="$ans"
+prefixexp="$ansexp"
 
-case "$mips_type" in
-*BSD*) ;;
-'') ;;
-*) inclwanted="$inclwanted $usrinc/bsd";;
+: set the prefixit variable, to compute a suitable default value
+prefixit='case "$3" in
+""|none)
+       case "$oldprefix" in
+       "") eval "$1=\"\$$2\"";;
+       *)
+               case "$3" in
+               "") eval "$1=";;
+               none)
+                       eval "tp=\"\$$2\"";
+                       case "$tp" in
+                       ""|" ") eval "$1=\"\$$2\"";;
+                       *) eval "$1=";;
+                       esac;;
+               esac;;
+       esac;;
+*)
+       eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
+       case "$tp" in
+       --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
+       /*-$oldprefix/*|\~*-$oldprefix/*)
+               eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
+       *) eval "$1=\"\$$2\"";;
+       esac;;
+esac'
+
+: determine where private library files go
+: Usual default is /usr/local/lib/perl5.  Also allow things like 
+: /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
+case "$prefix" in
+*perl*) set dflt privlib lib ;;
+*)      set dflt privlib lib/$package ;;
 esac
-for thisincl in $inclwanted; do
-       if $test -d $thisincl; then
-               if $test x$thisincl != x$usrinc; then
-                       case "$dflt" in
-                       *$thisincl*);;
-                       *) dflt="$dflt -I$thisincl";;
-                       esac
-               fi
-       fi
-done
+eval $prefixit
+$cat <<EOM
 
-inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
-       xxx=true;
-elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
-       xxx=true;
+There are some auxiliary files for $package that need to be put into a
+private library directory that is accessible by everyone.
+
+EOM
+fn=d~+
+rp='Pathname where the private library files will reside?'
+. ./getfile
+if $test "X$privlibexp" != "X$ansexp"; then
+       installprivlib=''
+fi
+privlib="$ans"
+privlibexp="$ansexp"
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+private 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 "$installprivlib" in
+       '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installprivlib";;
+       esac
+       fn=de~
+       rp='Where will private files be installed?'
+       . ./getfile
+       installprivlib="$ans"
 else
-       xxx=false;
-fi;
-if $xxx; then
-       case "$dflt" in
-       *$2*);;
-       *) dflt="$dflt -D$2";;
-       esac;
-fi'
+       installprivlib="$privlibexp"
+fi
 
-if ./osf1; then
-       set signal.h __LANGUAGE_C__; eval $inctest
+: set the base revision
+baserev=5.0
+
+: get the patchlevel
+echo " "
+echo "Getting the current patchlevel..." >&4
+if $test -r ../patchlevel.h;then
+       patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
+       subversion=`awk '/SUBVERSION/ {print $3}' < ../patchlevel.h`
 else
-       set signal.h LANGUAGE_C; eval $inctest
+       patchlevel=0
+       subversion=0
 fi
-set signal.h NO_PROTOTYPE; eval $inctest
-set signal.h _NO_PROTO; eval $inctest
+echo "(You have $package $baserev PL$patchlevel sub$subversion.)"
 
-case "$dflt" in
-'') dflt=none;;
-esac
-case "$ccflags" in
-'') ;;
-*) dflt="$ccflags";;
-esac
-$cat <<EOH
-
-Your C compiler may want other flags.  For this question you should include
--I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
-but you should NOT include libraries or ld flags like -lwhatever.  If you
-want $package to honor its debug switch, you should include -DDEBUGGING here.
-To use no flags, specify the word "none".
-
-Your C compiler might also need additional flags, such as -DJMPCLOBBER,
--DHIDEMYMALLOC or -DCRIPPLED_CC.
-EOH
-set X $dflt
-shift
-dflt=${1+"$@"}
-rp="Any additional cc flags?"
-. ./myread
-case "$ans" in
-none) ccflags='';;
-*) ccflags="$ans";;
-esac
+: set the prefixup variable, to restore leading tilda escape
+prefixup='case "$prefixexp" in
+"$prefix") ;;
+*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
+esac'
 
-: the following weeds options from ccflags that are of no interest to cpp
-cppflags="$ccflags"
-case "$cc" in
-*gcc*)  case "$gccversion" in
-       1) cppflags="$cppflags -D__GNUC__" ;;
-       esac
-       ;;
-esac
-case "$mips_type" in
-'');;
-*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
-esac
-case "$cppflags" in
-'');;
-*)  set X $cppflags
-       cppflags=''
-       for flag
-       do
-               case $flag in
-               -D*|-I*|-traditional|-ansi|-nostdinc|-posix|-Xp) cppflags="$cppflags $flag";;
-               esac
-       done
-       case "$cppflags" in
-       *-*)  echo "(C preprocessor flags: $cppflags)";;
+: determine where public architecture dependent libraries go
+set archlib archlib
+eval $prefixit
+case "$archlib" in
+'')
+       case "$privlib" in
+       '')
+               dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
+               set dflt
+               eval $prefixup
+               ;;
+       *)      version=`echo $baserev $patchlevel $subversion | \
+                   $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
+               dflt="$privlib/$archname/$version"
+               ;;
        esac
        ;;
+*) dflt="$archlib";;
 esac
+cat <<EOM
 
-: flags used in final linking phase
-case "$ldflags" in
-'') if venix; then
-               dflt='-i -z'
-       else
-               dflt='none'
-       fi
-       ;;
-*) dflt="$ldflags";;
-esac
-echo " "
-rp="Any additional ld flags (NOT including libraries)?"
-. ./myread
-case "$ans" in
-none) ldflags='';;
-*) ldflags="$ans";;
-esac
-rmlist="$rmlist pdp11"
+$spackage contains architecture-dependent library files.  If you are
+sharing libraries in a heterogeneous environment, you might store
+these files in a separate location.  Otherwise, you can just include
+them with the rest of the public library files.
 
-: Initialize h_fcntl
-h_fcntl=false
+EOM
+fn=d+~
+rp='Where do you want to put the public architecture-dependent libraries?'
+. ./getfile
+archlib="$ans"
+archlibexp="$ansexp"
 
-: Initialize h_sysfile
-h_sysfile=false
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+private files reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
 
-: Set private lib path
-case "$plibpth" in
-'') if mips; then
-               plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
-       fi;;
-esac
-libpth="$plibpth $libpth"
-: Now check and see which directories actually exist.
-xxx=''
-for yyy in $libpth
-do
-    if $test -d $yyy; then
-               xxx="$xxx $yyy"
-    fi
-done
-libpth="$xxx"
-$cat <<EOM
-Some systems have incompatible or broken versions of libraries.  Where
-should I look for libraries?
 EOM
+       case "$installarchlib" in
+       '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installarchlib";;
+       esac
+       fn=de~
+       rp='Where will architecture-dependent library files be installed?'
+       . ./getfile
+       installarchlib="$ans"
+else
+       installarchlib="$archlibexp"
+fi
+if $test X"$archlib" = X"$privlib"; then
+       d_archlib="$undef"
+else
+       d_archlib="$define"
+fi
 
-dflt="$libpth"
+: set up the script used to warn in case of inconsistency
+cat <<'EOSC' >whoa
+dflt=y
 echo " "
-rp="Directories to use for library searches?"
+echo "*** WHOA THERE!!! ***" >&4
+echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
+rp="    Keep the $hint value?"
 . ./myread
 case "$ans" in
-none) libpth=' ';;
-*) libpth="$ans";;
+y) td=$was; tu=$was;;
 esac
-: Looking for optional libraries
+EOSC
+
+: function used to set $1 to $val
+setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
+case "$val$was" in
+$define$undef) . ./whoa; eval "$var=\$td";;
+$undef$define) . ./whoa; eval "$var=\$tu";;
+*) eval "$var=$val";;
+esac'
+
+: make some quick guesses about what we are up against
 echo " "
-echo "Checking for optional libraries..." >&4
-case "$libs" in
-' '|'') dflt='';;
-*) dflt="$libs";;
-esac
-case "$libswanted" in
-'') libswanted='c_s';;
-esac
-for thislib in $libswanted; do
-       case "$thislib" in
-       dbm) thatlib=ndbm;;
-       *_s) thatlib=NONE;;
-       *) thatlib=${thislib}_s;;
-       esac
-       xxx=`./loc lib$thislib.a X $libpth`
-       yyy=`./loc lib$thatlib.a X $libpth`
-       zzz=`./loc lib$thislib.so.[0-9]'*' X $libpth`
+$echo $n "Hmm...  $c"
+echo exit 1 >bsd
+echo exit 1 >usg
+echo exit 1 >v7
+echo exit 1 >osf1
+echo exit 1 >eunice
+echo exit 1 >xenix
+echo exit 1 >venix
+d_bsd="$undef"
+$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
+if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
+then
+       echo "Looks kind of like an OSF/1 system, but we'll see..."
+       echo exit 0 >osf1
+elif test `echo abc | tr a-z A-Z` = Abc ; then
+       xxx=`./loc addbib blurfl $pth`
        if $test -f $xxx; then
-               echo "Found -l$thislib."
-               case "$dflt" in
-               *"-l$thislib "*|*-l$thislib|*"-l$thatlib "*|*-l$thatlib) ;;
-               *) dflt="$dflt -l$thislib";;
-               esac
-       elif $test -f $yyy; then
-               echo "Found -l$thatlib."
-               case "$dflt" in
-               *"-l$thatlib "*|*-l$thatlib) ;;
-               *) dflt="$dflt -l$thatlib";;
-               esac
-       elif $test -f $zzz; then
-               echo "Found -$thislib."
-               case "$dflt" in
-               *"-l$thislib "*|*-l$thislib) ;;
-               *) dflt="$dflt -l$thislib";;
-               esac
+       echo "Looks kind of like a USG system with BSD features, but we'll see..."
+               echo exit 0 >bsd
+               echo exit 0 >usg
        else
-               xxx=`./loc Slib$thislib.a X $xlibpth`
-               yyy=`./loc Slib$thatlib.a X $xlibpth`
-               if $test -f $xxx; then
-                       echo "Found -l$thislib."
-                       case "$dflt" in
-                       *"-l$thislib "*|*-l$thislib|*"-l$thatlib "*|*-l$thatlib) ;;
-                       *) dflt="$dflt -l$thislib";;
-                       esac
-               elif $test -f $yyy; then
-                       echo "Found -l$thatlib."
-                       case "$dflt" in
-                       *"-l$thatlib "*|*-l$thatlib) ;;
-                       *) dflt="$dflt -l$thatlib";;
-                       esac
+               if $contains SIGTSTP foo >/dev/null 2>&1 ; then
+                       echo "Looks kind of like an extended USG system, but we'll see..."
                else
-                       echo "No -l$thislib."
+                       echo "Looks kind of like a USG system, but we'll see..."
                fi
+               echo exit 0 >usg
        fi
-done
-set X $dflt
-shift
-dflt="$*"
-case "$libs" in
-'') dflt="$dflt";;
-*) dflt="$libs";;
-esac
-case "$dflt" in
-' '|'') dflt='none';;
-esac
-
-$cat <<EOM
-Some versions of Unix support shared libraries, which make executables smaller
-but make load time slightly longer.
-
-On some systems, mostly newer Unix System V's, the shared library is included
-by putting the option "-lc_s" as the last thing on the cc command line when
-linking.  Other systems use shared libraries by default.  There may be other
-libraries needed to compile $package on your machine as well.  If your system
-needs the "-lc_s" option, include it here.  Include any other special libraries
-here as well.  Say "none" for none.
-EOM
-
-echo " "
-rp="Any additional libraries?"
-. ./myread
-case "$ans" in
-none) libs=' ';;
-*) libs="$ans";;
-esac
-
-: see if nm is to be used to determine whether a symbol is defined or not
-case "$usenm" in
-'')
-       dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
-       if $test $dflt -gt 20; then
-               dflt=y
-       else
-               dflt=n
-       fi
+elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
+       echo "Looks kind of like a BSD system, but we'll see..."
+       d_bsd="$define"
+       echo exit 0 >bsd
+else
+       echo "Looks kind of like a Version 7 system, but we'll see..."
+       echo exit 0 >v7
+fi
+case "$eunicefix" in
+*unixtovms*)
+       $cat <<'EOI'
+There is, however, a strange, musty smell in the air that reminds me of
+something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
+EOI
+       echo exit 0 >eunice
+       d_eunice="$define"
+: it so happens the Eunice I know will not run shell scripts in Unix format
        ;;
 *)
-       case "$usenm" in
-       true) dflt=y;;
-       *) dflt=n;;
-       esac
+       echo " "
+       echo "Congratulations.  You aren't running Eunice."
+       d_eunice="$undef"
        ;;
 esac
+if test -f /xenix; then
+       echo "Actually, this looks more like a XENIX system..."
+       echo exit 0 >xenix
+       d_xenix="$define"
+else
+       echo " "
+       echo "It's not Xenix..."
+       d_xenix="$undef"
+fi
+chmod +x xenix
+$eunicefix xenix
+if test -f /venix; then
+       echo "Actually, this looks more like a VENIX system..."
+       echo exit 0 >venix
+else
+       echo " "
+       if ./xenix; then
+               : null
+       else
+               echo "Nor is it Venix..."
+       fi
+fi
+chmod +x bsd usg v7 osf1 eunice xenix venix
+$eunicefix bsd usg v7 osf1 eunice xenix venix
+$rm -f foo
+
+: see if setuid scripts can be secure
 $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.
+Some kernels have a bug that prevents setuid #! scripts from being
+secure.  Some sites have disabled setuid #! scripts because of this.
+
+First let's decide if your kernel supports secure setuid #! scripts.
+(If setuid #! scripts would be secure but have been disabled anyway,
+don't say that they are secure if asked.)
 
 EOM
-rp='Shall I use nm to extract C symbols from the libraries?'
-. ./myread
-case "$ans" in
-n|N) usenm=false;;
-*) usenm=true;;
-esac
-
-runnm=$usenm
-case "$reuseval" in
-true) runnm=false;;
-esac
 
-: nm options which may be necessary
-case "$nm_opt" in
-'') if $test -f /mach_boot; then
-               nm_opt=''
-       elif $test -d /usr/ccs/lib; then
-               nm_opt='-p'
-       elif $test -f /dgux; then
-               nm_opt='-p'
+val="$undef"
+if $test -d /dev/fd; then
+       echo "#!$ls" >reflect
+       chmod +x,u+s reflect
+       ./reflect >flect 2>&1
+       if $contains "/dev/fd" flect >/dev/null; then
+               echo "Congratulations, your kernel has secure setuid scripts!" >&4
+               val="$define"
        else
-               nm_opt=''
-       fi;;
-esac
+               $cat <<EOM
+If you are not sure if they are secure, I can check but I'll need a
+username and password different from the one you are using right now.
+If you don't have such a username or don't want me to test, simply
+enter 'none'.
 
-case "$runnm" in
-true)
-: get list of predefined functions in a handy place
+EOM
+               rp='Other username to test security of setuid scripts with?'
+               dflt='none'
+               . ./myread
+               case "$ans" in
+               n|none)
+                       case "$d_suidsafe" in
+                       '')     echo "I'll assume setuid scripts are *not* secure." >&4
+                               dflt=n;;
+                       "$undef")
+                               echo "Well, the $hint value is *not* secure." >&4
+                               dflt=n;;
+                       *)      echo "Well, the $hint value *is* secure." >&4
+                               dflt=y;;
+                       esac
+                       ;;
+               *)
+                       $rm -f reflect flect
+                       echo "#!$ls" >reflect
+                       chmod +x,u+s reflect
+                       echo >flect
+                       chmod a+w flect
+                       echo '"su" will (probably) prompt you for '"$ans's password."
+                       su $ans -c './reflect >flect'
+                       if $contains "/dev/fd" flect >/dev/null; then
+                               echo "Okay, it looks like setuid scripts are secure." >&4
+                               dflt=y
+                       else
+                               echo "I don't think setuid scripts are secure." >&4
+                               dflt=n
+                       fi
+                       ;;
+               esac
+               rp='Does your kernel have *secure* setuid scripts?'
+               . ./myread
+               case "$ans" in
+               [yY]*)  val="$define";;
+               *)      val="$undef";;
+               esac
+       fi
+else
+       echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
+       val="$undef"
+fi
+set d_suidsafe
+eval $setvar
+
+$rm -f reflect flect
+
+: now see if they want to do setuid emulation
 echo " "
-case "$libc" in
-'') libc=unknown
-       case "$libs" in
-       *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
-       esac
+val="$undef"
+case "$d_suidsafe" in
+"$define")
+       val="$undef"
+       echo "No need to emulate SUID scripts since they are secure here." >& 4
        ;;
-esac
-libpth="$plibpth $libpth"
-libnames='';
-case "$libs" in
-'') ;;
-*)  for thislib in $libs; do
-       case "$thislib" in
-       -l*)
-               thislib=`expr X$thislib : 'X-l\(.*\)'`
-               try=`./loc lib$thislib.a blurfl/dyick $libpth`
-               if test ! -f $try; then
-                       try=`./loc lib$thislib blurfl/dyick $libpth`
-                       if test ! -f $try; then
-                               try=`./loc lib$thislib.so.'*' blurfl/dyick $libpth`
-                               if test ! -f $try; then
-                                       try=`./loc $thislib blurfl/dyick $libpth`
-                                       if test ! -f $try; then
-                                               try=`./loc Slib$thislib.a blurfl/dyick $xlibpth`
-                                               if test ! -f $try; then
-                                                       try=''
-                                               fi
-                                       fi
-                               fi
-                       fi
-               fi
-               libnames="$libnames $try"
-               ;;
-       *) libnames="$libnames $thislib" ;;
+*)
+       $cat <<EOM
+Some systems have disabled setuid scripts, especially systems where
+setuid scripts cannot be secure.  On systems where setuid scripts have
+been disabled, the setuid/setgid bits on scripts are currently
+useless.  It is possible for $package to detect those bits and emulate
+setuid/setgid in a secure fashion.  This emulation will only work if
+setuid scripts have been disabled in your kernel.
+
+EOM
+       case "$d_dosuid" in
+       "$define") dflt=y ;;
+       *) dflt=n ;;
+       esac
+       rp="Do you want to do setuid/setgid emulation?"
+       . ./myread
+       case "$ans" in
+       [yY]*)  val="$define";;
+       *)      val="$undef";;
        esac
-       done
        ;;
 esac
-xxx=normal
-case "$libc" in
-unknown)
-       set /usr/ccs/lib/libc.so
-       $test -r $1 || set /usr/lib/libc.so
-       $test -r $1 || set /usr/shlib/libc.so
-       $test -r $1 || set /usr/lib/libc.so.[0-9]*
-       $test -r $1 || set /lib/libsys_s.a
-       eval set \$$#
-       ;;
-*)
-       set blurfl
-       ;;
+set d_dosuid
+eval $setvar
+
+: determine where site specific libraries go.
+set sitelib sitelib
+eval $prefixit
+case "$sitelib" in
+'')    dflt="$privlib/site_perl" ;;
+*)     dflt="$sitelib" ;;
 esac
-if $test -r "$1"; then
-       echo "Your (shared) C library seems to be in $1."
-       libc="$1"
-elif $test -r /lib/libc && $test -r /lib/clib; then
-       echo "Your C library seems to be in both /lib/clib and /lib/libc."
-       xxx=apollo
-       libc='/lib/clib /lib/libc'
-       if $test -r /lib/syslib; then
-               echo "(Your math library is in /lib/syslib.)"
-               libc="$libc /lib/syslib"
-       fi
-elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
-       echo "Your C library seems to be in $libc, as you said before."
-elif $test -r $incpath/usr/lib/libc.a; then
-       libc=$incpath/usr/lib/libc.a;
-       echo "Your C library seems to be in $libc.  That's fine."
-elif $test -r /lib/libc.a; then
-       libc=/lib/libc.a;
-       echo "Your C library seems to be in $libc.  You're normal."
-else
-       if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
-               :
-       elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
-               libnames="$libnames "`./loc clib blurfl/dyick $libpth`
-       elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
-               :
-       elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
-               :
-       elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
-               :
-       else
-               tans=`./loc Llibc.a blurfl/dyick $xlibpth`
-       fi
-       if $test -r "$tans"; then
-               echo "Your C library seems to be in $tans, of all places."
-               libc=$tans
-       else
-               libc='blurfl'
-       fi
+$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
-if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
-       dflt="$libc"
-       cat <<EOM
+sitelib="$ans"
+sitelibexp="$ansexp"
+if $afs; then
+       $cat <<EOM
 
-If the guess above is wrong (which it might be if you're using a strange
-compiler, or your machine supports multiple models), you can override it here.
+Since you are running AFS, I need to distinguish the directory in which
+private 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 private files be installed?'
+       . ./getfile
+       installsitelib="$ans"
 else
-       dflt=''
-       echo $libpth | tr ' ' '\012' | sort | uniq > libpath
-       cat >&4 <<EOM
-I can't seem to find your C library.  I've looked in the following places:
+       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
-       $sed 's/^/      /' libpath
-       cat <<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
 
-None of these seems to contain your C library. I need to get its name...
+Since you are running AFS, I need to distinguish the directory in which
+private 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 private files be installed?'
+       . ./getfile
+       installsitearch="$ans"
+else
+       installsitearch="$sitearchexp"
 fi
-fn=f
-rp='Where is your C library?'
+
+: determine where old public architecture dependent libraries might be
+case "$oldarchlib" in
+'')    case "$privlib" in
+       '') ;;
+       *)      dflt="$privlib/$archname"
+               ;;
+       esac
+       ;;
+*)     dflt="$oldarchlib" 
+       ;;
+esac
+if $test ! -d "$dflt/auto"; then
+       dflt=none
+fi
+cat <<EOM
+
+In 5.001, Perl stored architecture-dependent library files in a library
+with a name such as $privlib/$archname, 
+and this directory contained files from the standard extensions and 
+files from any additional extensions you might have added.  Starting 
+with version 5.002, all the architecture-dependent standard extensions 
+will go into $archlib, 
+while locally-added extensions will go into
+$sitearch.
+
+If you wish Perl to continue to search the old architecture-dependent
+library for your local extensions, give the path to that directory.
+If you do not wish to use your old architecture-dependent library
+files, answer 'none'.
+
+EOM
+fn=dn~
+rp='Directory for your old 5.001 architecture-dependent libraries?'
 . ./getfile
-libc="$ans"
+oldarchlib="$ans"
+oldarchlibexp="$ansexp"
+case "$oldarchlib" in
+''|' ') val="$undef" ;;
+*) val="$define" ;;
+esac
+set d_oldarchlib
+eval $setvar
 
+: determine where public executables go
 echo " "
-echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
-set X `cat libnames`
-shift
-xxx=files
-case $# in 1) xxx=file; esac
-echo "Extracting names from the following $xxx for later perusal:" >&4
-echo " "
-$sed 's/^/     /' libnames >&4
+set dflt bin bin
+eval $prefixit
+fn=d~
+rp='Pathname where the public executables will reside?'
+. ./getfile
+if $test "X$ansexp" != "X$binexp"; then
+       installbin=''
+fi
+bin="$ans"
+binexp="$ansexp"
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+executables 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 "$installbin" in
+       '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installbin";;
+       esac
+       fn=de~
+       rp='Where will public executables be installed?'
+       . ./getfile
+       installbin="$ans"
+else
+       installbin="$binexp"
+fi
+
+: determine where manual pages are on this system
 echo " "
-$echo $n "This may take a while...$c" >&4
+case "$sysman" in
+'') 
+       syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
+       syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
+       syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
+       syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
+       syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
+       sysman=`./loc . /usr/man/man1 $syspath`
+       ;;
+esac
+if $test -d "$sysman"; then
+       echo "System manual is in $sysman." >&4
+else
+       echo "Could not find manual pages in source form." >&4
+fi
 
-nm $nm_opt $* 2>/dev/null >libc.tmp
-$echo $n ".$c"
-$grep fprintf libc.tmp > libc.ptf
-xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
-xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
-if com="$sed -n -e 's/^.* [ADTS]  *_[_.]*//p' -e 's/^.* [ADTS] //p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
-                               -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
+: 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"
+       : If prefix contains 'perl' then we want to keep the man pages
+       : under the prefix directory.  Otherwise, look in a variety of
+       : other possible places.  This is debatable, but probably a
+       : good compromise.  Well, apparently not.
+       : Experience has shown people expect man1dir to be under prefix,
+       : so we now always put it there.  Users who want other behavior
+       : can answer interactively or use a command line option.
+       : Does user have System V-style man paths.
+       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
-       nm -p $* 2>/dev/null >libc.tmp
-       com="$sed -n -e 's/^.* [ADTS]  *_[_.]*//p' -e 's/^.* [ADTS] //p'";\
-       eval "<libc.tmp $com >libc.list"
-       if $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               nm_opt='-p'
-               echo "done" >&4
+       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
-               echo " "
-               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
-                       done
-                       $sed -e 's/\.o$//' < libc.tmp > libc.list
-                       echo "Ok." >&4
-               else
-                       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
-                               done
-                               echo "Ok." >&4
+               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 "That didn't work either.  Giving up." >&4
-                               exit 1
+                               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
-fi
-nm_extract="$com"
-if $test -f /lib/syscalls.exp; then
-       echo " "
-       echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
-       $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
-fi
-;;
-esac
-$rm -f libnames libpath
+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*
 
-: is a C symbol defined?
-csym='tlook=$1;
-case "$3" in
--v) tf=libc.tmp; tc=""; tdc="";;
--a) tf=libc.tmp; tc="[0]"; tdc=[];;
-*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
-esac;
-tx=yes;
-case "$reuseval-$4" in
-true-) ;;
-true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
-esac;
-case "$tx" in
-yes)
-       case "$runnm" in
-       true)
-               if $contains $tlook $tf >/dev/null 2>&1;
-               then tval=true;
-               else tval=false;
-               fi;;
-       *)
-               echo "main() { extern int $1$tdc; printf(\"%d\", $1$tc); }" > t.c;
-               if $cc $ccflags -o t t.c $ldflags $libs >/dev/null 2>&1;
-               then tval=true;
-               else tval=false;
-               fi;
-               $rm -f t t.c;;
-       esac;;
-*)
-       case "$tval" in
-       $define) tval=true;;
-       *) tval=false;;
-       esac;;
-esac;
-eval "$2=$tval"'
+: determine where library module manual pages go
+set man3dir man3dir none
+eval $prefixit
+$cat <<EOM
 
-: set up the script used to warn in case of inconsistency
-cat <<'EOSC' >whoa
-dflt=y
-echo " "
-echo "*** WHOA THERE!!! ***" >&4
-echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
-rp="    Keep the $hint value?"
-. ./myread
-case "$ans" in
-y) td=$was; tu=$was;;
-esac
-EOSC
+$spackage has manual pages for many of the library modules.
+EOM
 
-: define an is-in-libc? function
-inlibc='echo " "; td=$define; tu=$undef;
-sym=$1; var=$2; eval "was=\$$2";
-tx=yes;
-case "$reuseval$was" in
-true) ;;
-true*) tx=no;;
-esac;
-case "$tx" in
-yes)
-       set $sym tres -f;
-       eval $csym;
-       case "$tres" in
-       true)
-               echo "$sym() found." >&4;
-               case "$was" in $undef) . whoa; esac; eval "$var=\$td";;
-       *)
-               echo "$sym() NOT found." >&4;
-               case "$was" in $define) . whoa; esac; eval "$var=\$tu";;
+case "$nroff" in
+nroff)
+       $cat <<'EOM'
+However, you don't have nroff, so they're probably useless to you.
+You can use the supplied perldoc script instead.
+EOM
+       case "$man3dir" in
+       '') man3dir="none";;
        esac;;
-*)
-       case "$was" in
-       $define) echo "$sym() found." >&4;;
-       *) echo "$sym() NOT found." >&4;;
+esac
+
+case "$d_flexfnam" in
+undef)
+       $cat <<'EOM'
+However, your system can't handle the long file names like File::Basename.3. 
+You can use the supplied perldoc script instead.
+EOM
+       case "$man3dir" in
+       '') man3dir="none";;
        esac;;
-esac'
+esac
 
-: see how we invoke the C preprocessor
+echo "If you don't want the manual sources installed, answer 'none'."
+: We dont use /usr/local/man/man3 because some man programs will
+: only show the /usr/local/man/man3 contents, and not the system ones,
+: thus man less will show the perl module less.pm, but not the system
+: less command.  We might also conflict with TCL man pages.
+: However, something like /opt/perl/man/man3 is fine.
+case "$man3dir" in
+'')    case "$prefix" in 
+       *perl*) 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 " "
-echo "Now, how can we feed standard input to your C preprocessor..." >&4
-cat <<'EOT' >testcpp.c
-#define ABC abc
-#define XYZ xyz
-ABC.XYZ
-EOT
-cd ..
-echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
-chmod 755 cppstdin
-wrapper=`pwd`/cppstdin
-ok='false'
-cd UU
 
-if $test "X$cppstdin" != "X" && \
-       $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-then
-       echo "You used to use $cppstdin $cppminus so we'll use that again."
-       case "$cpprun" in
-       '') echo "But let's see if we can live without a wrapper..." ;;
-       *)
-               if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
-                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-               then
-                       echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
-                       ok='true'
-               else
-                       echo "(However, $cpprun $cpplast does not work, let's see...)"
-               fi
-               ;;
-       esac
-else
-       case "$cppstdin" in
-       '') ;;
-       *)
-               echo "Good old $cppstdin $cppminus does not seem to be of any help..."
-               ;;
-       esac
+fn=dn+~
+rp="Where do the $spackage library man pages (source) go?"
+. ./getfile
+if test "X$man3direxp" != "X$ansexp"; then
+       installman3dir=''
 fi
 
-if $ok; then
-       : nothing
-elif echo 'Maybe "'"$cc"' -E" will work...'; \
-       $cc -E <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yup, it does."
-       x_cpp="$cc -E"
-       x_minus='';
-elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
-       $cc -E - <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yup, it does."
-       x_cpp="$cc -E"
-       x_minus='-';
-elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
-       $cc -P <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yipee, that works!"
-       x_cpp="$cc -P"
-       x_minus='';
-elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
-       $cc -P - <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "At long last!"
-       x_cpp="$cc -P"
-       x_minus='-';
-elif echo 'No such luck, maybe "'$cpp'" will work...'; \
-       $cpp <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "It works!"
-       x_cpp="$cpp"
-       x_minus='';
-elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
-       $cpp - <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Hooray, it works!  I was beginning to wonder."
-       x_cpp="$cpp"
-       x_minus='-';
-elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
-       $wrapper <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       x_cpp="$wrapper"
-       x_minus=''
-       echo "Eureka!"
+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
-       dflt=''
-       rp="No dice.  I can't find a C preprocessor.  Name one:"
-       . ./myread
-       x_cpp="$ans"
-       x_minus=''
-       $x_cpp <testcpp.c >testcpp.out 2>&1
-       if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-               echo "OK, that will do." >&4
-       else
-echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
-               exit 1
-       fi
+       installman3dir="$man3direxp"
 fi
 
-case "$ok" in
-false)
-       cppstdin="$x_cpp"
-       cppminus="$x_minus"
-       cpprun="$x_cpp"
-       cpplast="$x_minus"
-       set X $x_cpp
-       shift
-       case "$1" in
-       "$cpp")
-               echo "Perhaps can we force $cc -E using a wrapper..."
-               if $wrapper <testcpp.c >testcpp.out 2>&1; \
-                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-               then
-                       echo "Yup, we can."
-                       cppstdin="$wrapper"
-                       cppminus='';
-               else
-                       echo "Nope, we'll have to live without it..."
-               fi
-               ;;
-       esac
-       case "$cpprun" in
-       "$wrapper")
-               cpprun=''
-               cpplast=''
+: What suffix to use on installed man pages
+
+case "$man3dir" in
+' ')
+       man3ext='0'
+       ;;
+*)
+       rp="What suffix should be used for the $spackage 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
 
-case "$cppstdin" in
-"$wrapper") ;;
-*) $rm -f $wrapper;;
+: see what memory models we can support
+case "$models" in
+'')
+       $cat >pdp11.c <<'EOP'
+main() {
+#ifdef pdp11
+       exit(0);
+#else
+       exit(1);
+#endif
+}
+EOP
+       cc -o pdp11 pdp11.c >/dev/null 2>&1
+       if ./pdp11 2>/dev/null; then
+               dflt='unsplit split'
+       else
+               tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
+               case "$tans" in
+               X) dflt='none';;
+               *) if $test -d /lib/small || $test -d /usr/lib/small; then
+                               dflt='small'
+                       else
+                               dflt=''
+                       fi
+                       if $test -d /lib/medium || $test -d /usr/lib/medium; then
+                               dflt="$dflt medium"
+                       fi
+                       if $test -d /lib/large || $test -d /usr/lib/large; then
+                               dflt="$dflt large"
+                       fi
+                       if $test -d /lib/huge || $test -d /usr/lib/huge; then
+                               dflt="$dflt huge"
+                       fi
+               esac
+       fi;;
+*) dflt="$models";;
 esac
-$rm -f testcpp.c testcpp.out
+$cat <<EOM
+Some systems have different model sizes.  On most systems they are called
+small, medium, large, and huge.  On the PDP11 they are called unsplit and
+split.  If your system doesn't support different memory models, say "none".
+If you wish to force everything to one memory model, say "none" here and
+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.)
 
-: determine filename position in cpp output
+EOM
+rp="Which memory models are supported?"
+. ./myread
+models="$ans"
+
+case "$models" in
+none)
+       small=''
+       medium=''
+       large=''
+       huge=''
+       unsplit=''
+       split=''
+       ;;
+*split)
+       case "$split" in
+       '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
+                        $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
+                       dflt='-i'
+               else
+                       dflt='none'
+               fi;;
+       *) dflt="$split";;
+       esac
+       rp="What flag indicates separate I and D space?"
+       . ./myread
+       tans="$ans"
+       case "$tans" in
+       none) tans='';;
+       esac
+       split="$tans"
+       unsplit='';;
+*large*|*small*|*medium*|*huge*)
+       case "$models" in
+       *large*)
+               case "$large" in
+               '') dflt='-Ml';;
+               *) dflt="$large";;
+               esac
+       rp="What flag indicates large model?"
+       . ./myread
+       tans="$ans"
+       case "$tans" in
+       none) tans='';
+       esac
+       large="$tans";;
+       *) large='';;
+       esac
+       case "$models" in
+       *huge*) case "$huge" in
+               '') dflt='-Mh';;
+               *) dflt="$huge";;
+               esac
+               rp="What flag indicates huge model?"
+               . ./myread
+               tans="$ans"
+               case "$tans" in
+               none) tans='';
+               esac
+               huge="$tans";;
+       *) huge="$large";;
+       esac
+       case "$models" in
+       *medium*) case "$medium" in
+               '') dflt='-Mm';;
+               *) dflt="$medium";;
+               esac
+               rp="What flag indicates medium model?"
+               . ./myread
+               tans="$ans"
+               case "$tans" in
+               none) tans='';
+               esac
+               medium="$tans";;
+       *) medium="$large";;
+       esac
+       case "$models" in
+       *small*) case "$small" in
+               '') dflt='none';;
+               *) dflt="$small";;
+               esac
+               rp="What flag indicates small model?"
+               . ./myread
+               tans="$ans"
+               case "$tans" in
+               none) tans='';
+               esac
+               small="$tans";;
+       *) small='';;
+       esac
+       ;;
+*)
+       echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
+       ;;
+esac
+
+: see if we need a special compiler
 echo " "
-echo "Computing filename position in cpp output for #include directives..." >&4
-echo '#include <stdio.h>' > foo.c
-$cat >fieldn <<EOF
-$startsh
-$cppstdin $cppminus $cppflags <foo.c 2>/dev/null | \
-$grep '^[      ]*#.*stdio\.h' | \
-while read cline; do
-       pos=1
-       set \$cline
-       while $test \$# -gt 0; do
-               if $test -r \`echo \$1 | $tr -d '"'\`; then
-                       echo "\$pos"
-                       exit 0
+if ./usg; then
+       case "$cc" in
+       '') case "$Mcc" in
+               /*) dflt='Mcc';;
+               *) case "$large" in
+                       -M*) dflt='cc';;
+                       *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
+                                       if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
+                                               dflt='cc'
+                                       else
+                                               dflt='cc -M'
+                                       fi
+                               else
+                                       dflt='cc'
+                               fi;;
+                       esac;;
+               esac;;
+       *)  dflt="$cc";;
+       esac
+       $cat <<'EOM'
+On some 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
+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?"
+       . ./myread
+       cc="$ans"
+else
+       case "$cc" in
+       '') dflt=cc;;
+       *) dflt="$cc";;
+       esac
+       rp="Use which C compiler?"
+       . ./myread
+       cc="$ans"
+fi
+echo " "
+echo "Checking for GNU cc in disguise and/or its version number..." >&4
+$cat >gccvers.c <<EOM
+#include <stdio.h>
+int main() {
+#ifdef __GNUC__
+#ifdef __VERSION__
+       printf("%s\n", __VERSION__);
+#else
+       printf("%s\n", "1");
+#endif
+#endif
+       exit(0);
+}
+EOM
+if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
+       gccversion=`./gccvers`
+       case "$gccversion" in
+       '') echo "You are not using GNU cc." ;;
+       *)  echo "You are using GNU cc $gccversion." ;;
+       esac
+else
+       echo " "
+       echo "*** WHOA THERE!!! ***" >&4
+       echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
+       case "$knowitall" in
+       '')
+       echo "    You'd better start hunting for one and let me know about it." >&4
+               exit 1
+               ;;
+       esac
+fi
+$rm -f gccvers*
+case "$gccversion" in
+1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
+esac
+
+: What should the include directory be ?
+echo " "
+$echo $n "Hmm...  $c"
+dflt='/usr/include'
+incpath=''
+mips_type=''
+if $test -f /bin/mips && /bin/mips; then
+       echo "Looks like a MIPS system..."
+       $cat >usr.c <<'EOCP'
+#ifdef SYSTYPE_BSD43
+/bsd43
+#endif
+EOCP
+       if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
+               dflt='/bsd43/usr/include'
+               incpath='/bsd43'
+               mips_type='BSD 4.3'
+       else
+               mips_type='System V'
+       fi
+       $rm -f usr.c usr.out
+       echo "and you're compiling with the $mips_type compiler and libraries."
+       xxx_prompt=y
+       echo "exit 0" >mips
+else
+       echo "Doesn't look like a MIPS system."
+       xxx_prompt=n
+       echo "exit 1" >mips
+fi
+chmod +x mips
+$eunicefix mips
+echo " "
+case "$usrinc" in
+'') ;;
+*) dflt="$usrinc";;
+esac
+case "$xxx_prompt" in
+y)     fn=d/
+       rp='Where are the include files you want to use?'
+       . ./getfile
+       usrinc="$ans"
+       ;;
+*)     usrinc="$dflt"
+       ;;
+esac
+
+: see if we have to deal with yellow pages, now NIS.
+if $test -d /usr/etc/yp || $test -d /etc/yp; then
+       if $test -f /usr/etc/nibindd; then
+               echo " "
+               echo "I'm fairly confident you're on a NeXT."
+               echo " "
+               rp='Do you get the hosts file via NetInfo?'
+               dflt=y
+               case "$hostcat" in
+               nidump*) ;;
+               '') ;;
+               *) dflt=n;;
+               esac
+               . ./myread
+               case "$ans" in
+               y*) hostcat='nidump hosts .';;
+               *)      case "$hostcat" in
+                       nidump*) hostcat='';;
+                       esac
+                       ;;
+               esac
+       fi
+       case "$hostcat" in
+       nidump*) ;;
+       *)
+               case "$hostcat" in
+               *ypcat*) dflt=y;;
+               '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
+                               dflt=y
+                       else
+                               dflt=n
+                       fi;;
+               *) dflt=n;;
+               esac
+               echo " "
+               rp='Are you getting the hosts file via yellow pages?'
+               . ./myread
+               case "$ans" in
+               y*) hostcat='ypcat hosts';;
+               *) hostcat='cat /etc/hosts';;
+               esac
+               ;;
+       esac
+fi
+
+: now get the host name
+echo " "
+echo "Figuring out host name..." >&4
+case "$myhostname" in
+'') cont=true
+       echo 'Maybe "hostname" will work...'
+       if tans=`sh -c hostname 2>&1` ; then
+               myhostname=$tans
+               phostname=hostname
+               cont=''
+       fi
+       ;;
+*) cont='';;
+esac
+if $test "$cont"; then
+       if ./xenix; then
+               echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
+               if tans=`cat /etc/systemid 2>&1` ; then
+                       myhostname=$tans
+                       phostname='cat /etc/systemid'
+                       echo "Whadyaknow.  Xenix always was a bit strange..."
+                       cont=''
                fi
-               shift
-               pos=\`expr \$pos + 1\`
-       done
+       elif $test -r /etc/systemid; then
+               echo "(What is a non-Xenix system doing with /etc/systemid?)"
+       fi
+fi
+if $test "$cont"; then
+       echo 'No, maybe "uuname -l" will work...'
+       if tans=`sh -c 'uuname -l' 2>&1` ; then
+               myhostname=$tans
+               phostname='uuname -l'
+       else
+               echo 'Strange.  Maybe "uname -n" will work...'
+               if tans=`sh -c 'uname -n' 2>&1` ; then
+                       myhostname=$tans
+                       phostname='uname -n'
+               else
+                       echo 'Oh well, maybe I can mine it out of whoami.h...'
+                       if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
+                               myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
+                               phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
+                       else
+                               case "$myhostname" in
+                               '') echo "Does this machine have an identity crisis or something?"
+                                       phostname='';;
+                               *)
+                                       echo "Well, you said $myhostname before..."
+                                       phostname='echo $myhostname';;
+                               esac
+                       fi
+               fi
+       fi
+fi
+: you do not want to know about this
+set $myhostname
+myhostname=$1
+
+: verify guess
+if $test "$myhostname" ; then
+       dflt=y
+       rp='Your host name appears to be "'$myhostname'".'" Right?"
+       . ./myread
+       case "$ans" in
+       y*) ;;
+       *) myhostname='';;
+       esac
+fi
+
+: bad guess or no guess
+while $test "X$myhostname" = X ; do
+       dflt=''
+       rp="Please type the (one word) name of your host:"
+       . ./myread
+       myhostname="$ans"
 done
-EOF
-chmod +x fieldn
-fieldn=`./fieldn`
-$rm -f foo.c fieldn
-case $fieldn in
-'') pos='???';;
-1) pos=first;;
-2) pos=second;;
-3) pos=third;;
-*) pos="${fieldn}th";;
+
+: translate upper to lower if necessary
+case "$myhostname" in
+*[A-Z]*)
+       echo "(Normalizing case in your host name)"
+       myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
+       ;;
+esac
+
+case "$myhostname" in
+*.*)
+       dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
+       myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
+       echo "(Trimming domain name from host name--host name is now $myhostname)"
+       ;;
+*) case "$mydomain" in
+       '')
+               {
+                       : If we use NIS, try ypmatch.
+                       : Is there some reason why this was not done before?
+                       test "X$hostcat" = "Xypcat hosts" &&
+                       ypmatch "$myhostname" hosts 2>/dev/null |\
+                               $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
+                       $test -s hosts
+               } || {
+                       : Extract only the relevant hosts, reducing file size,
+                       : remove comments, insert trailing space for later use.
+                       $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
+                                       /[       ]$myhostname[  . ]/p" > hosts
+               }
+               tmp_re="[       . ]"
+               $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
+                            END { print sum }" hosts` = x1 || tmp_re="[         ]"
+               dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
+                       hosts | $sort | $uniq | \
+                       $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
+               case `$echo X$dflt` in
+               X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
+                       dflt=.
+                       ;;
+               .) echo "(You do not have fully-qualified names in /etc/hosts)"
+                       ;;
+               esac
+               case "$dflt" in
+               .)
+                       tans=`./loc resolv.conf X /etc /usr/etc`
+                       if $test -f "$tans"; then
+                               echo "(Attempting domain name extraction from $tans)"
+                               : Why was there an Egrep here, when Sed works?
+                               dflt=.`$sed -n -e 's/^domain[   ]*\(.*\)/\1/p' $tans \
+                                       | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+                       fi
+                       ;;
+               esac
+               case "$dflt" in
+               .) echo "(No help from resolv.conf either -- attempting clever guess)"
+                       dflt=.`sh -c domainname 2>/dev/null`
+                       case "$dflt" in
+                       '') dflt='.';;
+                       .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
+                       esac
+                       ;;
+               esac
+               case "$dflt" in
+               .) echo "(Lost all hope -- silly guess then)"
+                       dflt='.uucp'
+                       ;;
+               esac
+               $rm -f hosts
+               ;;
+       *) dflt="$mydomain";;
+       esac;;
+esac
+echo " "
+rp="What is your domain name?"
+. ./myread
+tans="$ans"
+case "$ans" in
+'') ;;
+.*) ;;
+*) tans=".$tans";;
+esac
+mydomain="$tans"
+
+: translate upper to lower if necessary
+case "$mydomain" in
+*[A-Z]*)
+       echo "(Normalizing case in your domain name)"
+       mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
+       ;;
+esac
+
+: a little sanity check here
+case "$phostname" in
+'') ;;
+*)
+       case `$phostname | ./tr '[A-Z]' '[a-z]'` in
+       $myhostname$mydomain|$myhostname) ;;
+       *)
+               case "$phostname" in
+               sed*)
+                       echo "(That doesn't agree with your whoami.h file, by the way.)"
+                       ;;
+               *)
+                       echo "(That doesn't agree with your $phostname command, by the way.)"
+                       ;;
+               esac
+       ;;
+       esac
+       ;;
+esac
+
+$cat <<EOM
+
+I need to get your e-mail address in Internet format if possible, i.e.
+something like user@host.domain. Please answer accurately since I have
+no easy means to double check it. The default value provided below
+is most probably close to the reality but may not be valid from outside
+your organization...
+
+EOM
+cont=x
+while test "$cont"; do
+       case "$cf_email" in
+       '') dflt="$cf_by@$myhostname$mydomain";;
+       *) dflt="$cf_email";;
+       esac
+       rp='What is your e-mail address?'
+       . ./myread
+       cf_email="$ans"
+       case "$cf_email" in
+       *@*.*) cont='' ;;
+       *)
+               rp='Address does not look like an Internet one.  Use it anyway?'
+               case "$fastread" in
+               yes) dflt=y ;;
+               *) dflt=n ;;
+               esac
+               . ./myread
+               case "$ans" in
+               y*) cont='' ;;
+               *) echo " " ;;
+               esac
+               ;;
+       esac
+done
+
+$cat <<EOM
+
+If you or somebody else will be maintaining perl at your site, please
+fill in the correct e-mail address here so that they may be contacted
+if necessary. Currently, the "perlbug" program included with perl
+will send mail to this address in addition to perlbug@perl.com. You may
+enter "none" for no administrator.
+
+EOM
+case "$perladmin" in
+'') dflt="$cf_email";;
+*) dflt="$perladmin";;
+esac
+rp='Perl administrator e-mail address'
+. ./myread
+perladmin="$ans"
+
+: 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 perl absolute location
+case "$perlpath" in
+'')    perlpath=$binexp/perl ;;
+esac
+
+: figure out how to guarantee perl startup
+case "$startperl" in
+'')
+       case "$sharpbang" in
+       *!)
+               $cat <<EOH
+
+I can use the #! construct to start perl on your system. This will
+make startup of perl scripts faster, but may cause problems if you
+want to share those scripts and perl is not in a standard place
+($perlpath) on all your platforms. The alternative is to force
+a shell by starting the script with a single ':' character.
+
+EOH
+               dflt=$perlpath
+               rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
+               . ./myread
+               case "$ans" in
+               none) startperl=": # use perl";;
+               *) startperl="#!$ans";;
+               esac
+               ;;
+       *) startperl=": # use perl"
+               ;;
+       esac
+       ;;
+esac
+echo "I'll use $startperl to start perl scripts."
+
+: see how we invoke the C preprocessor
+echo " "
+echo "Now, how can we feed standard input to your C preprocessor..." >&4
+cat <<'EOT' >testcpp.c
+#define ABC abc
+#define XYZ xyz
+ABC.XYZ
+EOT
+cd ..
+echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+chmod 755 cppstdin
+wrapper=`pwd`/cppstdin
+ok='false'
+cd UU
+
+if $test "X$cppstdin" != "X" && \
+       $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+then
+       echo "You used to use $cppstdin $cppminus so we'll use that again."
+       case "$cpprun" in
+       '') echo "But let's see if we can live without a wrapper..." ;;
+       *)
+               if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
+                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+               then
+                       echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
+                       ok='true'
+               else
+                       echo "(However, $cpprun $cpplast does not work, let's see...)"
+               fi
+               ;;
+       esac
+else
+       case "$cppstdin" in
+       '') ;;
+       *)
+               echo "Good old $cppstdin $cppminus does not seem to be of any help..."
+               ;;
+       esac
+fi
+
+if $ok; then
+       : nothing
+elif echo 'Maybe "'"$cc"' -E" will work...'; \
+       $cc -E <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Yup, it does."
+       x_cpp="$cc -E"
+       x_minus='';
+elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
+       $cc -E - <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Yup, it does."
+       x_cpp="$cc -E"
+       x_minus='-';
+elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
+       $cc -P <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Yipee, that works!"
+       x_cpp="$cc -P"
+       x_minus='';
+elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
+       $cc -P - <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "At long last!"
+       x_cpp="$cc -P"
+       x_minus='-';
+elif echo 'No such luck, maybe "'$cpp'" will work...'; \
+       $cpp <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "It works!"
+       x_cpp="$cpp"
+       x_minus='';
+elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
+       $cpp - <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Hooray, it works!  I was beginning to wonder."
+       x_cpp="$cpp"
+       x_minus='-';
+elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
+       $wrapper <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       x_cpp="$wrapper"
+       x_minus=''
+       echo "Eureka!"
+else
+       dflt=''
+       rp="No dice.  I can't find a C preprocessor.  Name one:"
+       . ./myread
+       x_cpp="$ans"
+       x_minus=''
+       $x_cpp <testcpp.c >testcpp.out 2>&1
+       if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+               echo "OK, that will do." >&4
+       else
+echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
+               exit 1
+       fi
+fi
+
+case "$ok" in
+false)
+       cppstdin="$x_cpp"
+       cppminus="$x_minus"
+       cpprun="$x_cpp"
+       cpplast="$x_minus"
+       set X $x_cpp
+       shift
+       case "$1" in
+       "$cpp")
+               echo "Perhaps can we force $cc -E using a wrapper..."
+               if $wrapper <testcpp.c >testcpp.out 2>&1; \
+                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+               then
+                       echo "Yup, we can."
+                       cppstdin="$wrapper"
+                       cppminus='';
+               else
+                       echo "Nope, we'll have to live without it..."
+               fi
+               ;;
+       esac
+       case "$cpprun" in
+       "$wrapper")
+               cpprun=''
+               cpplast=''
+               ;;
+       esac
+       ;;
+esac
+
+case "$cppstdin" in
+"$wrapper") ;;
+*) $rm -f $wrapper;;
+esac
+$rm -f testcpp.c testcpp.out
+
+: Set private lib path
+case "$plibpth" in
+'') if ./mips; then
+               plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
+       fi;;
+esac
+case "$libpth" in
+' ') dlist='';;
+'') dlist="$loclibpth $plibpth $glibpth";;
+*) dlist="$libpth";;
+esac
+
+: Now check and see which directories actually exist, avoiding duplicates
+libpth=''
+for xxx in $dlist
+do
+    if $test -d $xxx; then
+               case " $libpth " in
+               *" $xxx "*) ;;
+               *) libpth="$libpth $xxx";;
+               esac
+    fi
+done
+$cat <<'EOM'
+
+Some systems have incompatible or broken versions of libraries.  Among
+the directories listed in the question below, please remove any you
+know not to be holding relevant libraries, and add any that are needed.
+Say "none" for none.
+
+EOM
+case "$libpth" in
+'') dflt='none';;
+*)
+       set X $libpth
+       shift
+       dflt=${1+"$@"}
+       ;;
+esac
+rp="Directories to use for library searches?"
+. ./myread
+case "$ans" in
+none) libpth=' ';;
+*) libpth="$ans";;
+esac
+
+: determine optimize, if desired, or use for debug flag also
+case "$optimize" in
+' ') dflt='none';;
+'') dflt='-O';;
+*) dflt="$optimize";;
+esac
+$cat <<EOH
+
+Some C compilers have problems with their optimizers, by default, $package
+compiles with the -O flag to use the optimizer.  Alternately, you might want
+to use the symbolic debugger, which uses the -g flag (on traditional Unix
+systems).  Either flag can be specified here.  To use neither flag, specify
+the word "none".
+
+EOH
+rp="What optimizer/debugger flag should be used?"
+. ./myread
+optimize="$ans"
+case "$optimize" in
+'none') optimize=" ";;
+esac
+
+dflt=''
+: We will not override a previous value, but we might want to
+: augment a hint file
+case "$hint" in
+none|recommended)
+       case "$gccversion" in
+       1*) dflt='-fpcc-struct-return' ;;
+       esac
+       case "$optimize" in
+       *-g*) dflt="$dflt -DDEBUGGING";;
+       esac
+       case "$gccversion" in
+       2*) if test -d /etc/conf/kconfig.d &&
+                       $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
+               then
+                       dflt="$dflt -posix"
+               fi
+               ;;
+       esac
+       ;;
+esac
+
+case "$mips_type" in
+*BSD*|'') inclwanted="$locincpth $usrinc";;
+*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
+esac
+for thisincl in $inclwanted; do
+       if $test -d $thisincl; then
+               if $test x$thisincl != x$usrinc; then
+                       case "$dflt" in
+                       *$thisincl*);;
+                       *) dflt="$dflt -I$thisincl";;
+                       esac
+               fi
+       fi
+done
+
+inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
+       xxx=true;
+elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
+       xxx=true;
+else
+       xxx=false;
+fi;
+if $xxx; then
+       case "$dflt" in
+       *$2*);;
+       *) dflt="$dflt -D$2";;
+       esac;
+fi'
+
+if ./osf1; then
+       set signal.h __LANGUAGE_C__; eval $inctest
+else
+       set signal.h LANGUAGE_C; eval $inctest
+fi
+set signal.h NO_PROTOTYPE; eval $inctest
+set signal.h _NO_PROTO; eval $inctest
+
+case "$hint" in
+none|recommended) dflt="$ccflags $dflt" ;;
+*) dflt="$ccflags";;
+esac
+
+case "$dflt" in
+''|' ') dflt=none;;
+esac
+$cat <<EOH
+
+Your C compiler may want other flags.  For this question you should include
+-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
+but you should NOT include libraries or ld flags like -lwhatever.  If you
+want $package to honor its debug switch, you should include -DDEBUGGING here.
+Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
+-DHIDEMYMALLOC or -DCRIPPLED_CC.
+
+To use no flags, specify the word "none".
+
+EOH
+set X $dflt
+shift
+dflt=${1+"$@"}
+rp="Any additional cc flags?"
+. ./myread
+case "$ans" in
+none) ccflags='';;
+*) ccflags="$ans";;
+esac
+
+: the following weeds options from ccflags that are of no interest to cpp
+cppflags="$ccflags"
+case "$gccversion" in
+1*) cppflags="$cppflags -D__GNUC__"
+esac
+case "$mips_type" in
+'');;
+*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
+esac
+case "$cppflags" in
+'');;
+*)
+       echo " "
+       echo "Let me guess what the preprocessor flags are..." >&4
+       set X $cppflags
+       shift
+       cppflags=''
+       $cat >cpp.c <<'EOM'
+#define BLURFL foo
+
+BLURFL xx LFRULB
+EOM
+       previous=''
+       for flag in $*
+       do
+               case "$flag" in
+               -*) ftry="$flag";;
+               *) ftry="$previous $flag";;
+               esac
+               if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
+                       >cpp1.out 2>/dev/null && \
+                       $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
+                       >cpp2.out 2>/dev/null && \
+                       $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
+                       $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
+               then
+                       cppflags="$cppflags $ftry"
+                       previous=''
+               else
+                       previous="$flag"
+               fi
+       done
+       set X $cppflags
+       shift
+       cppflags=${1+"$@"}
+       case "$cppflags" in
+       *-*)  echo "They appear to be: $cppflags";;
+       esac
+       $rm -f cpp.c cpp?.out
+       ;;
+esac
+
+: flags used in final linking phase
+
+case "$ldflags" in
+'') if ./venix; then
+               dflt='-i -z'
+       else
+               dflt=''
+       fi
+       case "$ccflags" in
+       *-posix*) dflt="$dflt -posix" ;;
+       esac
+       ;;
+*) dflt="$ldflags";;
+esac
+
+: Try to guess additional flags to pick up local libraries.
+for thislibdir in $libpth; do
+       case " $loclibpth " in
+       *" $thislibdir "*)
+               case "$dflt " in 
+               *"-L$thislibdir "*) ;;
+               *)  dflt="$dflt -L$thislibdir" ;;
+               esac
+               ;;
+       esac
+done
+
+case "$dflt" in
+'') dflt='none' ;;
+esac
+
+$cat <<EOH
+
+Your C linker may need flags.  For this question you should
+include -L/whatever and any other flags used by the C linker, but you
+should NOT include libraries like -lwhatever.
+
+Make sure you include the appropriate -L/path flags if your C linker
+does not normally search all of the directories you specified above,
+namely
+       $libpth
+To use no flags, specify the word "none".
+
+EOH
+
+rp="Any additional ld flags (NOT including libraries)?"
+. ./myread
+case "$ans" in
+none) ldflags='';;
+*) ldflags="$ans";;
+esac
+rmlist="$rmlist pdp11"
+
+: coherency check
+echo " "
+echo "Checking your choice of C compiler and flags for coherency..." >&4
+set X $cc $optimize $ccflags $ldflags try.c -o try
+shift
+$cat >try.msg <<EOM
+I've tried to compile and run a simple program with:
+
+       $*
+       ./try
+
+and I got the following output:
+
+EOM
+$cat > try.c <<'EOF'
+#include <stdio.h>
+main() { exit(0); }
+EOF
+dflt=y
+if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
+       if sh -c './try' >>try.msg 2>&1; then
+               dflt=n
+       else
+               echo "The program compiled OK, but exited with status $?." >>try.msg
+               rp="You have a problem.  Shall I abort Configure"
+               dflt=y
+       fi
+else
+       echo "I can't compile the test program." >>try.msg
+       rp="You have a BIG problem.  Shall I abort Configure"
+       dflt=y
+fi
+case "$dflt" in
+y)
+       $cat try.msg
+       case "$knowitall" in
+       '')
+               echo "(The supplied flags might be incorrect with this C compiler.)"
+               ;;
+       *) dflt=n;;
+       esac
+       echo " "
+       . ./myread
+       case "$ans" in
+       n*|N*) ;;
+       *)      echo "Ok.  Stopping Configure." >&4
+               exit 1
+               ;;
+       esac
+       ;;
+n) echo "OK, that should do.";;
+esac
+$rm -f try try.* core
+
+: compute shared library extension
+case "$so" in
+'')
+       if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
+               dflt='sl'
+       else
+               dflt='so'
+       fi
+       ;;
+*) dflt="$so";;
+esac
+$cat <<EOM
+
+On some systems, shared libraries may be available.  Answer 'none' if
+you want to suppress searching of shared libraries for the remaining
+of this configuration.
+
+EOM
+rp='What is the file extension used for shared libraries?'
+. ./myread
+so="$ans"
+
+: Looking for optional libraries
+echo " "
+echo "Checking for optional libraries..." >&4
+case "$libs" in
+' '|'') dflt='';;
+*) dflt="$libs";;
+esac
+case "$libswanted" in
+'') libswanted='c_s';;
+esac
+for thislib in $libswanted; do
+       
+       if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
+               echo "Found -l$thislib (shared)."
+               case " $dflt " in
+               *"-l$thislib "*);;
+               *) dflt="$dflt -l$thislib";;
+               esac
+       elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
+               echo "Found -l$thislib (shared)."
+               case " $dflt " in
+               *"-l$thislib "*);;
+               *) dflt="$dflt -l$thislib";;
+               esac
+       elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
+               echo "Found -l$thislib."
+               case " $dflt " in
+               *"-l$thislib "*);;
+               *) dflt="$dflt -l$thislib";;
+               esac
+       elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
+               echo "Found -l$thislib."
+               case " $dflt " in
+               *"-l$thislib "*);;
+               *) dflt="$dflt -l$thislib";;
+               esac
+       elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
+               echo "Found -l${thislib}_s."
+               case " $dflt " in
+               *"-l$thislib "*);;
+               *) dflt="$dflt -l${thislib}_s";;
+               esac
+       elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
+               echo "Found -l$thislib."
+               case " $dflt " in
+               *"-l$thislib "*);;
+               *) dflt="$dflt -l$thislib";;
+               esac
+       else
+               echo "No -l$thislib."
+       fi
+done
+set X $dflt
+shift
+dflt="$*"
+case "$libs" in
+'') dflt="$dflt";;
+*) dflt="$libs";;
+esac
+case "$dflt" in
+' '|'') dflt='none';;
+esac
+
+$cat <<EOM
+Some versions of Unix support shared libraries, which make executables smaller
+but make load time slightly longer.
+
+On some systems, mostly newer Unix System V's, the shared library is included
+by putting the option "-lc_s" as the last thing on the cc command line when
+linking.  Other systems use shared libraries by default.  There may be other
+libraries needed to compile $package on your machine as well.  If your system
+needs the "-lc_s" option, include it here.  Include any other special libraries
+here as well.  Say "none" for none.
+EOM
+
+echo " "
+rp="Any additional libraries?"
+. ./myread
+case "$ans" in
+none) libs=' ';;
+*) libs="$ans";;
+esac
+
+: see if nm is to be used to determine whether a symbol is defined or not
+case "$usenm" in
+'')
+       dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
+       if $test $dflt -gt 20; then
+               dflt=y
+       else
+               dflt=n
+       fi
+       ;;
+*)
+       case "$usenm" in
+       true) 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.
+
+EOM
+rp='Shall I use nm to extract C symbols from the libraries?'
+. ./myread
+case "$ans" in
+n|N) usenm=false;;
+*) usenm=true;;
+esac
+
+runnm=$usenm
+case "$reuseval" in
+true) runnm=false;;
+esac
+
+: nm options which may be necessary
+case "$nm_opt" in
+'') if $test -f /mach_boot; then
+               nm_opt=''
+       elif $test -d /usr/ccs/lib; then
+               nm_opt='-p'
+       elif $test -f /dgux; then
+               nm_opt='-p'
+       else
+               nm_opt=''
+       fi;;
+esac
+
+: nm options which may be necessary for shared libraries but illegal
+: for archive libraries.  Thank you, Linux.
+case "$nm_so_opt" in
+'')    case "$myuname" in
+       *linux*)
+               if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
+                       nm_so_opt='--dynamic'
+               fi
+               ;;
+       esac
+       ;;
+esac
+
+case "$runnm" in
+true)
+: get list of predefined functions in a handy place
+echo " "
+case "$libc" in
+'') libc=unknown
+       case "$libs" in
+       *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
+       esac
+       ;;
+esac
+libnames='';
+case "$libs" in
+'') ;;
+*)  for thislib in $libs; do
+       case "$thislib" in
+       -lc|-lc_s)
+               : Handle C library specially below.
+               ;;
+       -l*)
+               thislib=`echo $thislib | $sed -e 's/^-l//'`
+               if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
+                       :
+               elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
+                       :
+               elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
+                       :
+               elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
+                       :
+               elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
+                       :
+               elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
+                       :
+               else
+                       try=''
+               fi
+               libnames="$libnames $try"
+               ;;
+       *) libnames="$libnames $thislib" ;;
+       esac
+       done
+       ;;
+esac
+xxx=normal
+case "$libc" in
+unknown)
+       set /lib/libc.$so
+       for xxx in $libpth; do
+               $test -r $1 || set $xxx/libc.$so
+               : The messy sed command sorts on library version numbers.
+               $test -r $1 || \
+                       set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
+                               tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
+                               h
+                               s/[0-9][0-9]*/0000&/g
+                               s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
+                               G
+                               s/\n/ /' | \
+                       sort | $sed -e 's/^.* //'`
+               eval set \$$#
+       done
+       $test -r $1 || set /usr/ccs/lib/libc.$so
+       $test -r $1 || set /lib/libsys_s.a
+       ;;
+*)
+       set blurfl
+       ;;
+esac
+if $test -r "$1"; then
+       echo "Your (shared) C library seems to be in $1."
+       libc="$1"
+elif $test -r /lib/libc && $test -r /lib/clib; then
+       echo "Your C library seems to be in both /lib/clib and /lib/libc."
+       xxx=apollo
+       libc='/lib/clib /lib/libc'
+       if $test -r /lib/syslib; then
+               echo "(Your math library is in /lib/syslib.)"
+               libc="$libc /lib/syslib"
+       fi
+elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
+       echo "Your C library seems to be in $libc, as you said before."
+elif $test -r $incpath/usr/lib/libc.a; then
+       libc=$incpath/usr/lib/libc.a;
+       echo "Your C library seems to be in $libc.  That's fine."
+elif $test -r /lib/libc.a; then
+       libc=/lib/libc.a;
+       echo "Your C library seems to be in $libc.  You're normal."
+else
+       if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
+               :
+       elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
+               libnames="$libnames "`./loc clib blurfl/dyick $libpth`
+       elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
+               :
+       elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
+               :
+       elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
+               :
+       else
+               tans=`./loc Llibc.a blurfl/dyick $xlibpth`
+       fi
+       if $test -r "$tans"; then
+               echo "Your C library seems to be in $tans, of all places."
+               libc=$tans
+       else
+               libc='blurfl'
+       fi
+fi
+if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
+       dflt="$libc"
+       cat <<EOM
+
+If the guess above is wrong (which it might be if you're using a strange
+compiler, or your machine supports multiple models), you can override it here.
+
+EOM
+else
+       dflt=''
+       echo $libpth | tr ' ' '\012' | sort | uniq > libpath
+       cat >&4 <<EOM
+I can't seem to find your C library.  I've looked in the following places:
+
+EOM
+       $sed 's/^/      /' libpath
+       cat <<EOM
+
+None of these seems to contain your C library. I need to get its name...
+
+EOM
+fi
+fn=f
+rp='Where is your C library?'
+. ./getfile
+libc="$ans"
+
+echo " "
+echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
+set X `cat libnames`
+shift
+xxx=files
+case $# in 1) xxx=file; esac
+echo "Extracting names from the following $xxx for later perusal:" >&4
+echo " "
+$sed 's/^/     /' libnames >&4
+echo " "
+$echo $n "This may take a while...$c" >&4
+
+: Linux may need the special Dynamic option to nm for shared libraries.
+: In general, this is stored in the nm_so_opt variable.
+: Unfortunately, that option may be fatal on non-shared libraries.
+for nm_libs_ext in $*; do
+    case $nm_libs_ext in
+       *$so*)  nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
+       *)              nm $nm_opt $nm_libs_ext 2>/dev/null ;;
+       esac
+done > libc.tmp
+
+$echo $n ".$c"
+$grep fprintf libc.tmp > libc.ptf
+xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
+xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
+xxx='[ADTSIW]'
+if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx //p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
+                               -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+else
+       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
+       then
+               nm_opt='-p'
+               eval $xrun
+       else
+               echo " "
+               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
+                       done
+                       $sed -e 's/\.o$//' < libc.tmp > libc.list
+                       echo "Ok." >&4
+               else
+                       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
+                               done
+                               echo "Ok." >&4
+                       else
+                               echo "That didn't work either.  Giving up." >&4
+                               exit 1
+                       fi
+               fi
+       fi
+fi
+nm_extract="$com"
+if $test -f /lib/syscalls.exp; then
+       echo " "
+       echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
+       $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
+fi
+;;
+esac
+$rm -f libnames libpath
+
+: is a C symbol defined?
+csym='tlook=$1;
+case "$3" in
+-v) tf=libc.tmp; tc=""; tdc="";;
+-a) tf=libc.tmp; tc="[0]"; tdc="[]";;
+*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
+esac;
+tx=yes;
+case "$reuseval-$4" in
+true-) ;;
+true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
+esac;
+case "$tx" in
+yes)
+       case "$runnm" in
+       true)
+               if $contains $tlook $tf >/dev/null 2>&1;
+               then tval=true;
+               else tval=false;
+               fi;;
+       *)
+               echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
+               if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
+               then tval=true;
+               else tval=false;
+               fi;
+               $rm -f t t.c;;
+       esac;;
+*)
+       case "$tval" in
+       $define) tval=true;;
+       *) tval=false;;
+       esac;;
+esac;
+eval "$2=$tval"'
+
+: define an is-in-libc? function
+inlibc='echo " "; td=$define; tu=$undef;
+sym=$1; var=$2; eval "was=\$$2";
+tx=yes;
+case "$reuseval$was" in
+true) ;;
+true*) tx=no;;
+esac;
+case "$tx" in
+yes)
+       set $sym tres -f;
+       eval $csym;
+       case "$tres" in
+       true)
+               echo "$sym() found." >&4;
+               case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
+       *)
+               echo "$sym() NOT found." >&4;
+               case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
+       esac;;
+*)
+       case "$was" in
+       $define) echo "$sym() found." >&4;;
+       *) echo "$sym() NOT found." >&4;;
+       esac;;
+esac'
+
+: Check how to convert floats to strings.
+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))
+#endif
+#ifdef TRY_gcvt
+#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
+#endif
+#ifdef TRY_sprintf
+#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
+#endif
+main() { 
+       char buf[64]; 
+       Gconvert(1.0, 8, 0, buf); 
+       if (buf[0] != '1' || buf[1] != '\0')
+               exit(1);
+       Gconvert(0.0, 8, 0, buf); 
+       if (buf[0] != '0' || buf[1] != '\0')
+               exit(1);
+       Gconvert(-1.0, 8, 0, buf); 
+       if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
+               exit(1);
+       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
+
+for xxx_convert in $xxx_list; do
+       echo "Trying $xxx_convert"
+       $rm -f try try.o
+       if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
+               try.c $libs > /dev/null 2>&1 ; then
+               echo "$xxx_convert" found. >&4
+               if ./try; then
+                       echo "Good, $xxx_convert drops a trailing decimal point."
+                       echo "I'll use $xxx_convert to convert floats into a string." >&4
+                       break;
+               else
+                       echo "But $xxx_convert keeps a trailing decimal point".
+               fi
+       else
+               echo "$xxx_convert NOT found." >&4
+       fi
+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
+
+: Initialize h_fcntl
+h_fcntl=false
+
+: Initialize h_sysfile
+h_sysfile=false
+
+: determine filename position in cpp output
+echo " "
+echo "Computing filename position in cpp output for #include directives..." >&4
+echo '#include <stdio.h>' > foo.c
+$cat >fieldn <<EOF
+$startsh
+$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
+$grep '^[      ]*#.*stdio\.h' | \
+while read cline; do
+       pos=1
+       set \$cline
+       while $test \$# -gt 0; do
+               if $test -r \`echo \$1 | $tr -d '"'\`; then
+                       echo "\$pos"
+                       exit 0
+               fi
+               shift
+               pos=\`expr \$pos + 1\`
+       done
+done
+EOF
+chmod +x fieldn
+fieldn=`./fieldn`
+$rm -f foo.c fieldn
+case $fieldn in
+'') pos='???';;
+1) pos=first;;
+2) pos=second;;
+3) pos=third;;
+*) pos="${fieldn}th";;
+esac
+echo "Your cpp writes the filename in the $pos field of the line."
+
+: locate header file
+$cat >findhdr <<EOF
+$startsh
+wanted=\$1
+name=''
+if test -f $usrinc/\$wanted; then
+       echo "$usrinc/\$wanted"
+       exit 0
+fi
+awkprg='{ print \$$fieldn }'
+echo "#include <\$wanted>" > foo\$\$.c
+$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
+$grep "^[      ]*#.*\$wanted" | \
+while read cline; do
+       name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
+       case "\$name" in
+       */\$wanted) echo "\$name"; exit 0;;
+       *) name='';;
+       esac;
+done;
+$rm -f foo\$\$.c;
+case "\$name" in
+'') exit 1;;
+esac
+EOF
+chmod +x findhdr
+
+: access call always available on UNIX
+set access d_access
+eval $inlibc
+
+: locate the flags for 'access()'
+case "$d_access" in
+"$define")
+       echo " "
+       $cat >access.c <<'EOCP'
+#include <sys/types.h>
+#ifdef I_FCNTL
+#include <fcntl.h>
+#endif
+#ifdef I_SYS_FILE
+#include <sys/file.h>
+#endif
+#ifdef I_UNISTD
+#include <unistd.h>
+#endif
+main() {
+       exit(R_OK);
+}
+EOCP
+       : check sys/file.h first, no particular reason here
+       if $test `./findhdr sys/file.h` && \
+               $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
+               h_sysfile=true;
+               echo "<sys/file.h> defines the *_OK access constants." >&4
+       elif $test `./findhdr fcntl.h` && \
+               $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
+               h_fcntl=true;
+               echo "<fcntl.h> defines the *_OK access constants." >&4
+       elif $test `./findhdr unistd.h` && \
+               $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
+               echo "<unistd.h> defines the *_OK access constants." >&4
+       else
+               echo "I can't find the four *_OK access constants--I'll use mine." >&4
+       fi
+       ;;
+esac
+$rm -f access*
+
+: see if alarm exists
+set alarm d_alarm
+eval $inlibc
+
+: Look for GNU-cc style attribute checking
+echo " "
+echo "Checking whether your compiler can handle __attribute__ ..." >&4
+$cat >attrib.c <<'EOCP'
+#include <stdio.h>
+void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
+EOCP
+if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
+       if $contains 'warning' attrib.out >/dev/null 2>&1; then
+               echo "Your C compiler doesn't fully support __attribute__."
+               val="$undef"
+       else
+               echo "Your C compiler supports __attribute__."
+               val="$define"
+       fi
+else
+       echo "Your C compiler doesn't seem to understand __attribute__ at all."
+       val="$undef"
+fi
+set d_attribut
+eval $setvar
+$rm -f attrib*
+
+: see if bcmp exists
+set bcmp d_bcmp
+eval $inlibc
+
+: see if bcopy exists
+set bcopy d_bcopy
+eval $inlibc
+
+: see if setpgrp exists
+set setpgrp d_setpgrp
+eval $inlibc
+
+: see which flavor of setpgrp is in use
+case "$d_setpgrp" in
+"$define")
+       echo " "
+       $cat >set.c <<EOP
+main()
+{
+       if (getuid() == 0) {
+               printf("(I see you are running Configure as super-user...)\n");
+               setuid(1);
+       }
+       if (-1 == setpgrp(1, 1))
+               exit(1);
+       exit(0);
+}
+EOP
+       if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
+               ./set 2>/dev/null
+               case $? in
+               0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
+                       val="$undef";;
+               *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
+                       val="$define";;
+               esac
+       else
+               if ./usg; then
+                       xxx="USG one, i.e. you use setpgrp()."
+                       val="$undef"
+               else
+                       xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
+                       val="$define"
+               fi
+               echo "Assuming your setpgrp is a $xxx" >&4
+       fi
+       ;;
+*) val="$undef";;
+esac
+set d_bsdpgrp
+eval $setvar
+$rm -f set set.c
+
+: see if bzero exists
+set bzero d_bzero
+eval $inlibc
+
+: check for length of integer
+echo " "
+case "$intsize" in
+'')
+       echo "Checking to see how big your integers are..." >&4
+       $cat >try.c <<'EOCP'
+#include <stdio.h>
+main()
+{
+       printf("%d\n", sizeof(int));
+       exit(0);
+}
+EOCP
+       if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
+               intsize=`./try`
+               echo "Your integers are $intsize bytes long."
+       else
+               dflt='4'
+               echo "(I can't seem to compile the test program.  Guessing...)"
+               rp="What is the size of an integer (in bytes)?"
+               . ./myread
+               intsize="$ans"
+       fi
+       ;;
+esac
+$rm -f try.c try
+
+: see if signal is declared as pointer to function returning int or void
+echo " "
+xxx=`./findhdr signal.h`
+$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
+if $contains 'int.*\*[         ]*signal' $$.tmp >/dev/null 2>&1 ; then
+       echo "You have int (*signal())() instead of void." >&4
+       val="$undef"
+elif $contains 'void.*\*[      ]*signal' $$.tmp >/dev/null 2>&1 ; then
+       echo "You have void (*signal())() instead of int." >&4
+       val="$define"
+elif $contains 'extern[        ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
+       echo "You have int (*signal())() instead of void." >&4
+       val="$undef"
+else
+       case "$d_voidsig" in
+       '')
+       echo "I can't determine whether signal handler returns void or int..." >&4
+               dflt=void
+               rp="What type does your signal handler return?"
+               . ./myread
+               case "$ans" in
+               v*) val="$define";;
+               *) val="$undef";;
+               esac;;
+       "$define")
+               echo "As you already told me, signal handler returns void." >&4;;
+       *)
+               echo "As you already told me, signal handler returns int." >&4;;
+       esac
+fi
+set d_voidsig
+eval $setvar
+case "$d_voidsig" in
+"$define") signal_t="void";;
+*) signal_t="int";;
+esac
+$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
+       xxx=int
+else
+       xxx=long
+fi
+$cat >try.c <<EOCP
+#include <sys/types.h>
+#include <signal.h>
+$signal_t blech() { exit(3); }
+main()
+{
+       $xxx i32;
+       double f;
+       int result = 0;
+       signal(SIGFPE, blech);
+
+       f = (double) 0x7fffffff;
+       f = 10 * f;
+       i32  = ($xxx) f;
+
+       if (i32 != ($xxx) f)
+               result |= 1;
+       exit(result);
+}
+EOCP
+if $cc -o try $ccflags try.c >/dev/null 2>&1; then
+       ./try
+       yyy=$?
+else
+       echo "(I can't seem to compile the test program--assuming it can't)"
+       yyy=1
+fi
+case "$yyy" in
+0)     val="$define"
+       echo "Yup, it can."
+       ;;
+*)     val="$undef"
+       echo "Nope, it can't."
+       ;;
+esac
+set d_casti32
+eval $setvar
+$rm -f try try.*
+
+: check for ability to cast negative floats to unsigned
+echo " "
+echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
+$cat >try.c <<EOCP
+#include <sys/types.h>
+#include <signal.h>
+$signal_t blech() { exit(7); }
+$signal_t blech_in_list() { 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.;
+       unsigned long along;
+       unsigned int aint;
+       unsigned short ashort;
+       int result = 0;
+
+       signal(SIGFPE, blech);
+       along = (unsigned long)f;
+       aint = (unsigned int)f;
+       ashort = (unsigned short)f;
+       if (along != (unsigned long)-123)
+               result |= 1;
+       if (aint != (unsigned int)-123)
+               result |= 1;
+       if (ashort != (unsigned short)-123)
+               result |= 1;
+       f = (double)0x40000000;
+       f = f + f;
+       along = 0;
+       along = (unsigned long)f;
+       if (along != 0x80000000)
+               result |= 2;
+       f -= 1.;
+       along = 0;
+       along = (unsigned long)f;
+       if (along != 0x7fffffff)
+               result |= 1;
+       f += 2.;
+       along = 0;
+       along = (unsigned long)f;
+       if (along != 0x80000001)
+               result |= 2;
+       if (result)
+               exit(result);
+       signal(SIGFPE, blech_in_list);
+       f = 123.;
+       along = dummy_long((unsigned long)f);
+       aint = dummy_int((unsigned int)f);
+       ashort = dummy_short((unsigned short)f);
+       if (along != (unsigned long)123)
+               result |= 4;
+       if (aint != (unsigned int)123)
+               result |= 4;
+       if (ashort != (unsigned short)123)
+               result |= 4;
+       exit(result);
+
+}
+EOCP
+if $cc -o try $ccflags try.c >/dev/null 2>&1; then
+       ./try
+       castflags=$?
+else
+       echo "(I can't seem to compile the test program--assuming it can't)"
+       castflags=7
+fi
+case "$castflags" in
+0)     val="$define"
+       echo "Yup, it can."
+       ;;
+*)     val="$undef"
+       echo "Nope, it can't."
+       ;;
+esac
+set d_castneg
+eval $setvar
+$rm -f try.*
+
+: see if vprintf exists
+echo " "
+if set vprintf val -f d_vprintf; eval $csym; $val; then
+       echo 'vprintf() found.' >&4
+       val="$define"
+       $cat >vprintf.c <<'EOF'
+#include <varargs.h>
+
+main() { xxx("foo"); }
+
+xxx(va_alist)
+va_dcl
+{
+       va_list args;
+       char buf[10];
+
+       va_start(args);
+       exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
+}
+EOF
+       if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
+               echo "Your vsprintf() returns (int)." >&4
+               val2="$undef"
+       else
+               echo "Your vsprintf() returns (char*)." >&4
+               val2="$define"
+       fi
+else
+       echo 'vprintf() NOT found.' >&4
+               val="$undef"
+               val2="$undef"
+fi
+set d_vprintf
+eval $setvar
+val=$val2
+set d_charvspr
+eval $setvar
+
+: see if chown exists
+set chown d_chown
+eval $inlibc
+
+: see if chroot exists
+set chroot d_chroot
+eval $inlibc
+
+: see if chsize exists
+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."
+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=''
+else
+       cryptlib=`./loc Slibcrypt.a "" $xlibpth`
+       if $test -z "$cryptlib"; then
+               cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
+       else
+               cryptlib=-lcrypt
+       fi
+       if $test -z "$cryptlib"; then
+               cryptlib=`./loc Llibcrypt.a "" $xlibpth`
+       else
+               cryptlib=-lcrypt
+       fi
+       if $test -z "$cryptlib"; then
+               cryptlib=`./loc libcrypt.a "" $libpth`
+       else
+               cryptlib=-lcrypt
+       fi
+       if $test -z "$cryptlib"; then
+               echo 'crypt() NOT found.' >&4
+               val="$undef"
+       else
+               val="$define"
+       fi
+fi
+set d_crypt
+eval $setvar
+
+: get csh whereabouts
+case "$csh" in
+'csh') val="$undef" ;;
+*) val="$define" ;;
 esac
-echo "Your cpp writes the filename in the $pos field of the line."
+set d_csh
+eval $setvar
+full_csh=$csh
 
-: locate header file
-$cat >findhdr <<EOF
-$startsh
-wanted=\$1
-name=''
-if test -f $usrinc/\$wanted; then
-       echo "$usrinc/\$wanted"
-       exit 0
-fi
-awkprg='{ print \$$fieldn }'
-echo "#include <\$wanted>" > foo\$\$.c
-$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
-$grep "^[      ]*#.*\$wanted" | \
-while read cline; do
-       name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
-       case "\$name" in
-       */\$wanted) echo "\$name"; exit 0;;
-       *) name='';;
+: see if cuserid exists
+set cuserid d_cuserid
+eval $inlibc
+
+: define an alternate in-header-list? function
+inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
+cont=true; xxf="echo \"<\$1> found.\" >&4";
+case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
+*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
+esac;
+case $# in 4) instead=instead;; *) instead="at last";; esac;
+while $test "$cont"; do
+       xxx=`./findhdr $1`
+       var=$2; eval "was=\$$2";
+       if $test "$xxx" && $test -r "$xxx";
+       then eval $xxf;
+       eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
+               cont="";
+       else eval $xxnf;
+       eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
+       set $yyy; shift; shift; yyy=$@;
+       case $# in 0) cont="";;
+       2) xxf="echo \"but I found <\$1> $instead.\" >&4";
+               xxnf="echo \"and I did not find <\$1> either.\" >&4";;
+       *) xxf="echo \"but I found <\$1\> instead.\" >&4";
+               xxnf="echo \"there is no <\$1>, ...\" >&4";;
        esac;
 done;
-$rm -f foo\$\$.c;
-case "\$name" in
-'') exit 1;;
-esac
-EOF
-chmod +x findhdr
+while $test "$yyy";
+do set $yyy; var=$2; eval "was=\$$2";
+       eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
+       set $yyy; shift; shift; yyy=$@;
+done'
 
-: access call always available on UNIX
-set access d_access
-eval $inlibc
+: see if this is a limits.h system
+set limits.h i_limits
+eval $inhdr
 
-: locate the flags for 'access()'
-case "$d_access" in
-"$define")
-       echo " "
-       $cat >access.c <<'EOCP'
-#include <sys/types.h>
-#ifdef I_FCNTL
-#include <fcntl.h>
+: see if this is a float.h system
+set float.h i_float
+eval $inhdr
+
+: See if number of significant digits in a double precision number is known
+echo " "
+$cat >dbl_dig.c <<EOM
+#$i_limits I_LIMITS
+#$i_float I_FLOAT
+#ifdef I_LIMITS
+#include <limits.h>
 #endif
-#ifdef I_SYS_FILE
-#include <sys/file.h>
+#ifdef I_FLOAT
+#include <float.h>
 #endif
-#ifdef I_UNISTD
-#include <unistd.h>
+#ifdef DBL_DIG
+printf("Contains DBL_DIG");
 #endif
-main() {
-       exit(R_OK);
-}
-EOCP
-       : check sys/file.h first, no particular reason here
-       if $test `./findhdr sys/file.h` && \
-               $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
-               h_sysfile=true;
-               echo "<sys/file.h> defines the *_OK access constants." >&4
-       elif $test `./findhdr fcntl.h` && \
-               $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
-               h_fcntl=true;
-               echo "<fcntl.h> defines the *_OK access constants." >&4
-       elif $test `./findhdr unistd.h` && \
-               $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
-               echo "<unistd.h> defines the *_OK access constants." >&4
+EOM
+$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
+if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
+       echo "DBL_DIG found." >&4
+       val="$define"
+else
+       echo "DBL_DIG NOT found." >&4
+       val="$undef"
+fi
+$rm -f dbl_dig.?
+set d_dbl_dig
+eval $setvar
+
+: see if difftime exists
+set difftime d_difftime
+eval $inlibc
+
+: see if this is a dirent system
+echo " "
+if xinc=`./findhdr dirent.h`; $test "$xinc"; then
+       val="$define"
+       echo "<dirent.h> found." >&4
+else
+       val="$undef"
+       if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
+               echo "<sys/dir.h> found." >&4
+               echo " "
        else
-               echo "I can't find the four *_OK access constants--I'll use mine." >&4
+               xinc=`./findhdr sys/ndir.h`
        fi
+       echo "<dirent.h> NOT found." >&4
+fi
+set i_dirent
+eval $setvar
+
+: Look for type of directory structure.
+echo " "
+$cppstdin $cppflags $cppminus < "$xinc" > try.c
+
+case "$direntrytype" in
+''|' ')
+       case "$i_dirent" in
+       $define) guess1='struct dirent' ;;
+       *) guess1='struct direct'  ;;
+       esac
+       ;;
+*)     guess1="$direntrytype"
        ;;
 esac
-$rm -f access*
 
-: see if bcmp exists
-set bcmp d_bcmp
-eval $inlibc
+case "$guess1" in
+'struct dirent') guess2='struct direct' ;;
+*) guess2='struct dirent' ;;
+esac
+               
+if $contains "$guess1" try.c >/dev/null 2>&1; then
+       direntrytype="$guess1"
+       echo "Your directory entries are $direntrytype." >&4
+elif $contains "$guess2" try.c >/dev/null 2>&1; then
+       direntrytype="$guess2"
+       echo "Your directory entries seem to be $direntrytype." >&4
+else
+       echo "I don't recognize your system's directory entries." >&4
+       rp="What type is used for directory entries on this system?"
+       dflt="$guess1"
+       . ./myread
+       direntrytype="$ans"
+fi
+$rm -f try.c
 
-: see if bcopy exists
-set bcopy d_bcopy
+
+: see if the directory entry stores field length
+echo " "
+$cppstdin $cppflags $cppminus < "$xinc" > try.c
+if $contains 'd_namlen' try.c >/dev/null 2>&1; then
+       echo "Good, your directory entry keeps length information in d_namlen." >&4
+       val="$define"
+else
+       echo "Your directory entry does not know about the d_namlen field." >&4
+       val="$undef"
+fi
+set d_dirnamlen
+eval $setvar
+$rm -f try.c
+
+: see if dlerror exists
+xxx_runnm="$runnm"
+runnm=false
+set dlerror d_dlerror
 eval $inlibc
+runnm="$xxx_runnm"
 
-: see if bzero exists
-set bzero d_bzero
+: see if dld is available
+set dld.h i_dld
+eval $inhdr
+
+: see if dlopen exists
+xxx_runnm="$runnm"
+runnm=false
+set dlopen d_dlopen
 eval $inlibc
+runnm="$xxx_runnm"
 
-: check for length of integer
+: determine which dynamic loading, if any, to compile in
 echo " "
-case "$intsize" in
-'')
-       echo "Checking to see how big your integers are..." >&4
-       $cat >try.c <<'EOCP'
-#include <stdio.h>
-main()
-{
-       printf("%d\n", sizeof(int));
-}
-EOCP
-       if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
-               dflt=`./try`
-       else
-               dflt='4'
-               echo "(I can't seem to compile the test program.  Guessing...)"
-       fi
+dldir="ext/DynaLoader"
+case "$usedl" in
+$define|y|true)
+       dflt='y'
+       usedl="$define"
        ;;
-*)
-       dflt="$intsize"
+$undef|n|false)
+       dflt='n'
+       usedl="$undef"
        ;;
+*) 
+       dflt='n'
+       case "$d_dlopen" in
+           $define) dflt='y' ;;
+       esac
+       case "$i_dld" in
+           $define) dflt='y' ;;
+       esac
+       : Does a dl_xxx.xs file exist for this operating system
+       $test -f ../$dldir/dl_${osname}.xs && dflt='y'
+       ;;
+esac
+rp="Do you wish to use dynamic loading?"
+. ./myread
+usedl="$ans"
+case "$ans" in
+y*) usedl="$define"
+       case "$dlsrc" in
+       '')
+               if $test -f ../$dldir/dl_${osname}.xs ; then
+                       dflt="$dldir/dl_${osname}.xs"
+               elif $test "$d_dlopen" = "$define" ; then
+                       dflt="$dldir/dl_dlopen.xs"
+               elif $test "$i_dld" = "$define" ; then
+                       dflt="$dldir/dl_dld.xs"
+               else
+                       dflt=''
+               fi
+               ;;
+       *)      dflt="$dldir/$dlsrc"
+               ;;
+       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
+       usedl="$define"
+       : emulate basename
+       dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
+
+    $cat << EOM
+
+Some systems may require passing special flags to $cc -c to
+compile modules that will be used to create a shared library.
+To use no flags, say "none".
+
+EOM
+    case "$cccdlflags" in
+    '')        case "$gccversion" in
+               '') case "$osname" in
+                       hpux)   dflt='+z' ;;
+                       next)   dflt='none' ;;
+                       solaris|svr4*|esix*) dflt='-Kpic' ;;
+                       sunos)  dflt='-pic' ;;
+                       *)      dflt='none' ;;
+                   esac ;;
+               *)      dflt='-fpic' ;;
+           esac ;;
+    *) dflt="$cccdlflags" ;;
+    esac
+    rp="Any special flags to pass to $cc -c to compile shared library modules?"
+    . ./myread
+    case "$ans" in
+    none) cccdlflags=' ' ;;
+    *) cccdlflags="$ans" ;;
+    esac
+
+    cat << EOM
+
+Some systems use ld to create libraries that can be dynamically loaded,
+while other systems (such as those using ELF) use $cc.
+
+EOM
+       case "$ld" in
+       '')     $cat >try.c <<'EOM'
+/* Test for whether ELF binaries are produced */
+#include <fcntl.h>
+#include <stdlib.h>
+main() {
+       char b[4];
+       int i = open("a.out",O_RDONLY);
+       if(i == -1) 
+               exit(1); /* fail */
+       if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
+               exit(0); /* succeed (yes, it's ELF) */
+       else
+               exit(1); /* fail */
+}
+EOM
+               if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
+                       cat <<EOM
+You appear to have ELF support.  I'll use $cc to build dynamic libraries.
+EOM
+                       dflt="$cc"
+               else
+                       echo "I'll use ld to build dynamic libraries."
+                       dflt='ld'
+               fi
+               rm -f try.c a.out
+               ;;
+       *)      dflt="$ld"
+               ;;
+       esac
+
+    rp="What command should be used to create dynamic libraries?"
+    . ./myread
+       ld="$ans"
+
+    cat << EOM
+
+Some systems may require passing special flags to $ld to create a
+library that can be dynamically loaded.  If your ld flags include
+-L/other/path options to locate libraries outside your loader's normal
+search path, you may need to specify those -L options here as well.  To
+use no flags, say "none".
+
+EOM
+    case "$lddlflags" in
+    '') case "$osname" in
+                       hpux)  dflt='-b' ;;
+                       linux)  dflt='-shared' ;;
+                       next)  dflt='none' ;;
+                       solaris) dflt='-G' ;;
+                       sunos) dflt='-assert nodefinitions' ;;
+                       svr4*|esix*) dflt="-G $ldflags" ;;
+               *)     dflt='none' ;;
+                       esac
+                       ;;
+    *) dflt="$lddlflags" ;;
+    esac
+
+: Try to guess additional flags to pick up local libraries.
+for thisflag in $ldflags; do
+       case "$thisflag" in
+       -L*)
+               case " $dflt " in
+               *" $thisflag "*) ;;
+               *) dflt="$dflt $thisflag" ;;
+               esac
+               ;;
+       esac
+done
+
+case "$dflt" in
+'') dflt='none' ;;
+esac
+
+    rp="Any special flags to pass to $ld to create a dynamically loaded library?"
+    . ./myread
+    case "$ans" in
+    none) lddlflags=' ' ;;
+    *) lddlflags="$ans" ;;
+    esac
+
+       cat <<EOM
+
+Some systems may require passing special flags to $cc to indicate that
+the resulting executable will use dynamic linking.  To use no flags,
+say "none".
+
+EOM
+    case "$ccdlflags" in
+    '') case "$osname" in
+               hpux)   dflt='-Wl,-E' ;;
+               linux)  dflt='-rdynamic' ;;
+               next)   dflt='none' ;;
+               sunos)  dflt='none' ;;
+               *)      dflt='none' ;;
+           esac ;;
+    *)  dflt="$ccdlflags" ;;
+    esac
+    rp="Any special flags to pass to $cc to use dynamic loading?"
+    . ./myread
+    case "$ans" in
+    none) ccdlflags=' ' ;;
+    *) ccdlflags="$ans" ;;
+    esac
+    ;;
+*)  usedl="$undef"
+       ld='ld'
+    dlsrc='dl_none.xs'
+    lddlflags=''
+    ccdlflags=''
+    ;;
 esac
-rp="What is the size of an integer (in bytes)?"
-. ./myread
-intsize="$ans"
-$rm -f try.c try
 
-: function used to set $1 to $val
-setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
-case "$val$was" in
-$define$undef) . whoa; eval "$var=\$td";;
-$undef$define) . whoa; eval "$var=\$tu";;
-*) eval "$var=$val";;
-esac'
+val="$undef"
+case "$osname" in
+esix*|svr4*)
+    case "$usedl" in
+    $define)
+       $cat <<EOM
 
-: 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
-    xxx=int
-else
-    xxx=long
-fi
+System V Release 4 systems can support dynamic loading
+only if libperl is created as a shared library.
 
-$cat >try.c <<EOCP
-#include <sys/types.h>
-#include <signal.h>
-blech() { exit(3); }
-main()
-{
-        $xxx i32;
-       double f;
-       int result = 0;
-       signal(SIGFPE, blech);
+EOM
+       val="$define"
+       ;;
+    esac ;;
+esac
+set d_shrplib; eval $setvar
+case "$d_shrplib" in
+$define)
+    cat <<EOM >&4
 
-       f = (double) 0x7fffffff;
-       f = 10 * f;
-       i32  = ( $xxx )f;
+Be sure to add the perl source directory to the LD_LIBRARY_PATH
+environment variable before running make:
+    LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH
+or
+    setenv LD_LIBRARY_PATH `cd ..;pwd`
 
-       if (i32 != ( $xxx )f)
-               result |= 1;
-       exit(result);
-}
-EOCP
-if $cc -o try $ccflags try.c >/dev/null 2>&1; then
-       ./try
-       yyy=$?
-else
-       yyy=1
-fi
-case "$yyy" in
-0)     val="$define"
-       echo "Yup, it can."
+EOM
+;;
+esac
+case "$d_shrplib" in
+$define)
+       case "$shrpdir" in
+       "")     dflt="$archlib/CORE";;
+       *)      dflt="$shrpdir";;
+       esac
+       rp="What directory should we install the shared libperl into?"
+       fn="d~"
+       . ./getfile
+       shrpdir="$ans"
        ;;
-*)     val="$undef"
-       echo "Nope, it can't."
+*)     shrpdir='none'
        ;;
 esac
-set d_casti32
-eval $setvar
-$rm -f try try.*
-: check for ability to cast negative floats to unsigned
-echo " "
-echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
-$cat >try.c <<'EOCP'
-#include <signal.h>
-blech() { exit(3); }
-main()
-{
-       double f = -123;
-       unsigned long along;
-       unsigned int aint;
-       unsigned short ashort;
-       int result = 0;
 
-       signal(SIGFPE, blech);
-       along = (unsigned long)f;
-       aint = (unsigned int)f;
-       ashort = (unsigned short)f;
-       if (along != (unsigned long)-123)
-               result |= 1;
-       if (aint != (unsigned int)-123)
-               result |= 1;
-       if (ashort != (unsigned short)-123)
-               result |= 1;
-       f = (double)0x40000000;
-       f = f + f;
-       along = 0;
-       along = (unsigned long)f;
-       if (along != 0x80000000)
-               result |= 2;
-       f -= 1.;
-       along = 0;
-       along = (unsigned long)f;
-       if (along != 0x7fffffff)
-               result |= 1;
-       f += 2.;
-       along = 0;
-       along = (unsigned long)f;
-       if (along != 0x80000001)
-               result |= 2;
-       exit(result);
+: see if dlfcn is available
+set dlfcn.h i_dlfcn
+eval $inhdr
 
-}
-EOCP
-if $cc -o try $ccflags try.c >/dev/null 2>&1; then
-       ./try
-       castflags=$?
-else
-       castflags=3
-fi
-case "$castflags" in
-0)     val="$define"
-       echo "Yup, it can."
+case "$usedl" in
+$define|y|true)
+       $cat << EOM
+
+On a few systems, the dynamically loaded modules that perl generates and uses
+will need a different extension then shared libs. The default will probably
+be appropriate.
+
+EOM
+       case "$dlext" in
+       '')     dflt="$so" ;;
+       *)      dflt="$dlext" ;;
+       esac
+       rp='What is the extension of dynamically loaded modules'
+       . ./myread
+       dlext="$ans"
        ;;
-*)     val="$undef"
-       echo "Nope, it can't."
+*)
+       dlext="none"
        ;;
 esac
-set d_castneg
-eval $setvar
-$rm -f try.*
 
-: see if sprintf is declared as int or pointer to char
+: Check if dlsym need a leading underscore
 echo " "
-$cat >ucbsprf.c <<'EOF'
-main()
-{
-       int sprintf();
-       char buf[10];
-       exit((unsigned long)sprintf(buf,"%s","foo") > 10L);
-}
-EOF
-if $cc ucbsprf.c -o ucbsprf >/dev/null 2>&1 && ./ucbsprf; then
-       echo "Your sprintf() returns (int)." >&4
-       val="$undef"
-else
-       echo "Your sprintf() returns (char*)." >&4
-       val="$define"
-fi
-set d_charsprf
-eval $setvar
-$rm -f ucbsprf*
+val="$undef"
 
-: see if vprintf exists
-echo " "
-if set vprintf val -f d_vprintf; eval $csym; $val; then
-       echo 'vprintf() found.' >&4
-       val="$define"
-       $cat >vprintf.c <<'EOF'
-#include <varargs.h>
+case "$dlsrc" in
+dl_dlopen.xs)
+       echo "Checking whether your dlsym() needs a leading underscore ..." >&4
+       $cat >dyna.c <<'EOM'
+fred () { }
+EOM
 
-main() { xxx("foo"); }
+$cat >fred.c<<EOM
 
-xxx(va_alist)
-va_dcl
-{
-       va_list args;
-       char buf[10];
+#include <stdio.h>
+#$i_dlfcn I_DLFCN
+#ifdef I_DLFCN
+#include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
+#else
+#include <sys/types.h>
+#include <nlist.h>
+#include <link.h>
+#endif
 
-       va_start(args);
-       exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
+extern int fred() ;
+
+main()
+{
+    void * handle ;
+    void * symbol ;
+#ifndef RTLD_LAZY
+    int mode = 1 ;
+#else
+    int mode = RTLD_LAZY ;
+#endif
+    handle = dlopen("./dyna.$dlext", mode) ;
+    if (handle == NULL) {
+        printf ("1\n") ;
+           exit(0);
+    }
+    symbol = dlsym(handle, "fred") ;
+    if (symbol == NULL) {
+               /* try putting a leading underscore */
+        symbol = dlsym(handle, "_fred") ;
+        if (symbol == NULL) {
+            printf ("2\n") ;
+               exit(0);
+               }
+        printf ("3\n") ;
+    }
+    else
+        printf ("4\n") ;
+       exit(0);
 }
-EOF
-       if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
-               echo "Your vsprintf() returns (int)." >&4
-               val2="$undef"
+EOM
+       if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
+               $ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 && 
+               $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
+               xxx=`./fred`
+               case $xxx in
+               1)      echo "Test program failed using dlopen." >&4
+                       echo "Perhaps you should not use dynamic loading." >&4;;
+               2)      echo "Test program failed using dlsym." >&4
+                       echo "Perhaps you should not use dynamic loading." >&4;;
+               3)      echo "dlsym needs a leading underscore" >&4
+                       val="$define" ;;
+               4)      echo "dlsym doesn't need a leading underscore." >&4;;
+               esac
        else
-               echo "Your vsprintf() returns (char*)." >&4
-               val2="$define"
+               echo "I can't compile and run the test program." >&4
        fi
-else
-       echo 'vprintf() NOT found.' >&4
-               val="$undef"
-               val2="$undef"
-fi
-set d_vprintf
-eval $setvar
-val=$val2
-set d_charvspr
+       ;;
+esac
+               
+$rm -f fred fred.? dyna.$dlext dyna.?
+
+set d_dlsymun
 eval $setvar
 
-: see if chsize exists
-set chsize d_chsize
+: see if dup2 exists
+set dup2 d_dup2
 eval $inlibc
 
-: check for const keyword
+: Locate the flags for 'open()'
 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;
+$cat >open3.c <<'EOCP'
+#include <sys/types.h>
+#ifdef I_FCNTL
+#include <fcntl.h>
+#endif
+#ifdef I_SYS_FILE
+#include <sys/file.h>
+#endif
+main() {
+       if(O_RDONLY);
+#ifdef O_TRUNC
+       exit(0);
+#else
+       exit(1);
+#endif
 }
 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=''
-else
-       cryptlib=`./loc Slibcrypt.a "" $xlibpth`
-       if $test -z "$cryptlib"; then
-               cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
-       else
-               cryptlib=-lcrypt
-       fi
-       if $test -z "$cryptlib"; then
-               cryptlib=`./loc Llibcrypt.a "" $xlibpth`
-       else
-               cryptlib=-lcrypt
-       fi
-       if $test -z "$cryptlib"; then
-               cryptlib=`./loc libcrypt.a "" $libpth`
-       else
-               cryptlib=-lcrypt
-       fi
-       if $test -z "$cryptlib"; then
-               echo 'crypt() NOT found.' >&4
-               val="$undef"
+: check sys/file.h first to get FREAD on Sun
+if $test `./findhdr sys/file.h` && \
+               $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
+       h_sysfile=true;
+       echo "<sys/file.h> defines the O_* constants..." >&4
+       if ./open3; then
+               echo "and you have the 3 argument form of open()." >&4
+               val="$define"
        else
+               echo "but not the 3 argument form of open().  Oh, well." >&4
+               val="$undef"
+       fi
+elif $test `./findhdr fcntl.h` && \
+               $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
+       h_fcntl=true;
+       echo "<fcntl.h> defines the O_* constants..." >&4
+       if ./open3; then
+               echo "and you have the 3 argument form of open()." >&4
                val="$define"
+       else
+               echo "but not the 3 argument form of open().  Oh, well." >&4
+               val="$undef"
        fi
+else
+       val="$undef"
+       echo "I can't find the O_* constant definitions!  You got problems." >&4
 fi
-set d_crypt
+set d_open3
 eval $setvar
+$rm -f open3*
 
-: get csh whereabouts
-case "$csh" in
-'csh') val="$undef" ;;
-*) val="$define" ;;
+: check for non-blocking I/O stuff
+case "$h_sysfile" in
+true) echo "#include <sys/file.h>" > head.c;;
+*)
+       case "$h_fcntl" in
+       true) echo "#include <fcntl.h>" > head.c;;
+       *) echo "#include <sys/fcntl.h>" > head.c;;
+       esac
+       ;;
 esac
-set d_csh
-eval $setvar
-
-: see if this is a dirent system
 echo " "
-if xinc=`./findhdr dirent.h`; $test "$xinc"; then
-       val="$define"
-       echo "<dirent.h> found." >&4
-else
-       val="$undef"
-       if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
-               echo "<sys/dir.h> found." >&4
-               echo " "
+echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
+case "$o_nonblock" in
+'')
+       $cat head.c > try.c
+       $cat >>try.c <<'EOCP'
+main() {
+#ifdef O_NONBLOCK
+       printf("O_NONBLOCK\n");
+       exit(0);
+#endif
+#ifdef O_NDELAY
+       printf("O_NDELAY\n");
+       exit(0);
+#endif
+#ifdef FNDELAY
+       printf("FNDELAY\n");
+       exit(0);
+#endif
+       exit(0);
+}
+EOCP
+       if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
+               o_nonblock=`./try`
+               case "$o_nonblock" in
+               '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
+               *) echo "Seems like we can use $o_nonblock.";;
+               esac
        else
-               xinc=`./findhdr sys/ndir.h`
+               echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
        fi
-       echo "<dirent.h> NOT found." >&4
-fi
-set i_dirent
-eval $setvar
+       ;;
+*) echo "Using $hint value $o_nonblock.";;
+esac
+$rm -f try try.* .out core
 
-: see if the directory entry stores field length
 echo " "
-if $contains 'd_namlen' $xinc >/dev/null 2>&1; then
-       echo "Good, your directory entry keeps length information in d_namlen." >&4
-       val="$define"
-else
-       echo "Your directory entry does not know about the d_namlen field." >&4
-       val="$undef"
-fi
-set d_dirnamlen
-eval $setvar
-
-: now see if they want to do setuid emulation
-case "$d_dosuid" in
-'') dflt=n;;
-"$undef") dflt=n;;
-*) dflt=y;;
-esac
-cat <<EOM
-Some sites have disabled setuid #! scripts because of a bug in the kernel
-that prevents them from being secure.  If you are on such a system, the
-setuid/setgid bits on scripts are currently useless.  It is possible for
-$package to detect those bits and emulate setuid/setgid in a secure fashion
-until a better solution is devised for the kernel problem.
+echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
+case "$eagain" in
+'')
+       $cat head.c > try.c
+       $cat >>try.c <<EOCP
+#include <errno.h>
+#include <sys/types.h>
+#include <signal.h>
+#define MY_O_NONBLOCK $o_nonblock
+extern int errno;
+$signal_t blech(x) int x; { exit(3); }
+EOCP
+       $cat >> try.c <<'EOCP'
+main()
+{
+       int pd[2];
+       int pu[2];
+       char buf[1];
+       char string[100];
+
+       pipe(pd);       /* Down: child -> parent */
+       pipe(pu);       /* Up: parent -> child */
+       if (0 != fork()) {
+               int ret;
+               close(pd[1]);   /* Parent reads from pd[0] */
+               close(pu[0]);   /* Parent writes (blocking) to pu[1] */
+               if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
+                       exit(1);
+               signal(SIGALRM, blech);
+               alarm(5);
+               if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
+                       exit(2);
+               sprintf(string, "%d\n", ret);
+               write(2, string, strlen(string));
+               alarm(0);
+#ifdef EAGAIN
+               if (errno == EAGAIN) {
+                       printf("EAGAIN\n");
+                       goto ok;
+               }
+#endif
+#ifdef EWOULDBLOCK
+               if (errno == EWOULDBLOCK)
+                       printf("EWOULDBLOCK\n");
+#endif
+       ok:
+               write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
+               sleep(2);                               /* Give it time to close our pipe */
+               alarm(5);
+               ret = read(pd[0], buf, 1);      /* Should read EOF */
+               alarm(0);
+               sprintf(string, "%d\n", ret);
+               write(3, string, strlen(string));
+               exit(0);
+       }
 
-EOM
-rp="Do you want to do setuid/setgid emulation?"
-. ./myread
-case "$ans" in
-y*)  d_dosuid="$define";;
-*) d_dosuid="$undef";;
+       close(pd[0]);                   /* We write to pd[1] */
+       close(pu[1]);                   /* We read from pu[0] */
+       read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
+       close(pd[1]);                   /* Pipe pd is now fully closed! */
+       exit(0);                                /* Bye bye, thank you for playing! */
+}
+EOCP
+       if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
+               echo "$startsh" >mtry
+               echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
+               chmod +x mtry
+               ./mtry >/dev/null 2>&1
+               case $? in
+               0) eagain=`$cat try.out`;;
+               1) echo "Could not perform non-blocking setting!";;
+               2) echo "I did a successful read() for something that was not there!";;
+               3) echo "Hmm... non-blocking I/O does not seem to be working!";;
+               *) echo "Something terribly wrong happened during testing.";;
+               esac
+               rd_nodata=`$cat try.ret`
+               echo "A read() system call with no data present returns $rd_nodata."
+               case "$rd_nodata" in
+               0|-1) ;;
+               *)
+                       echo "(That's peculiar, fixing that to be -1.)"
+                       rd_nodata=-1
+                       ;;
+               esac
+               case "$eagain" in
+               '')
+                       echo "Forcing errno EAGAIN on read() with no data available."
+                       eagain=EAGAIN
+                       ;;
+               *)
+                       echo "Your read() sets errno to $eagain when no data is available."
+                       ;;
+               esac
+               status=`$cat try.err`
+               case "$status" in
+               0) echo "And it correctly returns 0 to signal EOF.";;
+               -1) echo "But it also returns -1 to signal EOF, so be careful!";;
+               *) echo "However, your read() returns '$status' on EOF??";;
+               esac
+               val="$define"
+               if test "$status" -eq "$rd_nodata"; then
+                       echo "WARNING: you can't distinguish between EOF and no data!"
+                       val="$undef"
+               fi
+       else
+               echo "I can't compile the test program--assuming errno EAGAIN will do."
+               eagain=EAGAIN
+       fi
+       set d_eofnblk
+       eval $setvar
+       ;;
+*)
+       echo "Using $hint value $eagain."
+       echo "Your read() returns $rd_nodata when no data is present."
+       case "$d_eofnblk" in
+       "$define") echo "And you can see EOF because read() returns 0.";;
+       "$undef") echo "But you can't see EOF status from read() returned value.";;
+       *)
+               echo "(Assuming you can't see EOF status from read anyway.)"
+               d_eofnblk=$undef
+               ;;
+       esac
+       ;;
 esac
-
-: see if dup2 exists
-set dup2 d_dup2
-eval $inlibc
+$rm -f try try.* .out core head.c mtry
 
 : see if fchmod exists
 set fchmod d_fchmod
@@ -3228,57 +5908,38 @@ eval $inlibc
 set fcntl d_fcntl
 eval $inlibc
 
-: 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*
+: see if fgetpos exists
+set fgetpos d_fgetpos
+eval $inlibc
 
 : see if flock exists
 set flock d_flock
 eval $inlibc
 
+: see if fork exists
+set fork d_fork
+eval $inlibc
+
+: see if pathconf exists
+set pathconf d_pathconf
+eval $inlibc
+
+: see if fpathconf exists
+set fpathconf d_fpathconf
+eval $inlibc
+
+: see if fsetpos exists
+set fsetpos d_fsetpos
+eval $inlibc
+
 : see if gethostent exists
 set gethostent d_gethent
 eval $inlibc
 
+: see if getlogin exists
+set getlogin d_getlogin
+eval $inlibc
+
 : see if getpgrp exists
 set getpgrp d_getpgrp
 eval $inlibc
@@ -3287,97 +5948,131 @@ eval $inlibc
 set getpgrp2 d_getpgrp2
 eval $inlibc
 
+: see if getppid exists
+set getppid d_getppid
+eval $inlibc
+
 : see if getpriority exists
 set getpriority d_getprior
 eval $inlibc
 
-: define an alternate in-header-list? function
-inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
-cont=true; xxf="echo \"<\$1> found.\" >&4";
-case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
-*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
-esac;
-case $# in 4) instead=instead;; *) instead="at last";; esac;
-while $test "$cont"; do
-       xxx=`./findhdr $1`
-       var=$2; eval "was=\$$2";
-       if $test "$xxx" && $test -r "$xxx";
-       then eval $xxf;
-               eval "case \"\$$var\" in $undef) . whoa; esac"; eval "$var=\$td";
-               cont="";
-       else eval $xxnf;
-               eval "case \"\$$var\" in $define) . whoa; esac"; eval "$var=\$tu"; fi;
-       set $yyy; shift; shift; yyy=$@;
-       case $# in 0) cont="";;
-       2) xxf="echo \"but I found <\$1> $instead.\" >&4";
-               xxnf="echo \"and I did not find <\$1> either.\" >&4";;
-       *) xxf="echo \"but I found <\$1\> instead.\" >&4";
-               xxnf="echo \"there is no <\$1>, ...\" >&4";;
-       esac;
-done;
-while $test "$yyy";
-do set $yyy; var=$2; eval "was=\$$2";
-       eval "case \"\$$var\" in $define) . whoa; esac"; eval "$var=\$tu";
-       set $yyy; shift; shift; yyy=$@;
-done'
-
 : see if 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 htonl --and friends-- exists
-set htonl d_htonl
+val=''
+set htonl val
 eval $inlibc
+
 : Maybe they are macros.
-case "$d_htonl" in
-'define') ;;
-*) cat > try.c <<EOM
+case "$val" in
+$undef)
+       $cat >htonl.c <<EOM
 #include <stdio.h>
 #include <sys/types.h>
 #$i_niin I_NETINET_IN
 #$i_sysin I_SYS_IN
 #ifdef I_NETINET_IN
-# include <netinet/in.h>
+#include <netinet/in.h>
 #endif
 #ifdef I_SYS_IN
-# include <sys/in.h>
+#include <sys/in.h>
+#endif
+#ifdef htonl
+printf("Defined as a macro.");
 #endif
-int main()
-{
-  int x;
-  printf("x = ", htonl(7));
-}
 EOM
-    if $cc $ccflags -c try.c >/dev/null 2>&1; then
-        d_htonl="$define"
-       echo "But it seems to be defined as a macro."
-    fi
-    $rm -f try.* try
-    ;;
+       $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
+       if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
+               val="$define"
+               echo "But it seems to be defined as a macro." >&4
+       fi
+       $rm -f htonl.?
+       ;;
+esac
+set d_htonl
+eval $setvar
+
+: see which of string.h or strings.h is needed
+echo " "
+strings=`./findhdr string.h`
+if $test "$strings" && $test -r "$strings"; then
+       echo "Using <string.h> instead of <strings.h>." >&4
+       val="$define"
+else
+       val="$undef"
+       strings=`./findhdr strings.h`
+       if $test "$strings" && $test -r "$strings"; then
+               echo "Using <strings.h> instead of <string.h>." >&4
+       else
+               echo "No string header found -- You'll surely have problems." >&4
+       fi
+fi
+set i_string
+eval $setvar
+case "$i_string" in
+"$undef") strings=`./findhdr strings.h`;;
+*)       strings=`./findhdr string.h`;;
 esac
+
+: index or strchr
+echo " "
+if set index val -f; eval $csym; $val; then
+       if set strchr val -f d_strchr; eval $csym; $val; then
+               if $contains strchr "$strings" >/dev/null 2>&1 ; then
+                       val="$define"
+                       vali="$undef"
+                       echo "strchr() found." >&4
+               else
+                       val="$undef"
+                       vali="$define"
+                       echo "index() found." >&4
+               fi
+       else
+               val="$undef"
+               vali="$define"
+               echo "index() found." >&4
+       fi
+else
+       if set strchr val -f d_strchr; eval $csym; $val; then
+               val="$define"
+               vali="$undef"
+               echo "strchr() found." >&4
+       else
+               echo "No index() or strchr() found!" >&4
+               val="$undef"
+               vali="$undef"
+       fi
+fi
+set d_strchr; eval $setvar
+val="$vali"
+set d_index; eval $setvar
+
 : Look for isascii
 echo " "
 $cat >isascii.c <<'EOCP'
 #include <stdio.h>
 #include <ctype.h>
 main() {
-        int c = 'A';
+       int c = 'A';
        if (isascii(c))
-           exit(0);
+               exit(0);
        else
-           exit(1);
+               exit(1);
 }
 EOCP
-if $cc $cppflags -o isascii isascii.c >/dev/null 2>&1 ; then
-    echo "isascii() found."
-    val="$define"
+if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
+       echo "isascii() found." >&4
+       val="$define"
 else
-    echo "isascii() NOT found."
-    val="$undef"
+       echo "isascii() NOT found." >&4
+       val="$undef"
 fi
 set d_isascii
 eval $setvar
 $rm -f isascii*
+
 : see if killpg exists
 set killpg d_killpg
 eval $inlibc
@@ -3386,10 +6081,30 @@ eval $inlibc
 set link d_link
 eval $inlibc
 
+: see if localeconv exists
+set localeconv d_locconv
+eval $inlibc
+
+: see if lockf exists
+set lockf d_lockf
+eval $inlibc
+
 : see if lstat exists
 set lstat d_lstat
 eval $inlibc
 
+: see if mblen exists
+set mblen d_mblen
+eval $inlibc
+
+: see if mbstowcs exists
+set mbstowcs d_mbstowcs
+eval $inlibc
+
+: see if mbtowc exists
+set mbtowc d_mbtowc
+eval $inlibc
+
 : see if memcmp exists
 set memcmp d_memcmp
 eval $inlibc
@@ -3410,6 +6125,14 @@ eval $inlibc
 set mkdir d_mkdir
 eval $inlibc
 
+: see if mkfifo exists
+set mkfifo d_mkfifo
+eval $inlibc
+
+: see if mktime exists
+set mktime d_mktime
+eval $inlibc
+
 : see if msgctl exists
 set msgctl d_msgctl
 eval $inlibc
 set d_msg
 eval $setvar
 
+: see if this is a malloc.h system
+set malloc.h i_malloc
+eval $inhdr
+
+: see if stdlib is available
+set stdlib.h i_stdlib
+eval $inhdr
+
 : determine which malloc to compile in
-:  Old versions had dflt='y' only for bsd or v7.
 echo " "
 case "$usemymalloc" in
-'')
-       if bsd || v7; then
-               dflt='y'
-       else
-               dflt='y'
-       fi
-       ;;
-*)  dflt="$usemymalloc"
-       ;;
+''|y*|true)    dflt='y' ;;
+n*|false)      dflt='n' ;;
+*)     dflt="$usemymalloc" ;;
 esac
 rp="Do you wish to attempt to use the malloc that comes with $package?"
 . ./myread
 usemymalloc="$ans"
 case "$ans" in
-y*) mallocsrc='malloc.c'
-    mallocobj='malloc.o'
-    d_mymalloc="$define"
-    ;;
-*) mallocsrc=''
-   mallocobj=''
-   d_mymalloc="$undef"
-   ;;
+y*|true)
+       usemymalloc='y'
+       mallocsrc='malloc.c'
+       mallocobj='malloc.o'
+       d_mymalloc="$define"
+       case "$libs" in
+       *-lmalloc*)
+               : Remove malloc from list of libraries to use
+               echo "Removing unneeded -lmalloc from library list" >&4
+               set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
+               shift
+               libs="$*"
+               echo "libs = $libs" >&4
+               ;;
+       esac
+       ;;
+*)
+       usemymalloc='n'
+       mallocsrc=''
+       mallocobj=''
+       d_mymalloc="$undef"
+       ;;
 esac
 
-: compute the type returned by malloc
+: compute the return types of malloc and free
 echo " "
-case "$malloctype" in
-'')
-       if $test `./findhdr malloc.h`; then
-               echo "#include <malloc.h>" > malloc.c
-       fi
+$cat >malloc.c <<END
+#$i_malloc I_MALLOC
+#$i_stdlib I_STDLIB
+#include <stdio.h>
+#include <sys/types.h>
+#ifdef I_MALLOC
 #include <malloc.h>
-       $cat >>malloc.c <<'END'
+#endif
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+#ifdef TRY_MALLOC
 void *malloc();
+#endif
+#ifdef TRY_FREE
+void free();
+#endif
 END
-       if $cc $ccflags -c malloc.c >/dev/null 2>&1; then
+case "$malloctype" in
+'')
+       if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
                malloctype='void *'
        else
                malloctype='char *'
        fi
-       $rm -f malloc.[co]
        ;;
 esac
 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
 
-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"
+case "$freetype" in
+'')
+       if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
+               freetype='void'
        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
-               else
-                       echo "or anywhere else I see." >&4
-                       d_socket="$undef"
-                       d_oldsock="$undef"
-               fi
+               freetype='int'
        fi
-fi
+       ;;
+esac
+echo "Your system uses $freetype free(), it would seem." >&4
+$rm -f malloc.[co]
+: see if nice exists
+set nice d_nice
+eval $inlibc
 
-: see if socketpair exists
-set socketpair d_sockpair
+: see if pause exists
+set pause d_pause
 eval $inlibc
 
-: Locate the flags for 'open()'
-echo " "
-$cat >open3.c <<'EOCP'
-#include <sys/types.h>
-#ifdef I_FCNTL
-#include <fcntl.h>
-#endif
-#ifdef I_SYS_FILE
-#include <sys/file.h>
-#endif
-main() {
-       if(O_RDONLY);
-#ifdef O_TRUNC
-       exit(0);
-#else
-       exit(1);
-#endif
-}
-EOCP
-: check sys/file.h first to get FREAD on Sun
-if $test `./findhdr sys/file.h` && \
-               $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
-       h_sysfile=true;
-       echo "<sys/file.h> defines the O_* constants..." >&4
-       if ./open3; then
-               echo "and you have the 3 argument form of open()." >&4
+: see if pipe exists
+set pipe d_pipe
+eval $inlibc
+
+: see if poll exists
+set poll d_poll
+eval $inlibc
+
+: see if this is a pwd.h system
+set pwd.h i_pwd
+eval $inhdr
+
+case "$i_pwd" in
+$define)
+       xxx=`./findhdr pwd.h`
+       $cppstdin $cppflags $cppminus < $xxx >$$.h
+
+       if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
                val="$define"
        else
-               echo "but not the 3 argument form of open().  Oh, well." >&4
                val="$undef"
        fi
-elif $test `./findhdr fcntl.h` && \
-               $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
-       h_fcntl=true;
-       echo "<fcntl.h> defines the O_* constants..." >&4
-       if ./open3; then
-               echo "and you have the 3 argument form of open()." >&4
+       set d_pwquota
+       eval $setvar
+
+       if $contains 'pw_age' $$.h >/dev/null 2>&1; then
                val="$define"
        else
-               echo "but not the 3 argument form of open().  Oh, well." >&4
                val="$undef"
        fi
-else
-       val="$undef"
-       echo "I can't find the O_* constant definitions!  You got problems." >&4
-fi
-set d_open3
-eval $setvar
-$rm -f open3*
+       set d_pwage
+       eval $setvar
 
-: see if this is a pwd system
-echo " "
-xxx=`./findhdr pwd.h`
-if $test "$xxx"; then
-       i_pwd="$define"
-       echo "<pwd.h> found." >&4
-       $cppstdin $cppflags $cppminus < $xxx >$$.h
-       if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
-               d_pwquota="$define"
-       else
-               d_pwquota="$undef"
-       fi
-       if $contains 'pw_age' $$.h >/dev/null 2>&1; then
-               d_pwage="$define"
-       else
-               d_pwage="$undef"
-       fi
        if $contains 'pw_change' $$.h >/dev/null 2>&1; then
-               d_pwchange="$define"
+               val="$define"
        else
-               d_pwchange="$undef"
+               val="$undef"
        fi
+       set d_pwchange
+       eval $setvar
+
        if $contains 'pw_class' $$.h >/dev/null 2>&1; then
-               d_pwclass="$define"
+               val="$define"
        else
-               d_pwclass="$undef"
+               val="$undef"
        fi
+       set d_pwclass
+       eval $setvar
+
        if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
-               d_pwexpire="$define"
+               val="$define"
        else
-               d_pwexpire="$undef"
+               val="$undef"
        fi
+       set d_pwexpire
+       eval $setvar
+
        if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
-               d_pwcomment="$define"
+               val="$define"
        else
-               d_pwcomment="$undef"
+               val="$undef"
        fi
+       set d_pwcomment
+       eval $setvar
+
        $rm -f $$.h
-else
-       i_pwd="$undef"
-       d_pwquota="$undef"
-       d_pwage="$undef"
-       d_pwchange="$undef"
-       d_pwclass="$undef"
-       d_pwexpire="$undef"
-       d_pwcomment="$undef"
-       echo "<pwd.h> NOT found." >&4
-fi
+       ;;
+*)
+       val="$undef"; 
+       set d_pwquota; eval $setvar
+       set d_pwage; eval $setvar
+       set d_pwchange; eval $setvar
+       set d_pwclass; eval $setvar
+       set d_pwexpire; eval $setvar
+       set d_pwcomment; eval $setvar
+       ;;
+esac
 
 : see if readdir and friends exist
 set readdir d_readdir
@@ -3654,6 +6347,10 @@ eval $inlibc
 set rewinddir d_rewinddir
 eval $inlibc
 
+: see if readlink exists
+set readlink d_readlink
+eval $inlibc
+
 : see if rename exists
 set rename d_rename
 eval $inlibc
@@ -3676,6 +6373,7 @@ char *b;
 int len;
 int off;
 int align;
+
 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
 
 for (align = 7; align >= 0; align--) {
@@ -3693,7 +6391,7 @@ for (align = 7; align >= 0; align--) {
 exit(0);
 }
 EOCP
-       if $cc foo.c -o safebcpy $ccflags $libs >/dev/null 2>&1 ; then
+       if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
                if ./safebcpy 2>/dev/null; then
                        echo "Yes, it can."
                        val="$define"
@@ -3729,10 +6427,10 @@ memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
 for (align = 7; align >= 0; align--) {
        for (len = 36; len; len--) {
                b = buf+align;
-               memcpy(abc, b, len);
+               memcpy(b, abc, len);
                for (off = 1; off <= len; off++) {
-                       memcpy(b, b+off, len);
                        memcpy(b+off, b, len);
+                       memcpy(b, b+off, len);
                        if (memcmp(b, abc, len))
                                exit(1);
                }
@@ -3741,7 +6439,7 @@ for (align = 7; align >= 0; align--) {
 exit(0);
 }
 EOCP
-       if $cc foo.c -o safemcpy $ccflags $libs >/dev/null 2>&1 ; then
+       if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
                if ./safemcpy 2>/dev/null; then
                        echo "Yes, it can."
                        val="$define"
@@ -3798,17 +6496,18 @@ eval $inlibc
 set seteuid d_seteuid
 eval $inlibc
 
+: see if setlinebuf exists
+set setlinebuf d_setlinebuf
+eval $inlibc
+
 : see if setlocale exists
 set setlocale d_setlocale
 eval $inlibc
+
 : see if setpgid exists
 set setpgid d_setpgid
 eval $inlibc
 
-: see if setpgrp exists
-set setpgrp d_setpgrp
-eval $inlibc
-
 : see if setpgrp2 exists
 set setpgrp2 d_setpgrp2
 eval $inlibc
@@ -3853,18 +6552,35 @@ eval $inlibc
 set shmat d_shmat
 eval $inlibc
 : see what shmat returns
-d_voidshmat="$undef"
 case "$d_shmat" in
-define)
-    $cppstdin $cppflags $cppminus < $usrinc/sys/shm.h >voidshmat.txt 2>/dev/null
-    if $contains "void.*shmat" voidshmat.txt >/dev/null 2>&1; then
-       echo "and shmat returns (void*)"
-       d_voidshmat="$define"
-    else
-       echo "and shmat returns (char*)"
-    fi
-    ;;
+"$define")
+       $cat >shmat.c <<'END'
+#include <sys/shm.h>
+void *shmat();
+END
+       if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
+               shmattype='void *'
+       else
+               shmattype='char *'
+       fi
+       echo "and it returns ($shmattype)." >&4
+       : see if a prototype for shmat is available
+       xxx=`./findhdr sys/shm.h`
+       $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
+       if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       $rm -f shmat.[co]
+       ;;
+*)
+       val="$undef"
+       ;;
 esac
+set d_shmatprototype
+eval $setvar
+
 : see if shmdt exists
 set shmdt d_shmdt
 eval $inlibc
@@ -3880,11 +6596,130 @@ if $h_shm && $test `./findhdr sys/shm.h`; then
        echo "You have the full shm*(2) library." >&4
        val="$define"
 else
-       echo "You don't have the full shm*(2) library." >&4
-       val="$undef"
+       echo "You don't have the full shm*(2) library." >&4
+       val="$undef"
+fi
+set d_shm
+eval $setvar
+
+: see if sigvector exists -- since sigvec will match the substring
+echo " "
+if set sigvector val -f d_sigvectr; eval $csym; $val; then
+       echo 'sigvector() found--you must be running HP-UX.' >&4
+       val="$define"; set d_sigvectr; eval $setvar
+       val="$define"; set d_sigvec; eval $setvar
+else
+: try the original name
+       d_sigvectr="$undef"
+       if set sigvec val -f d_sigvec; eval $csym; $val; then
+               echo 'sigvec() found.' >&4
+               val="$define"; set d_sigvec; eval $setvar
+       else
+               echo 'sigvec() not found--race conditions with signals may occur.' >&4
+               val="$undef"; set d_sigvec; eval $setvar
+       fi
+fi
+
+: see if we have sigaction
+set sigaction d_sigaction
+eval $inlibc
+
+
+: see if sigsetjmp exists
+echo " "
+case "$d_sigsetjmp" in
+'')
+       $cat >set.c <<EOP
+#include <setjmp.h>
+sigjmp_buf env;
+int set = 1;
+main()
+{
+       if (sigsetjmp(env,1))
+               exit(set);
+       set = 0;
+       siglongjmp(env, 1);
+       exit(1);
+}
+EOP
+       if $cc $ccflags $ldflags set.c -o set $libs >/dev/null 2>&1; then
+               if ./set >/dev/null 2>&1; then
+                       echo "POSIX sigsetjmp found." >&4
+                       val="$define"
+               else
+                       $cat <<EOM
+Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
+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 set.c set
+
+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
+               else
+                       echo "or anywhere else I see." >&4
+                       d_socket="$undef"
+                       d_oldsock="$undef"
+               fi
+       fi
 fi
-set d_shm
-eval $setvar
+
+: see if socketpair exists
+set socketpair d_sockpair
+eval $inlibc
 
 : see if stat knows about block sizes
 echo " "
 set d_statblks
 eval $setvar
 
-: see if stdio is really std
+: see if _ptr and _cnt from stdio act std
 echo " "
-xxx=`./findhdr stdio.h`
-if $contains 'char.*_ptr;' "$xxx" >/dev/null 2>&1 ; then
-       if $contains '_cnt;' "$xxx" >/dev/null 2>&1 ; then
-               echo "Your stdio is pretty std." >&4
+if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
+       echo "(Looks like you have stdio.h from Linux.)"
+       case "$stdio_ptr" in
+       '') stdio_ptr='((fp)->_IO_read_ptr)'
+               ptr_lval=$define
+               ;;
+       *)      ptr_lval=$d_stdio_ptr_lval;;
+       esac
+       case "$stdio_cnt" in
+       '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
+               cnt_lval=$undef
+               ;;
+       *)      cnt_lval=$d_stdio_cnt_lval;;
+       esac
+       case "$stdio_base" in
+       '') stdio_base='((fp)->_IO_read_base)';;
+       esac
+       case "$stdio_bufsiz" in
+       '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
+       esac
+else
+       case "$stdio_ptr" in
+       '') stdio_ptr='((fp)->_ptr)'
+               ptr_lval=$define
+               ;;
+       *)      ptr_lval=$d_stdio_ptr_lval;;
+       esac
+       case "$stdio_cnt" in
+       '') stdio_cnt='((fp)->_cnt)'
+               cnt_lval=$define
+               ;;
+       *)      cnt_lval=$d_stdio_cnt_lval;;
+       esac
+       case "$stdio_base" in
+       '') stdio_base='((fp)->_base)';;
+       esac
+       case "$stdio_bufsiz" in
+       '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
+       esac
+fi
+: test whether _ptr and _cnt really work
+echo "Checking how std your stdio is..." >&4
+$cat >try.c <<EOP
+#include <stdio.h>
+#define FILE_ptr(fp)   $stdio_ptr
+#define FILE_cnt(fp)   $stdio_cnt
+main() { 
+       FILE *fp = fopen("try.c", "r");
+       char c = getc(fp);
+       if (
+               18 <= FILE_cnt(fp) &&
+               strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
+       )
+               exit(0);
+       exit(1);
+}
+EOP
+val="$undef"
+if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
+       if ./try; then
+               echo "Your stdio acts pretty std."
                val="$define"
        else
-               echo "Your stdio isn't very std." >&4
-               val="$undef"
+               echo "Your stdio isn't very std."
        fi
 else
-       echo "Your stdio isn't very std." >&4
-       val="$undef"
+       echo "Your stdio doesn't appear very std."
 fi
+$rm -f try.c try
 set d_stdstdio
 eval $setvar
 
-: see which of string.h or strings.h is needed
-echo " "
-strings=`./findhdr string.h`
-if $test "$strings" && $test -r "$strings"; then
-       echo "Using <string.h> instead of <strings.h>." >&4
-       val="$define"
-else
-       val="$undef"
-       strings=`./findhdr strings.h`
-       if $test "$strings" && $test -r "$strings"; then
-               echo "Using <strings.h> instead of <string.h>." >&4
-       else
-               echo "No string header found -- You'll surely have problems." >&4
-       fi
-fi
-set i_string
+: Can _ptr be used as an lvalue?
+case "$d_stdstdio$ptr_lval" in
+$define$define) val=$define ;;
+*) val=$undef ;;
+esac
+set d_stdio_ptr_lval
 eval $setvar
-case "$i_string" in
-"$undef") strings=`./findhdr strings.h`;;
-*)       strings=`./findhdr string.h`;;
+
+: Can _cnt be used as an lvalue?
+case "$d_stdstdio$cnt_lval" in
+$define$define) val=$define ;;
+*) val=$undef ;;
 esac
+set d_stdio_cnt_lval
+eval $setvar
 
-: index or strchr
-echo " "
-if set index val -f; eval $csym; $val; then
-       if set strchr val -f d_strchr; eval $csym; $val; then
-               if $contains strchr "$strings" >/dev/null 2>&1 ; then
+: see if _base is also standard
+val="$undef"
+case "$d_stdstdio" in
+$define)
+       $cat >try.c <<EOP
+#include <stdio.h>
+#define FILE_base(fp)  $stdio_base
+#define FILE_bufsiz(fp)        $stdio_bufsiz
+main() { 
+       FILE *fp = fopen("try.c", "r");
+       char c = getc(fp);
+       if (
+               19 <= FILE_bufsiz(fp) &&
+               strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
+       )
+               exit(0);
+       exit(1);
+}
+EOP
+       if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
+               if ./try; then
+                       echo "Even its _base field acts std."
                        val="$define"
-                       vali="$undef"
-                       echo "strchr() found." >&4
                else
-                       val="$undef"
-                       vali="$define"
-                       echo "index() found." >&4
+                       echo "But its _base field isn't std."
                fi
        else
-               val="$undef"
-               vali="$define"
-               echo "index() found." >&4
-       fi
-else
-       if set strchr val -f d_strchr; eval $csym; $val; then
-               val="$define"
-               vali="$undef"
-               echo "strchr() found." >&4
-       else
-               echo "No index() or strchr() found!" >&4
-               val="$undef"
-               vali="$undef"
+               echo "However, it seems to be lacking the _base field."
        fi
-fi
-set d_strchr; eval $setvar
-val="$vali"
-set d_index; eval $setvar
+       $rm -f try.c try
+       ;;
+esac
+set d_stdiobase
+eval $setvar
+
+: see if strcoll exists
+set strcoll d_strcoll
+eval $inlibc
 
 : check for structure copying
 echo " "
@@ -4006,7 +6897,7 @@ echo " "
 if set strerror val -f d_strerror; eval $csym; $val; then
        echo 'strerror() found.' >&4
        d_strerror="$define"
-       d_strerrm="$undef"
+       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"
@@ -4018,223 +6909,128 @@ 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="$undef"
+       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="$define"
-else
-       echo 'strerror() and sys_errlist[] NOT found.' >&4
-       d_strerror="$undef"
-       d_syserrlst="$undef"
-       d_strerrm="$undef"
-fi
-
-: see if symlink exists
-set symlink d_symlink
-eval $inlibc
-
-: see if syscall exists
-set syscall d_syscall
-eval $inlibc
-
-: see if system exists
-set system d_system
-eval $inlibc
-
-: see if times exists
-echo " "
-if set times val -f d_times; eval $csym; $val; then
-       echo 'times() found.' >&4
-       d_times="$define"
-       case "$clocktype" in
-       '')
-               if $contains 'clock_t;' `./findhdr sys/types.h` >/dev/null 2>&1 ; then
-                       dflt='clock_t';
-               elif $contains 'clock_t;' `./findhdr sys/times.h` >/dev/null 2>&1; then
-                       dflt='clock_t';
-               else
-                       dflt='long';
-               fi
-               ;;
-       *)  dflt="$clocktype"
-               ;;
-       esac
-       echo " "
-       rp="What type is returned by times() on this sytem?"
-       . ./myread
-       clocktype="$ans"
-else
-       echo 'times() not found, hope that will do.' >&4
-       d_times="$undef"
-       clocktype='int'
-fi
-
-: see if truncate exists
-set truncate d_truncate
-eval $inlibc
-
-: see if we have to deal with yellow pages, now NIS.
-if $test -d /usr/etc/yp || $test -d /etc/yp; then
-       if $test -f /usr/etc/nibindd; then
-               echo " "
-               echo "I'm fairly confident you're on a NeXT."
-               echo " "
-               rp='Do you get the hosts file via NetInfo?'
-               dflt=y
-               case "$hostcat" in
-               nidump*) ;;
-               '') ;;
-               *) dflt=n;;
-               esac
-               . ./myread
-               case "$ans" in
-               y*) hostcat='nidump hosts .';;
-               *) hostcat='cat /etc/hosts';;
-               esac
-       fi
-       case "$hostcat" in
-       nidump*) ;;
-       *)
-               case "$hostcat" in
-               *ypcat*) dflt=y;;
-               '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
-                               dflt=y
-                       else
-                               dflt=n
-                       fi;;
-               *) dflt=n;;
-               esac
-               echo " "
-               rp='Are you getting the hosts file via yellow pages?'
-               . ./myread
-               case "$ans" in
-               y*) hostcat='ypcat hosts';;
-               *) hostcat='cat /etc/hosts';;
-               esac
-               ;;
-       esac
-fi
-
-: now get the host name
-echo " "
-echo "Figuring out host name..." >&4
-case "$myhostname" in
-'') cont=true
-       echo 'Maybe "hostname" will work...'
-       if tans=`sh -c hostname 2>&1` ; then
-               myhostname=$tans
-               phostname=hostname
-               cont=''
-       fi
-       ;;
-*) cont='';;
-esac
-if $test "$cont"; then
-       if xenix; then
-               echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
-               if tans=`cat /etc/systemid 2>&1` ; then
-                       myhostname=$tans
-                       phostname='cat /etc/systemid'
-                       echo "Whadyaknow.  Xenix always was a bit strange..."
-                       cont=''
-               fi
-       elif $test -r /etc/systemid; then
-               echo "(What is a non-Xenix system doing with /etc/systemid?)"
-       fi
-fi
-if $test "$cont"; then
-       echo 'No, maybe "uuname -l" will work...'
-       if tans=`sh -c 'uuname -l' 2>&1` ; then
-               myhostname=$tans
-               phostname='uuname -l'
+               d_syserrlst="$define"
        else
-               echo 'Strange.  Maybe "uname -n" will work...'
-               if tans=`sh -c 'uname -n' 2>&1` ; then
-                       myhostname=$tans
-                       phostname='uname -n'
-               else
-                       echo 'Oh well, maybe I can mine it out of whoami.h...'
-                       if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
-                               myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
-                               phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
-                       else
-                               case "$myhostname" in
-                               '') echo "Does this machine have an identity crisis or something?"
-                                       phostname='';;
-                               *)
-                                       echo "Well, you said $myhostname before..."
-                                       phostname='echo $myhostname';;
-                               esac
-                       fi
-               fi
+               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])'
+else
+       echo 'strerror() and sys_errlist[] NOT found.' >&4
+       d_strerror="$undef"
+       d_syserrlst="$undef"
+       d_strerrm='"unknown"'
 fi
-: you do not want to know about this
-set $myhostname
-myhostname=$1
 
-: translate upper to lower if necessary
-case "$myhostname" in
-*[A-Z]*)
-       myhostname=`echo $myhostname | tr '[A-Z]' '[a-z]'`
-       echo "(Normalizing case in your host name)"
-       ;;
-esac
+: see if strxfrm exists
+set strxfrm d_strxfrm
+eval $inlibc
 
-: verify guess
-if $test "$myhostname" ; then
-       dflt=y
-       rp='Your host name appears to be "'$myhostname'".'" Right?"
-       . ./myread
-       case "$ans" in
-       y*) ;;
-       *) myhostname='';;
+: see if symlink exists
+set symlink d_symlink
+eval $inlibc
+
+: see if syscall exists
+set syscall d_syscall
+eval $inlibc
+
+: see if sysconf exists
+set sysconf d_sysconf
+eval $inlibc
+
+: see if system exists
+set system d_system
+eval $inlibc
+
+: see if tcgetpgrp exists
+set tcgetpgrp d_tcgetpgrp
+eval $inlibc
+
+: see if tcsetpgrp exists
+set tcsetpgrp d_tcsetpgrp
+eval $inlibc
+
+: define an is-a-typedef? function
+typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
+case "$inclist" in
+"") inclist="sys/types.h";;
+esac;
+eval "varval=\$$var";
+case "$varval" in
+"")
+       $rm -f temp.c;
+       for inc in $inclist; do
+               echo "#include <$inc>" >>temp.c;
+       done;
+       $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
+       if $contains $type temp.E >/dev/null 2>&1; then
+               eval "$var=\$type";
+       else
+               eval "$var=\$def";
+       fi;
+       $rm -f temp.?;;
+*) eval "$var=\$varval";;
+esac'
+
+: see if this is a sys/times.h system
+set sys/times.h i_systimes
+eval $inhdr
+
+: see if times exists
+echo " "
+if set times val -f d_times; eval $csym; $val; then
+       echo 'times() found.' >&4
+       d_times="$define"
+       inc=''
+       case "$i_systimes" in
+       "$define") inc='sys/times.h';;
        esac
+       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"
+else
+       echo 'times() NOT found, hope that will do.' >&4
+       d_times="$undef"
+       clocktype='int'
 fi
 
-: bad guess or no guess
-while $test "X$myhostname" = X ; do
-       dflt=''
-       rp="Please type the (one word) name of your host:"
-       . ./myread
-       myhostname="$ans"
-done
+: see if truncate exists
+set truncate d_truncate
+eval $inlibc
 
-: a little sanity check here
-case "$phostname" in
-'') ;;
-*)
-       case `$phostname` in
-       $myhostname$mydomain|$myhostname) ;;
-       *)
-               case "$phostname" in
-               sed*)
-                       echo "(That doesn't agree with your whoami.h file, by the way.)"
-                       ;;
-               *)
-                       echo "(That doesn't agree with your $phostname command, by the way.)"
-                       ;;
-               esac
-       ;;
-       esac
-       ;;
-esac
+: see if tzname[] exists
+echo " "
+if set tzname val -a d_tzname; eval $csym; $val; then
+       val="$define"
+       echo 'tzname[] found.' >&4
+else
+       val="$undef"
+       echo 'tzname[] NOT found.' >&4
+fi
+set d_tzname
+eval $setvar
+
+: see if umask exists
+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
+       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
@@ -4266,58 +7062,104 @@ case "$d_phostname" in
 '') d_phostname="$undef";;
 esac
 
+: backward compatibility for d_hvfork
+if test X$d_hvfork != X; then
+       d_vfork="$d_hvfork"
+       d_hvfork=''
+fi
 : see if there is a vfork
-set vfork d_vfork
+val=''
+set vfork val
 eval $inlibc
-: But do we want to use it.  vfork is reportedly unreliable in 
-: perl in Solaris 2.x, and probably elsewhere.
-case "$d_vfork" in
-define)
-    dflt='n'
-    rp="Some systems have problems with vork.  Do you want to use it?"
-    . ./myread
-    case "$ans" in
-    y|Y) ;;
-    *) echo "Ok, we won't use vfork."
-       d_vfork="$undef"
-       ;;
-    esac
-    ;;
-esac
-: see if signal is declared as pointer to function returning int or void
-echo " "
-xxx=`./findhdr signal.h`
-$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
-if $contains 'int.*\*[         ]*signal' $$.tmp >/dev/null 2>&1 ; then
-       echo "You have int (*signal())() instead of void." >&4
-       val="$undef"
-       signal_t="int"
-elif $contains 'void.*\*[      ]*signal' $$.tmp >/dev/null 2>&1 ; then
-       echo "You have void (*signal())() instead of int." >&4
-       val="$define"
-       signal_t="void"
-elif $contains 'extern[        ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
-       echo "You have int (*signal())() instead of void." >&4
-       val="$undef"
-       signal_t="int"
-else
-       case "$d_voidsig" in
-       '')
-       echo "I can't determine whether signal handler returns void or int..." >&4
-               dflt=void
-               rp="What type does your signal handler returns?"
-               . ./myread
-               case "$ans" in
-               void) val="$define"; signal_t="void";;
-               *) val="$undef"; signal_t="int";;
-               esac;;
-       *) echo "As you already told me, signal handler returns $signal_t." >&4;;
+
+: Ok, but do we want to use it. vfork is reportedly unreliable in 
+: perl on Solaris 2.x, and probably elsewhere.
+case "$val" in
+$define)
+       echo " "
+       case "$usevfork" in
+       false) dflt='n';;
+       *) dflt='y';;
        esac
-fi
-set d_voidsig
+       rp="Some systems have problems with vfork().  Do you want to use it?"
+       . ./myread
+       case "$ans" in
+       y|Y) ;;
+       *)
+               echo "Ok, we won't use vfork()."
+               val="$undef"
+               ;;
+       esac
+       ;;
+esac
+set d_vfork
 eval $setvar
-$rm -f $$.tmp
+case "$d_vfork" in
+$define) usevfork='true';;
+*) usevfork='false';;
+esac
+
+: see if this is an sysdir system
+set sys/dir.h i_sysdir
+eval $inhdr
+
+: see if this is an sysndir system
+set sys/ndir.h i_sysndir
+eval $inhdr
+
+: see if closedir exists
+set closedir d_closedir
+eval $inlibc
 
+case "$d_closedir" in
+"$define")
+       echo " "
+       echo "Checking whether closedir() returns a status..." >&4
+       cat > closedir.c <<EOM
+#$i_dirent I_DIRENT            /**/
+#$i_sysdir I_SYS_DIR           /**/
+#$i_sysndir I_SYS_NDIR         /**/
+
+#if defined(I_DIRENT)
+#include <dirent.h>
+#if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
+#include <sys/dir.h>
+#endif
+#else
+#ifdef I_SYS_NDIR
+#include <sys/ndir.h>
+#else
+#ifdef I_SYS_DIR
+#ifdef hp9000s500
+#include <ndir.h>      /* may be wrong in the future */
+#else
+#include <sys/dir.h>
+#endif
+#endif
+#endif
+#endif 
+int main() { return closedir(opendir(".")); }
+EOM
+       if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
+               if ./closedir > /dev/null 2>&1 ; then
+                       echo "Yes, it does."
+                       val="$undef"
+               else
+                       echo "No, it doesn't."
+                       val="$define"
+               fi
+       else
+               echo "(I can't seem to compile the test program--assuming it doesn't)"
+               val="$define"
+       fi
+       ;;
+*)
+       val="$undef";
+       ;;
+esac
+set d_void_closedir
+eval $setvar
+$rm -f closedir*
 : check for volatile keyword
 echo " "
 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
@@ -4357,6 +7199,14 @@ eval $inlibc
 set waitpid d_waitpid
 eval $inlibc
 
+: see if wcstombs exists
+set wcstombs d_wcstombs
+eval $inlibc
+
+: see if wctomb exists
+set wctomb d_wctomb
+eval $inlibc
+
 : preserve RCS keywords in files with variable substitution, grrr
 Date='$Date'
 Id='$Id'
@@ -4364,50 +7214,53 @@ Log='$Log'
 RCSfile='$RCSfile'
 Revision='$Revision'
 
-: is AFS running?
-echo " "
-if test -d /afs; then
-       echo "AFS may be running... I'll be extra cautious then..." >&4
-       afs=true
-else
-       echo "AFS does not seem to be running..." >&4
-       afs=false
-fi
-
-: determine where public executables go
+: check for alignment requirements
 echo " "
-case "$bin" in
-'')
-       dflt=`./loc . /bin /usr/local/bin /usr/lbin /usr/local /usr/bin`
-       ;;
-*)
-       dflt="$bin"
-       ;;
-esac
-fn=d~
-rp='Pathname where the public executables will reside?'
-. ./getfile
-bin="$ans"
-binexp="$ansexp"
-if $afs; then
-       $cat <<EOM
-
-Since you are running AFS, I need to distinguish the directory in which
-executables 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 "$installbin" in
-       '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installbin";;
-       esac
-       fn=de~
-       rp='Where will public executables be installed?'
-       . ./getfile
-       installbin="$ans"
-else
-       installbin="$binexp"
-fi
+case "$alignbytes" in
+'') echo "Checking alignment constraints..." >&4
+       $cat >try.c <<'EOCP'
+struct foobar {
+       char foo;
+       double bar;
+} try;
+main()
+{
+       printf("%d\n", (char *)&try.bar - (char *)&try.foo);
+}
+EOCP
+       if $cc $ccflags try.c -o try >/dev/null 2>&1; then
+               dflt=`./try`
+       else
+               dflt='8'
+               echo"(I can't seem to compile the test program...)"
+       fi
+       ;;
+*) dflt="$alignbytes"
+       ;;
+esac
+rp="Doubles must be aligned on a how-many-byte boundary?"
+. ./myread
+alignbytes="$ans"
+$rm -f try.c try
+
+: Define several unixisms. Hints files or command line options
+: can be used to override them.
+case "$ar" in
+'') ar='ar';;
+esac
+case "$lib_ext" in
+'') lib_ext='.a';;
+esac
+case "$obj_ext" in
+'') obj_ext='.o';;
+esac
+case "$path_sep" in
+'') path_sep=':';;
+esac
+: Which makefile gets called first.  This is used by make depend.
+case "$firstmakefile" in
+'') firstmakefile='makefile';;
+esac
 
 : check for ordering of bytes in a long
 case "$byteorder" in
@@ -4438,13 +7291,20 @@ main()
        for (i = 0; i < sizeof(long); i++)
                printf("%c", u.c[i]+'0');
        printf("\n");
+       exit(0);
 }
 EOCP
-       if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
+       xxx_prompt=y
+       if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
                dflt=`./try`
                case "$dflt" in
-               ????|????????) echo "(The test program ran ok.)";;
-               *) echo "(The test program didn't run right for some reason.)";;
+               [1-4][1-4][1-4][1-4]|12345678|87654321)
+                       echo "(The test program ran ok.)"
+                       echo "byteorder=$dflt"
+                       xxx_prompt=n
+                       ;;
+               ????|????????) echo "(The test program ran ok.)" ;;
+               *) echo "(The test program didn't run right for some reason.)" ;;
                esac
        else
                dflt='4321'
@@ -4452,462 +7312,323 @@ EOCP
 (I can't seem to compile the test program.  Guessing big-endian...)
 EOM
        fi
-       ;;
-*)
-       echo " "
-       dflt="$byteorder"
+       case "$xxx_prompt" in
+       y)
+               rp="What is the order of bytes in a long?"
+               . ./myread
+               byteorder="$ans"
+               ;;
+       *)      byteorder=$dflt
+               ;;
+       esac
        ;;
 esac
-rp="What is the order of bytes in a long?"
-. ./myread
-byteorder="$ans"
 $rm -f try.c try
 
-: see if dlfcn is available
-set dlfcn.h i_dlfcn
-eval $inhdr
-: determine which dynamic loading, if any, to compile in
+: how do we catenate cpp tokens here?
 echo " "
-case "$usedl" in
-'') case "$i_dlfcn" in
-    define) dflt='y' ;;
-    *)      dflt='n' ;;
-    esac
-    : Does a dl.c file exist for this operating system
-    $test -f ../ext/dl/dl_${osname}.c && dflt='y'
-    ;;
-define|y|true) dflt='y'
-    usedl="$define"
-    ;;
-*)  dflt='n'
-    ;;
-esac
-rp="Do you wish to attempt to use dynamic loading?"
-. ./myread
-usedl="$ans"
-case "$ans" in
-y*) usedl="$define"
-    if $test -f ../ext/dl/dl_${osname}.c ; then
-       dflt="ext/dl/dl_${osname}.c"
-    else
-       dflt='ext/dl/dl.c'
-    fi
-    echo "The following dynamic loading files are available:"
-    cd ..; ls -C ext/dl/dl*.c; cd UU
-    rp="Source file to use for dynamic loading"
-    fn="fne~"
-    . ./getfile
-    : emulate  basename and dirname
-    xxx=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@' -e 's@\.c$@@'`
-    dlobj=$xxx.o
-    dlsrc=$xxx.c
-    dldir=`echo $ans | $sed 's@\(.*\)/[^/]*$@\1@'`
-    case "$dldir" in
-    '') dldir="." ;;
-    *) ;;
-    esac
-    if $test -f ../$dldir/$dlsrc; then
-        usedl="$define"
-    else
-       echo "File $dlsrc does not exist -- ignored"
-       usedl="$undef"
-    fi
-
-    cat << EOM
-
-Some systems may require passing special flags to $cc -c to
-compile modules that will be used to create a shared library.
-To use no flags, say "none".
-EOM
-    case "$cccdlflags" in
-    ''|' ') case "$osname" in
-                       hpux)  dflt='+z' ;;
-                       next)  dflt='none' ;;
-                       sunos) dflt='none' ;;
-               *)     dflt='none' ;;
-                       esac
-                       ;;
-    *) dflt="$cccdlflags" ;;
-    esac
-    rp="Any special flags to pass to $cc -c to compile shared library modules?"
-    . ./myread
-    case "$ans" in
-    none) cccdlflags='' ;;
-    *) cccdlflags="$ans" ;;
-    esac
-
-    cat << 'EOM'
-
-Some systems may require passing special flags to ld to
-create a shared library.  To use no flags, say "none".
-EOM
-    case "$lddlflags" in
-    ''|' ') case "$osname" in
-                       hpux)  dflt='-b' ;;
-                       next)  dflt='none' ;;
-                       sunos) dflt='none' ;;
-               *)     dflt='none' ;;
-                       esac
-                       ;;
-    *) dflt="$lddlflags" ;;
-    esac
-    rp="Any special flags to pass to ld to create a shared library?"
-    . ./myread
-    case "$ans" in
-    none) lddlflags='' ;;
-    *) lddlflags="$ans" ;;
-    esac
-
-       cat <<EOM
-
-Some systems may require passing special flags to $cc to indicate that
-dynamic linking will be used.  To use no flags, say "none".
+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."
+       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!"
+       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
-    case "$ccdlflags" in
-    ''|' ')
-               case "$osname" in
-               hpux)  dflt='none' ;;
-               next)  dflt='none' ;;
-               sunos) dflt='none' ;;
-           *)     dflt='none' ;;
-               esac
-               ;;
-    *)  dflt="$ccdlflags"
-           ;;
-    esac
-    rp="Any special flags to pass to $cc to use dynamic loading?"
-    . ./myread
-    case "$ans" in
-    none) ccdlflags='' ;;
-    *) ccdlflags="$ans" ;;
-    esac
-       cat <<EOM
+       cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
+fi
+$rm -f cpp_stuff.*
 
-Some systems may require using a special suffix for shared libraries.
-To create the shared library for POSIX, for example, you may need to
-actually build the file POSIX.so.
+: see if this is a db.h system
+set db.h i_db
+eval $inhdr
 
-EOM
-    case "$shlibsuffix" in
-       '')
-               case "$osname" in
-               hpux)  dflt='.sl' ;;
-               next)  dflt='.so' ;;
-               sunos) dflt='.so' ;;
-               *)     dflt='.so' ;;
-               esac
-               ;;
-    *)  dflt="$shlibsuffix"
+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>
+u_int32_t hash_cb (ptr, size)
+const void *ptr;
+size_t size;
+{
+}
+HASHINFO info;
+main()
+{
+       info.hash = hash_cb;
+}
+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
+               echo "I can't seem to compile the test program." >&4
+               db_hashtype=int
+       fi
+       $rm -f try.*
+       echo "Your version of Berkeley DB uses $db_hashtype for hash."
+       ;;
+*)     db_hashtype=int
        ;;
-    esac
-    rp="What is the suffix used for shared libraries?"
-    . ./myread
-    case "$ans" in
-    none) shlibsuffix='' ;;
-    *) shlibsuffix="$ans" ;;
-    esac
-    ;;
-*)  usedl="$undef"
-    : These are currently not used.
-    dlsrc=''
-    dlobj=''
-    dldir=''
-    lddlflags=''
-    ccdlflags=''
-    shlibsuffix='.o'
-    ;;
 esac
-: see if we have the old dbm
-set dbm.h i_dbm
-eval $inhdr
-
-: see if ndbm.h is available
-set ndbm.h i_ndbm
-eval $inhdr
 
-: see if gdbm.h is available
-set gdbm.h i_gdbm
-eval $inhdr
+case "$i_db" in
+define)
+       : Check the return type needed for prefix 
+       echo " "
+       echo "Checking return type needed for prefix for Berkeley DB ..." >&4
+       cat >try.c <<EOCP
+#$d_const HASCONST
+#ifndef HASCONST
+#define const
+#endif
+#include <sys/types.h>
+#include <db.h>
+size_t prefix_cb (key1, key2)
+const DBT *key1;
+const DBT *key2;
+{
+}
+BTREEINFO info;
+main()
+{
+       info.prefix = prefix_cb;
+}
+EOCP
+       if $cc $ccflags -c try.c  >try.out 2>&1 ; then
+               if $contains warning try.out >>/dev/null 2>&1 ; then
+                       db_prefixtype='int'
+               else
+                       db_prefixtype='size_t'
+               fi
+       else
+               echo "I can't seem to compile the test program." >&4
+               db_prefixtype='int'
+       fi
+       $rm -f try.*
+       echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
+       ;;
+*)     db_prefixtype='int'
+       ;;
+esac
 
-: see if sdbm.h is wanted
+: check for void type
+echo " "
+echo "Checking to see how well your C compiler groks the void type..." >&4
+echo " "
+$cat >&4 <<EOM
+  Support flag bits are:
+    1: basic void declarations.
+    2: arrays of pointers to functions returning void.
+    4: operations between pointers to and addresses of void functions.
+    8: generic void pointers.
+EOM
 echo " "
-echo "$package includes an implementation of sdbm in ext/dbm/sdbm."
-case "$i_sdbm" in
-    ''|' ') val="$define" ;;
-    *) val="$i_sdbm" ;;
+case "$voidflags" in
+'')
+       $cat >try.c <<'EOCP'
+#if TRY & 1
+void main() {
+#else
+main() {
+#endif
+       extern void moo();      /* function returning void */
+       void (*goo)();          /* ptr to func returning void */
+#if TRY & 8
+       void *hue;              /* generic ptr */
+#endif
+#if TRY & 2
+       void (*foo[10])();
+#endif
+
+#if TRY & 4
+       if(goo == moo) {
+               exit(0);
+       }
+#endif
+       exit(0);
+}
+EOCP
+       if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
+               voidflags=$defvoidused
+       echo "It appears to support void to the level $package wants ($defvoidused)."
+               if $contains warning .out >/dev/null 2>&1; then
+                       echo "However, you might get some warnings that look like this:"
+                       $cat .out
+               fi
+       else
+echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
+               if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then
+                       echo "It supports 1..."
+                       if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then
+                               echo "It also supports 2..."
+                               if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then
+                                       voidflags=7
+                                       echo "And it supports 4 but not 8 definitely."
+                               else
+                                       echo "It doesn't support 4..."
+                                       if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then
+                                               voidflags=11
+                                               echo "But it supports 8."
+                                       else
+                                               voidflags=3
+                                               echo "Neither does it support 8."
+                                       fi
+                               fi
+                       else
+                               echo "It does not support 2..."
+                               if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then
+                                       voidflags=13
+                                       echo "But it supports 4 and 8."
+                               else
+                                       if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then
+                                               voidflags=5
+                                               echo "And it supports 4 but has not heard about 8."
+                                       else
+                                               echo "However it supports 8 but not 4."
+                                       fi
+                               fi
+                       fi
+               else
+                       echo "There is no support at all for void."
+                       voidflags=0
+               fi
+       fi
 esac
-set i_sdbm
-eval $setvar
-case "$extensions" in
-' '|'') echo "Looking for extensions..."
-       case "$find" in
-               *find*) 
-               cd ..
-               extensions=`$find ext -type f -name \*.xs -print`
-               set X $extensions
-               shift
-               extensions="$*"
-               cd UU
-               ;;
-       *)      extensions='ext/dbm/NDBM_File.xs ext/dbm/ODBM_File.xs ext/dbm/GDBM_File.xs ext/dbm/SDBM_File.xs ext/posix/POSIX.xs'
-               ;;
-       esac
+: Only prompt user if support does not match the level we want
+case "$voidflags" in
+"$defvoidused") ;;
+*)
+       dflt="$voidflags";
+       rp="Your void support flags add up to what?"
+       . ./myread
+       voidflags="$ans"
        ;;
-none)  extensions='' ;;
-*)     ;;
 esac
-: Now see which are supported on this system.
-dflt=""
-for xxx in $extensions ; do
-    case "$xxx" in
-    *ODBM*) case "$i_dbm" in 
-           define) dflt="$dflt $xxx" ;;
-           *) ;;
-           esac
-           ;;
-    *NDBM*) case "$i_ndbm" in 
-           define) dflt="$dflt $xxx" ;;
-           *) ;;
-           esac
-           ;;
-    *GDBM*) case "$i_gdbm" in 
-           define) dflt="$dflt $xxx" ;;
-           *) ;;
-           esac
-           ;;
-    *SDBM*) case "$i_sdbm" in 
-           define) dflt="$dflt $xxx" ;;
-           *) ;;
-           esac
-           ;;
-    *)      dflt="$dflt $xxx"
-           ;;
-    esac
-done
+$rm -f try.* .out
 
-rp="What extensions do you wish to include?"
+: see what type file positions are declared as in the library
+set fpos_t fpostype long stdio.h sys/types.h
+eval $typedef
+echo " "
+dflt="$fpostype"
+rp="What is the type for file position used by fsetpos()?"
 . ./myread
-extensions="$ans"
+fpostype="$ans"
+
+: 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
+set gid_t gidtype xxx stdio.h sys/types.h
+eval $typedef
 case "$gidtype" in
-'')
-       if $contains 'gid_t;' `./findhdr sys/types.h` >/dev/null 2>&1 ; then
-               dflt='gid_t';
-       else
-               xxx=`./findhdr sys/user.h`
-               set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
-               case $1 in
-               unsigned) dflt="$1 $2" ;;
-               *) dflt="$1" ;;
-               esac
-       fi
+xxx)
+       xxx=`./findhdr sys/user.h`
+       set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
+       case $1 in
+       unsigned) dflt="$1 $2" ;;
+       *) dflt="$1" ;;
+       esac
        ;;
-*)  dflt="$gidtype";;
+*) dflt="$gidtype";;
 esac
 echo " "
 rp="What is the type for group ids returned by getgid()?"
 . ./myread
-val="$ans"
-set gidtype
-eval $setvar
+gidtype="$ans"
+
 : see if getgroups exists
 set getgroups d_getgrps
 eval $inlibc
 
+: Find type of 2nd arg to getgroups
+echo " "
 case "$d_getgrps" in
 'define')
-    case "$groupstype" in
+       case "$groupstype" in
        '') dflt="$gidtype" ;;
        *)  dflt="$groupstype" ;;
-    esac
-    echo " "
-    $cat <<EOM
+       esac
+       $cat <<EOM
 What is the type of the second argument to getgroups()?  Usually this
 is the same as group ids, $gidtype, but not always.
-EOM
-    rp="What type is the second arguement to getgroups()?"
-    . ./myread
-    val="$ans"
-    ;;
-*)  val="$gidtype";;
-esac
-set groupstype
-eval $setvar
-: determine where private executables go
-case "$privlib" in
-'')
-       dflt=/usr/lib/$package
-       $test -d /usr/local/lib && dflt=/usr/local/lib/$package
-       $test -d /local/lib && dflt=/local/lib/$package
-       ;;
-*)  dflt="$privlib"
-       ;;
-esac
-$cat <<EOM
-
-There are some auxiliary files for $package that need to be put into a
-private library directory that is accessible by everyone.
-
-EOM
-fn=d~+
-rp='Pathname where private library files will reside?'
-. ./getfile
-privlib="$ans"
-privlibexp="$ansexp"
-if $afs; then
-       $cat <<EOM
-
-Since you are running AFS, I need to distinguish the directory in which
-private 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 "$installprivlib" in
-       '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installprivlib";;
-       esac
-       fn=de~
-       rp='Where will private files be installed?'
-       . ./getfile
-       installprivlib="$ans"
-else
-       installprivlib="$privlibexp"
-fi
-
-: determine where public libraries go
-case "$lib" in
-'') dflt=`./loc . "." /usr/local/lib /usr/lib /lib`;;
-*)  dflt="$lib";;
+       rp='What type is the second argument to getgroups()?'
+       . ./myread
+       groupstype="$ans"
+       ;;
+*)  groupstype="$gidtype";;
 esac
-echo " "
-fn=d~
-rp='Where do you want to put the public libraries?'
-. ./getfile
-lib="$ans"
-libexp="$ansexp"
 
-: determine whether symbolic links are supported
-$touch blurfl
-if $ln -s blurfl sym > /dev/null 2>&1 ; then
-    lns="$ln -s"
-else
-    lns="$ln"
-fi
-rm -f blurfl sym
 : see what type lseek is declared as in the kernel
-case "$lseektype" in
-'')
-       if $contains 'off_t;' `./findhdr sys/types.h` >/dev/null 2>&1 ; then
-               dflt='off_t';
-       else
-               dflt='long';
-       fi
-       ;;
-*)  dflt="$lseektype"
-       ;;
-esac
+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"
 
-: determine where manual pages go
-$cat <<EOM
+: see what type is used for mode_t
+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"
 
-$package 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 "$mansrc" in
-       '') mansrc="none";;
-       esac;;
-esac
-echo "If you don't want the manual sources installed, answer 'none'."
-case "$mansrc" in
+: locate the preferred pager for this system
+case "$pager" in
 '')
-       lookpath='/usr/local/man/man1 /usr/local/man/man1 /usr/man/manl'
-       lookpath="$lookpath /usr/man/local/man1 /usr/man/l_man/man1"
-       lookpath="$lookpath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
-       lookpath="$lookpath /usr/man/man.L"
-       mansrc=`./loc . $lookpath`
-       if $test -d "$mansrc"; then
-               dflt="$mansrc"
-       else
-               dflt="$sysman"
-       fi
-       ;;
-*)  dflt="$mansrc"
+       dflt=''
+       case "$pg" in
+       /*) dflt=$pg;;
+       esac
+       case "$more" in
+       /*) dflt=$more;;
+       esac
+       case "$less" in
+       /*) dflt=$less;;
+       esac
+       case "$dflt" in
+       '') dflt=/usr/ucb/more;;
+       esac
        ;;
+*) dflt="$pager";;
 esac
 echo " "
-fn=dn~
-rp='Where do the manual pages (source) go?'
+fn=f/
+rp='What pager is used on your system?'
 . ./getfile
-mansrc="$ans"
-mansrcexp="$ansexp"
-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 "$installmansrc" in
-       '') dflt=`echo $mansrcexp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installmansrc";;
-       esac
-       fn=de~
-       rp='Where will man pages be installed?'
-       . ./getfile
-       installmansrc="$ans"
-else
-       installmansrc="$mansrcexp"
-fi
-
-
-case "$mansrc" in
-'') manext='0';;
-*l) manext=l;;
-*n) manext=n;;
-*o) manext=l;;
-*p) manext=n;;
-*C) manext=C;;
-*L) manext=L;;
-*L1) manext=L1;;
-*) manext=1;;
-esac
-
-: check for alignment requirements
-echo " "
-case "$memalignbytes" in
-'') echo "Checking alignment constraints..." >&4
-       $cat >try.c <<'EOCP'
-struct foobar {
-       char foo;
-       double bar;
-} try;
-main()
-{
-       printf("%d\n", (char *)&try.bar - (char *)&try.foo);
-}
-EOCP
-       if $cc $ccflags try.c -o try >/dev/null 2>&1; then
-               dflt=`./try`
-       else
-               dflt='8'
-               echo"(I can't seem to compile the test program...)"
-       fi
-       ;;
-*) dflt="$memalignbytes"
-       ;;
-esac
-rp="Doubles must be aligned on a how-many-byte boundary?"
-. ./myread
-memalignbytes="$ans"
-$rm -f try.c try
+pager="$ans"
 
 : Cruising for prototypes
 echo " "
@@ -4916,7 +7637,7 @@ $cat >prototype.c <<'EOCP'
 main(int argc, char *argv[]) {
        exit(0);}
 EOCP
-if $cc -c prototype.c >prototype.out 2>&1 ; then
+if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
        echo "Your C compiler appears to support function prototypes."
        val="$define"
 else
@@ -4927,34 +7648,6 @@ set prototype
 eval $setvar
 $rm -f prototype*
 
-: check for length of pointer
-echo " "
-case "$ptrsize" in
-'')
-       echo "Checking to see how big your pointers are..." >&4
-       $cat >try.c <<'EOCP'
-#include <stdio.h>
-main()
-{
-       printf("%d\n", sizeof(char *));
-}
-EOCP
-       if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
-               dflt=`./try`
-       else
-               dflt='4'
-               echo "(I can't seem to compile the test program.  Guessing...)"
-       fi
-       ;;
-*)
-       dflt="$ptrsize"
-       ;;
-esac
-rp="What is the size of a pointer (in bytes)?"
-. ./myread
-ptrsize="$ans"
-$rm -f try.c try
-
 : check for size of random number generator
 echo " "
 case "$randbits" in
@@ -4993,327 +7686,546 @@ rp='How many bits does your rand() function produce?'
 randbits="$ans"
 $rm -f try.c try
 
-: see if ar generates random libraries by itself
-echo " "
-echo "Checking how to generate random libraries on your machine..." >&4
-$cat >a.c <<EOP
-f() { exit(0); }
-EOP
-cc -c a.c >/dev/null 2>&1
-ar rc ran.a a.o >/dev/null 2>&1
-$cat >b.c <<EOP
-main() { f(); }
-EOP
-cp ran.a lib.a
-if ar ts ran.a >/dev/null 2>&1; then
-       if $cc -o b b.c lib.a >/dev/null 2>&1; then
-               echo "ar appears to generate random libraries itself."
-               orderlib=false
-               ranlib=":"
-       else
-               echo "a table of contents needs to be added with 'ar ts'."
-               orderlib=false
-               ranlib="ar ts"
-       fi
-else
-       if $test -f /usr/bin/ranlib; then
-               ranlib=/usr/bin/ranlib
-       elif $test -f /bin/ranlib; then
-               ranlib=/bin/ranlib
-       fi
-
-       if $test -n "$ranlib"; then
-               echo "your system has $ranlib; we'll use that."
-               orderlib=false
-       else
-               echo "your system doesn't seem to support random libraries"
-               echo "so we'll use lorder and tsort to order the libraries."
-               orderlib=true
-               ranlib=":"
-       fi
-fi
-$rm -f a.* b.c b.o b ran.a lib.a
-
-: determine where public executables go
-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
-       ;;
-*)  dflt="$scriptdir"
-       ;;
-esac
+: see if ar generates random libraries by itself
+echo " "
+echo "Checking how to generate random libraries on your machine..." >&4
+echo 'int bar1() { return bar2(); }' > bar1.c
+echo 'int bar2() { return 2; }' > bar2.c
+$cat > foo.c <<'EOP'
+main() { printf("%d\n", bar1()); exit(0); }
+EOP
+$cc $ccflags -c bar1.c >/dev/null 2>&1
+$cc $ccflags -c bar2.c >/dev/null 2>&1
+$cc $ccflags -c foo.c >/dev/null 2>&1
+ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
+if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
+       ./foobar >/dev/null 2>&1; then
+       echo "ar appears to generate random libraries itself."
+       orderlib=false
+       ranlib=":"
+elif ar ts bar.a >/dev/null 2>&1 &&
+       $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
+       ./foobar >/dev/null 2>&1; then
+               echo "a table of contents needs to be added with 'ar ts'."
+               orderlib=false
+               ranlib="ar ts"
+else
+       case "$ranlib" in
+       :) ranlib='';;
+       '')
+               ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
+               $test -f $ranlib || ranlib=''
+               ;;
+       esac
+       if $test -n "$ranlib"; then
+               echo "your system has '$ranlib'; we'll use that."
+               orderlib=false
+       else
+               echo "your system doesn't seem to support random libraries"
+               echo "so we'll use lorder and tsort to order the libraries."
+               orderlib=true
+               ranlib=":"
+       fi
+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 " "
+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"
+               if $cc $ccflags \
+               $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
+               try.c -o try >/dev/null 2>&1 ; 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
+
+: check for fd_set items
 $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
-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).
 
+Checking to see how well your C compiler handles fd_set and friends ...
 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
+$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>
+#else
+#ifdef I_SYS_SELECT
+#include <sys/select.h>
+#endif
+#endif
+main() {
+       fd_set fds;
 
-: generate list of signal names
-echo " "
-case "$sig_name" in
-'')
-       echo "Generating a list of signal names..." >&4
-       xxx=`./findhdr signal.h`" "`./findhdr sys/signal.h`
-       set X `cat $xxx 2>&1 | $awk '
-$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $3 ~ /^[1-9][0-9]*$/ {
-       sig[$3] = substr($2,4,20)
-       if (max < $3 && $3 < 60) {
-               max = $3
-       }
-}
+#ifdef TRYBITS
+       if(fds.fds_bits);
+#endif
 
-END {
-       for (i = 1; i <= max; i++) {
-               if (sig[i] == "")
-                       printf "%d", i
-               else
-                       printf "%s", sig[i]
-               if (i < max)
-                       printf " "
-       }
-       printf "\n"
+#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
+       exit(0);
+#else
+       exit(1);
+#endif
 }
-'`
-       shift
-       case $# in
-       0)
-               echo 'kill -l' >/tmp/foo$$
-               set X `csh -f </tmp/foo$$`
-               $rm -f /tmp/foo$$
-               shift
-               case $# in
-               0)set HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM
-               ;;
-               esac
-               ;;
-       esac
-       sig_name="ZERO $*"
-       ;;
-esac
-echo "The following signals are available:"
-echo $sig_name | 
-    $awk 'BEGIN { linelen = 0 }
-        { for (i = 1; i < NF; i++)
-          {
-             name = "SIG" $i " "
-             linelen = linelen + length(name)
-             if (linelen > 70)
-               {
-                 printf "\n"
-                 linelen = length(name)
-               }
-             printf "%s", name } }'
-: see what type of char stdio uses.
-echo " "
-if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
-       echo "Your stdio uses unsigned chars." >&4
-       stdchar="unsigned char"
+EOCP
+if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; 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
-       echo "Your stdio uses signed chars." >&4
-       stdchar="char"
-fi
-
-: see if time exists
-echo " "
-if set time val -f d_time; eval $csym; $val; then
-       echo 'time() found.' >&4
-       val="$define"
-       case "$timetype" in
-       '')
-               if $contains 'time_t;' `./findhdr sys/types.h` >/dev/null 2>&1 ; then
-                       dflt='time_t';
+       $cat <<'EOM'
+Hmm, your compiler has some difficulty with fd_set.  Checking further...
+EOM
+       if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; 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
-                       dflt='long';
+                       $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.  This will only really
+: work if the system supports prototypes and provides one for
+: select.
+case "$d_select" in
+$define)
+       : Make initial guess
+       case "$selecttype" in
+       ''|' ')
+               case "$d_fd_set" in
+               $define) xxx='fd_set *' ;;
+               *) xxx='int *' ;;
+               esac
                ;;
-       *)  dflt="$timetype"
+       *)      xxx="$selecttype" 
                ;;
        esac
-       echo " "
-       rp="What type is returned by time() on this sytem?"
-       . ./myread
-       timetype="$ans"
-else
-       echo 'time() not found, hope that will do.' >&4
-       val="$undef"
-       timetype='int';
-fi
-set d_time
-eval $setvar
-
-: see what type uids are declared as in the kernel
-case "$uidtype" in
-'')
-       if $contains 'uid_t;' `./findhdr sys/types.h` >/dev/null 2>&1 ; then
-               dflt='uid_t';
-       else
-               xxx=`./findhdr sys/user.h`
-               set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
-               case $1 in
-               unsigned) dflt="$1 $2" ;;
-               *) dflt="$1" ;;
-               esac
-       fi
-       ;;
-*)  dflt="$uidtype";;
-esac
-echo " "
-rp="What type are user ids on this system declared as?"
-. ./myread
-uidtype="$ans"
-
-: check for void type
-echo " "
-$cat >&4 <<EOM
-Checking to see how well your C compiler groks the void type...
+       : backup guess
+       case "$xxx" in
+       'fd_set *') yyy='int *' ;;
+       'int *') yyy='fd_set *' ;;
+       esac
 
-  Support flag bits are:
-    1: basic void declarations.
-    2: arrays of pointers to functions returning void.
-    4: operations between pointers to and addresses of void functions.
-    8: generic void pointers.
+       $cat <<EOM
 
+Checking to see what type of arguments are expected by select().
 EOM
-case "$voidflags" in
-'')
-       $cat >try.c <<'EOCP'
-#if TRY & 1
-void main() {
-#else
-main() {
-#endif
-       extern void moo();      /* function returning void */
-       void (*goo)();          /* ptr to func returning void */
-#if TRY & 8
-       void *hue;              /* generic ptr */
+       $cat >try.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
-#if TRY & 2
-       void (*foo[10])();
+#ifdef I_SYS_TIME
+#include <sys/time.h>
+#else
+#ifdef I_SYS_SELECT
+#include <sys/select.h>
 #endif
-
-#if TRY & 4
-       if(goo == moo) {
-               exit(0);
-       }
 #endif
+main()
+{
+       int width;
+       Select_fd_set_t readfds;
+       Select_fd_set_t writefds;
+       Select_fd_set_t exceptfds;
+       struct timeval timeout;
+       select(width, readfds, writefds, exceptfds, &timeout);
        exit(0);
 }
 EOCP
-       if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
-               voidflags=$defvoidused
-       echo "It appears to support void to the level $package wants ($defvoidused)."
-               if $contains warning .out >/dev/null 2>&1; then
-                       echo "However, you might get some warnings that look like this:"
-                       $cat .out
-               fi
+       if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
+               selecttype="$xxx"
+               echo "Your system uses $xxx for the arguments to select." >&4
+       elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
+               selecttype="$yyy"
+               echo "Your system uses $yyy for the arguments to select." >&4
        else
-echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
-               if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then
-                       echo "It supports 1..."
-                       if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then
-                               echo "It also supports 2..."
-                               if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then
-                                       voidflags=7
-                                       echo "And it supports 4 but not 8 definitely."
-                               else
-                                       echo "It doesn't support 4..."
-                                       if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then
-                                               voidflags=11
-                                               echo "But it supports 8."
-                                       else
-                                               voidflags=3
-                                               echo "Neither does it support 8."
-                                       fi
-                               fi
-                       else
-                               echo "It does not support 2..."
-                               if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then
-                                       voidflags=13
-                                       echo "But it supports 4 and 8."
-                               else
-                                       if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then
-                                               voidflags=5
-                                               echo "And it supports 4 but has not heard about 8."
-                                       else
-                                               echo "However it supports 8 but not 4."
-                                       fi
-                               fi
-                       fi
-               else
-                       echo "There is no support at all for void."
-                       voidflags=0
-               fi
+               rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
+               dflt="$xxx"
+               . ./myread
+               selecttype="$ans"
        fi
+       $rm -f try.[co]
+       ;;
+*)     selecttype='int *'
+       ;;
 esac
-dflt="$voidflags";
-rp="Your void support flags add up to what?"
-. ./myread
-voidflags="$ans"
-$rm -f try.* .out
 
-: determine compiler compiler
-case "$yacc" in
+: 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.
+xxx=`echo '#include <signal.h>' |
+       $cppstdin $cppminus $cppflags 2>/dev/null |
+       $grep '^[       ]*#.*include' | 
+       $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
+: Check this list of files to be sure we have parsed the cpp output ok.
+: This will also avoid potentially non-existent files, such 
+: as ../foo/bar.h
+xxxfiles=''
+for xx in $xxx /dev/null ; do
+       $test -f "$xx" && xxxfiles="$xxxfiles $xx"
+done
+: If we have found no files, at least try signal.h
+case "$xxxfiles" in
+'')    xxxfiles=`./findhdr signal.h` ;;
+esac
+xxx=`awk '
+$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
+       print substr($2, 4, 20)
+}
+$1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
+       print substr($3, 4, 20)
+}' $xxxfiles`
+: Append some common names just in case the awk scan failed.
+xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
+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'
+#include <sys/types.h>
+#include <signal.h>
+int main() {
+#ifdef NSIG
+printf("NSIG %d\n", NSIG);
+#else
+#ifdef _NSIG
+printf("NSIG %d\n", _NSIG);
+#endif
+#endif
+EOP
+echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
+{
+       printf "#ifdef SIG"; printf $1; printf "\n"
+       printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
+       printf $1; printf ");\n"
+       printf "#endif\n"
+}
+END {
+       printf "}\n";
+}
+' >>signal.c
+$cat >signal.awk <<'EOP'
+BEGIN { ndups = 0 }
+$1 ~ /^NSIG$/ { nsig = $2 }
+($1 !~ /^NSIG$/) && (NF == 2) {
+    if ($2 > maxsig) { maxsig = $2 }
+    if (sig_name[$2]) {
+       dup_name[ndups] = $1
+       dup_num[ndups] = $2
+       ndups++ 
+    }
+    else {
+       sig_name[$2] = $1
+       sig_num[$2] = $2
+    }
+
+}
+END { 
+    if (nsig == 0) { nsig = maxsig + 1 }
+       for (n = 1; n < nsig; n++) {
+               if (sig_name[n]) {
+                       printf("%s %d\n", sig_name[n], sig_num[n])
+               }
+               else {
+                       printf("NUM%d %d\n", n, n) 
+               }
+       }
+    for (n = 0; n < ndups; n++) {
+               printf("%s %d\n", dup_name[n], dup_num[n])
+    }
+}
+EOP
+$cat >signal_cmd <<EOS
+$startsh
+$test -s signal.lst && exit 0
+if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
+       ./signal | $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 'kill -l' >signal
+       set X \`csh -f <signal\`
+       $rm -f signal
+       shift
+       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
+fi
+$rm -f signal.c signal signal.o
+EOS
+chmod a+x signal_cmd
+$eunicefix signal_cmd
+
+: generate list of signal names
+echo " "
+case "$sig_name" in
+'')    sig_num='' ;;
+esac
+case "$sig_num" in
+'')    sig_name='' ;;
+esac
+case "$sig_name" in
 '')
-       dflt=yacc;;
-*)
-       dflt="$yacc";;
+       echo "Generating a list of signal names and numbers..." >&4
+       ./signal_cmd
+       sig_name=`$awk '{printf "%s ", $1}' signal.lst`
+       sig_name="ZERO $sig_name"
+       sig_num=`$awk '{printf "%d ", $2}' signal.lst`
+       sig_num="0 $sig_num"
+       ;;
 esac
+echo "The following signals are available:"
+echo " "
+echo $sig_name | $awk \
+'BEGIN { linelen = 0 }
+{
+       for (i = 1; i <= NF; i++) {
+               name = "SIG" $i " "
+               linelen = linelen + length(name)
+               if (linelen > 70) {
+                       printf "\n"
+                       linelen = length(name)
+               }
+               printf "%s", name
+       }
+       printf "\n"
+}'
+$rm -f signal signal.c signal.awk signal.lst signal_cmd 
+
+: see what type is used for size_t
+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"
+
+: see what type is used for signed size_t
+set ssize_t ssizetype int stdio.h sys/types.h
+eval $typedef
+dflt="$ssizetype"
+$cat > ssize.c <<EOM
+#include <stdio.h>
+#include <sys/types.h>
+#define Size_t $sizetype
+#define SSize_t $dflt
+main()
+{
+       if (sizeof(Size_t) == sizeof(SSize_t))
+               printf("$dflt\n");
+       else if (sizeof(Size_t) == sizeof(int))
+               printf("int\n");
+       else 
+               printf("long\n");
+}
+EOM
+echo " "
+if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then
+       ssizetype=`./ssize`
+       echo "I'll be using $ssizetype for functions returning a byte count." >&4
+else
+       echo "(I can't compile the test program--please enlighten me!)"
+       $cat <<EOM
+
+I need a type that is the same size as $sizetype, but is guaranteed to
+be signed.  Common values are int and long.
+
+EOM
+       rp="What signed type is the same size as $sizetype?"
+       . ./myread
+       ssizetype="$ans"
+fi
+$rm -f ssize ssize.[co]
+
+: see what type of char stdio uses.
 echo " "
-rp="yacc"
-if $test -f "$byacc"; then
-       dflt="$byacc"
-       rp="byacc or $rp"
+if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
+       echo "Your stdio uses unsigned chars." >&4
+       stdchar="unsigned char"
+else
+       echo "Your stdio uses signed chars." >&4
+       stdchar="char"
 fi
-if $test -f "$bison"; then
-       rp="$rp or bison -y"
+
+: see if time exists
+echo " "
+if set time val -f d_time; eval $csym; $val; then
+       echo 'time() found.' >&4
+       val="$define"
+       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"
+else
+       echo 'time() not found, hope that will do.' >&4
+       val="$undef"
+       timetype='int';
 fi
-$cat <<EOM
-$package no longer requires a compiler compiler, so the following is optional.
-EOM
-rp="Which compiler compiler ($rp) shall I use?"
+set d_time
+eval $setvar
+
+: see what type uids are declared as in the kernel
+set uid_t uidtype xxx stdio.h sys/types.h
+eval $typedef
+case "$uidtype" in
+xxx)
+       xxx=`./findhdr sys/user.h`
+       set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
+       case $1 in
+       unsigned) dflt="$1 $2" ;;
+       *) dflt="$1" ;;
+       esac
+       ;;
+*) dflt="$uidtype";;
+esac
+echo " "
+rp="What is the type for user ids returned by getuid()?"
 . ./myread
-yacc="$ans"
-case "$yacc" in
-*bis*)
-       case "$yacc" in
-       *-y*) ;;
-       *)
-               yacc="$yacc -y"
-               echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
+uidtype="$ans"
+
+: see if dbm.h is available
+: see if dbmclose exists
+set dbmclose d_dbmclose
+eval $inlibc
+
+case "$d_dbmclose" in
+$define)
+       set dbm.h i_dbm
+       eval $inhdr
+       case "$i_dbm" in
+       $define)
+               val="$undef"
+               set i_rpcsvcdbm
+               eval $setvar
+               ;;
+       *)      set rpcsvc/dbm.h i_rpcsvcdbm
+               eval $inhdr
                ;;
        esac
        ;;
+*)     echo "We won't be including <dbm.h>"
+       val="$undef"
+       set i_dbm
+       eval $setvar
+       val="$undef"
+       set i_rpcsvcdbm
+       eval $setvar
+       ;;
 esac
 
 : see if this is a sys/file.h system
@@ -5321,7 +8233,7 @@ val=''
 set sys/file.h val
 eval $inhdr
 
-: do we need to #include <sys/file.h> ?
+: do we need to include sys/file.h ?
 case "$val" in
 "$define")
        echo " "
@@ -5373,94 +8285,91 @@ eval $setvar
 set grp.h i_grp
 eval $inhdr
 
+: 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
+eval $inhdr
+
 : see if memory.h is available.
-set memory.h i_memory
+val=''
+set memory.h val
 eval $inhdr
+
 : See if it conflicts with string.h
-case "$i_memory" in
-define)
-    case "$strings" in
-    '') ;;
-    *)  $cppstdin $cppflags $cppminus < $strings > mem.h
-       if $contains 'memcpy' mem.h >/dev/null 2>&1; then
-           echo "We won't be including <memory.h>"
-           i_memory="$undef"
-       fi
-       rm -f mem.h
+case "$val" in
+$define)
+       case "$strings" in
+       '') ;;
+       *)
+               $cppstdin $cppflags $cppminus < $strings > mem.h
+               if $contains 'memcpy' mem.h >/dev/null 2>&1; then
+                       echo " "
+                       echo "We won't be including <memory.h>."
+                       val="$undef"
+               fi
+               $rm -f mem.h
+               ;;
+       esac
+esac
+set i_memory
+eval $setvar
+
+: see if ndbm.h is available
+set ndbm.h t_ndbm
+eval $inhdr
+case "$t_ndbm" in
+$define)
+       : see if dbm_open exists
+       set dbm_open d_dbm_open
+       eval $inlibc
+       case "$d_dbm_open" in
+       $undef)
+               t_ndbm="$undef"
+               echo "We won't be including <ndbm.h>"
+               ;;
+       esac
        ;;
-    esac
 esac
-: see if there are directory access routines out there
-echo " "
-if $test `./findhdr ndir.h` && \
-         ( $test -r /usr/lib/libndir.a || $test -r /usr/local/lib/libndir.a ); then
-       echo "Ndir library found." >&4
-       if $test -r /usr/lib/libndir.a; then
-               ndirlib='-lndir'
-       else
-               ndirlib="/usr/local/lib/libndir.a"
-       fi
-       i_ndir="$define"
-       d_usendir="$undef"
-       ndirc=''
-       ndiro=''
-else
-       ndirlib=''
-       i_ndir="$undef"
-       if set readdir val -f; eval $csym; $val; then
-       echo "No ndir library found, but you have readdir() so we'll use that." >&4
-               d_usendir="$undef"
-               ndirc=''
-               ndiro=''
-       else
-               echo "No ndir library found--using ./ndir.c." >&4
-               d_usendir="$define"
-               ndirc='ndir.c'
-               ndiro='ndir.o'
-       fi
-fi
+val="$t_ndbm"
+set i_ndbm
+eval $setvar
 
 : see if net/errno.h is available
-set net/errno.h i_neterrno
+val=''
+set net/errno.h val
 eval $inhdr
+
 : Unfortunately, it causes problems on some systems.  Arrgh.
-case '$i_neterrno' in
-'define') echo "<net/errno.h> found."
-    cat > try.c <<'EOM'
+case "$val" in
+$define)
+       cat > try.c <<'EOM'
 #include <stdio.h>
 #include <errno.h>
 #include <net/errno.h>
 int func()
 {
-int x;
-x = ENOTSOCK;
-return x;
+       return ENOTSOCK;
 }
 EOM
-    if $cc $ccflags -c try.c >/dev/null 2>&1; then
-       i_neterrno="$define"
-    else
-       echo "But it causes problems, so we won't include it"
-       i_neterrno="$undef"
-    fi
-    $rm -f try.* try
-    ;;
+       if $cc $ccflags -c try.c >/dev/null 2>&1; then
+               echo "We'll be including <net/errno.h>." >&4
+       else
+               echo "We won't be including <net/errno.h>." >&4
+               val="$undef"
+       fi
+       $rm -f try.* try
+       ;;
 esac
-: see if stdarg is available
-set stdarg.h i_stdarg
-eval $inhdr
-
-: see if stddef is available
-set stddef.h i_stddef
-eval $inhdr
-
-: see if this is an sysdir system
-set sys/dir.h i_sysdir
-eval $inhdr
+set i_neterrno
+eval $setvar
 
 : get C preprocessor symbols handy
 echo " "
-echo $attrlist | $tr ' ' '\012' >Cppsym.know
+$echo $n "Hmm... $c"
+echo $al | $tr ' ' '\012' >Cppsym.know
 $cat <<EOSS >Cppsym
 $startsh
 case "\$1" in
@@ -5506,9 +8415,63 @@ exit \$status
 EOSS
 chmod +x Cppsym
 $eunicefix Cppsym
-echo "Your C preprocessor defines the following symbols:"
-Cppsym -l $attrlist >Cppsym.true
-$cat Cppsym.true
+./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
+
+: now check the C compiler for additional symbols
+$cat >ccsym <<EOS
+$startsh
+$cat >tmp.c <<EOF
+extern int foo;
+EOF
+for i in \`$cc -v -c tmp.c 2>&1\`
+do
+       case "\$i" in
+       -D*) echo "\$i" | $sed 's/^-D//';;
+       -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
+       esac
+done
+$rm -f try.c
+EOS
+chmod +x ccsym
+$eunicefix ccsym
+./ccsym | $sort | $uniq >ccsym.raw
+$awk '/\=/ { print $0; next }
+       { print $0"=1" }' ccsym.raw >ccsym.list
+$awk '{ print $0"=1" }' Cppsym.true >ccsym.true
+$comm -13 ccsym.true ccsym.list >ccsym.own
+$comm -12 ccsym.true ccsym.list >ccsym.com
+$comm -23 ccsym.true ccsym.list >ccsym.cpp
+also=''
+symbols='symbols'
+if $test -z ccsym.raw; then
+       echo "Your C compiler doesn't seem to define any symbol!" >&4
+       echo " "
+       echo "However, your C preprocessor defines the following ones:"
+       $cat Cppsym.true
+else
+       if $test -s ccsym.com; then
+               echo "Your C compiler and pre-processor define these symbols:"
+               $sed -e 's/\(.*\)=.*/\1/' ccsym.com
+               also='also '
+               symbols='ones'
+               $test "$silent" || sleep 1
+       fi
+       if $test -s ccsym.cpp; then
+               $test "$also" && echo " "
+               echo "Your C pre-processor ${also}defines the following $symbols:"
+               $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
+               also='further '
+               $test "$silent" || sleep 1
+       fi
+       if $test -s ccsym.own; then
+               $test "$also" && echo " "
+               echo "Your C compiler ${also}defines the following cpp variables:"
+               $sed -e 's/\(.*\)=1/\1/' ccsym.own
+               $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
+               $test "$silent" || sleep 1
+       fi
+fi
+$rm -f ccsym*
 
 : see if this is a termio system
 val="$undef"
@@ -5522,7 +8485,7 @@ fi
 echo " "
 case "$val3" in
 "$define") echo "You have POSIX termios.h... good!" >&4;;
-*) if Cppsym pyr; then
+*) if ./Cppsym pyr; then
                case "`/bin/universe`" in
                ucb) if $test `./findhdr sgtty.h`; then
                                val2="$define"
@@ -5539,7 +8502,7 @@ case "$val3" in
                                echo "<termio.h> not found--you could have problems." >&4
                        fi;;
                esac
-       elif usg; then
+       elif ./usg; then
                if $test `./findhdr termio.h`; then
                        echo "<termio.h> found." >&4
                        val="$define"
@@ -5553,142 +8516,35 @@ echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
                if $test `./findhdr sgtty.h`; then
                        echo "<sgtty.h> found." >&4
                        val2="$define"
-               elif $test `./findhdr termio.h`; then
-                       echo "<termio.h> found." >&4
-                       val="$define"
-               else
-echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
-               fi
-       fi;;
-esac
-set i_termio; eval $setvar
-val=$val2; set i_sgtty; eval $setvar
-val=$val3; set i_termios; eval $setvar
-
-: see if ioctl defs are in sgtty/termio or sys/ioctl
-echo " "
-if $test `./findhdr sys/ioctl.h`; then
-       val="$define"
-       echo "<sys/ioctl.h> found." >&4
-else
-       val="$undef"
-       $test $i_termio = "$define" && xxx="termio.h"
-       $test $i_termios = "$define" && xxx="termios.h"
-       $test $i_sgtty = "$define" && xxx="sgtty.h"
-echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
-fi
-set i_sysioctl
-eval $setvar
-
-: see if this is an sysndir system
-set sys/ndir.h i_sysndir
-eval $inhdr
-
-: 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 " "
-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=''
-s_timezone=''
-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"
-               if $cc $ccflags \
-               $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
-               try.c -o try >/dev/null 2>&1 ; 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
-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";;
+               elif $test `./findhdr termio.h`; then
+                       echo "<termio.h> found." >&4
+                       val="$define"
+               else
+echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
+               fi
+       fi;;
 esac
-$rm -f try.c try
-
-: see if this is a unistd.h system
-set unistd.h i_unistd
-eval $inhdr
+set i_termio; eval $setvar
+val=$val2; set i_sgtty; eval $setvar
+val=$val3; set i_termios; eval $setvar
 
-: see if this is an utime system
-set utime.h i_utime
-eval $inhdr
+: see if stdarg is available
+echo " "
+if $test `./findhdr stdarg.h`; then
+       echo "<stdarg.h> found." >&4
+       valstd="$define"
+else
+       echo "<stdarg.h> NOT found." >&4
+       valstd="$undef"
+fi
 
-: see if this is a varargs system
+: see if varags is available
 echo " "
 if $test `./findhdr varargs.h`; then
-       val="$define"
        echo "<varargs.h> found." >&4
 else
-       val="$undef"
        echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
 fi
-set i_varargs
-eval $setvar
 
 : set up the varargs testing programs
 $cat > varargs.c <<EOP
@@ -5720,6 +8576,7 @@ va_dcl
 }
 EOP
 $cat > varargs <<EOP
+$startsh
 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
        echo "true"
 else
@@ -5732,37 +8589,285 @@ chmod +x varargs
 : now check which varargs header should be included
 echo " "
 i_varhdr=''
-case "$i_stdarg" in
+case "$valstd" in
 "$define")
        if `./varargs I_STDARG`; then
-               i_varhdr='stdarg.h'
-               i_varargs="$undef"
+               val='stdarg.h'
        elif `./varargs I_VARARGS`; then
-               i_varhdr='varargs.h'
-               i_stdarg="$undef"
+               val='varargs.h'
        fi
        ;;
 *)
        if `./varargs I_VARARGS`; then
-               i_varhdr='varargs.h'
+               val='varargs.h'
        fi
        ;;
 esac
-case "$i_varhdr" in
+case "$val" in
 '')
 echo "I could not find the definition for va_dcl... You have problems..." >&4
+       val="$undef"; set i_stdarg; eval $setvar
+       val="$undef"; set i_varargs; eval $setvar
        ;;
-*) echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
+*) 
+       set i_varhdr
+       eval $setvar
+       case "$i_varhdr" in
+       stdarg.h)
+               val="$define"; set i_stdarg; eval $setvar
+               val="$undef"; set i_varargs; eval $setvar
+               ;;
+       varargs.h)
+               val="$undef"; set i_stdarg; eval $setvar
+               val="$define"; set i_varargs; eval $setvar
+               ;;
+       esac
+       echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
 esac
 $rm -f varargs*
 
+: see if stddef is available
+set stddef.h i_stddef
+eval $inhdr
+
+: see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
+set sys/filio.h i_sysfilio
+eval $inhdr
+echo " "
+if $test `./findhdr sys/ioctl.h`; then
+       val="$define"
+       echo '<sys/ioctl.h> found.' >&4
+else
+       val="$undef"
+       if $test $i_sysfilio = "$define"; then
+           echo '<sys/ioctl.h> NOT found.' >&4
+       else
+               $test $i_sgtty = "$define" && xxx="sgtty.h"
+               $test $i_termio = "$define" && xxx="termio.h"
+               $test $i_termios = "$define" && xxx="termios.h"
+echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
+       fi
+fi
+set i_sysioctl
+eval $setvar
+
+: see if this is a sys/param system
+set sys/param.h i_sysparam
+eval $inhdr
+
+: see if sys/stat.h is available
+set sys/stat.h i_sysstat
+eval $inhdr
+
+: see if sys/types.h has to be included
+set sys/types.h i_systypes
+eval $inhdr
+
+: see if this is a sys/un.h system
+set sys/un.h i_sysun
+eval $inhdr
+
+: see if this is a unistd.h system
+set unistd.h i_unistd
+eval $inhdr
+
+: see if this is an utime system
+set utime.h i_utime
+eval $inhdr
+
 : see if this is a vfork system
 case "$d_vfork" in
-define) set vfork.h i_vfork
+"$define")
+       set vfork.h i_vfork
        eval $inhdr
        ;;
-*)      i_vfork="$undef";;
+*)
+       i_vfork="$undef"
+       ;;
+esac
+
+: see if gdbm.h is available
+set gdbm.h t_gdbm
+eval $inhdr
+case "$t_gdbm" in
+$define)
+       : see if gdbm_open exists
+       set gdbm_open d_gdbm_open
+       eval $inlibc
+       case "$d_gdbm_open" in
+       $undef)
+               t_gdbm="$undef"
+               echo "We won't be including <gdbm.h>"
+               ;;
+       esac
+       ;;
+esac
+val="$t_gdbm"
+set i_gdbm
+eval $setvar
+
+echo " "
+echo "Looking for extensions..." >&4
+cd ../ext
+: If we are using the old config.sh, known_extensions may contain
+: old or inaccurate or duplicate values.
+known_extensions=''
+: We do not use find because it might not be available.
+: We do not just use MANIFEST because the user may have dropped
+: some additional extensions into the source tree and expect them
+: to be built.
+for xxx in * ; do
+       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
+done
+set X $known_extensions
+shift
+known_extensions="$*"
+cd ../UU
+
+: Now see which are supported on this system.
+avail_ext=''
+for xxx in $known_extensions ; do
+    case "$xxx" in
+    DB_File) case "$i_db" in 
+           $define) avail_ext="$avail_ext $xxx" ;;
+           esac
+           ;;
+    GDBM_File) case "$i_gdbm" in 
+           $define) avail_ext="$avail_ext $xxx" ;;
+           esac
+           ;;
+    NDBM_File) case "$i_ndbm" in 
+           $define) avail_ext="$avail_ext $xxx" ;;
+           esac
+           ;;
+    ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in 
+           *"${define}"*) avail_ext="$avail_ext $xxx" ;;
+           esac
+           ;;
+    POSIX) case "$useposix" in 
+           true|define|y) avail_ext="$avail_ext $xxx" ;;
+           esac
+           ;;
+    SAFE) case "$usesafe" in 
+           true|define|y) avail_ext="$avail_ext $xxx" ;;
+           esac
+           ;;
+    Socket) case "$d_socket" in 
+           $define) avail_ext="$avail_ext $xxx" ;;
+           esac
+           ;;
+    *)      avail_ext="$avail_ext $xxx"
+           ;;
+    esac
+done
+
+set X $avail_ext
+shift
+avail_ext="$*"
+
+case $usedl in
+$define)
+       $cat <<EOM
+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.
+
+EOM
+       case "$dynamic_ext" in
+       '') dflt="$avail_ext" ;;
+       *)      dflt="$dynamic_ext" ;;
+       esac
+       case "$dflt" in
+       '')     dflt=none;;
+       esac
+       rp="What extensions do you wish to load dynamically?"
+       . ./myread
+       case "$ans" in
+       none) dynamic_ext=' ' ;;
+       *) dynamic_ext="$ans" ;;
+       esac
+
+       case "$static_ext" in
+       '')
+               : Exclude those already listed in dynamic linking
+               dflt=''
+               for xxx in $avail_ext; do
+                       case " $dynamic_ext " in
+                       *" $xxx "*) ;;
+                       *) dflt="$dflt $xxx" ;;
+                       esac
+               done
+               set X $dflt
+               shift
+               dflt="$*"
+               ;;
+       *)  dflt="$static_ext" 
+               ;;
+       esac
+
+       case "$dflt" in
+       '')     dflt=none;;
+       esac
+       rp="What extensions do you wish to load statically?"
+       . ./myread
+       case "$ans" in
+       none) static_ext=' ' ;;
+       *) static_ext="$ans" ;;
+       esac
+       ;;
+*)
+       $cat <<EOM
+A number of extensions are supplied with $package.  Answer "none" 
+to include no extensions. 
+
+EOM
+       case "$static_ext" in
+       '') dflt="$avail_ext" ;;
+       *)      dflt="$static_ext" ;;
+       esac
+
+       case "$dflt" in
+       '')     dflt=none;;
+       esac
+       rp="What extensions do you wish to include?"
+       . ./myread
+       case "$ans" in
+       none) static_ext=' ' ;;
+       *) static_ext="$ans" ;;
+       esac
+       ;;
 esac
+
+set X $dynamic_ext $static_ext
+shift
+extensions="$*"
+
+: Remove build directory name from cppstdin so it can be used from
+: either the present location or the final installed location.
+echo " "
+: Get out of the UU directory to get correct path name.
+cd ..
+case "$cppstdin" in
+`pwd`/cppstdin)
+       echo "Stripping down cppstdin path name"
+       cppstdin=cppstdin
+       ;;
+esac
+cd UU
+
 : end of configuration questions
 echo " "
 echo "End of configuration questions."
@@ -5774,192 +8879,200 @@ if test -d ../UU; then
 fi
 
 : configuration may be patched via a 'config.over' file
-if $test -f config.over; then
-       echo " "
-       dflt=y
-       rp='I see a config.over file.  Do you wish to load it?'
-       . UU/myread
-       case "$ans" in
-       n*) echo "OK, I'll ignore it.";;
-       *)      . ./config.over
-               echo "Configuration override changes have been loaded."
-               ;;
-       esac
-fi
-
-: create config.sh file
-echo " "
-echo "Creating config.sh..." >&4
-$spitshell <<EOT >config.sh
-$startsh
-#
-# This file was produced by running the Configure script. It holds all the
-# definitions figured out by Configure. Should you modify one of these values,
-# do not forget to propagate your changes by running "Configure -der". You may
-# instead choose to run each of the .SH files by yourself, or "Configure -S".
-#
-
-# Configuration time: $cf_time
-# Configured by: $cf_by
-# Target system: $myuname
-
-extensions='$extensions'
-d_eunice='$d_eunice'
-d_xenix='$d_xenix'
-eunicefix='$eunicefix'
-Mcc='$Mcc'
-awk='$awk'
-bash='$bash'
-bison='$bison'
-byacc='$byacc'
-cat='$cat'
-chgrp='$chgrp'
-chmod='$chmod'
-chown='$chown'
-compress='$compress'
-cp='$cp'
-cpio='$cpio'
-cpp='$cpp'
-csh='$csh'
-date='$date'
-echo='$echo'
-egrep='$egrep'
-emacs='$emacs'
-expr='$expr'
-find='$find'
-flex='$flex'
-gcc='$gcc'
-grep='$grep'
-inews='$inews'
-ksh='$ksh'
-less='$less'
-line='$line'
-lint='$lint'
-ln='$ln'
-lp='$lp'
-lpr='$lpr'
-ls='$ls'
-mail='$mail'
-mailx='$mailx'
-make='$make'
-mkdir='$mkdir'
-more='$more'
-mv='$mv'
-nroff='$nroff'
-perl='$perl'
-pg='$pg'
-pmake='$pmake'
-pr='$pr'
-rm='$rm'
-rmail='$rmail'
-sed='$sed'
-sendmail='$sendmail'
-sh='$sh'
-shar='$shar'
-sleep='$sleep'
-smail='$smail'
-sort='$sort'
-submit='$submit'
-tail='$tail'
-tar='$tar'
-tbl='$tbl'
-test='$test'
-touch='$touch'
-tr='$tr'
-troff='$troff'
-uname='$uname'
-uniq='$uniq'
-uuname='$uuname'
-vi='$vi'
-zcat='$zcat'
-hint='$hint'
-myuname='$myuname'
-osname='$osname'
-osvers='$osvers'
+if $test -f config.over; then
+       echo " "
+       dflt=y
+       rp='I see a config.over file.  Do you wish to load it?'
+       . UU/myread
+       case "$ans" in
+       n*) echo "OK, I'll ignore it.";;
+       *)      . ./config.over
+               echo "Configuration override changes have been loaded."
+               ;;
+       esac
+fi
+
+: in case they want portability, strip down executable paths
+case "$d_portable" in
+"$define")
+       echo " "
+       echo "Stripping down executable paths..." >&4
+       for file in $loclist $trylist; do
+               eval $file="\$file"
+       done
+       ;;
+esac
+
+: create config.sh file
+echo " "
+echo "Creating config.sh..." >&4
+$spitshell <<EOT >config.sh
+$startsh
+#
+# This file was produced by running the Configure script. It holds all the
+# definitions figured out by Configure. Should you modify one of these values,
+# do not forget to propagate your changes by running "Configure -der". You may
+# instead choose to run each of the .SH files by yourself, or "Configure -S".
+#
+
+# Configuration time: $cf_time
+# Configured by: $cf_by
+# Target system: $myuname
+
 Author='$Author'
 Date='$Date'
 Header='$Header'
 Id='$Id'
 Locker='$Locker'
 Log='$Log'
+Mcc='$Mcc'
 RCSfile='$RCSfile'
 Revision='$Revision'
 Source='$Source'
 State='$State'
 afs='$afs'
-memalignbytes='$memalignbytes'
+alignbytes='$alignbytes'
+aphostname='$aphostname'
+ar='$ar'
+archlib='$archlib'
+archlibexp='$archlibexp'
+archname='$archname'
+archobjs='$archobjs'
+awk='$awk'
+baserev='$baserev'
+bash='$bash'
 bin='$bin'
 binexp='$binexp'
-installbin='$installbin'
+bison='$bison'
+byacc='$byacc'
 byteorder='$byteorder'
+c='$c'
+castflags='$castflags'
+cat='$cat'
 cc='$cc'
-gccversion='$gccversion'
+cccdlflags='$cccdlflags'
+ccdlflags='$ccdlflags'
 ccflags='$ccflags'
-cppflags='$cppflags'
-ldflags='$ldflags'
-lkflags='$lkflags'
-optimize='$optimize'
 cf_by='$cf_by'
+cf_email='$cf_email'
 cf_time='$cf_time'
+chgrp='$chgrp'
+chmod='$chmod'
+chown='$chown'
+clocktype='$clocktype'
+comm='$comm'
+compress='$compress'
 contains='$contains'
+cp='$cp'
+cpio='$cpio'
+cpp='$cpp'
+cpp_stuff='$cpp_stuff'
+cppflags='$cppflags'
 cpplast='$cpplast'
 cppminus='$cppminus'
 cpprun='$cpprun'
 cppstdin='$cppstdin'
+cryptlib='$cryptlib'
+csh='$csh'
+d_Gconvert='$d_Gconvert'
 d_access='$d_access'
+d_alarm='$d_alarm'
+d_archlib='$d_archlib'
+d_attribut='$d_attribut'
 d_bcmp='$d_bcmp'
 d_bcopy='$d_bcopy'
+d_bsd='$d_bsd'
+d_bsdpgrp='$d_bsdpgrp'
 d_bzero='$d_bzero'
 d_casti32='$d_casti32'
-castflags='$castflags'
 d_castneg='$d_castneg'
-d_charsprf='$d_charsprf'
+d_charvspr='$d_charvspr'
+d_chown='$d_chown'
+d_chroot='$d_chroot'
 d_chsize='$d_chsize'
+d_closedir='$d_closedir'
 d_const='$d_const'
-cryptlib='$cryptlib'
 d_crypt='$d_crypt'
 d_csh='$d_csh'
+d_cuserid='$d_cuserid'
+d_dbl_dig='$d_dbl_dig'
+d_difftime='$d_difftime'
+d_dirnamlen='$d_dirnamlen'
+d_dlerror='$d_dlerror'
+d_dlopen='$d_dlopen'
+d_dlsymun='$d_dlsymun'
 d_dosuid='$d_dosuid'
 d_dup2='$d_dup2'
+d_eofnblk='$d_eofnblk'
+d_eunice='$d_eunice'
 d_fchmod='$d_fchmod'
 d_fchown='$d_fchown'
 d_fcntl='$d_fcntl'
+d_fd_macros='$d_fd_macros'
+d_fd_set='$d_fd_set'
+d_fds_bits='$d_fds_bits'
+d_fgetpos='$d_fgetpos'
 d_flexfnam='$d_flexfnam'
 d_flock='$d_flock'
+d_fork='$d_fork'
+d_fpathconf='$d_fpathconf'
+d_fsetpos='$d_fsetpos'
 d_getgrps='$d_getgrps'
 d_gethent='$d_gethent'
-aphostname='$aphostname'
 d_gethname='$d_gethname'
-d_phostname='$d_phostname'
-d_uname='$d_uname'
+d_getlogin='$d_getlogin'
 d_getpgrp2='$d_getpgrp2'
 d_getpgrp='$d_getpgrp'
+d_getppid='$d_getppid'
 d_getprior='$d_getprior'
 d_htonl='$d_htonl'
+d_index='$d_index'
 d_isascii='$d_isascii'
 d_killpg='$d_killpg'
 d_link='$d_link'
+d_locconv='$d_locconv'
+d_lockf='$d_lockf'
 d_lstat='$d_lstat'
+d_mblen='$d_mblen'
+d_mbstowcs='$d_mbstowcs'
+d_mbtowc='$d_mbtowc'
 d_memcmp='$d_memcmp'
 d_memcpy='$d_memcpy'
 d_memmove='$d_memmove'
 d_memset='$d_memset'
 d_mkdir='$d_mkdir'
+d_mkfifo='$d_mkfifo'
+d_mktime='$d_mktime'
 d_msg='$d_msg'
 d_msgctl='$d_msgctl'
 d_msgget='$d_msgget'
 d_msgrcv='$d_msgrcv'
 d_msgsnd='$d_msgsnd'
+d_mymalloc='$d_mymalloc'
+d_nice='$d_nice'
+d_oldarchlib='$d_oldarchlib'
+d_oldsock='$d_oldsock'
 d_open3='$d_open3'
+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_pwage='$d_pwage'
+d_pwchange='$d_pwchange'
+d_pwclass='$d_pwclass'
+d_pwcomment='$d_pwcomment'
+d_pwexpire='$d_pwexpire'
+d_pwquota='$d_pwquota'
 d_readdir='$d_readdir'
-d_rewinddir='$d_rewinddir'
-d_seekdir='$d_seekdir'
-d_telldir='$d_telldir'
+d_readlink='$d_readlink'
 d_rename='$d_rename'
+d_rewinddir='$d_rewinddir'
 d_rmdir='$d_rmdir'
 d_safebcpy='$d_safebcpy'
 d_safemcpy='$d_safemcpy'
+d_seekdir='$d_seekdir'
 d_select='$d_select'
 d_sem='$d_sem'
 d_semctl='$d_semctl'
@@ -5967,10 +9080,10 @@ d_semget='$d_semget'
 d_semop='$d_semop'
 d_setegid='$d_setegid'
 d_seteuid='$d_seteuid'
+d_setlinebuf='$d_setlinebuf'
 d_setlocale='$d_setlocale'
 d_setpgid='$d_setpgid'
 d_setpgrp2='$d_setpgrp2'
-d_bsdpgrp='$d_bsdpgrp'
 d_setpgrp='$d_setpgrp'
 d_setprior='$d_setprior'
 d_setregid='$d_setregid'
@@ -5982,166 +9095,299 @@ d_setruid='$d_setruid'
 d_setsid='$d_setsid'
 d_shm='$d_shm'
 d_shmat='$d_shmat'
-d_voidshmat='$d_voidshmat'
+d_shmatprototype='$d_shmatprototype'
 d_shmctl='$d_shmctl'
 d_shmdt='$d_shmdt'
 d_shmget='$d_shmget'
-d_oldsock='$d_oldsock'
+d_shrplib='$d_shrplib'
+d_sigaction='$d_sigaction'
+d_sigintrp='$d_sigintrp'
+d_sigsetjmp='$d_sigsetjmp'
+d_sigvec='$d_sigvec'
+d_sigvectr='$d_sigvectr'
 d_socket='$d_socket'
 d_sockpair='$d_sockpair'
-sockethdr='$sockethdr'
-socketlib='$socketlib'
 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_index='$d_index'
 d_strchr='$d_strchr'
+d_strcoll='$d_strcoll'
 d_strctcpy='$d_strctcpy'
 d_strerrm='$d_strerrm'
 d_strerror='$d_strerror'
-d_sysernlst='$d_sysernlst'
-d_syserrlst='$d_syserrlst'
+d_strxfrm='$d_strxfrm'
+d_suidsafe='$d_suidsafe'
 d_symlink='$d_symlink'
 d_syscall='$d_syscall'
+d_sysconf='$d_sysconf'
+d_sysernlst='$d_sysernlst'
+d_syserrlst='$d_syserrlst'
 d_system='$d_system'
+d_tcgetpgrp='$d_tcgetpgrp'
+d_tcsetpgrp='$d_tcsetpgrp'
+d_telldir='$d_telldir'
 d_time='$d_time'
-timetype='$timetype'
-clocktype='$clocktype'
 d_times='$d_times'
 d_truncate='$d_truncate'
-d_usendir='$d_usendir'
-i_ndir='$i_ndir'
-ndirc='$ndirc'
-ndirlib='$ndirlib'
-ndiro='$ndiro'
+d_tzname='$d_tzname'
+d_umask='$d_umask'
+d_uname='$d_uname'
 d_vfork='$d_vfork'
+d_void_closedir='$d_void_closedir'
 d_voidsig='$d_voidsig'
-signal_t='$signal_t'
+d_voidtty='$d_voidtty'
 d_volatile='$d_volatile'
-d_charvspr='$d_charvspr'
 d_vprintf='$d_vprintf'
 d_wait4='$d_wait4'
 d_waitpid='$d_waitpid'
-cccdlflags='$cccdlflags'
-ccdlflags='$ccdlflags'
-dldir='$dldir'
-dlobj='$dlobj'
+d_wcstombs='$d_wcstombs'
+d_wctomb='$d_wctomb'
+d_xenix='$d_xenix'
+date='$date'
+db_hashtype='$db_hashtype'
+db_prefixtype='$db_prefixtype'
+defvoidused='$defvoidused'
+direntrytype='$direntrytype'
+dlext='$dlext'
 dlsrc='$dlsrc'
-lddlflags='$lddlflags'
-shlibsuffix='$shlibsuffix'
-usedl='$usedl'
+dynamic_ext='$dynamic_ext'
+eagain='$eagain'
+echo='$echo'
+egrep='$egrep'
+emacs='$emacs'
+eunicefix='$eunicefix'
+exe_ext='$exe_ext'
+expr='$expr'
+extensions='$extensions'
+find='$find'
+firstmakefile='$firstmakefile'
+flex='$flex'
+fpostype='$fpostype'
+freetype='$freetype'
+full_csh='$full_csh'
+full_sed='$full_sed'
+gcc='$gcc'
+gccversion='$gccversion'
 gidtype='$gidtype'
+glibpth='$glibpth'
+grep='$grep'
+groupcat='$groupcat'
 groupstype='$groupstype'
 h_fcntl='$h_fcntl'
 h_sysfile='$h_sysfile'
+hint='$hint'
+hostcat='$hostcat'
+huge='$huge'
+i_bsdioctl='$i_bsdioctl'
+i_db='$i_db'
 i_dbm='$i_dbm'
-d_dirnamlen='$d_dirnamlen'
 i_dirent='$i_dirent'
+i_dld='$i_dld'
 i_dlfcn='$i_dlfcn'
 i_fcntl='$i_fcntl'
+i_float='$i_float'
 i_gdbm='$i_gdbm'
 i_grp='$i_grp'
+i_limits='$i_limits'
+i_locale='$i_locale'
+i_malloc='$i_malloc'
+i_math='$i_math'
 i_memory='$i_memory'
 i_ndbm='$i_ndbm'
 i_neterrno='$i_neterrno'
 i_niin='$i_niin'
-i_sysin='$i_sysin'
-d_pwage='$d_pwage'
-d_pwchange='$d_pwchange'
-d_pwclass='$d_pwclass'
-d_pwcomment='$d_pwcomment'
-d_pwexpire='$d_pwexpire'
-d_pwquota='$d_pwquota'
 i_pwd='$i_pwd'
-i_sdbm='$i_sdbm'
+i_rpcsvcdbm='$i_rpcsvcdbm'
+i_sgtty='$i_sgtty'
 i_stdarg='$i_stdarg'
 i_stddef='$i_stddef'
+i_stdlib='$i_stdlib'
 i_string='$i_string'
-strings='$strings'
 i_sysdir='$i_sysdir'
 i_sysfile='$i_sysfile'
-d_voidtty='$d_voidtty'
-i_bsdioctl='$i_bsdioctl'
+i_sysfilio='$i_sysfilio'
+i_sysin='$i_sysin'
 i_sysioctl='$i_sysioctl'
-i_syssockio='$i_syssockio'
 i_sysndir='$i_sysndir'
+i_sysparam='$i_sysparam'
 i_sysselct='$i_sysselct'
-i_sgtty='$i_sgtty'
-i_termio='$i_termio'
-i_termios='$i_termios'
+i_syssockio='$i_syssockio'
+i_sysstat='$i_sysstat'
 i_systime='$i_systime'
 i_systimek='$i_systimek'
+i_systimes='$i_systimes'
+i_systypes='$i_systypes'
+i_sysun='$i_sysun'
+i_termio='$i_termio'
+i_termios='$i_termios'
 i_time='$i_time'
-timeincl='$timeincl'
 i_unistd='$i_unistd'
 i_utime='$i_utime'
 i_varargs='$i_varargs'
 i_varhdr='$i_varhdr'
 i_vfork='$i_vfork'
+incpath='$incpath'
+inews='$inews'
+installarchlib='$installarchlib'
+installbin='$installbin'
+installman1dir='$installman1dir'
+installman3dir='$installman3dir'
+installprivlib='$installprivlib'
+installscript='$installscript'
+installsitearch='$installsitearch'
+installsitelib='$installsitelib'
 intsize='$intsize'
-lib='$lib'
-libexp='$libexp'
+known_extensions='$known_extensions'
+ksh='$ksh'
+large='$large'
+ld='$ld'
+lddlflags='$lddlflags'
+ldflags='$ldflags'
+less='$less'
+lib_ext='$lib_ext'
 libc='$libc'
 libpth='$libpth'
-plibpth='$plibpth'
-xlibpth='$xlibpth'
 libs='$libs'
+libswanted='$libswanted'
+line='$line'
+lint='$lint'
+lkflags='$lkflags'
+ln='$ln'
 lns='$lns'
+locincpth='$locincpth'
+loclibpth='$loclibpth'
+lp='$lp'
+lpr='$lpr'
+ls='$ls'
 lseektype='$lseektype'
-d_mymalloc='$d_mymalloc'
+mail='$mail'
+mailx='$mailx'
+make='$make'
 mallocobj='$mallocobj'
 mallocsrc='$mallocsrc'
 malloctype='$malloctype'
-usemymalloc='$usemymalloc'
-installmansrc='$installmansrc'
-manext='$manext'
-mansrc='$mansrc'
-mansrcexp='$mansrcexp'
-huge='$huge'
-large='$large'
+man1dir='$man1dir'
+man1direxp='$man1direxp'
+man1ext='$man1ext'
+man3dir='$man3dir'
+man3direxp='$man3direxp'
+man3ext='$man3ext'
 medium='$medium'
+mips='$mips'
+mips_type='$mips_type'
+mkdir='$mkdir'
 models='$models'
-small='$small'
-split='$split'
+modetype='$modetype'
+more='$more'
+mv='$mv'
+myarchname='$myarchname'
 mydomain='$mydomain'
 myhostname='$myhostname'
-phostname='$phostname'
-c='$c'
+myuname='$myuname'
 n='$n'
-groupcat='$groupcat'
-hostcat='$hostcat'
-passcat='$passcat'
+nm_opt='$nm_opt'
+nm_so_opt='$nm_so_opt'
+nroff='$nroff'
+o_nonblock='$o_nonblock'
+obj_ext='$obj_ext'
+oldarchlib='$oldarchlib'
+oldarchlibexp='$oldarchlibexp'
+optimize='$optimize'
 orderlib='$orderlib'
-ranlib='$ranlib'
+osname='$osname'
+osvers='$osvers'
 package='$package'
-spackage='$spackage'
-installprivlib='$installprivlib'
+pager='$pager'
+passcat='$passcat'
+patchlevel='$patchlevel'
+path_sep='$path_sep'
+perl='$perl'
+perladmin='$perladmin'
+perlpath='$perlpath'
+pg='$pg'
+phostname='$phostname'
+plibpth='$plibpth'
+pmake='$pmake'
+pr='$pr'
+prefix='$prefix'
+prefixexp='$prefixexp'
 privlib='$privlib'
 privlibexp='$privlibexp'
 prototype='$prototype'
-ptrsize='$ptrsize'
 randbits='$randbits'
-installscript='$installscript'
+ranlib='$ranlib'
+rd_nodata='$rd_nodata'
+rm='$rm'
+rmail='$rmail'
+runnm='$runnm'
 scriptdir='$scriptdir'
 scriptdirexp='$scriptdirexp'
-sig_name='$sig_name'
+sed='$sed'
+selecttype='$selecttype'
+sendmail='$sendmail'
+sh='$sh'
+shar='$shar'
 sharpbang='$sharpbang'
+shmattype='$shmattype'
+shrpdir='$shrpdir'
 shsharp='$shsharp'
+sig_name='$sig_name'
+sig_num='$sig_num'
+signal_t='$signal_t'
+sitearch='$sitearch'
+sitearchexp='$sitearchexp'
+sitelib='$sitelib'
+sitelibexp='$sitelibexp'
+sizetype='$sizetype'
+sleep='$sleep'
+smail='$smail'
+small='$small'
+so='$so'
+sockethdr='$sockethdr'
+socketlib='$socketlib'
+sort='$sort'
+spackage='$spackage'
 spitshell='$spitshell'
+split='$split'
+ssizetype='$ssizetype'
+startperl='$startperl'
 startsh='$startsh'
+static_ext='$static_ext'
 stdchar='$stdchar'
+stdio_base='$stdio_base'
+stdio_bufsiz='$stdio_bufsiz'
+stdio_cnt='$stdio_cnt'
+stdio_ptr='$stdio_ptr'
+strings='$strings'
+submit='$submit'
+subversion='$subversion'
 sysman='$sysman'
+tail='$tail'
+tar='$tar'
+tbl='$tbl'
+test='$test'
+timeincl='$timeincl'
+timetype='$timetype'
+touch='$touch'
+tr='$tr'
+troff='$troff'
 uidtype='$uidtype'
-nm_opt='$nm_opt'
-runnm='$runnm'
+uname='$uname'
+uniq='$uniq'
+usedl='$usedl'
+usemymalloc='$usemymalloc'
 usenm='$usenm'
-incpath='$incpath'
-mips='$mips'
-mips_type='$mips_type'
+useposix='$useposix'
+usesafe='$usesafe'
+usevfork='$usevfork'
 usrinc='$usrinc'
-defvoidused='$defvoidused'
+uuname='$uuname'
+vi='$vi'
 voidflags='$voidflags'
-yacc='$yacc'
-yaccflags='$yaccflags'
+xlibpth='$xlibpth'
+zcat='$zcat'
 EOT
 
 : add special variables
@@ -6183,11 +9429,15 @@ exit)
 cont)
        ;;
 '')
-       echo " "
        dflt=''
        nostick=true
-echo "If you didn't make any mistakes, then just type a carriage return here."
-       rp="If you need to edit config.sh, do it as a shell escape here:"
+       $cat <<EOM
+
+If you'd like to make any changes to the config.sh file before I begin
+to configure things, do it as a shell escape now (e.g. !vi config.sh).
+
+EOM
+       rp="Press return or use a shell escape to edit config.sh:"
        . UU/myread
        nostick=''
        case "$ans" in
@@ -6238,4 +9488,6 @@ fi
 
 $rm -f kit*isdone ark*isdone
 $rm -rf UU
+
 : End of Configure
+