[inseparable changes from match from perl-5.003_97b to perl-5.003_97c]
[p5sagit/p5-mst-13.2.git] / Configure
index 572659a..0253fdb 100755 (executable)
--- a/Configure
+++ b/Configure
 #! /bin/sh
 #
-# If these # comments don't work, trim them.  Don't worry about any other
+# If these # comments don't work, trim them. Don't worry about any other
 # shell scripts, Configure will trim # comments from them for you.
 #
-# (If you are trying to port this package to a machine without sh, I would
-# suggest you cut out the prototypical config.h from the end of Configure
-# and edit it to reflect your system.  Some packages may include samples
+# (If you are trying to port this package to a machine without sh,
+# I would suggest you have a look at the prototypical config_h.SH file
+# and edit it to reflect your system. Some packages may include samples
 # of config.h for certain machines, so you might look for one of those.)
 #
-# $Header: Configure,v 3.0.1.12 90/11/10 00:57:30 lwall Locked $
+# Yes, you may rip this off to use in other distribution packages. This
+# script belongs to the public domain and cannot be copyrighted.
 #
-# Yes, you may rip this off to use in other distribution packages.
-# (Note: this Configure script was generated automatically.  Rather than
-# working with this copy of Configure, you may wish to get metaconfig.)
+# (Note: this Configure script was generated automatically. Rather than
+# working with this copy of Configure, you may wish to get metaconfig.
+# The dist-3.0 package (which contains metaconfig) was posted in
+# comp.sources.misc so you may fetch it yourself from your nearest
+# archive site. Check with Archie if you don't know where that can be.)
+#
+
+# $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
+#
+# Generated on Sat Feb  1 00:26:40 EST 1997 [metaconfig 3.0 PL60]
 
-: sanity checks
-PATH="$PATH:.:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc:/usr/new:/usr/new/bin:/usr/nbin"
-export PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh $0; kill $$)
+cat >/tmp/c1$$ <<EOF
+ARGGGHHHH!!!!!
 
-if test ! -t 0; then
-    echo "Say 'sh Configure', not 'sh <Configure'"
-    exit 1
+SCO csh still thinks true is false.  Write to SCO today and tell them that next
+year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
+
+(Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
+we'd have to do is go in and swap the && and || tokens, wherever they are.)
+
+[End of diatribe. We now return you to your regularly scheduled programming...]
+EOF
+cat >/tmp/c2$$ <<EOF
+
+OOPS!  You naughty creature!  You didn't run Configure with sh!
+I will attempt to remedy the situation by running sh for you...
+EOF
+
+true || cat /tmp/c1$$ /tmp/c2$$
+true || exec sh $0 $argv:q
+
+(exit $?0) || cat /tmp/c2$$
+(exit $?0) || exec sh $0 $argv:q
+rm -f /tmp/c1$$ /tmp/c2$$
+
+: 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:/. -a -n "$OS2_SHELL"; then
+       p_=\;
+       PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
+       OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
 fi
 
-(alias) >/dev/null 2>&1 && \
-    echo "(I see you are using the Korn shell.  Some ksh's blow up on Configure," && \
-    echo "especially on exotic machines.  If yours does, try the Bourne shell instead.)"
+: 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
 
-if test ! -d ../UU; then
-    if test ! -d UU; then
-       mkdir UU
-    fi
-    cd UU
+: Sanity checks
+if test ! -t 0; then
+       echo "Say 'sh $me', not 'sh <$me'"
+       exit 1
 fi
 
-case "$1" in
--d) shift; fastread='yes';;
-esac
+: Test and see if we are running under ksh, either blatantly or in disguise.
+if (PATH=.; alias -x) >/dev/null 2>&1; then
+    : running under ksh.  Is this a good thing?
+    if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname ; then
+        if test X`/usr/bin/uname -v` = X4 ; then
+            : on AIX 4, /bin/sh is really ksh, and it causes us problems.
+            : Avoid it
+               cat <<'EOM'
+(Feeding myself to /usr/bin/bsh to avoid AIX 4's /bin/sh.)
+EOM
+               unset ENV
+            exec /usr/bin/bsh $0 "$@"
+       fi
+    else
+        if test ! -f /hp-ux ; then
+       : Warn them if they use ksh on other systems
+               cat <<EOM
+(I see you are using the Korn shell.  Some ksh's blow up on $me,
+especially on older exotic systems.  If yours does, try the Bourne 
+shell instead.)
+EOM
+        fi
+    fi
+else
+    : Not running under ksh.  Maybe we should be?
+    : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
+    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
+fi
 
+: Configure runs within the UU subdirectory
+test -d UU || mkdir UU
+cd UU && rm -f ./*
+
+dynamic_ext=''
+extensions=''
+known_extensions=''
+static_ext=''
+useopcode=''
+useposix=''
+d_bsd=''
 d_eunice=''
-define=''
+d_xenix=''
 eunicefix=''
-loclist=''
-expr=''
-sed=''
-echo=''
+Mcc=''
+awk=''
+bash=''
+bison=''
+byacc=''
 cat=''
-rm=''
-mv=''
+chgrp=''
+chmod=''
+chown=''
+comm=''
+compress=''
 cp=''
-tail=''
-tr=''
-mkdir=''
-sort=''
-uniq=''
+cpio=''
+cpp=''
+csh=''
+date=''
+echo=''
+egrep=''
+emacs=''
+expr=''
+find=''
+flex=''
+gcc=''
 grep=''
-trylist=''
-test=''
+gzip=''
 inews=''
-egrep=''
-more=''
-pg=''
-Mcc=''
-vi=''
-mailx=''
+ksh=''
+less=''
+line=''
+lint=''
+ln=''
+lp=''
+lpr=''
+ls=''
 mail=''
-cpp=''
+mailx=''
+mkdir=''
+more=''
+mv=''
+nroff=''
 perl=''
-emacs=''
-ls=''
+pg=''
+pmake=''
+pr=''
+rm=''
 rmail=''
+sed=''
 sendmail=''
 shar=''
+sleep=''
 smail=''
+sort=''
+submit=''
+tail=''
+tar=''
 tbl=''
+test=''
+touch=''
+tr=''
 troff=''
-nroff=''
 uname=''
+uniq=''
 uuname=''
-line=''
-chgrp=''
-chmod=''
-lint=''
-sleep=''
-pr=''
-tar=''
-ln=''
-lpr=''
-lp=''
-touch=''
-make=''
-date=''
-csh=''
-Log=''
+vi=''
+zcat=''
+zip=''
+full_sed=''
+libswanted=''
+hint=''
+myuname=''
+osname=''
+osvers=''
+Author=''
+Date=''
 Header=''
+Id=''
+Locker=''
+Log=''
+RCSfile=''
+Revision=''
+Source=''
+State=''
+ar=''
+archobjs=''
+exe_ext=''
+firstmakefile=''
+lib_ext=''
+obj_ext=''
+path_sep=''
+afs=''
+alignbytes=''
+archlib=''
+archlibexp=''
+d_archlib=''
+installarchlib=''
+archname=''
+myarchname=''
+baserev=''
 bin=''
+binexp=''
+installbin=''
+bincompat3=''
+d_bincompat3=''
 byteorder=''
+cc=''
+gccversion=''
+ccflags=''
+cppflags=''
+ldflags=''
+lkflags=''
+locincpth=''
+optimize=''
+cf_email=''
+cf_by=''
+cf_time=''
 contains=''
-cppstdin=''
+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_crypt=''
+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_ftime=''
+d_gettimeod=''
+d_Gconvert=''
 d_getgrps=''
+d_setgrps=''
 d_gethent=''
-d_getpgrp=''
+aphostname=''
+d_gethname=''
+d_phostname=''
+d_uname=''
+d_getlogin=''
+d_getpgid=''
 d_getpgrp2=''
+d_bsdgetpgrp=''
+d_getpgrp=''
+d_getppid=''
 d_getprior=''
+d_gnulibc=''
 d_htonl=''
-d_index=''
-d_ioctl=''
+d_inetaton=''
+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_ndbm=''
-d_odbm=''
+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=''
+d_safemcpy=''
+d_sanemcmp=''
 d_select=''
+d_sem=''
+d_semctl=''
+d_semget=''
+d_semop=''
 d_setegid=''
 d_seteuid=''
-d_setpgrp=''
+d_setlinebuf=''
+d_setlocale=''
+d_setpgid=''
 d_setpgrp2=''
+d_bsdpgrp=''
+d_bsdsetpgrp=''
+d_setpgrp=''
 d_setprior=''
 d_setregid=''
 d_setresgid=''
-d_setreuid=''
 d_setresuid=''
+d_setreuid=''
 d_setrgid=''
 d_setruid=''
+d_setsid=''
+d_sfio=''
+usesfio=''
+d_shm=''
+d_shmat=''
+d_shmatprototype=''
+shmattype=''
+d_shmctl=''
+d_shmdt=''
+d_shmget=''
+d_sigaction=''
+d_sigsetjmp=''
+d_oldsock=''
 d_socket=''
 d_sockpair=''
-d_oldsock=''
+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_strtod=''
+d_strtol=''
+d_strtoul=''
+d_strxfrm=''
 d_symlink=''
 d_syscall=''
-d_sysvipc=''
-d_ipcmsg=''
-d_ipcsem=''
-d_ipcshm=''
+d_sysconf=''
+d_system=''
+d_tcgetpgrp=''
+d_tcsetpgrp=''
+d_time=''
+timetype=''
+clocktype=''
+d_times=''
 d_truncate=''
-d_varargs=''
+d_tzname=''
+d_umask=''
 d_vfork=''
+usevfork=''
 d_voidsig=''
+signal_t=''
 d_volatile=''
-d_vprintf=''
 d_charvspr=''
+d_vprintf=''
 d_wait4=''
 d_waitpid=''
+d_wcstombs=''
+d_wctomb=''
+dlext=''
+cccdlflags=''
+ccdlflags=''
+dlsrc=''
+ld=''
+lddlflags=''
+usedl=''
+fpostype=''
 gidtype=''
-i_dirent=''
+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=''
 i_niin=''
-i_pwd=''
-d_pwcomment=''
-d_pwquota=''
+i_sysin=''
 d_pwage=''
 d_pwchange=''
 d_pwclass=''
+d_pwcomment=''
 d_pwexpire=''
+d_pwquota=''
+i_pwd=''
+i_sfio=''
+i_stddef=''
+i_stdlib=''
+i_string=''
+strings=''
 i_sysdir=''
+i_sysfile=''
+d_voidtty=''
+i_bsdioctl=''
+i_sysfilio=''
 i_sysioctl=''
+i_syssockio=''
 i_sysndir=''
-i_time=''
+i_sysparam=''
+i_sysresrc=''
+i_sysselct=''
+i_sysstat=''
+i_systimes=''
+i_systypes=''
+i_sysun=''
+i_syswait=''
+i_sgtty=''
+i_termio=''
+i_termios=''
 i_systime=''
-d_systimekernel=''
+i_systimek=''
+i_time=''
+timeincl=''
+i_unistd=''
 i_utime=''
+i_values=''
+i_stdarg=''
 i_varargs=''
+i_varhdr=''
 i_vfork=''
 intsize=''
+longsize=''
+shortsize=''
 libc=''
-mallocsrc=''
+libperl=''
+shrpenv=''
+useshrplib=''
+glibpth=''
+libpth=''
+loclibpth=''
+plibpth=''
+xlibpth=''
+libs=''
+lns=''
+lseektype=''
+make=''
+make_set_make=''
+d_mymalloc=''
+freetype=''
 mallocobj=''
+mallocsrc=''
+malloctype=''
 usemymalloc=''
-mansrc=''
-manext=''
+installman1dir=''
+man1dir=''
+man1direxp=''
+man1ext=''
+installman3dir=''
+man3dir=''
+man3direxp=''
+man3ext=''
+huge=''
+large=''
+medium=''
 models=''
-split=''
 small=''
-medium=''
-large=''
-huge=''
-optimize=''
-ccflags=''
-cppflags=''
-ldflags=''
-cc=''
-libs=''
-n=''
+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=''
+subversion=''
+perladmin=''
+perlpath=''
+prefix=''
+prefixexp=''
+installprivlib=''
+privlib=''
+privlibexp=''
+prototype=''
 randbits=''
+installscript=''
 scriptdir=''
+scriptdirexp=''
+selecttype=''
+sh=''
 sig_name=''
-spitshell=''
-shsharp=''
+sig_num=''
+installsitearch=''
+sitearch=''
+sitearchexp=''
+installsitelib=''
+sitelib=''
+sitelibexp=''
+sizetype=''
+so=''
 sharpbang=''
+shsharp=''
+spitshell=''
+ssizetype=''
+startperl=''
 startsh=''
 stdchar=''
+sysman=''
 uidtype=''
-voidflags=''
+nm_opt=''
+nm_so_opt=''
+runnm=''
+usenm=''
+useperlio=''
+incpath=''
+mips=''
+mips_type=''
+usrinc=''
 defvoidused=''
-yacc=''
-privlib=''
-lib=''
+voidflags=''
 CONFIG=''
-: set package name
-package=perl
-
-echo " "
-echo "Beginning of configuration questions for $package kit."
-: Eunice requires " " instead of "", can you believe it
-echo " "
 
 define='define'
 undef='undef'
-: change the next line if compiling for Xenix/286 on Xenix/386
-xlibpth='/usr/lib/386 /lib/386'
-libpth='/usr/ccs/lib /usr/lib /usr/local/lib /usr/lib/large /lib '$xlibpth' /lib/large /usr/lib/small /lib/small'
 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
-rmlist='kit[1-9]isdone kit[1-9][0-9]isdone'
-trap 'echo " "; rm -f $rmlist; exit 1' 1 2 3
+rmlist=''
 
 : We must find out about Eunice early
 eunicefix=':'
 if test -f /etc/unixtovms; then
-    eunicefix=/etc/unixtovms
+       eunicefix=/etc/unixtovms
 fi
 if test -f /etc/unixtovms.exe; then
-    eunicefix=/etc/unixtovms.exe
+       eunicefix=/etc/unixtovms.exe
 fi
 
-: Now test for existence of everything in MANIFEST
+: 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 useopcode=false in your hint file to disable the Opcode extension.
+useopcode=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=''
 
-echo "First let's make sure your kit is complete.  Checking..."
-(cd ..; awk '' `awk '$1 !~ /PACKINGLIST/ {print $1}' MANIFEST` >/dev/null || kill $$)
-echo "Looks good..."
-
-attrlist="mc68000 sun gcos unix ibm gimpel interdata tss os mert pyr"
-attrlist="$attrlist vax pdp11 i8086 z8000 u3b2 u3b5 u3b20 u3b200"
-attrlist="$attrlist hpux hp9000s300 hp9000s500 hp9000s800"
-attrlist="$attrlist ns32000 ns16000 iAPX286 mc300 mc500 mc700 sparc"
-attrlist="$attrlist nsc32000 sinix xenix venix posix ansi M_XENIX"
-attrlist="$attrlist $mc68k __STDC__ UTS M_I8086 M_I186 M_I286 M_I386"
-attrlist="$attrlist i186 __m88k__ m88k DGUX __DGUX__"
-pth="/usr/ccs/bin /bin /usr/bin /usr/ucb /usr/local /usr/local/bin /usr/lbin /usr/plx /usr/5bin /vol/local/bin /etc /usr/lib /lib /usr/local/lib /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/bin /bsd4.3/usr/ucb"
-d_newshome="/usr/NeWS"
-defvoidused=7
-libswanted="net_s net nsl_s nsl socket nm ndir ndbm dbm sun m bsd BSD x c_s"
-inclwanted='/usr/netinclude /usr/include/sun /usr/include/bsd /usr/include/lan'
-
-: some greps do not return status, grrr.
-echo "grimblepritz" >grimble
-if grep blurfldyick grimble >/dev/null 2>&1 ; then
-    contains=contains
-elif grep grimblepritz grimble >/dev/null 2>&1 ; then
-    contains=grep
-else
-    contains=contains
-fi
-rm -f grimble
-: the following should work in any shell
-case "$contains" in
-contains*)
-    echo " "
-    echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
-    cat >contains <<'EOSS'
-grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
-EOSS
-chmod +x contains
+: change the next line if compiling for Xenix/286 on Xenix/386
+xlibpth='/usr/lib/386 /lib/386'
+
+: Possible local library directories to search.
+loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
+loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
+
+: general looking path for locating libraries
+glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
+glibpth="$glibpth /lib /usr/lib $xlibpth"
+glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
+glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
+
+: Private path used by Configure to find libraries.  Its value
+: is prepended to libpth. This variable takes care of special
+: machines, like the mips.  Usually, it should be empty.
+plibpth=''
+
+: full support for void wanted by default
+defvoidused=15
+
+: List of libraries we want.
+libswanted='sfio 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
+
+: Find the basic shell for Bourne shell scripts
+case "$sh" in
+'')
+       : SYSTYPE is for some older MIPS systems. 
+       : I do not know if it is still needed.
+       case "$SYSTYPE" in
+       *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
+       *) xxx='/bin/sh';;
+       esac
+       if test -f "$xxx"; then
+               sh="$xxx"
+       else
+               : Build up a list and do a single loop so we can 'break' out.
+               pth=`echo $PATH | sed -e "s/$p_/ /g"`
+               for xxx in sh bash ksh pdksh ash; do
+                       for p in $pth; do
+                               try="$try ${p}/${xxx}"
+                       done
+               done
+               for xxx in $try; do
+                       if test -f "$xxx"; then
+                               sh="$xxx";
+                               echo "Your Bourne shell appears to be in $sh."
+                               break
+                       elif test -f "$xxx.exe"; then
+                               sh="$xxx";
+                               echo "Hmm.  Your Bourne shell appears to be in $sh."
+                               break
+                       fi
+               done
+       fi
+       ;;
+esac
+
+case "$sh" in
+'')    cat <<EOM >&2
+$me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
+Usually it's in /bin/sh.  How did you even get this far?
+Please contact me (Chip Salzenberg) at chip@atlantic.net and 
+we'll try to straigten this all out.
+EOM
+       exit 1
+       ;;
 esac
 
 : see if sh knows # comments
-echo " "
-echo "Checking your sh to see if it knows about # comments..."
-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/echo hi" > try
-    $eunicefix try
-    chmod +x try
-    ./try > today
-    if $contains hi today >/dev/null 2>&1; then
-       echo "It does."
-       sharpbang='#!'
-    else
-       echo "#! /bin/echo hi" > try
+if `$sh -c '#' >/dev/null 2>&1`; then
+       shsharp=true
+       spitshell=cat
+       echo " "
+       xcat=/bin/cat
+       test -f $xcat || xcat=/usr/bin/cat
+       echo "#!$xcat" >try
        $eunicefix try
        chmod +x try
        ./try > today
        if test -s today; then
-           echo "It does."
-           sharpbang='#! '
+               sharpbang='#!'
        else
-           echo "It doesn't."
-           sharpbang=': use '
+               echo "#! $xcat" > try
+               $eunicefix try
+               chmod +x try
+               ./try > today
+               if test -s today; then
+                       sharpbang='#! '
+               else
+                       echo "Okay, let's see if #! works on this system..."
+                       echo "It's just a comment."
+                       sharpbang=': use '
+               fi
        fi
-    fi
 else
-    echo "Your sh doesn't grok # comments--I will strip them later on."
-    shsharp=false
-    echo "exec grep -v '^#'" >spitshell
-    chmod +x spitshell
-    $eunicefix spitshell
-    spitshell=`pwd`/spitshell
-    echo "I presume that if # doesn't work, #! won't work either!"
-    sharpbang=': use '
+       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
+rm -f try today
 
 : figure out how to guarantee sh startup
-echo " "
-echo "Checking out how to guarantee sh startup..."
-startsh=$sharpbang'/bin/sh'
-echo "Let's see if '$startsh' works..."
+case "$startsh" in
+'') startsh=${sharpbang}${sh} ;;
+*)
+esac
 cat >try <<EOSS
 $startsh
 set abc
@@ -346,120 +855,542 @@ EOSS
 chmod +x try
 $eunicefix try
 if ./try; then
-    echo "Yup, it does."
+       : echo "Yup, it does."
 else
-    echo "Nope.  You may have to fix up the shell scripts to make sure sh runs them."
+       echo "Hmm.  '$startsh' didn't work."
+       echo "You may have to fix up the shell scripts to make sure sh runs them."
 fi
-rm -f try today
+rm -f try
 
-: first determine how to suppress newline on echo command
-echo "Checking echo to see how to suppress newlines..."
-(echo "hi there\c" ; echo " ") >.echotmp
-if $contains c .echotmp >/dev/null 2>&1 ; then
-    echo "...using -n."
-    n='-n'
-    c=''
+: script used to extract .SH files with variable substitutions
+cat >extract <<EOS
+$startsh
+EOS
+cat >>extract <<'EOS'
+CONFIG=true
+echo "Doing variable substitutions on .SH files..."
+if test -f MANIFEST; then
+       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
-    cat <<'EOM'
-...using \c
-EOM
-    n=''
-    c='\c'
+       echo "(Looking for .SH files under the current directory.)"
+       set x `find . -name "*.SH" -print`
 fi
-echo $n "Type carriage return to continue.  Your cursor should be here-->$c"
-read ans
-rm -f .echotmp
-
-: now set up to do reads with possible shell escape and default assignment
-cat <<EOSC >myread
-case "\$fastread" in
-yes) ans=''; echo " " ;;
-*) ans='!';;
-esac
-while expr "X\$ans" : "X!" >/dev/null; do
-    read ans
-    case "\$ans" in
-    !)
-       sh
-       echo " "
-       echo $n "\$rp $c"
-       ;;
-    !*)
-       set \`expr "X\$ans" : "X!\(.*\)\$"\`
-       sh -c "\$*"
-       echo " "
-       echo $n "\$rp $c"
-       ;;
-    esac
-done
-rp='Your answer:'
-case "\$ans" in
-'') ans="\$dflt";;
+shift
+case $# in
+0) set x *.SH; shift;;
 esac
-EOSC
-
-: general instructions
-cat <<EOH
-This installation shell script will examine your system and ask you questions
-to determine how the $package 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.
-
-On some of the questions which ask for file or directory names you are
-allowed to use the ~name construct to specify the login directory belonging
-to "name", even if you don't have a shell which knows about that.  Questions
-where this is allowed will be marked "(~name ok)".
-
-EOH
-rp="[Type carriage return to continue]"
-echo $n "$rp $c"
-. myread
-cat <<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 you, your best bet is
-to edit Configure and run it again. Also, let me (lwall@jpl-devvax.jpl.nasa.gov)
-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.
-
-This installation script affects things in two ways: 1) it may do direct
-variable substitutions on some of the files included in this kit, and
-2) it builds a config.h file for inclusion in C programs.  You may edit
-any of these files as the need arises after running this script.
-
-If you make a mistake on a question, there is no easy way to back up to it
-currently.  The easiest thing to do is to edit config.sh and rerun all the
-SH files.  Configure will offer to let you do this before it runs the SH files.
-
-EOH
-rp="[Type carriage return to continue]"
-echo $n "$rp $c"
-. myread
-
-: get old answers, if there is a config file out there
-if test -f ../config.sh; then
-    echo " "
-    dflt=y
-    rp="I see a config.sh file.  Did Configure make it on THIS system? [$dflt]"
-    echo $n "$rp $c"
-    . myread
-    case "$ans" in
-    n*) echo "OK, I'll ignore it.";;
-    *)  echo "Fetching default answers from your old config.sh file..."
-       tmp="$n"
-       ans="$c"
-        . ../config.sh
-       n="$tmp"
-       c="$ans"
-       ;;
-    esac
+if test ! -f $1; then
+       shift
 fi
-
-: find out where common programs are
+for file in $*; do
+       case "$file" in
+       */*)
+               dir=`expr X$file : 'X\(.*\)/'`
+               file=`expr X$file : 'X.*/\(.*\)'`
+               (cd $dir && . ./$file)
+               ;;
+       *)
+               . ./$file
+               ;;
+       esac
+done
+if test -f config_h.SH; then
+       if test ! -f config.h; then
+       : oops, they left it out of MANIFEST, probably, so do it anyway.
+       . ./config_h.SH
+       fi
+fi
+EOS
+
+: produce awk script to parse command line options
+cat >options.awk <<'EOF'
+BEGIN {
+       optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
+
+       len = length(optstr);
+       for (i = 1; i <= len; i++) {
+               c = substr(optstr, i, 1);
+               if (i < len) a = substr(optstr, i + 1, 1); else a = "";
+               if (a == ":") {
+                       arg[c] = 1;
+                       i++;
+               }
+               opt[c] = 1;
+       }
+}
+{
+       expect = 0;
+       str = $0;
+       if (substr(str, 1, 1) != "-") {
+               printf("'%s'\n", str);
+               next;
+       }
+       len = length($0);
+       for (i = 2; i <= len; i++) {
+               c = substr(str, i, 1);
+               if (!opt[c]) {
+                       printf("-%s\n", substr(str, i));
+                       next;
+               }
+               printf("-%s\n", c);
+               if (arg[c]) {
+                       if (i < len)
+                               printf("'%s'\n", substr(str, i + 1));
+                       else
+                               expect = 1;
+                       next;
+               }
+       }
+}
+END {
+       if (expect)
+               print "?";
+}
+EOF
+
+: process the command line options
+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
+
+: set up default values
+fastread=''
+reuseval=false
+config_sh=''
+alldone=''
+error=''
+silent=''
+extractsh=''
+override=''
+knowitall=''
+
+rm -f optdef.sh
+cat >optdef.sh <<EOS
+$startsh
+EOS
+
+: option parsing
+while test $# -gt 0; do
+       case "$1" in
+       -d) shift; fastread=yes;;
+       -e) shift; alldone=cont;;
+       -f)
+               shift
+               cd ..
+               if test -r "$1"; then
+                       config_sh="$1"
+               else
+                       echo "$me: cannot read config file $1." >&2
+                       error=true
+               fi
+               cd UU
+               shift;;
+       -h) shift; error=true;;
+       -r) shift; reuseval=true;;
+       -s) shift; silent=true;;
+       -E) shift; alldone=exit;;
+       -K) shift; knowitall=true;;
+       -O) shift; override=true;;
+       -S) shift; extractsh=true;;
+       -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 "$me: unknown option $1" >&2; shift; error=true;;
+       *) break;;
+       esac
+done
+
+case "$error" in
+true)
+       cat >&2 <<EOM
+Usage: $me [-dehrsEKOSV] [-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
+       ;;
+esac
+
+exec 4>&1
+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
+       '') config_sh='config.sh'; config='./config.sh';;
+       /*) config="$config_sh";;
+       *) config="./$config_sh";;
+       esac
+       echo " "
+       echo "Fetching answers from $config_sh..."
+       cd ..
+       . $config
+       test "$override" && . ./optdef.sh
+       echo " "
+       . ./UU/extract
+       rm -rf UU
+       echo "Done."
+       exit 0
+       ;;
+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."
+
+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
+if grep blurfldyick grimble >/dev/null 2>&1 ; then
+       contains=contains
+elif grep grimblepritz grimble >/dev/null 2>&1 ; then
+       contains=grep
+else
+       contains=contains
+fi
+rm -f grimble
+: the following should work in any shell
+case "$contains" in
+contains*)
+       echo " "
+       echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
+       cat >contains <<'EOSS'
+grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
+EOSS
+chmod +x contains
+esac
+
+: first determine how to suppress newline on echo command
+echo " "
+echo "Checking echo to see how to suppress newlines..."
+(echo "hi there\c" ; echo " ") >.echotmp
+if $contains c .echotmp >/dev/null 2>&1 ; then
+       echo "...using -n."
+       n='-n'
+       c=''
+else
+       cat <<'EOM'
+...using \c
+EOM
+       n=''
+       c='\c'
+fi
+echo $n "The star should be here-->$c"
+echo '*'
+rm -f .echotmp
+
+: Now test for existence of everything in MANIFEST
+echo " "
+if test -f ../MANIFEST; then
+       echo "First let's make sure your kit is complete.  Checking..." >&4
+       awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
+       rm -f missing
+       for filelist in x??; do
+               (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
+       done
+       if test -s missing; then
+               cat missing >&4
+               cat >&4 <<'EOM'
+
+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 (chip@atlantic.net).
+
+EOM
+               echo $n "Continue? [n] $c" >&4
+               read ans
+               case "$ans" in
+               y*)
+                       echo "Continuing..." >&4
+                       rm -f missing
+                       ;;
+               *)
+                       echo "ABORTING..." >&4
+                       kill $$
+                       ;;
+               esac
+       else
+               echo "Looks good..." >&4
+       fi
+else
+       echo "There is no MANIFEST file.  I hope your kit is complete !"
+fi
+rm -f missing x??
+
+: compute the number of columns on the terminal for proper question formatting
+case "$COLUMNS" in
+'') COLUMNS='80';;
+esac
+
+: set up the echo used in my read
+myecho="case \"\$xxxm\" in
+'') echo $n \"\$rp $c\" >&4;;
+*) case \"\$rp\" in
+       '') echo $n \"[\$xxxm] $c\";;
+       *)
+               if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
+                       echo \"\$rp\" >&4
+                       echo $n \"[\$xxxm] $c\" >&4
+               else
+                       echo $n \"\$rp [\$xxxm] $c\" >&4
+               fi
+               ;;
+       esac;;
+esac"
+
+: now set up to do reads with possible shell escape and default assignment
+cat <<EOSC >myread
+$startsh
+xxxm=\$dflt
+$myecho
+ans='!'
+case "\$fastread" in
+yes) case "\$dflt" in
+       '') ;;
+       *) ans='';
+               case "\$silent-\$rp" in
+               true-) ;;
+               *) echo " " >&4;;
+               esac;;
+       esac;;
+*) case "\$silent" in
+       true) case "\$rp" in
+               '') ans='';;
+               esac;;
+       esac;;
+esac
+while expr "X\$ans" : "X!" >/dev/null; do
+       read answ
+       set x \$xxxm
+       shift
+       aok=''; eval ans="\\"\$answ\\"" && aok=y
+       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 " "
+                       $myecho
+                       ;;
+               !*)
+                       set x \`expr "X\$ans" : "X!\(.*\)\$"\`
+                       shift
+                       sh 1>&4 -c "\$*"
+                       echo " "
+                       $myecho
+                       ;;
+               esac;;
+       *)
+               case "\$aok" in
+               y)
+                       echo "*** Substitution done -- please confirm."
+                       xxxm="\$ans"
+                       ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
+                       xxxm="\$ans"
+                       ans=!
+                       ;;
+               *)
+                       echo "*** Error -- try again."
+                       ans=!
+                       ;;
+               esac
+               $myecho
+               ;;
+       esac
+       case "\$ans\$xxxm\$nostick" in
+       '')
+               ans=!
+               $myecho
+               ;;
+       esac
+done
+case "\$ans" in
+'') ans="\$xxxm";;
+esac
+EOSC
+
+: create .config dir to save info across Configure sessions
+test -d ../.config || mkdir ../.config
+cat >../.config/README <<EOF
+This directory created by Configure to save information that should
+persist across sessions.
+
+You may safely delete it if you wish.
+EOF
+
+: general instructions
+needman=true
+firsttime=true
+user=`(logname) 2>/dev/null`
+case "$user" in "")
+       user=`whoami 2>&1` ;;
+esac
+if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
+       firsttime=false
+       echo " "
+       rp='Would you like to see the instructions?'
+       dflt=n
+       . ./myread
+       case "$ans" in
+       [yY]*) ;;
+       *) needman=false;;
+       esac
+fi
+if $needman; then
+       cat <<EOH
+This installation shell script will examine your system and ask you questions
+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.
+
+On some of the questions which ask for file or directory names you are allowed
+to use the ~name construct to specify the login directory belonging to "name",
+even if you don't have a shell which knows about that.  Questions where this is
+allowed will be marked "(~name ok)".
+
+EOH
+       rp=''
+       dflt='Type carriage return to continue'
+       . ./myread
+       cat <<'EOH'
+
+The prompter used in this script allows you to use shell variables and
+backticks in your answers.  You may use $1, $2, etc...  to refer to the words
+in the default answer, as if the default line was a set of arguments given to a
+script shell.  This means you may also use $* to repeat the whole default line,
+so you do not have to re-type everything to add something to the default.
+
+Everytime there is a substitution, you will have to confirm.  If there is an
+error (e.g. an unmatched backtick), the default answer will remain unchanged
+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
+       cat <<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.  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 (chip@atlantic.net) know how I blew it.
+
+This installation script affects things in two ways:
+
+1) it may do direct variable substitutions on some of the files included
+   in this kit.
+2) it builds a config.h file for inclusion in C programs.  You may edit
+   any of these files as the need arises after running this script.
+
+If you make a mistake on a question, there is no easy way to back up to it
+currently.  The easiest thing to do is to edit config.sh and rerun all the SH
+files.  Configure will offer to let you do this before it runs the SH files.
+
+EOH
+       dflt='Type carriage return to continue'
+       . ./myread
+       case "$firsttime" in
+       true) echo $user >>../.config/instruct;;
+       esac
+fi
+
+: find out where common programs are
 echo " "
-echo "Locating common programs..."
+echo "Locating common programs..." >&4
 cat <<EOSC >loc
 $startsh
 case \$# in
@@ -470,24 +1401,27 @@ shift
 dflt=\$1
 shift
 for dir in \$*; do
-    case "\$thing" in
-    .)
+       case "\$thing" in
+       .)
        if test -d \$dir/\$thing; then
-           echo \$dir
-           exit 0
+               echo \$dir
+               exit 0
        fi
        ;;
-    *)
-       if test -f \$dir/\$thing; then
-           echo \$dir/\$thing
-           exit 0
+       *)
+       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
-           echo \$dir/\$thing
-           exit 0
+               : on Eunice apparently
+               echo \$dir/\$thing
+               exit 0
        fi
        ;;
-    esac
+       esac
 done
 echo \$dflt
 exit 1
@@ -495,345 +1429,1592 @@ EOSC
 chmod +x loc
 $eunicefix loc
 loclist="
+awk
 cat
+comm
 cp
 echo
 expr
+find
 grep
+ls
 mkdir
-mv
 rm
 sed
 sort
+touch
 tr
 uniq
 "
 trylist="
 Mcc
+byacc
 cpp
 csh
+date
 egrep
+gzip
+less
+line
+ln
+more
+nroff
+perl
+pg
+sendmail
 test
+uname
+zip
 "
+pth=`echo $PATH | sed -e "s/$p_/ /g"`
+pth="$pth /lib /usr/lib"
 for file in $loclist; do
-    xxx=`./loc $file $file $pth`
-    eval $file=$xxx
-    eval _$file=$xxx
-    case "$xxx" in
-    /*)
-       echo $file is in $xxx.
-       ;;
-    *)
-       echo "I don't know where $file is.  I hope it's in everyone's PATH."
-       ;;
-    esac
+       xxx=`./loc $file $file $pth`
+       eval $file=$xxx
+       eval _$file=$xxx
+       case "$xxx" in
+       /*)
+               echo $file is in $xxx.
+               ;;
+       ?:[\\/]*)
+               echo $file is in $xxx.
+               ;;
+       *)
+               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
 echo " "
 echo "Don't worry if any of the following aren't found..."
-ans=offhand
+say=offhand
 for file in $trylist; do
-    xxx=`./loc $file $file $pth`
-    eval $file=$xxx
-    eval _$file=$xxx
-    case "$xxx" in
-    /*)
-       echo $file is in $xxx.
-       ;;
-    *)
-       echo "I don't see $file out there, $ans."
-       ans=either
-       ;;
-    esac
+       xxx=`./loc $file $file $pth`
+       eval $file=$xxx
+       eval _$file=$xxx
+       case "$xxx" in
+       /*)
+               echo $file is in $xxx.
+               ;;
+       ?:[\\/]*)
+               echo $file is in $xxx.
+               ;;
+       *)
+               echo "I don't see $file out there, $say."
+               say=either
+               ;;
+       esac
 done
 case "$egrep" in
 egrep)
-    echo "Substituting grep for egrep."
-    egrep=$grep
-    ;;
+       echo "Substituting grep for egrep."
+       egrep=$grep
+       ;;
+esac
+case "$ln" in
+ln)
+       echo "Substituting cp for ln."
+       ln=$cp
+       ;;
 esac
 case "$test" in
 test)
-    echo "Hopefully test is built into your sh."
-    ;;
-/bin/test)
-    if sh -c "PATH= test true" >/dev/null 2>&1; then
-       echo "Using the test built into your sh."
-       test=test
-    fi
-    ;;
+       echo "Hopefully test is built into your sh."
+       ;;
 *)
-    test=test
-    ;;
+       if `sh -c "PATH= test true" >/dev/null 2>&1`; then
+               echo "Using the test built into your sh."
+               test=test
+               _test=test
+       fi
+       ;;
 esac
 case "$echo" in
 echo)
-    echo "Hopefully echo is built into your sh."
-    ;;
-/bin/echo)
-    echo " "
-    echo "Checking compatibility between /bin/echo and builtin echo (if any)..."
-    $echo $n "hi there$c" >foo1
-    echo $n "hi there$c" >foo2
-    if cmp foo1 foo2 >/dev/null 2>&1; then
-       echo "They are compatible.  In fact, they may be identical."
-    else
-       case "$n" in
-       '-n') n='' c='\c' ans='\c' ;;
-       *) n='-n' c='' ans='-n' ;;
-       esac
-       cat <<FOO
+       echo "Hopefully echo is built into your sh."
+       ;;
+'') ;;
+*)
+       echo " "
+echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
+       $echo $n "hi there$c" >foo1
+       echo $n "hi there$c" >foo2
+       if cmp foo1 foo2 >/dev/null 2>&1; then
+               echo "They are compatible.  In fact, they may be identical."
+       else
+               case "$n" in
+               '-n') n='' c='\c';;
+               *) n='-n' c='';;
+               esac
+               cat <<FOO
 They are not compatible!  You are probably running ksh on a non-USG system.
-I'll have to use /bin/echo instead of the builtin, since Bourne shell doesn't
+I'll have to use $echo instead of the builtin, since Bourne shell doesn't
 have echo built in and we may have to run some Bourne shell scripts.  That
-means I'll have to use $ans to suppress newlines now.  Life is ridiculous.
+means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
 
 FOO
-       rp="Your cursor should be here-->"
-       $echo $n "$rp$c"
-       . myread
-    fi
-    $rm -f foo1 foo2
-    ;;
-*)
-    : cross your fingers
-    echo=echo
-    ;;
+               $echo $n "The star should be here-->$c"
+               $echo "*"
+       fi
+       $rm -f foo1 foo2
+       ;;
 esac
-rmlist="$rmlist loc"
 
-: 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"
-       echo ""
-    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
-    ;;
+: 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 \$1
-    ;;
+       echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
+       ;;
 esac
-EOSS
-chmod +x filexp
-$eunicefix filexp
+: 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
 
-: determine where public executables go
-case "$bin" in
+: Try to determine whether config.sh was made on this system
+case "$config_sh" in
 '')
-    dflt=`./loc . /bin /usr/local/bin /usr/lbin /usr/local /usr/bin`
-    ;;
-*)  dflt="$bin"
-    ;;
+myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
+myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
+       ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
+newmyuname="$myuname"
+dflt=n
+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
+       ;;
+*) dflt=y;;
 esac
-cont=true
-while $test "$cont" ; do
-    echo " "
-    rp="Where do you want to put the public executables? (~name ok) [$dflt]"
-    $echo $n "$rp $c"
-    . myread
-    bin="$ans"
-    bin=`./filexp "$bin"`
-    if test -d $bin; then
-       cont=''
-    else
-       case "$fastread" in
-       yes) dflt=y;;
-       *) dflt=n;;
-       esac
-       rp="Directory $bin doesn't exist.  Use that name anyway? [$dflt]"
-       $echo $n "$rp $c"
-       . myread
-       dflt=''
+
+: Get old answers from old config file if Configure was run on the
+: same system, otherwise use the hints.
+hint=default
+cd ..
+if test -f config.sh; then
+       echo " "
+       rp="I see a config.sh file.  Shall I use it to set the defaults?"
+       . UU/myread
        case "$ans" in
-       y*) cont='';;
+       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="$n"
+               tmp_c="$c"
+               tmp_sh="$sh"
+               . ./config.sh
+               cp config.sh UU
+               n="$tmp_n"
+               c="$tmp_c"
+               : Older versions did not always set $sh.  Catch re-use of such
+               : an old config.sh.
+               case "$sh" in
+               '') sh="$tmp_sh" ;;
+               esac
+               hint=previous
+               ;;
        esac
-    fi
-done
+fi
+if test ! -f config.sh; then
+       $cat <<EOM
+
+First time through, eh?  I have some defaults handy for the following systems:
 
-: determine where manual pages go
-$cat <<EOM
-  
-$package has manual pages that need to be installed in source form.
 EOM
-case "$mansrc" in
-'')
-    dflt=`./loc . /usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1 /usr/man/u_man/man1 /usr/man/man1 /usr/man/man.L`
-    ;;
-*)  dflt="$mansrc"
-    ;;
-esac
-cont=true
-while $test "$cont" ; do
-    echo " "
-    rp="Where do the manual pages (source) go? (~name ok) [$dflt]"
-    $echo $n "$rp $c"
-    . myread
-    mansrc=`./filexp "$ans"`
-    if $test -d "$mansrc"; then
-       cont=''
-    else
-       if $test "$fastread" = yes; then
-           dflt=y
+       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 chip@atlantic.net
+       : The metaconfig authors would also appreciate a copy...
+       $test -f /irix && osname=irix
+       $test -f /xenix && osname=sco_xenix
+       $test -f /dynix && osname=dynix
+       $test -f /dnix && osname=dnix
+       $test -f /lynx.os && osname=lynxos
+       $test -f /unicos && osname=unicos && osvers=`$uname -r`
+       $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
+       $test -f /bin/mips && /bin/mips && osname=mips
+       $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
+
+               case "$5" in
+               fps*) osname=fps ;;
+               mips*)
+                       case "$4" in
+                       umips) osname=umips ;;
+                       *) osname=mips ;;
+                       esac;;
+               [23]100) osname=mips ;;
+               next*) osname=next ;;
+               news*) osname=news ;;
+               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=2
+                               fi
+                       fi
+                       ;;
+               esac
+
+               case "$1" in
+               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
+                       ;;
+               *dc.osx) osname=dcosx
+                       osvers="$3"
+                       ;;
+               dnix) osname=dnix
+                       osvers="$3"
+                       ;;
+               domainos) osname=apollo
+                       osvers="$3"
+                       ;;
+               dgux) osname=dgux 
+                       osvers="$3"
+                       ;;
+               dynixptx*) osname=dynixptx
+                       osvers="$3"
+                       ;;
+               freebsd) osname=freebsd 
+                       osvers="$3" ;;
+               genix) osname=genix ;;
+               hp*) osname=hpux 
+                       case "$3" in
+                       *.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
+                       ;;
+               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|mls+)      case "$5" in
+                               alpha)
+                                       osname=dec_osf
+                                       osvers=`echo "$3" | sed 's/^[vt]//'`
+                                       ;;
+                       hp*)    osname=hp_osf1  ;;
+                       mips)   osname=mips_osf1 ;;
+                       esac
+                       ;;
+               uts) osname=uts 
+                       osvers="$3"
+                       ;;
+               qnx) osname=qnx
+                       osvers="$4"
+                       ;;
+               $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
+                                       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
+                                               osvers=$1.$2
+                                       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
-           dflt=n
+               if test -f /vmunix -a -f news_os.sh; then
+                       (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, 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.
+If your OS version has no hints, DO NOT give a wrong version -- say "none".
+
+EOM
+       rp="Which of these apply, if any?"
+       . ../UU/myread
+       tans=$ans
+       for file in $tans; do
+               if $test -f $file.sh; then
+                       . ./$file.sh
+                       $cat $file.sh >> ../UU/config.sh
+               elif $test X$tans = X -o X$tans = Xnone ; then
+                       : nothing
+               else
+                       : Give one chance to correct a possible typo.
+                       echo "$file.sh does not exist"
+                       dflt=$file
+                       rp="hint to use instead?"
+                       . ../UU/myread
+                       for file in $ans; do
+                               if $test -f "$file.sh"; then
+                                       . ./$file.sh
+                                       $cat $file.sh >> ../UU/config.sh
+                               elif $test X$ans = X -o X$ans = Xnone ; then
+                                       : nothing
+                               else
+                                       echo "$file.sh does not exist -- ignored."
+                               fi
+                       done
+               fi
+       done
+
+       hint=recommended
+       : Remember our hint file for later.
+       if $test -f "$file.sh" ; then
+               hintfile="$file"
+       else
+               hintfile=''
+       fi
+
+       cd ..
+fi
+cd UU
+;;
+*)
+       echo " "
+       echo "Fetching default answers from $config_sh..." >&4
+       tmp_n="$n"
+       tmp_c="$c"
+       cd ..
+       cp $config_sh config.sh 2>/dev/null
+       chmod +w config.sh
+       . ./config.sh
+       cd UU
+       cp ../config.sh .
+       n="$tmp_n"
+       c="$tmp_c"
+       hint=previous
+       ;;
+esac
+test "$override" && . ./optdef.sh
+myuname="$newmyuname"
+
+: Restore computed paths
+for file in $loclist $trylist; do
+       eval $file="\$_$file"
+done
+
+cat << EOM
+
+Configure uses the operating system name and version to set some defaults.
+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/_.*$//'` ;;
+               esac
+               ;;
+       *) dflt="$osname" ;;
+esac
+rp="Operating system name?"
+. ./myread
+case "$ans" in
+none)  osname='' ;;
+*) osname=`echo "$ans" | $sed -e 's/[  ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
+esac
+echo " "
+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'`
+                       case "$dflt" in
+                       ''|' ') dflt=none ;;
+                       esac
+                       ;;
+               esac
+               ;;
+       *) dflt="$osvers" ;;
+esac
+rp="Operating system version?"
+. ./myread
+case "$ans" in
+none)  osvers='' ;;
+*) osvers="$ans" ;;
+esac
+
+
+
+: who configured the system
+cf_time=`$date 2>&1`
+cf_by=`(logname) 2>/dev/null`
+case "$cf_by" in "")
+       cf_by=`(whoami) 2>/dev/null`
+       case "$cf_by" in "")
+               cf_by=unknown ;;
+       esac ;;
+esac
+
+: determine the architecture name
+echo " "
+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/ *$//' -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
+case "$archname" in
+'') dflt="$tarch";;
+*) dflt="$archname";;
+esac
+rp='What is your architecture name'
+. ./myread
+archname="$ans"
+myarchname="$tarch"
+
+: is AFS running?
+echo " "
+case "$afs" in
+$define|true)  afs=true ;;
+$undef|false)  afs=false ;;
+*)     if test -d /afs; then
+               afs=true
+       else
+               afs=false
+       fi
+       ;;
+esac
+if $afs; then
+       echo "AFS may be running... I'll be extra cautious then..." >&4
+else
+       echo "AFS does not seem to be running..." >&4
+fi
+
+: decide how portable to be.  Allow command line overrides.
+case "$d_portable" in
+"$undef") ;;
+*)     d_portable="$define" ;;
+esac
+
+: set up shell script to do ~ expansion
+cat >filexp <<EOSS
+$startsh
+: expand filename
+case "\$1" in
+ ~/*|~)
+       echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
+       ;;
+ ~*)
+       if $test -f /bin/csh; then
+               /bin/csh -f -c "glob \$1"
+               failed=\$?
+               echo ""
+               exit \$failed
+       else
+               name=\`$expr x\$1 : '..\([^/]*\)'\`
+               dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
+               if $test ! -d "\$dir"; then
+                       me=\`basename \$0\`
+                       echo "\$me: can't locate home directory for: \$name" >&2
+                       exit 1
+               fi
+               case "\$1" in
+               */*)
+                       echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
+                       ;;
+               *)
+                       echo \$dir
+                       ;;
+               esac
+       fi
+       ;;
+*)
+       echo \$1
+       ;;
+esac
+EOSS
+chmod +x filexp
+$eunicefix filexp
+
+: now set up to get a file name
+cat <<EOS >getfile
+$startsh
+EOS
+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/(.*)//'`
+       ;;
+esac
+
+case "$fn" in
+*:*)
+       loc_file=`expr $fn : '.*:\(.*\)'`
+       fn=`expr $fn : '\(.*\):.*'`
+       ;;
+esac
+
+case "$fn" in
+*~*) tilde=true;;
+esac
+case "$fn" in
+*/*) fullpath=true;;
+esac
+case "$fn" in
+*+*) skip=true;;
+esac
+case "$fn" in
+*n*) none_ok=true;;
+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';;
+esac
+
+what="$type"
+case "$what" in
+Locate) what='File';;
+esac
+
+case "$exp_file" in
+'')
+       case "$d_portable" in
+       "$define") ;;
+       *) exp_file=true;;
+       esac
+       ;;
+esac
+
+cd ..
+while test "$type"; do
+       redo=''
+       rp="$orig_rp"
+       dflt="$orig_dflt"
+       case "$tilde" in
+       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
-       rp="Directory $mansrc doesn't exist.  Use that name anyway? [$dflt]"
-       $echo $n "$rp $c"
-       . myread
-       dflt=''
        case "$ans" in
-       y*) cont='';;
+       none)
+               value=''
+               ansexp=''
+               case "$none_ok" in
+               true) type='';;
+               esac
+               ;;
+       *)
+               case "$tilde" in
+               '') value="$ans"
+                       ansexp="$ans";;
+               *)
+                       value=`UU/filexp $ans`
+                       case $? in
+                       0)
+                               if test "$ans" != "$value"; then
+                                       echo "(That expands to $value on this system.)"
+                               fi
+                               ;;
+                       *) value="$ans";;
+                       esac
+                       ansexp="$value"
+                       case "$exp_file" in
+                       '') value="$ans";;
+                       esac
+                       ;;
+               esac
+               case "$fullpath" in
+               true)
+                       case "$ansexp" in
+                       /*) value="$ansexp" ;;
+                       *)
+                               redo=true
+                               case "$already" in
+                               true)
+                               echo "I shall only accept a full path name, as in /bin/ls." >&4
+                               echo "Use a ! shell escape if you wish to check pathnames." >&4
+                                       ;;
+                               *)
+                               echo "Please give a full path name, starting with slash." >&4
+                                       case "$tilde" in
+                                       true)
+                               echo "Note that using ~name is ok provided it expands well." >&4
+                                               already=true
+                                               ;;
+                                       esac
+                               esac
+                               ;;
+                       esac
+                       ;;
+               esac
+               case "$redo" in
+               '')
+                       case "$type" in
+                       File)
+                               if test -f "$ansexp"; then
+                                       type=''
+                               elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
+                               then
+                                       echo "($value is not a plain file, but that's ok.)"
+                                       type=''
+                               fi
+                               ;;
+                       Directory)
+                               if test -d "$ansexp"; then
+                                       type=''
+                               fi
+                               ;;
+                       Locate)
+                               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 "$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
+
+                       case "$skip" in
+                       true) type='';
+                       esac
+
+                       case "$type" in
+                       '') ;;
+                       *)
+                               if test "$fastread" = yes; then
+                                       dflt=y
+                               else
+                                       dflt=n
+                               fi
+                               rp="$what $value doesn't exist.  Use that name anyway?"
+                               . UU/myread
+                               dflt=''
+                               case "$ans" in
+                               y*) type='';;
+                               *) echo " ";;
+                               esac
+                               ;;
+                       esac
+                       ;;
+               esac
+               ;;
        esac
-    fi
 done
-case "$mansrc" in
-*l)
-    manext=l
-    ;;
-*n)
-    manext=n
-    ;;
-*o)
-    manext=l
-    ;;
-*p)
-    manext=p
-    ;;
-*C)
-    manext=C
-    ;;
-*L)
-    manext=L
+cd UU
+ans="$value"
+rp="$orig_rp"
+dflt="$orig_dflt"
+rm -f getfile.ok
+EOSC
+
+: 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 <<EOM
+
+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.
+
+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"
+
+: 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
+eval $prefixit
+$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 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
+       installprivlib="$privlibexp"
+fi
+
+: 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
+       patchlevel=0
+       subversion=0
+fi
+$echo $n "(You have $package" $c
+case "$package" in
+"*$baserev")   ;;
+*)             $echo $n " $baserev" $c ;;
+esac
+$echo $n " patchlevel $patchlevel" $c
+test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
+echo ".)"
+
+: set the prefixup variable, to restore leading tilda escape
+prefixup='case "$prefixexp" in
+"$prefix") ;;
+*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
+esac'
+
+: 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
+       ;;
+    *) if test 0 -eq "$subversion"; then
+           version=`LC_ALL=C; export LC_ALL; \
+                    echo $baserev $patchlevel | \
+                    $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
+       else
+           version=`LC_ALL=C; export LC_ALL; \
+                    echo $baserev $patchlevel $subversion | \
+                    $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
+       fi
+       dflt="$privlib/$archname/$version"
+       ;;
+    esac
     ;;
 *)
-    manext=1
+    dflt="$archlib"
     ;;
 esac
+cat <<EOM
+
+$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.
+
+EOM
+fn=d+~
+rp='Where do you want to put the public architecture-dependent libraries?'
+. ./getfile
+archlib="$ans"
+archlibexp="$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 "$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
+
+: set up the script used to warn in case of inconsistency
+cat <<EOS >whoa
+$startsh
+EOS
+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
+
+: 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'
+
+$cat <<EOM
+
+Perl 5.004 can be compiled for binary compatibility with 5.003.
+If you decide to do so, you will be able to continue using any
+extensions that were compiled for Perl 5.003.  However, binary
+compatibility forces Perl to expose some of its internal symbols
+in the same way that 5.003 did.  So you may have symbol conflicts
+if you embed a binary-compatible Perl in other programs.
+
+EOM
+case "$d_bincompat3" in
+"$undef") dflt=n ;;
+*) dflt=y ;;
+esac
+rp='Binary compatibility with Perl 5.003?'
+. ./myread
+case "$ans" in
+y*) val="$define" ;;
+*)  val="$undef" ;;
+esac
+set d_bincompat3
+eval $setvar
+case "$d_bincompat3" in
+"$define") bincompat3=y ;;
+*) bincompat3=n ;;
+esac
 
 : make some quick guesses about what we are up against
 echo " "
 $echo $n "Hmm...  $c"
-cat /usr/include/signal.h /usr/include/sys/signal.h >foo
-if test `echo abc | tr a-z A-Z` = Abc ; then
-    echo "Looks kind of like a USG system, but we'll see..."
-    echo exit 1 >bsd
-    echo exit 0 >usg
-    echo exit 1 >v7
+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
+echo exit 1 >os2
+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 "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
-    echo exit 1 >usg
-    echo exit 1 >v7
+       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 1 >bsd
-    echo exit 1 >usg
-    echo exit 0 >v7
+       echo "Looks kind of like a Version 7 system, but we'll see..."
+       echo exit 0 >v7
 fi
 case "$eunicefix" in
 *unixtovms*)
-    cat <<'EOI'
+       $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"
-    ;;
+       echo exit 0 >eunice
+       d_eunice="$define"
+: it so happens the Eunice I know will not run shell scripts in Unix format
+       ;;
 *)
-    echo " "
-    echo "Congratulations.  You aren't running Eunice."
-    d_eunice="$undef"
-    echo "exit 1" >eunice
-    ;;
+       echo " "
+       echo "Congratulations.  You aren't running Eunice."
+       d_eunice="$undef"
+       ;;
+esac
+: Detect OS2.  The p_ variable is set above in the Head.U unit.
+case "$p_" in
+:) ;;
+*)
+       $cat <<'EOI'
+I have the feeling something is not exactly right, however...don't tell me...
+lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
+EOI
+       echo exit 0 >os2
+       ;;
 esac
 if test -f /xenix; then
-    echo "Actually, this looks more like a XENIX system..."
-    echo "exit 0" >xenix
+       echo "Actually, this looks more like a XENIX system..."
+       echo exit 0 >xenix
+       d_xenix="$define"
 else
-    echo " "
-    echo "It's not Xenix..."
-    echo "exit 1" >xenix
+       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
+       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
-    echo "exit 1" >venix
+       echo " "
+       if ./xenix; then
+               : null
+       else
+               echo "Nor is it Venix..."
+       fi
+fi
+chmod +x bsd usg v7 osf1 eunice xenix venix os2
+$eunicefix bsd usg v7 osf1 eunice xenix venix os2
+$rm -f foo
+
+: see if setuid scripts can be secure
+$cat <<EOM
+
+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
+
+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
+               $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'.
+
+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
+       echo "(That's for file descriptors, not floppy disks.)"
+       val="$undef"
+fi
+set d_suidsafe
+eval $setvar
+
+$rm -f reflect flect
+
+: now see if they want to do setuid emulation
+echo " "
+val="$undef"
+case "$d_suidsafe" in
+"$define")
+       val="$undef"
+       echo "No need to emulate SUID scripts since they are secure here." >& 4
+       ;;
+*)
+       $cat <<EOM
+Some systems have disabled setuid scripts, especially systems where
+setuid scripts cannot be secure.  On systems where setuid scripts have
+been disabled, the setuid/setgid bits on scripts are currently
+useless.  It is possible for $package to detect those bits and emulate
+setuid/setgid in a secure fashion.  This emulation will only work if
+setuid scripts have been disabled in your kernel.
+
+EOM
+       case "$d_dosuid" in
+       "$define") dflt=y ;;
+       *) dflt=n ;;
+       esac
+       rp="Do you want to do setuid/setgid emulation?"
+       . ./myread
+       case "$ans" in
+       [yY]*)  val="$define";;
+       *)      val="$undef";;
+       esac
+       ;;
+esac
+set d_dosuid
+eval $setvar
+
+: determine where site specific libraries go.
+set sitelib sitelib
+eval $prefixit
+case "$sitelib" in
+'')    dflt="$privlib/site_perl" ;;
+*)     dflt="$sitelib" ;;
+esac
+$cat <<EOM
+
+The installation process will also create a directory for
+site-specific extensions and modules.  Some users find it convenient
+to place all local files in this directory rather than in the main
+distribution directory.
+
+EOM
+fn=d~+
+rp='Pathname for the site-specific library files?'
+. ./getfile
+if $test "X$sitelibexp" != "X$ansexp"; then
+       installsitelib=''
+fi
+sitelib="$ans"
+sitelibexp="$ansexp"
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+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
+       installsitelib="$sitelibexp"
+fi
+
+: determine where site specific architecture-dependent libraries go.
+xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
+: xxx is usuually lib/site_perl/archname.
+set sitearch sitearch none
+eval $prefixit
+case "$sitearch" in
+'')    dflt="$sitelib/$archname" ;;
+*)     dflt="$sitearch" ;;
+esac
+$cat <<EOM
+
+The installation process will also create a directory for
+architecture-dependent site-specific extensions and modules.
+
+EOM
+fn=nd~+
+rp='Pathname for the site-specific architecture-dependent library files?'
+. ./getfile
+if $test "X$sitearchexp" != "X$ansexp"; then
+       installsitearch=''
+fi
+sitearch="$ans"
+sitearchexp="$ansexp"
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+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
+
+: 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 directory
+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 a version-specific directory such as
+$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
+oldarchlib="$ans"
+oldarchlibexp="$ansexp"
+case "$oldarchlib" in
+''|' ') val="$undef" ;;
+*) val="$define" ;;
+esac
+set d_oldarchlib
+eval $setvar
+
+: determine where public executables go
+echo " "
+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 " "
+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
-chmod +x bsd usg v7 eunice venix
-$eunicefix bsd usg v7 eunice venix
-rm -rf foo
-rmlist="$rmlist bsd usg v7 eunice venix xenix"
 
 : see what memory models we can support
 case "$models" in
 '')
-    : We may not use Cppsym or we get a circular dependency through cc.
-    : But this should work regardless of which cc we eventually use.
-    cat >pdp11.c <<'EOP'
+       $cat >pdp11.c <<'EOP'
 main() {
 #ifdef pdp11
-    exit(0);
+       exit(0);
 #else
-    exit(1);
+       exit(1);
 #endif
 }
 EOP
-    cc -o pdp11 pdp11.c >/dev/null 2>&1
-    if pdp11 2>/dev/null; then
-       dflt='unsplit split'
-    else
-       ans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
-       case "$ans" 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" ;;
+       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
 $cat <<EOM
  
@@ -845,1219 +3026,5698 @@ 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 models are supported? [$dflt]"
-$echo $n "$rp $c"
-. myread
-models="$ans"
+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 " "
+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
+
+: 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
+
+: 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
+
+: 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$lib_ext X $libpth`; $test -f "$xxx"; then
+               echo "Found -l$thislib."
+               case " $dflt " in
+               *"-l$thislib "*);;
+               *) dflt="$dflt -l$thislib";;
+               esac
+       elif xxx=`./loc $thislib$lib_ext 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$lib_ext 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$lib_ext 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 System V Release 3'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 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
+
+: determine optimize, if desired, or use for debug flag also
+case "$optimize" in
+' '|$undef) 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
+
+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, libs, and flags for coherency..." >&4
+set X $cc $optimize $ccflags $ldflags -o try try.c $libs
+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 -o try try.c $ldflags $libs" >>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
+
+echo " "
+echo "Checking for GNU C Library..." >&4
+cat >gnulibc.c <<EOM
+int
+main()
+{
+  return __libc_main();
+}
+EOM
+if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
+    ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
+       val="$define"
+       echo "You are using the GNU C Library"
+else
+       val="$undef"
+       echo "You are not using the GNU C Library"
+fi
+$rm -f gnulibc*
+set d_gnulibc
+eval $setvar
+
+: see if nm is to be used to determine whether a symbol is defined or not
+case "$usenm" in
+'')
+       case "$d_gnulibc" in
+       $define)
+               dflt=n
+               ;;
+       *)
+               dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
+               if $test $dflt -gt 20; then
+                       dflt=y
+               else
+                       dflt=n
+               fi
+               ;;
+       esac
+       ;;
+*)
+       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.
+You shouldn't let me use 'nm' if you have the GNU C Library.
+
+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=''       # Mach
+       elif $test -d /usr/ccs/lib; then
+               nm_opt='-p'     # Solaris (and SunOS?)
+       elif $test -f /dgux; then
+               nm_opt='-p'     # DG-UX
+       elif $test -f /lib64/rld; then
+               nm_opt='-p'     # 64-bit Irix
+       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$lib_ext $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$lib_ext X $libpth`; $test -f "$try"; then
+                       :
+               elif try=`./loc $thislib$lib_ext 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$lib_ext 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$lib_ext
+       ;;
+*)
+       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$lib_ext; then
+       libc=$incpath/usr/lib/libc$lib_ext;
+       echo "Your C library seems to be in $libc.  That's fine."
+elif $test -r /lib/libc$lib_ext; then
+       libc=/lib/libc$lib_ext;
+       echo "Your C library seems to be in $libc.  You're normal."
+else
+       if tans=`./loc libc$lib_ext 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$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
+               :
+       elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
+               :
+       else
+               tans=`./loc Llibc$lib_ext 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 's/^.*|Proc .*|Text *| *//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
+elif com="$sed -n -e 's/.*\.text n\ \ \ \.//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
+
+: 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
+
+: 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 dld is available
+set dld.h i_dld
+eval $inhdr
+
+: 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'
+
+: see if dlopen exists
+xxx_runnm="$runnm"
+runnm=false
+set dlopen d_dlopen
+eval $inlibc
+runnm="$xxx_runnm"
+
+: determine which dynamic loading, if any, to compile in
+echo " "
+dldir="ext/DynaLoader"
+case "$usedl" in
+$define|y|true)
+       dflt='y'
+       usedl="$define"
+       ;;
+$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' ;;
+                       svr4*|esix*)    dflt='-Kpic' ;;
+                       irix*)  dflt='-KPIC' ;;
+                       solaris) case "$ccflags" in
+                               *-DDEBUGGING*)  dflt='-KPIC' ;;
+                               *)              dflt='-Kpic' ;;
+                               esac ;;
+                       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|irix*)    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
+
+also=''
+case "$usedl" in
+$undef)
+       # No dynamic loading being used, so don't bother even to prompt.
+       useshrplib='false'
+       ;;
+*)     case "$useshrplib" in
+       '')     case "$osname" in
+               svr4*|dgux|dynixptx|esix|powerux)
+                       dflt='yes'
+                       also='Building a shared libperl is required for dynamic loading to work on your system.'
+                       ;;
+               next*)
+                       case "$osvers" in
+                       4*)     dflt='yes'
+                               also='Building a shared libperl is needed for MAB support.'
+                               ;;
+                       *)      dflt='no'
+                               ;;
+                       esac
+                       ;;
+               sunos)
+                       dflt='no'
+                       also='Building a shared libperl will definitely not work on SunOS 4.'
+                       ;;
+               *)      dflt='no'
+                       ;;
+               esac
+               ;;
+       $define|true|[Yy]*)
+               dflt='yes'
+               ;;
+       *)      dflt='no'
+               ;;
+       esac
+       $cat << EOM
+
+The perl executable is normally obtained by linking perlmain.c with
+libperl${lib_ext}, any static extensions (usually just DynaLoader), and
+any other libraries needed on this system (such as -lm, etc.).  Since
+your system supports dynamic loading, it is probably possible to build
+a shared libperl.$so.  If you will have more than one executable linked
+to libperl.$so, this will significantly reduce the size of each
+executable, but it may have a noticeable affect on performance.  The
+default is probably sensible for your system.
+$also
+
+EOM
+       rp="Build a shared libperl.$so (y/n)"
+       . ./myread
+       case "$ans" in
+       true|$define|[Yy]*)
+               useshrplib='true'
+               # Why does next4 have to be so different?
+               case "${osname}${osvers}" in
+               next4*) xxx='DYLD_LIBRARY_PATH' ;;
+               *)              xxx='LD_LIBRARY_PATH' ;;
+               esac
+               $cat <<EOM >&4
+
+To build perl, you must add the current working directory to your
+$xxx environtment variable before running make.  You can do
+this with
+   $xxx=\`pwd\`; export $xxx
+for Bourne-style shells, or
+   setenv $xxx \`pwd\`
+for Csh-style shells.  You *MUST* do this before running make.
+
+EOM
+               ;;
+       *)      useshrplib='false' ;;
+       esac
+       ;;
+esac
+
+case "$useshrplib" in
+true)
+       case "$libperl" in
+       '')
+               # Figure out a good name for libperl.so.  Since it gets stored in
+               # a version-specific architecture-dependent library, the version
+               # number isn't really that important, except for making cc/ld happy.
+               #
+               # A name such as libperl.so.3.1
+               majmin="libperl.$so.$patchlevel.$subversion"
+               # A name such as libperl.so.301
+               majonly=`echo $patchlevel $subversion |
+                       $awk '{printf "%d%02d", $1, $2}'`
+               majonly=libperl.$so.$majonly
+               # I'd prefer to keep the os-specific stuff here to a minimum, and
+               # rely on figuring it out from the naming of libc.
+               case "${osname}${osvers}" in
+               next4*)
+                       dflt=libperl.5.$so
+                       # XXX How handle the --version stuff for MAB?
+                       ;;
+               linux*)  # ld won't link with a bare -lperl otherwise.
+                       dflt=libperl.$so
+                       ;;
+               *)      # Try to guess based on whether libc has major.minor.
+                       case "$libc" in
+                       *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
+                       *libc.$so.[0-9]*) dflt=$majonly ;;
+                       *)      dflt=libperl.$so ;;
+                       esac
+                       ;;
+               esac
+               ;;
+       *)      dflt=$libperl
+               ;;
+       esac
+       cat << EOM
+
+I need to select a good name for the shared libperl.  If your system uses
+library names with major and minor numbers, then you might want something
+like $majmin.  Alternatively, if your system uses a single version
+number for shared libraries, then you might want to use $majonly.
+Or, your system might be quite happy with a simple libperl.$so.
+
+Since the shared libperl will get installed into a version-specific
+architecture-dependent directory, the version number of the shared perl
+library probably isn't important, so the default should be o.k.
+
+EOM
+       rp='What name do you want to give to the shared libperl?'
+       . ./myread
+       libperl=$ans
+       echo "Ok, I'll use $libperl"
+       ;;
+*)
+       libperl="libperl${lib_ext}"
+       ;;
+esac
+
+# Detect old use of shrpdir via undocumented Configure -Dshrpdir
+case "$shrpdir" in
+'') ;;
+*)     $cat >&4 <<EOM
+WARNING:  Use of the shrpdir variable for the installation location of
+the shared $libperl is not supported.  It was never documented and
+will not work in this version.  Let me (chip@atlantic.net)
+know of any problems this may cause.
+
+EOM
+       case "$shrpdir" in
+       "$archlibexp/CORE")
+               $cat >&4 <<EOM
+But your current setting of $shrpdir is
+the default anyway, so it's harmless.
+EOM
+               ;;
+       *)
+               $cat >&4 <<EOM
+Further, your current attempted setting of $shrpdir
+conflicts with the value of $archlibexp/CORE
+that installperl will use.
+EOM
+               ;;
+       esac
+       ;;
+esac
+
+# How will the perl executable find the installed shared $libperl?
+# Add $xxx to ccdlflags.
+# If we can't figure out a command-line option, use $shrpenv to
+# set env LD_RUN_PATH.  The main perl makefile uses this.
+shrpdir=$archlibexp/CORE
+xxx=''
+tmp_shrpenv=''
+if "$useshrplib"; then
+    case "$osname" in 
+       solaris|netbsd)
+               xxx="-R $shrpdir"
+               ;;
+       freebsd)
+               xxx="-Wl,-R$shrpdir"
+               ;;
+       linux|irix*|dec_osf)
+               xxx="-Wl,-rpath,$shrpdir"
+               ;;
+       *)
+               tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
+               ;;
+       esac
+       case "$xxx" in
+       '') ;;
+       *)      
+               # Only add $xxx if it isn't already in ccdlflags.
+               case " $ccdlflags " in
+               *" $xxx "*)     ;;
+               *)      ccdlflags="$ccdlflags $xxx"
+                       cat <<EOM >&4
+
+Adding $xxx to the flags
+passed to $ld so that the perl executable will find the 
+installed shared $libperl.
+
+EOM
+                       ;;
+               esac
+               ;;
+       esac
+fi
+# Respect a hint or command-line value.
+case "$shrpenv" in
+'') shrpenv="$tmp_shrpenv" ;;
+esac
+
+: determine where manual pages go
+set man1dir man1dir none
+eval $prefixit
+$cat <<EOM
+
+$spackage has manual pages available in source form.
+EOM
+case "$nroff" in
+nroff)
+       echo "However, you don't have nroff, so they're probably useless to you."
+       case "$man1dir" in
+       '') man1dir="none";;
+       esac;;
+esac
+echo "If you don't want the manual sources installed, answer 'none'."
+case "$man1dir" in
+' ') dflt=none
+       ;;
+'')
+       lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
+       lookpath="$lookpath $prefixexp/man/p_man/man1"
+       lookpath="$lookpath $prefixexp/man/u_man/man1"
+       lookpath="$lookpath $prefixexp/man/man.1"
+       : 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
+       installman1dir="$man1direxp"
+fi
+
+: What suffix to use on installed man pages
+
+case "$man1dir" in
+' ')
+       man1ext='0'
+       ;;
+*)
+       rp="What suffix should be used for the main $spackage man pages?"
+       case "$man1ext" in
+       '')     case "$man1dir" in
+               *1)  dflt=1 ;;
+               *1p) dflt=1p ;;
+               *1pm) dflt=1pm ;;
+               *l) dflt=l;;
+               *n) dflt=n;;
+               *o) dflt=o;;
+               *p) dflt=p;;
+               *C) dflt=C;;
+               *L) dflt=L;;
+               *L1) dflt=L1;;
+               *) dflt=1;;
+               esac
+               ;;
+       *)      dflt="$man1ext";;
+       esac
+       . ./myread
+       man1ext="$ans"
+       ;;
+esac
+
+: see if we can have long filenames
+echo " "
+rmlist="$rmlist /tmp/cf$$"
+$test -d /tmp/cf$$ || mkdir /tmp/cf$$
+first=123456789abcdef
+second=/tmp/cf$$/$first
+$rm -f $first $second
+if (echo hi >$first) 2>/dev/null; then
+       if $test -f 123456789abcde; then
+               echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
+               val="$undef"
+       else
+               if (echo hi >$second) 2>/dev/null; then
+                       if $test -f /tmp/cf$$/123456789abcde; then
+                               $cat <<'EOM'
+That's peculiar... You can have filenames longer than 14 characters, but only
+on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
+I shall consider your system cannot support long filenames at all.
+EOM
+                               val="$undef"
+                       else
+                               echo 'You can have filenames longer than 14 characters.' >&4
+                               val="$define"
+                       fi
+               else
+                       $cat <<'EOM'
+How confusing! Some of your filesystems are sane enough to allow filenames
+longer than 14 characters but some others like /tmp can't even think about them.
+So, for now on, I shall assume your kernel does not allow them at all.
+EOM
+                       val="$undef"
+               fi
+       fi
+else
+       $cat <<'EOM'
+You can't have filenames longer than 14 chars.  You can't even think about them!
+EOM
+       val="$undef"
+fi 
+set d_flexfnam
+eval $setvar
+$rm -rf /tmp/cf$$ 123456789abcde*
+
+: determine where library module manual pages go
+set man3dir man3dir none
+eval $prefixit
+$cat <<EOM
+
+$spackage has manual pages for many of the library modules.
+EOM
+
+case "$nroff" in
+nroff)
+       $cat <<'EOM'
+However, you don't have nroff, so they're probably useless to you.
+You can use the supplied perldoc script instead.
+EOM
+       case "$man3dir" in
+       '') man3dir="none";;
+       esac;;
+esac
+
+case "$d_flexfnam" in
+undef)
+       $cat <<'EOM'
+However, your system can't handle the long file names like File::Basename.3. 
+You can use the supplied perldoc script instead.
+EOM
+       case "$man3dir" in
+       '') man3dir="none";;
+       esac;;
+esac
+
+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 " "
+
+fn=dn+~
+rp="Where do the $spackage library man pages (source) go?"
+. ./getfile
+if test "X$man3direxp" != "X$ansexp"; then
+       installman3dir=''
+fi
+
+man3dir="$ans"
+man3direxp="$ansexp"
+case "$man3dir" in
+'') man3dir=' '
+       installman3dir='';;
+esac
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+manual pages reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
+
+EOM
+       case "$installman3dir" in
+       '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installman3dir";;
+       esac
+       fn=de~
+       rp='Where will man pages be installed?'
+       . ./getfile
+       installman3dir="$ans"
+else
+       installman3dir="$man3direxp"
+fi
+
+: What suffix to use on installed man pages
+
+case "$man3dir" in
+' ')
+       man3ext='0'
+       ;;
+*)
+       rp="What suffix should be used for the $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
+
+: 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
+       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
+
+: 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=.
+                       ;;
+               X.) 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?
+                               : Look for either a search or a domain directive.
+                               dflt=.`$sed -n -e 's/   / /g' \
+                                 -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
+                                 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+                               case "$dflt" in
+                               .) dflt=.`$sed -n -e 's/        / /g' \
+                                    -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
+                                    | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+                                       ;;
+                               esac
+                       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"
+
+: 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
+($binexp/perl) on all your platforms. The alternative is to force
+a shell by starting the script with a single ':' character.
+
+EOH
+               dflt="$binexp/perl"
+               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"
+                       if $test 33 -lt `echo "$ans" | wc -c`; then
+                               $cat >&4 <<EOM
+
+WARNING:  Some systems limit the #! command to 32 characters.
+If you experience difficulty running Perl scripts with #!, try
+installing Perl in a directory with a shorter pathname.
+
+EOM
+                       fi ;;
+               esac
+               ;;
+       *) startperl=": # use perl"
+               ;;
+       esac
+       ;;
+esac
+echo "I'll use $startperl to start perl scripts."
+
+: figure best path for perl in scripts
+case "$perlpath" in
+'')
+       perlpath="$binexp/perl"
+       case "$startperl" in
+       *!*) ;;
+       *)
+               $cat <<EOH
+
+I will use the "eval 'exec'" idiom to start Perl on your system.
+I can use the full path of your Perl binary for this purpose, but
+doing so may cause problems if you want to share those scripts and
+Perl is not always in a standard place ($binexp/perl).
+
+EOH
+               dflt="$binexp/perl"
+               rp="What path shall I use in \"eval 'exec'\"?"
+               . ./myread
+               perlpath="$ans"
+               ;;
+       esac
+       ;;
+esac
+case "$startperl" in
+*!*)   ;;
+*)     echo "I'll use $perlpath in \"eval 'exec'\"" ;;
+esac
+
+: determine where public executable scripts go
+set scriptdir scriptdir
+eval $prefixit
+case "$scriptdir" in
+'')
+       dflt="$bin"
+       : guess some guesses
+       $test -d /usr/share/scripts && dflt=/usr/share/scripts
+       $test -d /usr/share/bin && dflt=/usr/share/bin
+       $test -d /usr/local/script && dflt=/usr/local/script
+       $test -d $prefixexp/script && dflt=$prefixexp/script
+       set dflt
+       eval $prefixup
+       ;;
+*)  dflt="$scriptdir"
+       ;;
+esac
+$cat <<EOM
+Some installations have a separate directory just for executable scripts so
+that they can mount it across multiple architectures but keep the scripts in
+one spot.  You might, for example, have a subdirectory of /usr/share for this.
+Or you might just lump your scripts in with all your other executables.
+EOM
+fn=d~
+rp='Where do you keep publicly executable scripts?'
+. ./getfile
+if $test "X$ansexp" != "X$scriptdirexp"; then
+       installscript=''
+fi
+scriptdir="$ans"
+scriptdirexp="$ansexp"
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+scripts reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
+
+EOM
+       case "$installscript" in
+       '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installscript";;
+       esac
+       fn=de~
+       rp='Where will public scripts be installed?'
+       . ./getfile
+       installscript="$ans"
+else
+       installscript="$scriptdirexp"
+fi
+
+cat <<EOM
+
+Previous version of $package used the standard IO mechanisms as defined in
+<stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
+mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
+the default and is the only supported mechanism.  This abstraction
+layer can use AT&T's sfio (if you already have sfio installed) or
+fall back on standard IO.  This PerlIO abstraction layer is
+experimental and may cause problems with some extension modules.
+
+If this doesn't make any sense to you, just accept the default 'n'.
+EOM
+case "$useperlio" in
+$define|true|[yY]*)    dflt='y';;
+*) dflt='n';;
+esac
+rp='Use the experimental PerlIO abstraction layer?'
+. ./myread
+case "$ans" in
+y|Y) 
+       val="$define"
+       ;;     
+*)      
+       echo "Ok, doing things the stdio way"
+       val="$undef"
+       ;;
+esac
+set useperlio
+eval $setvar 
+
+: 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))
+char *myname = "gconvert";
+#endif
+#ifdef TRY_gcvt
+#define Gconvert(x,n,t,b) gcvt((x),(n),(b))
+char *myname = "gcvt";
+#endif
+#ifdef TRY_sprintf
+#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
+char *myname = "sprintf";
+#endif
+
+#include <stdio.h>
+
+int
+checkit(expect, got)
+char *expect;
+char *got;
+{
+    if (strcmp(expect, got)) {
+               printf("%s oddity:  Expected %s, got %s\n",
+                       myname, expect, got);
+               exit(1);
+       }
+}
+
+int
+main()
+{ 
+       char buf[64]; 
+       buf[63] = '\0';
+
+       /* This must be 1st test on (which?) platform */
+       /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
+       Gconvert(0.1, 8, 0, buf);
+       checkit("0.1", buf);
+
+       Gconvert(1.0, 8, 0, buf); 
+       checkit("1", buf);
+
+       Gconvert(0.0, 8, 0, buf); 
+       checkit("0", buf);
+
+       Gconvert(-1.0, 8, 0, buf); 
+       checkit("-1", buf);
+
+       /* Some Linux gcvt's give 1.e+5 here. */
+       Gconvert(100000.0, 8, 0, buf); 
+       checkit("100000", buf);
+       
+       /* Some Linux gcvt's give -1.e+5 here. */
+       Gconvert(-100000.0, 8, 0, buf); 
+       checkit("-100000", buf);
+
+       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 "I'll use $xxx_convert to convert floats into a string." >&4
+                       break;
+               else
+                       echo "...But $xxx_convert didn't work as I expected."
+               fi
+       else
+               echo "$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
+
+: 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 this is a unistd.h system
+set unistd.h i_unistd
+eval $inhdr
+
+: see if getpgrp exists
+set getpgrp d_getpgrp
+eval $inlibc
+
+echo "Checking to see which flavor of getpgrp is in use . . . "
+case "$d_getpgrp" in
+"$define")
+       echo " "
+       $cat >set.c <<EOP
+#$i_unistd I_UNISTD
+#include <sys/types.h>
+#ifdef I_UNISTD
+#  include <unistd.h>
+#endif
+main()
+{
+       if (getuid() == 0) {
+               printf("(I see you are running Configure as super-user...)\n");
+               setuid(1);
+       }
+#ifdef TRY_BSD_PGRP
+       if (getpgrp(1) == 0)
+               exit(0);
+#else
+       if (getpgrp() > 0)
+               exit(0);
+#endif
+       exit(1);
+}
+EOP
+       if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
+               echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
+               val="$define"
+       elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
+               echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
+               val="$undef"
+       else
+               echo "I can't seem to compile and run the test program."
+               if ./usg; then
+                       xxx="a USG one, i.e. you use getpgrp()."
+               else
+                       # SVR4 systems can appear rather BSD-ish.
+                       case "$i_unistd" in
+                       $undef)
+                               xxx="a BSD one, i.e. you use getpgrp(pid)."
+                               val="$define"
+                               ;;
+                       $define)
+                               xxx="probably a USG one, i.e. you use getpgrp()."
+                               val="$undef"
+                               ;;
+                       esac
+               fi
+               echo "Assuming your getpgrp is $xxx" >&4
+       fi
+       ;;
+*) val="$undef";;
+esac
+set d_bsdgetpgrp
+eval $setvar
+$rm -f set set.c
+
+: see if setpgrp exists
+set setpgrp d_setpgrp
+eval $inlibc
+
+echo "Checking to see which flavor of setpgrp is in use . . . "
+case "$d_setpgrp" in
+"$define")
+       echo " "
+       $cat >set.c <<EOP
+#$i_unistd I_UNISTD
+#include <sys/types.h>
+#ifdef I_UNISTD
+#  include <unistd.h>
+#endif
+main()
+{
+       if (getuid() == 0) {
+               printf("(I see you are running Configure as super-user...)\n");
+               setuid(1);
+       }
+#ifdef TRY_BSD_PGRP
+       if (-1 == setpgrp(1, 1))
+               exit(0);
+#else
+       if (setpgrp() != -1)
+               exit(0);
+#endif
+       exit(1);
+}
+EOP
+       if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
+               echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
+               val="$define"
+       elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
+               echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
+               val="$undef"
+       else
+               echo "I can't seem to compile and run the test program."
+               if ./usg; then
+                       xxx="a USG one, i.e. you use setpgrp()."
+               else
+                       # SVR4 systems can appear rather BSD-ish.
+                       case "$i_unistd" in
+                       $undef)
+                               xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
+                               val="$define"
+                               ;;
+                       $define)
+                               xxx="probably a USG one, i.e. you use setpgrp()."
+                               val="$undef"
+                               ;;
+                       esac
+               fi
+               echo "Assuming your setpgrp is $xxx" >&4
+       fi
+       ;;
+*) val="$undef";;
+esac
+set d_bsdsetpgrp
+eval $setvar
+d_bsdpgrp=$d_bsdsetpgrp
+$rm -f set set.c
+: see if bzero exists
+set bzero d_bzero
+eval $inlibc
+
+: check for lengths of integral types
+echo " "
+case "$intsize" in
+'')
+       echo "Checking to see how big your integers are..." >&4
+       $cat >intsize.c <<'EOCP'
+#include <stdio.h>
+main()
+{
+       printf("intsize=%d;\n", sizeof(int));
+       printf("longsize=%d;\n", sizeof(long));
+       printf("shortsize=%d;\n", sizeof(short));
+       fflush(stdout);
+       exit(0);
+}
+EOCP
+#      If $libs contains -lsfio, and sfio is mis-configured, then it
+#      sometimes (apparently) runs and exits with a 0 status, but with no
+#      output!.  Thus we check with test -s whether we actually got any 
+#      output.  I think it has to do with sfio's use of _exit vs. exit,
+#      but I don't know for sure.  --Andy Dougherty  1/27/97.
+       if $cc $optimize $ccflags $ldflags -o intsize intsize.c $libs >/dev/null 2>&1 && 
+       ./intsize > intsize.out 2>/dev/null && test -s intsize.out ; then
+               eval `$cat intsize.out`
+               echo "Your integers are $intsize bytes long."
+               echo "Your long integers are $longsize bytes long."
+               echo "Your short integers are $shortsize bytes long."
+       else
+               $cat >&4 <<EOM
+
+Help! I can't compile and run the intsize test program: please enlighten me!
+(This is probably a misconfiguration in your system or libraries, and
+you really ought to fix it.  Still, I'll try anyway.)
+
+EOM
+               dflt=4
+               rp="What is the size of an integer (in bytes)?"
+               . ./myread
+               intsize="$ans"
+               dflt=$intsize
+               rp="What is the size of a long integer (in bytes)?"
+               . ./myread
+               longsize="$ans"
+               dflt=2
+               rp="What is the size of a short integer (in bytes)?"
+               . ./myread
+               shortsize="$ans"
+       fi
+       ;;
+esac
+$rm -f intsize intsize.[co] intsize.out
+
+: 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$lib_ext "" $xlibpth`
+       if $test -z "$cryptlib"; then
+               cryptlib=`./loc Mlibcrypt$lib_ext "" $xlibpth`
+       else
+               cryptlib=-lcrypt
+       fi
+       if $test -z "$cryptlib"; then
+               cryptlib=`./loc Llibcrypt$lib_ext "" $xlibpth`
+       else
+               cryptlib=-lcrypt
+       fi
+       if $test -z "$cryptlib"; then
+               cryptlib=`./loc libcrypt$lib_ext "" $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
+set d_csh
+eval $setvar
+full_csh=$csh
+
+: see if cuserid exists
+set cuserid d_cuserid
+eval $inlibc
+
+: see if this is a limits.h system
+set limits.h i_limits
+eval $inhdr
+
+: 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_FLOAT
+#include <float.h>
+#endif
+#ifdef DBL_DIG
+printf("Contains DBL_DIG");
+#endif
+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
+               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
+
+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 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 dlfcn is available
+set dlfcn.h i_dlfcn
+eval $inhdr
+
+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"
+       ;;
+*)
+       dlext="none"
+       ;;
+esac
+
+: Check if dlsym need a leading underscore
+echo " "
+val="$undef"
+
+case "$dlsrc" in
+dl_dlopen.xs)
+       echo "Checking whether your dlsym() needs a leading underscore ..." >&4
+       $cat >dyna.c <<'EOM'
+fred () { }
+EOM
+
+$cat >fred.c<<EOM
+
+#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
+
+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") ;
+       fflush (stdout) ;
+       exit(0);
+    }
+    symbol = dlsym(handle, "fred") ;
+    if (symbol == NULL) {
+       /* try putting a leading underscore */
+       symbol = dlsym(handle, "_fred") ;
+       if (symbol == NULL) {
+           printf ("2\n") ;
+           fflush (stdout) ;
+           exit(0);
+       }
+       printf ("3\n") ;
+    }
+    else
+       printf ("4\n") ;
+    fflush (stdout) ;
+    exit(0);
+}
+EOM
+       : Call the object file tmp-dyna.o in case dlext=o.
+       if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
+               mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 && 
+               $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /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 "I can't compile and run the test program." >&4
+       fi
+       ;;
+esac
+               
+$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
+
+set d_dlsymun
+eval $setvar
+
+: see if dup2 exists
+set dup2 d_dup2
+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
+               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_open3
+eval $setvar
+$rm -f open3*
+
+: 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
+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
+               echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
+       fi
+       ;;
+*) echo "Using $hint value $o_nonblock.";;
+esac
+$rm -f try try.* .out core
+
+echo " "
+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);
+       }
+
+       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" = "$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
+$rm -f try try.* .out core head.c mtry
+
+: see if fchmod exists
+set fchmod d_fchmod
+eval $inlibc
+
+: see if fchown exists
+set fchown d_fchown
+eval $inlibc
+
+: see if this is an fcntl system
+set fcntl d_fcntl
+eval $inlibc
+
+: 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 getpgid exists
+set getpgid d_getpgid
+eval $inlibc
+
+: see if getpgrp2 exists
+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
+
+: see if gettimeofday or ftime exists
+set gettimeofday d_gettimeod
+eval $inlibc
+case "$d_gettimeod" in
+"$undef")
+       set ftime d_ftime 
+       eval $inlibc
+       ;;
+*)
+       val="$undef"; set d_ftime; eval $setvar
+       ;;
+esac
+case "$d_gettimeod$d_ftime" in
+"$undef$undef")
+       echo " "
+       echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
+       ;;
+esac
+
+: see if this is a netinet/in.h or sys/in.h system
+set netinet/in.h i_niin sys/in.h i_sysin
+eval $inhdr
+
+: see if htonl --and friends-- exists
+val=''
+set htonl val
+eval $inlibc
+
+: Maybe they are macros.
+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>
+#endif
+#ifdef I_SYS_IN
+#include <sys/in.h>
+#endif
+#ifdef htonl
+printf("Defined as a macro.");
+#endif
+EOM
+       $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
+
+: check whether inet_aton exists
+set inet_aton d_inetaton
+eval $inlibc
+
+: Look for isascii
+echo " "
+$cat >isascii.c <<'EOCP'
+#include <stdio.h>
+#include <ctype.h>
+main() {
+       int c = 'A';
+       if (isascii(c))
+               exit(0);
+       else
+               exit(1);
+}
+EOCP
+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." >&4
+       val="$undef"
+fi
+set d_isascii
+eval $setvar
+$rm -f isascii*
+
+: see if killpg exists
+set killpg d_killpg
+eval $inlibc
+
+: see if link exists
+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
+
+: see if memcpy exists
+set memcpy d_memcpy
+eval $inlibc
+
+: see if memmove exists
+set memmove d_memmove
+eval $inlibc
+
+: see if memset exists
+set memset d_memset
+eval $inlibc
+
+: see if mkdir exists
+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
+
+: see if msgget exists
+set msgget d_msgget
+eval $inlibc
+
+: see if msgsnd exists
+set msgsnd d_msgsnd
+eval $inlibc
+
+: see if msgrcv exists
+set msgrcv d_msgrcv
+eval $inlibc
+
+: see how much of the 'msg*(2)' library is present.
+h_msg=true
+echo " "
+case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
+*"$undef"*) h_msg=false;;
+esac
+: we could also check for sys/ipc.h ...
+if $h_msg && $test `./findhdr sys/msg.h`; then
+       echo "You have the full msg*(2) library." >&4
+       val="$define"
+else
+       echo "You don't have the full msg*(2) library." >&4
+       val="$undef"
+fi
+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
+echo " "
+case "$usemymalloc" in
+''|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*|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 return types of malloc and free
+echo " "
+$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>
+#endif
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+#ifdef TRY_MALLOC
+void *malloc();
+#endif
+#ifdef TRY_FREE
+void free();
+#endif
+END
+case "$malloctype" in
+'')
+       if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
+               malloctype='void *'
+       else
+               malloctype='char *'
+       fi
+       ;;
+esac
+echo "Your system wants malloc to return '$malloctype', it would seem." >&4
+
+case "$freetype" in
+'')
+       if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
+               freetype='void'
+       else
+               freetype='int'
+       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 pause exists
+set pause d_pause
+eval $inlibc
+
+: 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
+               val="$undef"
+       fi
+       set d_pwquota
+       eval $setvar
+
+       if $contains 'pw_age' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwage
+       eval $setvar
+
+       if $contains 'pw_change' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwchange
+       eval $setvar
+
+       if $contains 'pw_class' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwclass
+       eval $setvar
+
+       if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwexpire
+       eval $setvar
+
+       if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
+               val="$define"
+       else
+               val="$undef"
+       fi
+       set d_pwcomment
+       eval $setvar
+
+       $rm -f $$.h
+       ;;
+*)
+       val="$undef"; 
+       set d_pwquota; eval $setvar
+       set d_pwage; eval $setvar
+       set d_pwchange; eval $setvar
+       set d_pwclass; eval $setvar
+       set d_pwexpire; eval $setvar
+       set d_pwcomment; eval $setvar
+       ;;
+esac
+
+: see if readdir and friends exist
+set readdir d_readdir
+eval $inlibc
+set seekdir d_seekdir
+eval $inlibc
+set telldir d_telldir
+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
+
+: see if rmdir exists
+set rmdir d_rmdir
+eval $inlibc
+
+: see if memory.h is available.
+val=''
+set memory.h val
+eval $inhdr
+
+: See if it conflicts with string.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
+
+: can bcopy handle overlapping blocks?
+val="$undef"
+case "$d_bcopy" in
+"$define")
+       echo " "
+       echo "Checking to see if your bcopy() can do overlapping copies..." >&4
+       $cat >foo.c <<EOCP
+#$i_memory I_MEMORY
+#$i_stdlib I_STDLIB
+#$i_string I_STRING
+#$i_unistd I_UNISTD
+EOCP
+       $cat >>foo.c <<'EOCP'
+#include <stdio.h>
+
+#ifdef I_MEMORY
+#  include <memory.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+#ifdef I_STRING
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
+#ifdef I_UNISTD
+#  include <unistd.h>  /* Needed for NetBSD */
+#endif
+main()
+{
+char buf[128], abc[128];
+char *b;
+int len;
+int off;
+int align;
+
+/* Copy "abcde..." string to char abc[] so that gcc doesn't
+   try to store the string in read-only memory.  */
+bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
+
+for (align = 7; align >= 0; align--) {
+       for (len = 36; len; len--) {
+               b = buf+align;
+               bcopy(abc, b, len);
+               for (off = 1; off <= len; off++) {
+                       bcopy(b, b+off, len);
+                       bcopy(b+off, b, len);
+                       if (bcmp(b, abc, len))
+                               exit(1);
+               }
+       }
+}
+exit(0);
+}
+EOCP
+       if $cc $optimize $ccflags $ldflags foo.c \
+                   -o safebcpy $libs >/dev/null 2>&1; then
+               if ./safebcpy 2>/dev/null; then
+                       echo "Yes, it can."
+                       val="$define"
+               else
+                       echo "It can't, sorry."
+                       case "$d_memmove" in
+                       "$define") echo "But that's Ok since you have memmove()." ;;
+                       esac
+               fi
+       else
+               echo "(I can't compile the test program, so we'll assume not...)"
+               case "$d_memmove" in
+               "$define") echo "But that's Ok since you have memmove()." ;;
+               esac
+       fi
+       ;;
+esac
+$rm -f foo.* safebcpy core
+set d_safebcpy
+eval $setvar
+
+: can memcpy handle overlapping blocks?
+val="$undef"
+case "$d_memcpy" in
+"$define")
+       echo " "
+       echo "Checking to see if your memcpy() can do overlapping copies..." >&4
+       $cat >foo.c <<EOCP
+#$i_memory I_MEMORY
+#$i_stdlib I_STDLIB
+#$i_string I_STRING
+#$i_unistd I_UNISTD
+EOCP
+       $cat >>foo.c <<'EOCP'
+#include <stdio.h>
+
+#ifdef I_MEMORY
+#  include <memory.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+#ifdef I_STRING
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
+#ifdef I_UNISTD
+#  include <unistd.h>  /* Needed for NetBSD */
+#endif
+main()
+{
+char buf[128], abc[128];
+char *b;
+int len;
+int off;
+int align;
+
+/* Copy "abcde..." string to char abc[] so that gcc doesn't
+   try to store the string in read-only memory. */
+memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
+
+for (align = 7; align >= 0; align--) {
+       for (len = 36; len; len--) {
+               b = buf+align;
+               memcpy(b, abc, len);
+               for (off = 1; off <= len; off++) {
+                       memcpy(b+off, b, len);
+                       memcpy(b, b+off, len);
+                       if (memcmp(b, abc, len))
+                               exit(1);
+               }
+       }
+}
+exit(0);
+}
+EOCP
+       if $cc $optimize $ccflags $ldflags foo.c \
+                   -o safemcpy $libs >/dev/null 2>&1; then
+               if ./safemcpy 2>/dev/null; then
+                       echo "Yes, it can."
+                       val="$define"
+               else
+                       echo "It can't, sorry."
+                       case "$d_memmove" in
+                       "$define") echo "But that's Ok since you have memmove()." ;;
+                       esac
+               fi
+       else
+               echo "(I can't compile the test program, so we'll assume not...)"
+               case "$d_memmove" in
+               "$define") echo "But that's Ok since you have memmove()." ;;
+               esac
+       fi
+       ;;
+esac
+$rm -f foo.* safemcpy core
+set d_safemcpy
+eval $setvar
+
+: can memcmp be trusted to compare relative magnitude?
+val="$undef"
+case "$d_memcmp" in
+"$define")
+       echo " "
+       echo "Checking to see if your memcmp() can compare relative magnitude..." >&4
+       $cat >foo.c <<EOCP
+#$i_memory I_MEMORY
+#$i_stdlib I_STDLIB
+#$i_string I_STRING
+#$i_unistd I_UNISTD
+EOCP
+       $cat >>foo.c <<'EOCP'
+#include <stdio.h>
+
+#ifdef I_MEMORY
+#  include <memory.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+#ifdef I_STRING
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
+#ifdef I_UNISTD
+#  include <unistd.h>  /* Needed for NetBSD */
+#endif
+main()
+{
+char a = -1;
+char b = 0;
+if ((a < b) && memcmp(&a, &b, 1) < 0)
+       exit(1);
+exit(0);
+}
+EOCP
+       if $cc $optimize $ccflags $ldflags foo.c \
+                   -o sanemcmp $libs >/dev/null 2>&1; then
+               if ./sanemcmp 2>/dev/null; then
+                       echo "Yes, it can."
+                       val="$define"
+               else
+                       echo "No, it can't (it uses signed chars)."
+               fi
+       else
+               echo "(I can't compile the test program, so we'll assume not...)"
+       fi
+       ;;
+esac
+$rm -f foo.* sanemcmp core
+set d_sanemcmp
+eval $setvar
+
+: see if select exists
+set select d_select
+eval $inlibc
+
+: see if semctl exists
+set semctl d_semctl
+eval $inlibc
+
+: see if semget exists
+set semget d_semget
+eval $inlibc
+
+: see if semop exists
+set semop d_semop
+eval $inlibc
+
+: see how much of the 'sem*(2)' library is present.
+h_sem=true
+echo " "
+case "$d_semctl$d_semget$d_semop" in
+*"$undef"*) h_sem=false;;
+esac
+: we could also check for sys/ipc.h ...
+if $h_sem && $test `./findhdr sys/sem.h`; then
+       echo "You have the full sem*(2) library." >&4
+       val="$define"
+else
+       echo "You don't have the full sem*(2) library." >&4
+       val="$undef"
+fi
+set d_sem
+eval $setvar
+
+: see if setegid exists
+set setegid d_setegid
+eval $inlibc
+
+: see if seteuid exists
+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 setpgrp2 exists
+set setpgrp2 d_setpgrp2
+eval $inlibc
+
+: see if setpriority exists
+set setpriority d_setprior
+eval $inlibc
+
+: see if setregid exists
+set setregid d_setregid
+eval $inlibc
+set setresgid d_setresgid
+eval $inlibc
+
+: see if setreuid exists
+set setreuid d_setreuid
+eval $inlibc
+set setresuid d_setresuid
+eval $inlibc
+
+: see if setrgid exists
+set setrgid d_setrgid
+eval $inlibc
+
+: see if setruid exists
+set setruid d_setruid
+eval $inlibc
+
+: see if setsid exists
+set setsid d_setsid
+eval $inlibc
+
+: see if sfio.h is available
+set sfio.h i_sfio
+eval $inhdr
+
 
-case "$models" in
-none)
-    small=''
-    medium=''
-    large=''
-    huge=''
-    unsplit=''
-    split=''
-    ;;
-*split)
-    case "$split" in
-    '') 
-       if $contains '\-i' $mansrc/man1/ld.1 >/dev/null 2>&1 || \
-          $contains '\-i' $mansrc/man1/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? [$dflt]"
-    $echo $n "$rp $c"
-    . myread
-    case "$ans" in
-    none) ans='';;
-    esac
-    split="$ans"
-    unsplit=''
-    ;;
-*large*|*small*|*medium*|*huge*)
-    case "$models" in
-    *large*)
-       case "$large" in
-       '') dflt='-Ml';;
-       *) dflt="$large";;
-       esac
-       rp="What flag indicates large model? [$dflt]"
-       $echo $n "$rp $c"
-       . myread
-       case "$ans" in
-       none) ans='';
-       esac
-       large="$ans"
+: see if sfio library is available
+case "$i_sfio" in
+$define)
+       val=''
+       set sfreserve val
+       eval $inlibc
        ;;
-    *) large='';;
-    esac
-    case "$models" in
-    *huge*)
-       case "$huge" in
-       '') dflt='-Mh';;
-       *) dflt="$huge";;
-       esac
-       rp="What flag indicates huge model? [$dflt]"
-       $echo $n "$rp $c"
-       . myread
-       case "$ans" in
-       none) ans='';
-       esac
-       huge="$ans"
+*)
+       val="$undef"
        ;;
-    *) huge="$large";;
-    esac
-    case "$models" in
-    *medium*)
-       case "$medium" in
-       '') dflt='-Mm';;
-       *) dflt="$medium";;
-       esac
-       rp="What flag indicates medium model? [$dflt]"
-       $echo $n "$rp $c"
-       . myread
-       case "$ans" in
-       none) ans='';
+esac
+: Ok, but do we want to use it.
+case "$val" in
+$define)
+       case "$usesfio" in
+       true|$define|[yY]*) dflt='y';;
+       *) dflt='n';;
        esac
-       medium="$ans"
-       ;;
-    *) medium="$large";;
-    esac
-    case "$models" in
-    *small*)
-       case "$small" in
-       '') dflt='none';;
-       *) dflt="$small";;
-       esac
-       rp="What flag indicates small model? [$dflt]"
-       $echo $n "$rp $c"
-       . myread
+       echo "$package can use the sfio library, but it is experimental."
+       rp="You seem to have sfio available, do you want to try using it?"
+       . ./myread
        case "$ans" in
-       none) ans='';
+       y|Y) ;;
+       *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
+               val="$undef"
+               : Remove sfio from list of libraries to use
+               set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
+               shift
+               libs="$*"
+               echo "libs = $libs" >&4
+               ;;
        esac
-       small="$ans"
        ;;
-    *) small='';;
-    esac
-    ;;
-*)
-    echo "Unrecognized memory models--you may have to edit Makefile.SH"
-    ;;
-esac
-
-: 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'
+*)     case "$usesfio" in
+       true|$define|[yY]*)
+               echo "Sorry, cannot find sfio on this machine" >&4
+               echo "Ignoring your setting of usesfio=$usesfio" >&4
                ;;
-           *)
-               if $contains '\-M' $mansrc/cc.1 >/dev/null 2>&1 ; then
-                   dflt='cc -M'
-               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.  What command will force resolution on
-EOM
-    $echo $n "this system? [$dflt] $c"
-    rp="Command to resolve multiple refs? [$dflt]"
-    . myread
-    cc="$ans"
-else
-    case "$cc" in
-    '') dflt=cc;;
-    *) dflt="$cc";;
-    esac
-    rp="Use which C compiler? [$dflt]"
-    $echo $n "$rp $c"
-    . myread
-    cc="$ans"
-fi
-case "$cc" in
-gcc*) cpp=`./loc gcc-cpp $cpp $pth`;;
 esac
-
-: determine optimize, if desired, or use for debug flag also
-case "$optimize" in
-' ') dflt="none"
-     ;;
-'') dflt="-O";
-    ;;
-*)  dflt="$optimize"
-    ;;
+set d_sfio
+eval $setvar
+case "$d_sfio" in
+$define) usesfio='true';;
+*) usesfio='false';;
 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? [$dflt]"
-$echo $n "$rp $c"
-. myread
-optimize="$ans"
-case "$optimize" in
-'none') optimize=" "
-     ;;
-esac
+: see if shmctl exists
+set shmctl d_shmctl
+eval $inlibc
 
-case "$ccflags" in
-'') case "$cc" in
-    *gcc*) dflt='-fpcc-struct-return';;
-    *) dflt='';;
-    esac
-    ;;
-*) dflt="$ccflags";;
-esac
-for thisincl in $inclwanted; do
-    if test -d $thisincl; then
-       case "$dflt" in
-       *$thisincl*);;
-       *) dflt="$dflt -I$thisincl";;
-       esac
-    fi
-done
-case "$optimize" in
--g*)
-    case "$dflt" in
-    *DEBUGGING*);;
-    *) dflt="$dflt -DDEBUGGING";;
-    esac
-    ;;
-esac
-if $contains 'LANGUAGE_C' /usr/include/signal.h >/dev/null 2>&1; then
-    case "$dflt" in
-    *LANGUAGE_C*);;
-    *) dflt="$dflt -DLANGUAGE_C";;
-    esac
-fi
-case "$dflt" in
-'') dflt=none;;
-esac
-cat <<EOH
+: see if shmget exists
+set shmget d_shmget
+eval $inlibc
 
-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.  To use no flags, specify the word "none".
-  
-EOH
-rp="Any additional cc flags? [$dflt]"
-$echo $n "$rp $c"
-. myread
-case "$ans" in
-none) ans='';
+: see if shmat exists
+set shmat d_shmat
+eval $inlibc
+: see what shmat returns
+case "$d_shmat" in
+"$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
-ccflags="$ans"
+set d_shmatprototype
+eval $setvar
 
-: the following weeds options from ccflags that are of no interest to cpp
-cppflags="$ccflags"
-case "$cc" in
-*gcc*) cppflags="$cppflags -D__GNUC__";;
-esac
-case "$cppflags" in
-'');;
-*)  set X $cppflags
-    cppflags=''
-    for flag do
-       case $flag in
-       -D*|-I*) cppflags="$cppflags $flag";;
-       esac
-    done
-    case "$cppflags" in
-    *-*)  echo "(C preprocessor flags: $cppflags)";;
-    esac
-    ;;
-esac
+: see if shmdt exists
+set shmdt d_shmdt
+eval $inlibc
 
-case "$ldflags" in
-'') if venix; then
-       dflt='-i -z'
-    else
-       dflt='none'
-    fi
-    ;;
-*) dflt="$ldflags";;
-esac
+: see how much of the 'shm*(2)' library is present.
+h_shm=true
 echo " "
-rp="Any additional ld flags (NOT including libraries)? [$dflt]"
-$echo $n "$rp $c"
-. myread
-case "$ans" in
-none) ans='';
+case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
+*"$undef"*) h_shm=false;;
 esac
-ldflags="$ans"
-rmlist="$rmlist pdp11"
+: we could also check for sys/ipc.h ...
+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"
+fi
+set d_shm
+eval $setvar
 
 echo " "
-echo "Checking for optional libraries..."
-dflt=''
-case "$libswanted" in
-'') libswanted='c_s';;
-esac
-for thislib in $libswanted; do
-    case "$thislib" in
-    dbm) thatlib=ndbm;;
-    *_s) thatlib=NONE;;
-    *) thatlib="${thislib}_s";;
-    *) thatlib=NONE;;
-    esac
-    xxx=`./loc lib$thislib.a X /usr/ccs/lib /usr/lib /usr/local/lib /lib`
-    if test -f $xxx; then
-       echo "Found -l$thislib."
-       case "$dflt" in
-       *-l$thislib*|*-l$thatlib*);;
-       *) dflt="$dflt -l$thislib";;
-       esac
-    else
-       xxx=`./loc lib$thislib.a X $libpth`
-       if test -f $xxx; then
-           echo "Found $xxx."
-           case "$dflt" in
-           *$xxx*);;
-           *) dflt="$dflt $xxx";;
-           esac
-       else
-           xxx=`./loc Slib$thislib.a X $xlibpth`
-           if test -f $xxx; then
-               echo "Found -l$thislib."
-               case "$dflt" in
-               *-l$thislib*|*-l$thatlib*);;
-               *) dflt="$dflt -l$thislib";;
-               esac
-           else
-               echo "No -l$thislib."
-           fi
-       fi
-    fi
-done
-set X $dflt
-shift
-dflt="$*"
-case "$libs" in
-'') dflt="$dflt";;
-*) dflt="$libs";;
-esac
-case "$dflt" in
-'') dflt='none';;
-esac
+: see if we have sigaction
+if set sigaction val -f d_sigaction; eval $csym; $val; then
+       echo 'sigaction() found.' >&4
+       val="$define"
+else
+       echo 'sigaction NOT found.' >&4
+       val="$undef"
+fi
 
-$cat <<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
+$cat > set.c <<'EOP'
+/* Solaris 2.5_x86 with SunWorks Pro C 3.0.1 doesn't have a complete
+   sigaction structure if compiled with cc -Xc.  This compile test
+   will fail then.  <doughera@lafcol.lafayette.edu>
+*/
+#include <stdio.h>
+#include <sys/types.h>
+#include <signal.h>
+main()
+{
+    struct sigaction act, oact;
+}
+EOP
 
-echo " "
-rp="Any additional libraries? [$dflt]"
-$echo $n "$rp $c"
-. myread
-case "$ans" in
-none) ans='';
-esac
-libs="$ans"
+if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
+       :
+else
+       echo "But you don't seem to have a useable struct sigaction." >&4
+       val="$undef"
+fi
+set d_sigaction; eval $setvar
+$rm -f set set.o set.c
 
-: check for ordering of bytes in a long
-case "$byteorder" in
+: see if sigsetjmp exists
+echo " "
+case "$d_sigsetjmp" in
 '')
-cat <<'EOM'
-  
-In the following, larger digits indicate more significance.  A big-endian
-machine like a Pyramid or a Motorola 680?0 chip will come out to 4321.  A
-little-endian machine like a Vax or an Intel 80?86 chip would be 1234.  Other
-machines may have weird orders like 3412.  A Cray will report 87654321.  If
-the test program works the default is probably right.
-I'm now running the test program...
-EOM
-    $cat >try.c <<'EOCP'
-#include <stdio.h>
+       $cat >set.c <<'EOP'
+#include <setjmp.h>
+sigjmp_buf env;
+int set = 1;
 main()
 {
-    int i;
-    union {
-       unsigned long l;
-       char c[sizeof(long)];
-    } u;
-
-    if (sizeof(long) > 4)
-       u.l = (0x08070605<<32) | 0x04030201;
-    else
-       u.l = 0x04030201;
-    for (i=0; i < sizeof(long); i++)
-       printf("%c",u.c[i]+'0');
-    printf("\n");
+       if (sigsetjmp(env,1))
+               exit(set);
+       set = 0;
+       siglongjmp(env, 1);
+       exit(1);
 }
-EOCP
-    if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
-       dflt=`./try`
-       case "$dflt" in
-       ????|????????) echo "(The test program ran ok.)";;
-       *) echo "(The test program didn't run right for some reason.)";;
+EOP
+       if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then
+               if ./set >/dev/null 2>&1; then
+                       echo "POSIX sigsetjmp found." >&4
+                       val="$define"
+               else
+                       $cat >&4 <<EOM
+Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
+I'll ignore them.
+EOM
+                       val="$undef"
+               fi
+       else
+               echo "sigsetjmp not found." >&4
+               val="$undef"
+       fi
+       ;;
+*) val="$d_sigsetjmp"
+       case "$d_sigsetjmp" in
+       $define) echo "POSIX sigsetjmp found." >&4;;
+       $undef) echo "sigsetjmp not found." >&4;;
        esac
-    else
-       dflt='4321'
-       echo "(I can't seem to compile the test program.  Guessing big-endian...)"
-    fi
-    ;;
-*)
-    echo " "
-    dflt="$byteorder"
-    ;;
+       ;;
 esac
-rp="What is the order of bytes in a long? [$dflt]"
-$echo $n "$rp $c"
-. myread
-byteorder="$ans"
-$rm -f try.c try
+set d_sigsetjmp
+eval $setvar
+$rm -f set.c set
 
-: see how we invoke the C preprocessor
+socketlib=''
+sockethdr=''
+: see whether socket exists
 echo " "
-echo "Now, how can we feed standard input to your C preprocessor..."
-cat <<'EOT' >testcpp.c
-#define ABC abc
-#define XYZ xyz
-ABC.XYZ
-EOT
-echo 'Maybe "'"$cc"' -E" will work...'
-$cc -E <testcpp.c >testcpp.out 2>&1
-: try to force gcc preprocessor if that is the compiler they are using
-case $? in
-0) cppstdin="$cc -E";;
-*) case "$cc" in
-    *gcc*)
-       cd ..
-       echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
-       echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
-       chmod 755 cppstdin
-       cppstdin=`pwd`/cppstdin
-       cppminus='';
-       cd UU
-       $cppstdin <testcpp.c >testcpp.out 2>&1
-       ;;
-    esac
-    ;;
-esac
-if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-    echo "Yup, it does."
-    cppstdin="$cc -E"
-    cppminus='';
+$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
-    echo 'Nope...maybe "'"$cc"' -E -" will work...'
-    $cc -E - <testcpp.c >testcpp.out 2>&1
-    if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yup, it does."
-       cppstdin="$cc -E"
-       cppminus='-';
-    else
-       echo 'No such luck, maybe "'$cpp'" will work...'
-       $cpp <testcpp.c >testcpp.out 2>&1
-       if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-           echo "It works!"
-           cppstdin="$cpp"
-           cppminus='';
-       else
-           echo 'Nixed again...maybe "'$cpp' -" will work...'
-           $cpp - <testcpp.c >testcpp.out 2>&1
-           if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-               echo "Hooray, it works!  I was beginning to wonder."
-               cppstdin="$cpp"
-               cppminus='-';
-           else
-               echo 'Nope...maybe "'"$cc"' -P" will work...'
-               $cc -P <testcpp.c >testcpp.out 2>&1
-               if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-                   echo "Yup, that does."
-                   cppstdin="$cc -P"
-                   cppminus='';
-               else
-                   echo 'Nope...maybe "'"$cc"' -P -" will work...'
-                   $cc -P - <testcpp.c >testcpp.out 2>&1
-                   if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-                       echo "Yup, that does."
-                       cppstdin="$cc -P"
-                       cppminus='-';
-                   else
-                       echo 'Hmm...perhaps you already told me...'
-                       case "$cppstdin" in
-                       '') ;;
-                       *) $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1;;
-                       esac
-                       if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-                           echo "Hooray, you did!  I was beginning to wonder."
-                       else
-                           echo 'Uh-uh.  Time to get fancy...'
-                           cd ..
-                           echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)'
-                           echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin
-                           chmod 755 cppstdin
-                           cppstdin=`pwd`/cppstdin
-                           cppminus='';
-                           cd UU
-                           $cppstdin <testcpp.c >testcpp.out 2>&1
-                           if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-                               echo "Eureka!."
-                           else
-                               dflt=blurfl
-                               $echo $n "No dice.  I can't find a C preprocessor.  Name one: $c"
-                               rp='Name a C preprocessor:'
-                               . myread
-                               cppstdin="$ans"
-                               $cppstdin <testcpp.c >testcpp.out 2>&1
-                               if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-                                   echo "OK, that will do."
+       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$lib_ext..." >&4
+               if test -f /usr/lib/libnet$lib_ext; then
+                       ( (nm $nm_opt /usr/lib/libnet$lib_ext | eval $nm_extract) ||  \
+                       ar t /usr/lib/libnet$lib_ext) 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 "Sorry, I can't get that to work.  Go find one."
-                                   exit 1
+                                       echo "...using the old 4.1c interface, rather than 4.2" >&4
+                                       d_oldsock="$define"
                                fi
-                           fi
+                       else
+                               echo "or even in libnet$lib_ext, which is peculiar." >&4
+                               d_socket="$undef"
+                               d_oldsock="$undef"
                        fi
-                   fi
+               else
+                       echo "or anywhere else I see." >&4
+                       d_socket="$undef"
+                       d_oldsock="$undef"
                fi
-           fi
        fi
-    fi
 fi
-rm -f testcpp.c testcpp.out
 
-: get list of predefined functions in a handy place
+: see if socketpair exists
+set socketpair d_sockpair
+eval $inlibc
+
+: see if stat knows about block sizes
 echo " "
-case "$libc" in
-'') libc=unknown;;
-esac
-case "$libpth" in
-'') libpth='/usr/ccs/lib /lib /usr/lib /usr/local/lib';;
-esac
-case "$libs" in
-*-lc_s*) libc=`./loc libc_s.a $libc $libpth`
-esac
-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 $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
-           libnames="$libnames $try"
-           ;;
-       *) libnames="$libnames $thislib" ;;
-       esac
-    done
-    ;;
-esac
-set /usr/ccs/lib/libc.so
-test -f $1 || set /usr/lib/libc.so
-test -f $1 || set /usr/lib/libc.so.[0-9]*
-eval set \$$#
-if test -f "$1"; then
-    echo "Your shared C library is in $1."
-    libc="$1"
-elif test -f $libc; then
-    echo "Your C library is in $libc, like you said before."
-    if test $libc = "/lib/libc"; then
-       libc="$libc /lib/clib"
-    fi
-elif test -f /lib/libc.a; then
-    echo "Your C library is in /lib/libc.a.  You're normal."
-    libc=/lib/libc.a
+xxx=`./findhdr sys/stat.h`
+if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
+       if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
+               echo "Your stat() knows about block sizes." >&4
+               val="$define"
+       else
+               echo "Your stat() doesn't know about block sizes." >&4
+               val="$undef"
+       fi
 else
-    ans=`./loc libc.a blurfl/dyick $libpth`
-    if test ! -f "$ans"; then
-       ans=`./loc Slibc.a blurfl/dyick $xlibpth`
-    fi
-    if test ! -f "$ans"; then
-       ans=`./loc Mlibc.a blurfl/dyick $xlibpth`
-    fi
-    if test ! -f "$ans"; then
-       ans=`./loc Llibc.a blurfl/dyick $xlibpth`
-    fi
-    if test ! -f "$ans"; then
-       ans=`./loc libc blurfl/dyick $libpth`
-    fi
-    if test ! -f "$ans"; then
-       ans=`./loc clib blurfl/dyick $libpth`
-    else
-       libnames="$libnames "`./loc clib blurfl/dyick $libpth`
-    fi
-    if test -f "$ans"; then
-       echo "Your C library is in $ans, of all places."
-       libc=$ans
-    else
-       cat <<EOM
-I can't seem to find your C library.  I've looked in the following places:
-
-       $libpth
+       echo "Your stat() doesn't know about block sizes." >&4
+       val="$undef"
+fi
+set d_statblks
+eval $setvar
 
-None of these seems to contain your C library.  What is the full name
-EOM
-       dflt=None
-       $echo $n "of your C library? $c"
-       rp='C library full name?'
-       . myread
-       libc="$ans"
-    fi
+: see if _ptr and _cnt from stdio act std
+echo " "
+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
-echo " "
-set `echo $libc $libnames | tr ' ' '\012' | sort | uniq`
-$echo $n "Extracting names from $* for later perusal...$c"
-nm $* 2>/dev/null >libc.tmp
-$sed -n -e 's/^.* [ATDS]  *_[_.]*//p' -e 's/^.* [ATDS] //p' <libc.tmp >libc.list
-if $contains '^printf$' libc.list >/dev/null 2>&1; then
-    echo "done"
-else
-    $sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p' <libc.tmp >libc.list
-    $contains '^printf$' libc.list >/dev/null 2>&1 || \
-       $sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p' <libc.tmp >libc.list
-    $contains '^printf$' libc.list >/dev/null 2>&1 || \
-       $sed -n -e 's/^.* D __*//p' -e 's/^.* D //p' <libc.tmp >libc.list
-    $contains '^printf$' libc.list >/dev/null 2>&1 || \
-       $sed -n -e 's/^_//' \
-             -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p' <libc.tmp >libc.list
-    $contains '^printf$' libc.list >/dev/null 2>&1 || \
-       $sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p' \
-          <libc.tmp >libc.list
-    if $contains '^printf$' libc.list >/dev/null 2>&1; then
-       echo "done"
-    else
-       echo " "
-       echo "nm didn't seem to work right."
-       echo "Trying ar instead..."
-       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."
-       else
-           echo "ar didn't seem to work right."
-           echo "Maybe this is a Cray...trying bld instead..."
-           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."
-           else
-               echo "That didn't work either.  Giving up."
-               exit 1
-           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."
        fi
-    fi
+else
+       echo "Your stdio doesn't appear very std."
 fi
+$rm -f try.c try
+set d_stdstdio
+eval $setvar
 
-inlibc='echo " ";
-if $contains "^$1\$" libc.list >/dev/null 2>&1;
-then echo "$1() found"; eval "$2=$define";
-else echo "$1() not found"; eval "$2=$undef"; fi'
+: 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
 
-rmlist="$rmlist libc.tmp libc.list"
+: 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
 
-: see if bcmp exists
-set bcmp d_bcmp
-eval $inlibc
 
-: see if bcopy exists
-set bcopy d_bcopy
-eval $inlibc
+: 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 "And its _base field acts std."
+                       val="$define"
+               else
+                       echo "But its _base field isn't std."
+               fi
+       else
+               echo "However, it seems to be lacking the _base field."
+       fi
+       $rm -f try.c try
+       ;;
+esac
+set d_stdiobase
+eval $setvar
 
-: see if bzero exists
-set bzero d_bzero
+: see if strcoll exists
+set strcoll d_strcoll
 eval $inlibc
 
-: check for ability to cast negative floats to unsigned
+: check for structure copying
 echo " "
-echo 'Checking to see if your C compiler can cast negative float to unsigned'
+echo "Checking to see if your C compiler can copy structs..." >&4
 $cat >try.c <<'EOCP'
 main()
 {
-       double f = -123;
-       unsigned long along;
-       unsigned int aint;
-       unsigned short ashort;
+       struct blurfl {
+               int dyick;
+       } foo, bar;
 
-       along = (unsigned long)f;
-       aint = (unsigned int)f;
-       ashort = (unsigned short)f;
-       if (along == 0L || aint == 0 || ashort == 0)
-           exit(1);
-       else
-           exit(0);
+       foo = bar;
 }
 EOCP
-if $cc -o try $ccflags try.c >/dev/null 2>&1 && ./try; then
-    d_castneg="$define"
-    echo "Yup, it does."
+if $cc -c try.c >/dev/null 2>&1 ; then
+       val="$define"
+       echo "Yup, it can."
 else
-    d_castneg="$undef"
-    echo "Nope, it doesn't."
+       val="$undef"
+       echo "Nope, it can't."
 fi
+set d_strctcpy
+eval $setvar
 $rm -f try.*
 
-: see if sprintf is declared as int or pointer to char
+: see if strerror and/or sys_errlist[] exist
 echo " "
-cat >.ucbsprf.c <<'EOF'
-main() { char buf[10]; exit((unsigned long)sprintf(buf,"%s","foo") > 10L); }
-EOF
-if $cc $ccflags .ucbsprf.c -o .ucbsprf >/dev/null 2>&1 && .ucbsprf; then
-    echo "Your sprintf() returns (int)."
-    d_charsprf="$undef"
+if set strerror val -f d_strerror; eval $csym; $val; then
+       echo 'strerror() found.' >&4
+       d_strerror="$define"
+       d_strerrm='strerror(e)'
+       if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
+               echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
+               d_syserrlst="$define"
+       else
+       echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
+               d_syserrlst="$undef"
+       fi
+elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
+       $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
+       echo 'strerror() found in string header.' >&4
+       d_strerror="$define"
+       d_strerrm='strerror(e)'
+       if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
+               echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
+               d_syserrlst="$define"
+       else
+               echo "(You don't appear to have any sys_errlist[], how can this be?)"
+               d_syserrlst="$undef"
+       fi
+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 "Your sprintf() returns (char*)."
-    d_charsprf="$define"
+       echo 'strerror() and sys_errlist[] NOT found.' >&4
+       d_strerror="$undef"
+       d_syserrlst="$undef"
+       d_strerrm='"unknown"'
 fi
-/bin/rm -f .ucbsprf.c .ucbsprf
 
-: see if vprintf exists
-echo " "
-if $contains '^vprintf$' libc.list >/dev/null 2>&1; then
-    echo 'vprintf() found.'
-    d_vprintf="$define"
-    cat >.ucbsprf.c <<'EOF'
-#include <stdio.h>
-#include <varargs.h>
+: see if strtod exists
+set strtod d_strtod
+eval $inlibc
 
-main() { xxx("foo"); }
+: see if strtol exists
+set strtol d_strtol
+eval $inlibc
 
-xxx(va_alist)
-va_dcl
-{
-    va_list args;
-    char buf[10];
+: see if strtoul exists
+set strtoul d_strtoul
+eval $inlibc
 
-    va_start(args);
-    exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
-}
-EOF
-    if $cc $ccflags .ucbsprf.c -o .ucbsprf >/dev/null 2>&1 && .ucbsprf; then
-       echo "Your vsprintf() returns (int)."
-       d_charvspr="$undef"
-    else
-       echo "Your vsprintf() returns (char*)."
-       d_charvspr="$define"
-    fi
-    /bin/rm -f .ucbsprf.c .ucbsprf
-else
-    echo 'vprintf() not found.'
-    d_vprintf="$undef"
-    d_charvspr="$undef"
-fi
+: see if strxfrm exists
+set strxfrm d_strxfrm
+eval $inlibc
 
-: see if chsize exists
-set chsize d_chsize
+: see if symlink exists
+set symlink d_symlink
 eval $inlibc
 
-: see if crypt exists
+: 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 $contains '^crypt$' libc.list >/dev/null 2>&1; then
-    echo 'crypt() found.'
-    d_crypt="$define"
-    cryptlib=''
+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
-    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.'
-       d_crypt="$undef"
-    else
-       d_crypt="$define"
-    fi
+       echo 'times() NOT found, hope that will do.' >&4
+       d_times="$undef"
+       clocktype='int'
 fi
 
-: get csh whereabouts
-case "$csh" in
-'csh') d_csh="$undef" ;;
-*)     d_csh="$define" ;;
-esac
+: see if truncate exists
+set truncate d_truncate
+eval $inlibc
 
-: see if this is a dirent system
+: see if tzname[] exists
 echo " "
-if $test -r /usr/include/dirent.h ; then
-    i_dirent="$define"
-    echo "dirent.h found."
-    if $contains 'd_namlen' /usr/include/sys/dirent.h >/dev/null 2>&1; then
-       d_dirnamlen="$define"
-    else
-       d_dirnamlen="$undef"
-    fi
+if set tzname val -a d_tzname; eval $csym; $val; then
+       val="$define"
+       echo 'tzname[] found.' >&4
 else
-    i_dirent="$undef"
-    if $contains 'd_namlen' /usr/include/sys/dir.h >/dev/null 2>&1; then
-       d_dirnamlen="$define"
-    else
-       d_dirnamlen="$undef"
-    fi
-    echo "No dirent.h found."
+       val="$undef"
+       echo 'tzname[] NOT found.' >&4
 fi
+set d_tzname
+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.
+: 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
+               $cat <<'EOM'
+uname() was found, but you're running xenix, and older versions of xenix
+have a broken uname(). If you don't really know whether your xenix is old
+enough to have a broken system call, use the default answer.
 
 EOM
-rp="Do you want to do setuid/setgid emulation? [$dflt]"
-$echo $n "$rp $c"
-. myread
-case "$ans" in
-'') $ans="$dflt";;
+               dflt=y
+               case "$d_uname" in
+               "$define") dflt=n;;
+               esac
+               rp='Is your uname() broken?'
+               . ./myread
+               case "$ans" in
+               n*) d_uname="$define"; call=uname;;
+               esac
+       else
+               echo 'uname() found.' >&4
+               d_uname="$define"
+               call=uname
+       fi
+fi
+case "$d_gethname" in
+'') d_gethname="$undef";;
 esac
-case "$ans" in
-y*)  d_dosuid="$define";;
-*) d_dosuid="$undef";;
+case "$d_uname" in
+'') d_uname="$undef";;
+esac
+case "$d_phostname" in
+'') d_phostname="$undef";;
 esac
 
-: see if dup2 exists
-set dup2 d_dup2
+: 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
+val=''
+set vfork val
 eval $inlibc
 
-: see if fchmod exists
-set fchmod d_fchmod
-eval $inlibc
+: 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
+       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
+case "$d_vfork" in
+$define) usevfork='true';;
+*) usevfork='false';;
+esac
 
-: see if fchown exists
-set fchown d_fchown
+: 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
 
-: see if this is an fcntl system
+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 " "
-if $test -r /usr/include/fcntl.h ; then
-    d_fcntl="$define"
-    echo "fcntl.h found."
+echo 'Checking to see if your C compiler knows about "volatile"...' >&4
+$cat >try.c <<'EOCP'
+main()
+{
+       typedef struct _goo_struct goo_struct;
+       goo_struct * volatile goo = ((goo_struct *)0);
+       struct _goo_struct {
+               long long_int;
+               int reg_int;
+               char char_var;
+       };
+       typedef unsigned short foo_t;
+       char *volatile foo;
+       volatile int bar;
+       volatile foo_t blech;
+       foo = foo;
+}
+EOCP
+if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
+       val="$define"
+       echo "Yup, it does."
 else
-    d_fcntl="$undef"
-    echo "No fcntl.h found, but that's ok."
+       val="$undef"
+       echo "Nope, it doesn't."
 fi
+set d_volatile
+eval $setvar
+$rm -f try.*
 
-: see if flock exists
-set flock d_flock
-eval $inlibc
-
-: see if getgroups exists
-set getgroups d_getgrps
-eval $inlibc
-
-: see if gethostent exists
-set gethostent d_gethent
+: see if there is a wait4
+set wait4 d_wait4
 eval $inlibc
 
-: see if getpgrp exists
-set getpgrp d_getpgrp
+: see if waitpid exists
+set waitpid d_waitpid
 eval $inlibc
 
-: see if getpgrp2 exists
-set getpgrp2 d_getpgrp2
+: see if wcstombs exists
+set wcstombs d_wcstombs
 eval $inlibc
 
-: see if getpriority exists
-set getpriority d_getprior
+: see if wctomb exists
+set wctomb d_wctomb
 eval $inlibc
 
-: see if htonl exists
-set htonl d_htonl
-eval $inlibc
+: preserve RCS keywords in files with variable substitution, grrr
+Date='$Date'
+Id='$Id'
+Log='$Log'
+RCSfile='$RCSfile'
+Revision='$Revision'
 
-: index or strcpy
+: check for alignment requirements
 echo " "
-case "$d_index" in
-n) dflt=n;;
-*) dflt=y;;
+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
-if $contains '^index$' libc.list >/dev/null 2>&1 ; then
-    if $contains '^strchr$' libc.list >/dev/null 2>&1 ; then
-       echo "Your system has both index() and strchr().  Shall I use"
-       rp="index() rather than strchr()? [$dflt]"
-       $echo $n "$rp $c"
-       . myread
-       case "$ans" in
-           n*) d_index="$define" ;;
-           *)  d_index="$undef" ;;
+rp="Doubles must be aligned on a how-many-byte boundary?"
+. ./myread
+alignbytes="$ans"
+$rm -f try.c try
+
+: check for ordering of bytes in a long
+case "$byteorder" in
+'')
+       $cat <<'EOM'
+  
+In the following, larger digits indicate more significance.  A big-endian
+machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
+little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
+machines may have weird orders like 3412.  A Cray will report 87654321. If
+the test program works the default is probably right.
+I'm now running the test program...
+EOM
+       $cat >try.c <<'EOCP'
+#include <stdio.h>
+main()
+{
+       int i;
+       union {
+               unsigned long l;
+               char c[sizeof(long)];
+       } u;
+
+       if (sizeof(long) > 4)
+               u.l = (0x08070605L << 32) | 0x04030201L;
+       else
+               u.l = 0x04030201L;
+       for (i = 0; i < sizeof(long); i++)
+               printf("%c", u.c[i]+'0');
+       printf("\n");
+       exit(0);
+}
+EOCP
+       xxx_prompt=y
+       if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
+               dflt=`./try`
+               case "$dflt" in
+               [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'
+               cat <<'EOM'
+(I can't seem to compile the test program.  Guessing big-endian...)
+EOM
+       fi
+       case "$xxx_prompt" in
+       y)
+               rp="What is the order of bytes in a long?"
+               . ./myread
+               byteorder="$ans"
+               ;;
+       *)      byteorder=$dflt
+               ;;
        esac
-    else
-       d_index="$undef"
-       echo "index() found."
-    fi
-else
-    if $contains '^strchr$' libc.list >/dev/null 2>&1 ; then
-       d_index="$define"
-       echo "strchr() found."
-    else
-       echo "No index() or strchr() found!"
-       d_index="$undef"
-    fi
-fi
+       ;;
+esac
+$rm -f try.c try
 
-: see if ioctl defs are in sgtty/termio or sys/ioctl
+: how do we catenate cpp tokens here?
 echo " "
-if $test -r /usr/include/sys/ioctl.h ; then
-    d_ioctl="$define"
-    echo "sys/ioctl.h found."
+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
-    d_ioctl="$undef"
-    echo "sys/ioctl.h not found, assuming ioctl args are defined in sgtty.h."
+       $cat >&4 <<EOM
+Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
+to have to edit the values of CAT[2-5] in config.h...
+EOM
+       cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
 fi
+$rm -f cpp_stuff.*
 
-: see if there is System V IPC
-set msgget d_ipcmsg
-eval $inlibc
-
-set semget d_ipcsem
-eval $inlibc
-
-set shmget d_ipcshm
-eval $inlibc
+: see if this is a db.h system
+set db.h i_db
+eval $inhdr
 
-case "$d_ipcmsg$d_ipcsem$d_ipcshm" in
-*define*) d_sysvipc="$define";;
-*) d_sysvipc="$undef";;
+case "$i_db" in
+$define)
+       : Check db version.  We can not use version 2.
+       echo " "
+       echo "Checking Berkeley DB version ..." >&4
+       $cat >try.c <<EOCP
+#$d_const HASCONST
+#ifndef HASCONST
+#define const
+#endif
+#include <sys/types.h>
+#include <stdio.h>
+#include <db.h>
+main()
+{
+#ifdef DB_VERSION_MAJOR
+    printf("You have Berkeley DB Version %d.%d\n",
+               DB_VERSION_MAJOR, DB_VERSION_MINOR);
+    printf("Perl currently only supports up to version 1.86.\n");
+    exit(1);
+#else
+    exit(0);
+#endif
+}
+EOCP
+       if $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try; then
+               echo 'Looks OK.  (Perl supports up to version 1.86).' >&4
+       else
+               echo "I can't use your Berkeley DB.  I'll disable it." >&4
+               i_db=$undef
+               case " $libs " in
+               *"-ldb "*)
+                       : Remove db from list of libraries to use
+                       echo "Removing unusable -ldb from library list" >&4
+                       set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
+                       shift
+                       libs="$*"
+                       echo "libs = $libs" >&4
+                       ;;
+               esac
+       fi
+       $rm -f try.*
+       ;;
 esac
 
-: see if killpg exists
-set killpg d_killpg
-eval $inlibc
-
-: see if lstat exists
-set lstat d_lstat
-eval $inlibc
-
-: see if memcmp exists
-set memcmp d_memcmp
-eval $inlibc
-
-: see if memcpy exists
-set memcpy d_memcpy
-eval $inlibc
+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
+               : XXX Maybe we should just give up here.
+               db_hashtype=u_int32_t
+               echo "Help:  I can't seem to compile the db test program." >&4
+               echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
+       fi
+       $rm -f try.*
+       echo "Your version of Berkeley DB uses $db_hashtype for hash."
+       ;;
+*)     db_hashtype=u_int32_t
+       ;;
+esac
 
-: see if mkdir exists
-set mkdir d_mkdir
-eval $inlibc
+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
+               db_prefixtype='size_t'
+               : XXX Maybe we should just give up here.
+               echo "Help:  I can't seem to compile the db test program." >&4
+               echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
+       fi
+       $rm -f try.*
+       echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
+       ;;
+*)     db_prefixtype='size_t'
+       ;;
+esac
 
-: see if ndbm is available
+: check for void type
 echo " "
-xxx=`./loc ndbm.h x /usr/include /usr/local/include $inclwanted`
-if test -f $xxx; then
-    d_ndbm="$define"
-    echo "ndbm.h found."
-else
-    d_ndbm="$undef"
-    echo "ndbm.h not found."
-fi
-
-: see if we have the old dbm
+echo "Checking to see how well your C compiler groks the void type..." >&4
 echo " "
-xxx=`./loc dbm.h x /usr/include /usr/local/include $inclwanted`
-if test -f $xxx; then
-    d_odbm="$define"
-    echo "dbm.h found."
-else
-    d_odbm="$undef"
-    echo "dbm.h not found."
-fi
-
-socketlib=''
-: see whether socket exists
+$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 " "
-if $contains socket libc.list >/dev/null 2>&1; then
-    echo "Looks like you have Berkeley networking support."
-    d_socket="$define"
-    : now check for advanced features
-    if $contains setsockopt libc.list >/dev/null 2>&1; then
-       d_oldsock="$undef"
-    else
-       echo "...but it uses the old 4.1c interface, rather than 4.2"
-       d_oldsock="$define"
-    fi
-else
-    : hpux, for one, puts all the socket stuff in socklib.o
-    if $contains socklib libc.list >/dev/null 2>&1; then
-       echo "Looks like you have Berkeley networking support."
-       d_socket="$define"
-       : we will have to assume that it supports the 4.2 BSD interface
-       d_oldsock="$undef"
-    else
-       echo "Hmmm...you don't have Berkeley networking in libc.a..."
-       : look for an optional networking library
-       if test -f /usr/lib/libnet.a; then
-           (ar t /usr/lib/libnet.a ||
-               nm -g /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."
-               socketlib="-lnet"
-               d_socket="$define"
-               : now check for advanced features
-               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"
-                   d_oldsock="$define"
+case "$voidflags" in
+'')
+       $cat >try.c <<'EOCP'
+#if TRY & 1
+void sub() {
+#else
+sub() {
+#endif
+       extern void moo();      /* function returning void */
+       void (*goo)();          /* ptr to func returning void */
+#if TRY & 8
+       void *hue;              /* generic ptr */
+#endif
+#if TRY & 2
+       void (*foo[10])();
+#endif
+
+#if TRY & 4
+       if(goo == moo) {
+               exit(0);
+       }
+#endif
+       exit(0);
+}
+main() { sub(); }
+EOCP
+       if $cc $ccflags -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 "or even in libnet.a, which is peculiar."
-               d_socket="$undef"
-               d_oldsock="$undef"
-           fi
        else
-           echo "or anywhere else I see."
-           d_socket="$undef"
-           d_oldsock="$undef"
+echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
+               if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
+                       echo "It supports 1..."
+                       if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
+                               echo "It also supports 2..."
+                               if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
+                                       voidflags=7
+                                       echo "And it supports 4 but not 8 definitely."
+                               else
+                                       echo "It doesn't support 4..."
+                                       if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
+                                               voidflags=11
+                                               echo "But it supports 8."
+                                       else
+                                               voidflags=3
+                                               echo "Neither does it support 8."
+                                       fi
+                               fi
+                       else
+                               echo "It does not support 2..."
+                               if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
+                                       voidflags=13
+                                       echo "But it supports 4 and 8."
+                               else
+                                       if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
+                                               voidflags=5
+                                               echo "And it supports 4 but has not heard about 8."
+                                       else
+                                               echo "However it supports 8 but not 4."
+                                       fi
+                               fi
+                       fi
+               else
+                       echo "There is no support at all for void."
+                       voidflags=0
+               fi
        fi
-    fi
-fi
-if $contains socketpair libc.list >/dev/null 2>&1; then
-    d_sockpair="$define"
-else
-    d_sockpair="$undef"
-fi
+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"
+       ;;
+esac
+$rm -f try.* .out
 
-: see if this is a pwd system
+: see what type file positions are declared as in the library
+set fpos_t fpostype long stdio.h sys/types.h
+eval $typedef
 echo " "
-if $test -r /usr/include/pwd.h ; then
-    i_pwd="$define"
-    echo "pwd.h found."
-    $cppstdin $cppflags $cppminus </usr/include/pwd.h >$$.h
-    if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
-       d_pwcomment="$define"
-    else
-       d_pwcomment="$undef"
-    fi
-    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"
-    else
-       d_pwchange="$undef"
-    fi
-    if $contains 'pw_class' $$.h >/dev/null 2>&1; then
-       d_pwclass="$define"
-    else
-       d_pwclass="$undef"
-    fi
-    if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
-       d_pwexpire="$define"
-    else
-       d_pwexpire="$undef"
-    fi
-    rm -f $$.h
-else
-    i_pwd="$undef"
-    d_pwcomment="$undef"
-    d_pwquota="$undef"
-    d_pwage="$undef"
-    d_pwchange="$undef"
-    d_pwclass="$undef"
-    d_pwexpire="$undef"
-    echo "No pwd.h found."
-fi
-
-: see if readdir exists
-set readdir d_readdir
-eval $inlibc
-
-: see if rename exists
-set rename d_rename
-eval $inlibc
+dflt="$fpostype"
+rp="What is the type for file position used by fsetpos()?"
+. ./myread
+fpostype="$ans"
 
-: see if rmdir exists
-set rmdir d_rmdir
-eval $inlibc
-
-: see if select exists
-set select d_select
-eval $inlibc
+: Store the full pathname to the sed program for use in the C program
+full_sed=$sed
 
-: see if setegid exists
-set setegid d_setegid
-eval $inlibc
+: 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
+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";;
+esac
+echo " "
+rp="What is the type for group ids returned by getgid()?"
+. ./myread
+gidtype="$ans"
 
-: see if seteuid exists
-set seteuid d_seteuid
+: see if getgroups exists
+set getgroups d_getgrps
 eval $inlibc
 
-: see if setpgrp exists
-set setpgrp d_setpgrp
+: see if setgroups exists
+set setgroups d_setgrps
 eval $inlibc
 
-: see if setpgrp2 exists
-set setpgrp2 d_setpgrp2
-eval $inlibc
+: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
+echo " "
+case "$d_getgrps$d_setgrps" in
+*define*)
+       case "$groupstype" in
+       '') dflt="$gidtype" ;;
+       *)  dflt="$groupstype" ;;
+       esac
+       $cat <<EOM
+What is the type of the second argument to getgroups() and setgroups()?
+Usually this is the same as group ids, $gidtype, but not always.
 
-: see if setpriority exists
-set setpriority d_setprior
-eval $inlibc
+EOM
+       rp='What type is the second argument to getgroups() and setgroups()?'
+       . ./myread
+       groupstype="$ans"
+       ;;
+*)  groupstype="$gidtype";;
+esac
 
-: see if setregid exists
-set setregid d_setregid
-eval $inlibc
-set setresgid d_setresgid
-eval $inlibc
+: see what type lseek is declared as in the kernel
+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"
 
-: see if setreuid exists
-set setreuid d_setreuid
-eval $inlibc
-set setresuid d_setresuid
-eval $inlibc
+echo " "
+case "$make" in
+'')
+       make=`./loc make make $pth`
+       case "$make" in
+       /*)     echo make is in $make.  ;;
+       ?:[\\/]*)       echo make is in $make.  ;;
+       *)      echo "I don't know where 'make' is, and my life depends on it." >&4
+               echo "Go find a make program or fix your PATH setting!" >&4
+               exit 1
+               ;;
+       esac
+       ;;
+*)     echo make is in $make. ;;
+esac
 
-: see if setrgid exists
-set setrgid d_setrgid
-eval $inlibc
+$echo $n "Checking if your $make program sets \$(MAKE)... $c" >&4
+case "$make_set_make" in
+'')
+       $sed 's/^X //' > testmake.mak << 'EOF'
+Xall:
+X      @echo 'ac_maketemp="$(MAKE)"'
+EOF
+       : GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+       case "`$make -f testmake.mak 2>/dev/null`" in
+       *ac_maketemp=*) make_set_make='#' ;;
+       *)      make_set_make="MAKE=$make" ;;
+       esac
+       $rm -f testmake.mak
+       ;;
+esac
+case "$make_set_make" in
+'#')   echo "Yup, it does." >&4 ;;
+*)     echo "Nope, it doesn't." >&4 ;;
+esac
 
-: see if setruid exists
-set setruid d_setruid
-eval $inlibc
+: 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"
 
-: see if stat knows about block sizes
+: locate the preferred pager for this system
+case "$pager" in
+'')
+       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 " "
-if $contains 'st_blocks;' /usr/include/sys/stat.h >/dev/null 2>&1 ; then
-    if $contains 'st_blksize;' /usr/include/sys/stat.h >/dev/null 2>&1 ; then
-       echo "Your stat knows about block sizes."
-       d_statblks="$define"
-    else
-       echo "Your stat doesn't know about block sizes."
-       d_statblks="$undef"
-    fi
-else
-    echo "Your stat doesn't know about block sizes."
-    d_statblks="$undef"
-fi
+fn=f/
+rp='What pager is used on your system?'
+. ./getfile
+pager="$ans"
 
-: see if stdio is really std
+: Cruising for prototypes
 echo " "
-if $contains 'char.*_ptr.*;' /usr/include/stdio.h >/dev/null 2>&1 ; then
-    if $contains '_cnt;' /usr/include/stdio.h >/dev/null 2>&1 ; then
-       echo "Your stdio is pretty std."
-       d_stdstdio="$define"
-    else
-       echo "Your stdio isn't very std."
-       d_stdstdio="$undef"
-    fi
+echo "Checking out function prototypes..." >&4
+$cat >prototype.c <<'EOCP'
+main(int argc, char *argv[]) {
+       exit(0);}
+EOCP
+if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
+       echo "Your C compiler appears to support function prototypes."
+       val="$define"
 else
-    echo "Your stdio isn't very std."
-    d_stdstdio="$undef"
+       echo "Your C compiler doesn't seem to understand function prototypes."
+       val="$undef"
 fi
+set prototype
+eval $setvar
+$rm -f prototype*
 
-: check for structure copying
+: check for size of random number generator
 echo " "
-echo "Checking to see if your C compiler can copy structs..."
-$cat >try.c <<'EOCP'
+case "$randbits" in
+'')
+       echo "Checking to see how many bits your rand function produces..." >&4
+       $cat >try.c <<EOCP
+#$i_unistd I_UNISTD
+#$i_stdlib I_STDLIB
+#include <stdio.h>
+#ifdef I_UNISTD
+#  include <unistd.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+EOCP
+       $cat >>try.c <<'EOCP'
 main()
 {
-       struct blurfl {
-           int dyick;
-       } foo, bar;
+       register int i;
+       register unsigned long tmp;
+       register unsigned long max = 0L;
+
+       for (i = 1000; i; i--) {
+               tmp = (unsigned long)rand();
+               if (tmp > max) max = tmp;
+       }
+       for (i = 0; max; i++)
+               max /= 2;
+       printf("%d\n",i);
+       fflush(stdout);
+}
+EOCP
+       if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 ; then
+               dflt=`try`
+       else
+               dflt='?'
+               echo "(I can't seem to compile the test program...)"
+       fi
+       ;;
+*)
+       dflt="$randbits"
+       ;;
+esac
+rp='How many bits does your rand() function produce?'
+. ./myread
+randbits="$ans"
+$rm -f try.c try.o try
 
-       foo = bar;
-}
-EOCP
-if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
-    d_strctcpy="$define"
-    echo "Yup, it can."
+: 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$lib_ext bar2.o bar1.o >/dev/null 2>&1
+if $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $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$lib_ext >/dev/null 2>&1 &&
+       $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $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
-    d_strctcpy="$undef"
-    echo "Nope, it can't."
+       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 try.*
-
-: see if strerror exists
-set strerror d_strerror
-eval $inlibc
-
-: see if symlink exists
-set symlink d_symlink
-eval $inlibc
+$rm -f foo* bar* 
 
-: see if syscall exists
-set syscall d_syscall
-eval $inlibc
+: see if sys/select.h has to be included
+set sys/select.h i_sysselct
+eval $inhdr
 
 : see if we should include time.h, sys/time.h, or both
-cat <<'EOM'
-  
-Testing to see if we should include <time.h>, <sys/time.h> or both.
-I'm now running the test program...
-EOM
+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
@@ -2067,834 +8727,1812 @@ $cat >try.c <<'EOCP'
 #endif
 #include <sys/time.h>
 #endif
+#ifdef I_SYSSELECT
+#include <sys/select.h>
+#endif
 main()
 {
-    struct tm foo;
+       struct tm foo;
 #ifdef S_TIMEVAL
-    struct timeval bar;
+       struct timeval bar;
 #endif
-    if (foo.tm_sec == foo.tm_sec)
-       exit(0);
+#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);
+       if (bar.tv_sec == bar.tv_sec)
+               exit(0);
 #endif
-    exit(1);
+       exit(1);
 }
 EOCP
 flags=''
+for s_timezone in '-DS_TIMEZONE' ''; do
+sysselect=''
 for s_timeval in '-DS_TIMEVAL' ''; do
-    for d_systimekernel in '' '-DSYSTIMEKERNEL'; do
-       for i_time in '' '-DI_TIME'; do
-           for i_systime in '-DI_SYSTIME' ''; do
-               case "$flags" in
-               '') echo Trying $i_time $i_systime $d_systimekernel $s_timeval
-                   if $cc $ccflags \
-                           $i_time $i_systime $d_systimekernel $s_timeval \
-                           try.c -o try >/dev/null 2>&1 ; then
-                       set X $i_time $i_systime $d_systimekernel $s_timeval
+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 Succeeded with $flags
-                   fi
-                   ;;
-               esac
-           done
-       done
-    done
+                       echo " "
+                       $echo $n "Succeeded with $flags$c"
+               fi
+               ;;
+       esac
+done
 done
+done
+done
+done
+timeincl=''
+echo " "
 case "$flags" in
-*SYSTIMEKERNEL*) d_systimekernel="$define";;
-*) d_systimekernel="$undef";;
+*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";;
+*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";;
+*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
 
-: see if truncate exists
-set truncate d_truncate
-eval $inlibc
+: check for fd_set items
+$cat <<EOM
 
-: see if this is a varargs system
-echo " "
-if $test -r /usr/include/varargs.h ; then
-    d_varargs="$define"
-    echo "varargs.h found."
+Checking to see how well your C compiler handles fd_set and friends ...
+EOM
+$cat >fd_set.c <<EOCP
+#$i_systime I_SYS_TIME
+#$i_sysselct I_SYS_SELECT
+#$d_socket HAS_SOCKET
+#include <sys/types.h>
+#ifdef HAS_SOCKET
+#include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
+#endif
+#ifdef I_SYS_TIME
+#include <sys/time.h>
+#endif
+#ifdef I_SYS_SELECT
+#include <sys/select.h>
+#endif
+main() {
+       fd_set fds;
+
+#ifdef TRYBITS
+       if(fds.fds_bits);
+#endif
+
+#if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
+       exit(0);
+#else
+       exit(1);
+#endif
+}
+EOCP
+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
-    d_varargs="$undef"
-    echo "No varargs.h found, but that's ok (I hope)."
+       $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
+                       $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
+               ;;
+       *)      xxx="$selecttype" 
+               ;;
+       esac
+       : backup guess
+       case "$xxx" in
+       'fd_set *') yyy='int *' ;;
+       'int *') yyy='fd_set *' ;;
+       esac
 
-: see if there is a vfork
-set vfork d_vfork
-eval $inlibc
+       $cat <<EOM
 
-: see if signal is declared as pointer to function returning int or void
-echo " "
-$cppstdin $cppflags $cppminus < /usr/include/signal.h >$$.tmp
-if $contains 'void.*signal' $$.tmp >/dev/null 2>&1 ; then
-    echo "You have void (*signal())() instead of int."
-    d_voidsig="$define"
+Checking to see what type of arguments are expected by select().
+EOM
+       $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
+#ifdef I_SYS_TIME
+#include <sys/time.h>
+#endif
+#ifdef I_SYS_SELECT
+#include <sys/select.h>
+#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 $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
+               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
+
+: 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() {
+
+/* Strange style to avoid deeply-nested #if/#else/#endif */
+#ifndef NSIG
+#  ifdef _NSIG
+#    define NSIG (_NSIG)
+#  endif
+#endif
+
+#ifndef NSIG
+#  ifdef SIGMAX
+#    define NSIG (SIGMAX+1)
+#  endif
+#endif
+
+#ifndef NSIG
+#  ifdef SIG_MAX
+#    define NSIG (SIG_MAX+1)
+#  endif
+#endif
+
+#ifndef NSIG
+#  ifdef MAXSIG
+#    define NSIG (MAXSIG+1)
+#  endif
+#endif
+
+#ifndef NSIG
+#  ifdef MAX_SIG
+#    define NSIG (MAX_SIG+1)
+#  endif
+#endif
+
+#ifndef NSIG
+#  ifdef SIGARRAYSIZE
+#    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
+#  endif
+#endif
+
+#ifndef NSIG
+#  ifdef _sys_nsig
+#    define NSIG (_sys_nsig) /* Solaris 2.5 */
+#  endif
+#endif
+
+/* Default to some arbitrary number that's big enough to get most
+   of the common signals.
+*/
+#ifndef NSIG
+#    define NSIG 50
+#endif
+
+printf("NSIG %d\n", NSIG);
+
+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 "You have int (*signal())() instead of void."
-    d_voidsig="$undef"
+       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 $$.tmp
+$rm -f signal.c signal signal.o
+EOS
+chmod a+x signal_cmd
+$eunicefix signal_cmd
 
-: check for volatile keyword
+: generate list of signal names
 echo " "
-echo 'Checking to see if your C compiler knows about "volatile"...'
-$cat >try.c <<'EOCP'
+case "$sig_name" in
+'')    sig_num='' ;;
+esac
+case "$sig_num" in
+'')    sig_name='' ;;
+esac
+case "$sig_name" in
+'')
+       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()
 {
-       typedef unsigned short foo_t;
-       char *volatile foo;
-       volatile int bar;
-       volatile foo_t blech;
-       foo = foo;
+       if (sizeof(Size_t) == sizeof(SSize_t))
+               printf("$dflt\n");
+       else if (sizeof(Size_t) == sizeof(int))
+               printf("int\n");
+       else 
+               printf("long\n");
+       fflush(stdout);
+       exit(0);
 }
-EOCP
-if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
-    d_volatile="$define"
-    echo "Yup, it does."
+EOM
+echo " "
+#      If $libs contains -lsfio, and sfio is mis-configured, then it
+#      sometimes (apparently) runs and exits with a 0 status, but with no
+#      output!.  Thus we check with test -s whether we actually got any 
+#      output.  I think it has to do with sfio's use of _exit vs. exit,
+#      but I don't know for sure.  --Andy Dougherty  1/27/97.
+if $cc $optimize $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1  &&
+               ./ssize > ssize.out 2>/dev/null && test -s ssize.out ; then
+       ssizetype=`$cat ssize.out`
+       echo "I'll be using $ssizetype for functions returning a byte count." >&4
 else
-    d_volatile="$undef"
-    echo "Nope, it doesn't."
+       $cat >&4 <<EOM
+
+Help! I can't compile and run the ssize_t test program: please enlighten me!
+(This is probably a misconfiguration in your system or libraries, and
+you really ought to fix it.  Still, I'll try anyway.)
+
+I need a type that is the same size as $sizetype, but is guaranteed to
+be signed.  Common values are ssize_t, int and long.
+
+EOM
+       rp="What signed type is the same size as $sizetype?"
+       . ./myread
+       ssizetype="$ans"
 fi
-$rm -f try.*
+$rm -f ssize ssize.[co] ssize.out
 
-: see if there is a wait4
-set wait4 d_wait4
-eval $inlibc
+: 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"
+else
+       echo "Your stdio uses signed chars." >&4
+       stdchar="char"
+fi
 
-: see if there is a waitpid
-set waitpid d_waitpid
-eval $inlibc
+: 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
+set d_time
+eval $setvar
 
-: check for void type
+: 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 " "
-$cat <<EOM
-Checking to see how well your C compiler groks the void type...
+rp="What is the type for user ids returned by getuid()?"
+. ./myread
+uidtype="$ans"
 
-  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.
+: see if dbm.h is available
+: see if dbmclose exists
+set dbmclose d_dbmclose
+eval $inlibc
 
-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 & 2
-       void (*foo[10])();
-#endif
+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
 
-#if TRY & 4
-       if(goo == moo) {
-               exit(0);
-       }
-#endif
-       exit(0);
+: see if this is a sys/file.h system
+val=''
+set sys/file.h val
+eval $inhdr
+
+: do we need to include sys/file.h ?
+case "$val" in
+"$define")
+       echo " "
+       if $h_sysfile; then
+               val="$define"
+               echo "We'll be including <sys/file.h>." >&4
+       else
+               val="$undef"
+               echo "We won't be including <sys/file.h>." >&4
+       fi
+       ;;
+*)
+       h_sysfile=false
+       ;;
+esac
+set i_sysfile
+eval $setvar
+
+: see if fcntl.h is there
+val=''
+set fcntl.h val
+eval $inhdr
+
+: see if we can include fcntl.h
+case "$val" in
+"$define")
+       echo " "
+       if $h_fcntl; then
+               val="$define"
+               echo "We'll be including <fcntl.h>." >&4
+       else
+               val="$undef"
+               if $h_sysfile; then
+       echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
+               else
+                       echo "We won't be including <fcntl.h>." >&4
+               fi
+       fi
+       ;;
+*)
+       h_fcntl=false
+       val="$undef"
+       ;;
+esac
+set i_fcntl
+eval $setvar
+
+: see if this is an grp system
+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 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
+val="$t_ndbm"
+set i_ndbm
+eval $setvar
+
+: see if net/errno.h is available
+val=''
+set net/errno.h val
+eval $inhdr
+
+: Unfortunately, it causes problems on some systems.  Arrgh.
+case "$val" in
+$define)
+       cat > try.c <<'EOM'
+#include <stdio.h>
+#include <errno.h>
+#include <net/errno.h>
+int func()
+{
+       return ENOTSOCK;
 }
-EOCP
-    if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
-       voidflags=$defvoidused
-       echo "It appears to support void."
-       if $contains warning .out >/dev/null 2>&1; then
-           echo "However, you might get some warnings that look like this:"
-           $cat .out
+EOM
+       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
-    else
-       echo "Hmm, your compiler has some difficulty with void.  Checking further..."
-       if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1 ; then
-           echo "It supports 1..."
-           if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1 ; then
-               voidflags=3
-               echo "And it supports 2 but not 4."
-           else
-               echo "It doesn't support 2..."
-               if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1 ; then
-                   voidflags=5
-                   echo "But it supports 4."
+       $rm -f try.* try
+       ;;
+esac
+set i_neterrno
+eval $setvar
+
+: get C preprocessor symbols handy
+echo " "
+$echo $n "Hmm... $c"
+echo $al | $tr ' ' '\012' >Cppsym.know
+$cat <<EOSS >Cppsym
+$startsh
+case "\$1" in
+-l) list=true
+       shift
+       ;;
+esac
+unknown=''
+case "\$list\$#" in
+1|2)
+       for sym do
+               if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
+                       exit 0
+               elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
+                       :
                else
-                   voidflags=1
-                   echo "And it doesn't support 4."
+                       unknown="\$unknown \$sym"
                fi
-           fi
-       else
-           echo "There is no support at all for void."
-           voidflags=0
-       fi
-    fi
+       done
+       set X \$unknown
+       shift
+       ;;
 esac
-dflt="$voidflags";
-rp="Your void support flags add up to what? [$dflt]"
-$echo $n "$rp $c"
-. myread
-voidflags="$ans"
-$rm -f try.* .out
-
-: see what type gids are declared as in the kernel
-echo " "
-case "$gidtype" in
-'')
-    if $contains 'getgroups.*short' /usr/lib/lint/llib-lc >/dev/null 2>&1; then
-       dflt='short'
-    elif $contains 'getgroups.*int' /usr/lib/lint/llib-lc >/dev/null 2>&1; then
-       dflt='int'
-    elif $contains 'gid_t;' /usr/include/sys/types.h >/dev/null 2>&1 ; then
-       dflt='gid_t'
-    else
-       set `grep 'groups\[NGROUPS\];' /usr/include/sys/user.h 2>/dev/null` unsigned short
-       case $1 in
-       unsigned) dflt="$1 $2" ;;
-       *) dflt="$1" ;;
-       esac
-    fi
-    ;;
-*)  dflt="$gidtype"
-    ;;
+case \$# in
+0) exit 1;;
 esac
-cont=true
-echo "(The following only matters if you have getgroups().)"
-rp="What type are the group ids returned by getgroups()? [$dflt]"
-$echo $n "$rp $c"
-. myread
-gidtype="$ans"
+echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
+#ifdef \1\\
+exit 0; _ _ _ _\1\\     \1\\
+#endif\\
+/' >Cppsym\$\$
+echo "exit 1; _ _ _" >>Cppsym\$\$
+$cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
+case "\$list" in
+true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
+*)
+       sh Cppsym2\$\$
+       status=\$?
+       ;;
+esac
+$rm -f Cppsym\$\$ Cppsym2\$\$
+exit \$status
+EOSS
+chmod +x Cppsym
+$eunicefix Cppsym
+./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
 
-: see if this is an fcntl system
-echo " "
-if $test -r /usr/include/fcntl.h ; then
-    i_fcntl="$define"
-    echo "fcntl.h found."
+: 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
-    i_fcntl="$undef"
-    echo "No fcntl.h found, but that's ok."
+       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
-
-: see if this is an grp system
-echo " "
-if $test -r /usr/include/grp.h ; then
-    i_grp="$define"
-    echo "grp.h found."
-else
-    i_grp="$undef"
-    echo "No grp.h found."
+$rm -f ccsym*
+
+: see if this is a termio system
+val="$undef"
+val2="$undef"
+val3="$undef"
+if $test `./findhdr termios.h`; then
+       set tcsetattr i_termios
+       eval $inlibc
+       val3="$i_termios"
 fi
-
-: see if this is a netinet/in.h system
 echo " "
-xxx=`./loc netinet/in.h x /usr/include /usr/local/include $inclwanted`
-if test -f $xxx; then
-    i_niin="$define"
-    echo "netinet/in.h found."
-else
-    i_niin="$undef"
-    echo "No netinet/in.h found."
-fi
+case "$val3" in
+"$define") echo "You have POSIX termios.h... good!" >&4;;
+*) if ./Cppsym pyr; then
+               case "`/bin/universe`" in
+               ucb) if $test `./findhdr sgtty.h`; then
+                               val2="$define"
+                               echo "<sgtty.h> found." >&4
+                       else
+                               echo "System is pyramid with BSD universe."
+                               echo "<sgtty.h> not found--you could have problems." >&4
+                       fi;;
+               *) if $test `./findhdr termio.h`; then
+                               val="$define"
+                               echo "<termio.h> found." >&4
+                       else
+                               echo "System is pyramid with USG universe."
+                               echo "<termio.h> not found--you could have problems." >&4
+                       fi;;
+               esac
+       elif ./usg; then
+               if $test `./findhdr termio.h`; then
+                       echo "<termio.h> found." >&4
+                       val="$define"
+               elif $test `./findhdr sgtty.h`; then
+                       echo "<sgtty.h> found." >&4
+                       val2="$define"
+               else
+echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
+               fi
+       else
+               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 this is a sys/dir.h system
+: see if stdarg is available
 echo " "
-if $test -r /usr/include/sys/dir.h ; then
-    i_sysdir="$define"
-    echo "sys/dir.h found."
+if $test `./findhdr stdarg.h`; then
+       echo "<stdarg.h> found." >&4
+       valstd="$define"
 else
-    i_sysdir="$undef"
-    echo "No sys/dir.h found."
+       echo "<stdarg.h> NOT found." >&4
+       valstd="$undef"
 fi
 
-: see if ioctl defs are in sgtty/termio or sys/ioctl
+: see if varags is available
 echo " "
-if $test -r /usr/include/sys/ioctl.h ; then
-    i_sysioctl="$define"
-    echo "sys/ioctl.h found."
+if $test `./findhdr varargs.h`; then
+       echo "<varargs.h> found." >&4
 else
-    i_sysioctl="$undef"
-    echo "sys/ioctl.h not found, assuming ioctl args are defined in sgtty.h."
+       echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
 fi
 
-: see if this is a sys/ndir.h system
-echo " "
-xxx=`./loc sys/ndir.h x /usr/include /usr/local/include $inclwanted`
-if test -f $xxx; then
-    i_sysndir="$define"
-    echo "sys/ndir.h found."
-else
-    i_sysndir="$undef"
-    echo "No sys/ndir.h found."
-fi
+: set up the varargs testing programs
+$cat > varargs.c <<EOP
+#ifdef I_STDARG
+#include <stdarg.h>
+#endif
+#ifdef I_VARARGS
+#include <varargs.h>
+#endif
 
-: see if we should include utime.h
-echo " "
-if $test -r /usr/include/utime.h ; then
-    i_utime="$define"
-    echo "utime.h found."
+#ifdef I_STDARG
+int f(char *p, ...)
+#else
+int f(va_alist)
+va_dcl
+#endif
+{
+       va_list ap;
+#ifndef I_STDARG
+       char *p;
+#endif
+#ifdef I_STDARG
+       va_start(ap,p);
+#else
+       va_start(ap);
+       p = va_arg(ap, char *);
+#endif
+       va_end(ap);
+}
+EOP
+$cat > varargs <<EOP
+$startsh
+if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
+       echo "true"
 else
-    i_utime="$undef"
-    echo "No utime.h found, but that's ok."
+       echo "false"
 fi
+$rm -f varargs.o
+EOP
+chmod +x varargs
 
-: see if this is a varargs system
+: now check which varargs header should be included
 echo " "
-if $test -r /usr/include/varargs.h ; then
-    i_varargs="$define"
-    echo "varargs.h found."
-else
-    i_varargs="$undef"
-    echo "No varargs.h found, but that's ok (I hope)."
-fi
+i_varhdr=''
+case "$valstd" in
+"$define")
+       if `./varargs I_STDARG`; then
+               val='stdarg.h'
+       elif `./varargs I_VARARGS`; then
+               val='varargs.h'
+       fi
+       ;;
+*)
+       if `./varargs I_VARARGS`; then
+               val='varargs.h'
+       fi
+       ;;
+esac
+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
+       ;;
+*) 
+       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 this is a vfork system
+: 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 -r /usr/include/vfork.h ; then
-    i_vfork="$define"
-    echo "vfork.h found."
+if $test `./findhdr sys/ioctl.h`; then
+       val="$define"
+       echo '<sys/ioctl.h> found.' >&4
 else
-    i_vfork="$undef"
-    echo "No vfork.h found."
+       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
 
-: check for length of integer
-echo " "
-case "$intsize" in
-'')
-    echo "Checking to see how big your integers are..."
-    $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
-    ;;
-*)
-    dflt="$intsize"
-    ;;
-esac
-rp="What is the size of an integer (in bytes)? [$dflt]"
-$echo $n "$rp $c"
-. myread
-intsize="$ans"
-$rm -f try.c try
+: see if this is a sys/param system
+set sys/param.h i_sysparam
+eval $inhdr
 
-: determine where private executables go
-case "$privlib" in
-'')
-    dflt=/usr/lib/$package
-    test -d /usr/local/lib && dflt=/usr/local/lib/$package
-    ;;
-*)  dflt="$privlib"
-    ;;
-esac
-$cat <<EOM
+: see if sys/resource.h has to be included
+set sys/resource.h i_sysresrc
+eval $inhdr
 
-The $package package has some auxiliary files that should be put in a library
-that is accessible by everyone.  Where do you want to put these "private"
-EOM
-$echo $n "but accessible files? (~name ok) [$dflt] $c"
-rp="Put private files where? [$dflt]"
-. myread
-privlib=`./filexp "$ans"`
+: see if sys/stat.h is available
+set sys/stat.h i_sysstat
+eval $inhdr
 
-: check for size of random number generator
-echo " "
-case "$randbits" in
-'')
-    echo "Checking to see how many bits your rand function produces..."
-    $cat >try.c <<'EOCP'
-#include <stdio.h>
-main()
-{
-    register int i;
-    register unsigned long tmp;
-    register unsigned long max = 0L;
+: see if sys/types.h has to be included
+set sys/types.h i_systypes
+eval $inhdr
 
-    for (i=1000; i; i--) {
-       tmp = (unsigned long)rand();
-       if (tmp > max) max = tmp;
-    }
-    for (i=0; max; i++)
-       max /= 2;
-    printf("%d\n",i);
-}
-EOCP
-    if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
-       dflt=`./try`
-    else
-       dflt='?'
-       echo "(I can't seem to compile the test program...)"
-    fi
-    ;;
-*)
-    dflt="$randbits"
-    ;;
-esac
-rp="How many bits does your rand() function produce? [$dflt]"
-$echo $n "$rp $c"
-. myread
-randbits="$ans"
-$rm -f try.c try
+: see if this is a sys/un.h system
+set sys/un.h i_sysun
+eval $inhdr
 
-: generate list of signal names
-echo " "
-case "$sig_name" in
-'')
-    echo "Generating a list of signal names..."
-    set X `cat /usr/include/signal.h /usr/include/sys/signal.h 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
-    }
-}
+: see if this is a syswait system
+set sys/wait.h i_syswait
+eval $inhdr
 
-END {
-    for (i=1; i<=max; i++) {
-       if (sig[i] == "")
-           printf "%d", i
-       else
-           printf "%s", sig[i]
-       if (i < max)
-           printf " "
-    }
-    printf "\n"
-}
-'`
-    shift
-    case $# in
-    0)  echo 'kill -l' >/tmp/foo$$
-       set X `$csh -f </tmp/foo$$`
-       shift
-       case $# in
-       0)set HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM
-           ;;
-       esac
+: see if this is an utime system
+set utime.h i_utime
+eval $inhdr
+
+: see if this is a values.h system
+set values.h i_values
+eval $inhdr
+
+: see if this is a vfork system
+case "$d_vfork" in
+"$define")
+       set vfork.h i_vfork
+       eval $inhdr
+       ;;
+*)
+       i_vfork="$undef"
        ;;
-    esac
-    sig_name="ZERO $*"
-    ;;
 esac
-echo "Signals are: $sig_name"
-
-: see what type of char stdio uses.
-echo " "
-if $contains 'unsigned.*char.*_ptr.*;' /usr/include/stdio.h >/dev/null 2>&1 ; then
-    echo "Your stdio uses unsigned chars."
-    stdchar="unsigned char"
-else
-    echo "Your stdio uses signed chars."
-    stdchar="char"
-fi
 
-: see what type uids are declared as in the kernel
-case "$uidtype" in
-'')
-    if $contains 'uid_t;' /usr/include/sys/types.h >/dev/null 2>&1 ; then
-       dflt='uid_t';
-    else
-       set `grep '_ruid;' /usr/include/sys/user.h 2>/dev/null` unsigned short
-       case $1 in
-       unsigned) dflt="$1 $2" ;;
-       *) dflt="$1" ;;
+: 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
-    fi
-    ;;
-*)  dflt="$uidtype"
-    ;;
+       ;;
 esac
-cont=true
+val="$t_gdbm"
+set i_gdbm
+eval $setvar
+
 echo " "
-rp="What type are user ids returned by getuid(), etc.? [$dflt]"
-$echo $n "$rp $c"
-. myread
-uidtype="$ans"
+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
+    case "$xxx" in
+    DynaLoader) ;;
+    *) if $test -f $xxx/$xxx.xs; then
+           known_extensions="$known_extensions $xxx"
+       else
+           if $test -d $xxx; then
+               cd $xxx
+               for yyy in * ; do
+                   if $test -f $yyy/$yyy.xs; then
+                       known_extensions="$known_extensions $xxx/$yyy"
+                   fi
+               done
+               cd ..
+           fi
+       fi ;;
+    esac
+done
+set X $known_extensions
+shift
+known_extensions="$*"
+cd ../UU
 
-: preserve RCS keywords in files with variable substitution, grrr
-Log='$Log'
-Header='$Header'
+: 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
+           ;;
+    Opcode) case "$useopcode" 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="$*"
 
-: determine which malloc to compile in
-echo " "
-case "$usemymalloc" in
-'')
-    if bsd || v7; then
-       dflt='y'
-    else
-       dflt='n'
-    fi
-    ;;
-*)  dflt="$usemymalloc"
-    ;;
-esac
-rp="Do you wish to attempt to use the malloc that comes with $package? [$dflt]"
-$echo $n "$rp $c"
-. myread
-case "$ans" in
-'') ans=$dflt;;
-esac
-usemymalloc="$ans"
-case "$ans" in
-y*) mallocsrc='malloc.c'; mallocobj='malloc.o';;
-*) mallocsrc=''; mallocobj='';;
-esac
+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.
 
-: 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
-    ;;
-*)  dflt="$scriptdir"
-    ;;
-esac
-cont=true
-$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
-while $test "$cont" ; do
-    rp="Where do you keep publicly executable scripts? (~name ok) [$dflt]"
-    $echo $n "$rp $c"
-    . myread
-    scriptdir="$ans"
-    scriptdir=`./filexp "$scriptdir"`
-    if test -d $scriptdir; then
-       cont=''
-    else
-       case "$fastread" in
-       yes) dflt=y;;
-       *) dflt=n;;
+       case "$dynamic_ext" in
+       '') dflt="$avail_ext" ;;
+       *)      dflt="$dynamic_ext" ;;
        esac
-       rp="Directory $scriptdir doesn't exist.  Use that name anyway? [$dflt]"
-       $echo $n "$rp $c"
-       . myread
-       dflt=''
+       case "$dflt" in
+       '')     dflt=none;;
+       esac
+       rp="What extensions do you wish to load dynamically?"
+       . ./myread
        case "$ans" in
-       y*) cont='';;
+       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
-    fi
-done
 
-: determine compiler compiler
-case "$yacc" in
-'') dflt=yacc;;
-*)  dflt="$yacc";;
+       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
-cont=true
-    echo " "
-rp="Which compiler compiler (yacc or bison -y) will you use? [$dflt]"
-$echo $n "$rp $c"
-. myread
-case "$ans" in
-'') ans="$dflt";;
+
+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
-yacc="$ans"
+cd UU
 
+: end of configuration questions
 echo " "
 echo "End of configuration questions."
 echo " "
 
-: create config.sh file
-echo " "
+: back to where it started
 if test -d ../UU; then
-    cd ..
+       cd ..
+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
-echo "Creating config.sh..."
+
+: 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
-# config.sh
-# This file was produced by running the Configure script.
+#
+# This file was produced by running the Configure script.  It holds all
+# the definitions figured out by Configure.  Should you modify any of
+# these values, do not forget to propagate your changes by running
+# "Configure -S"; or, equivalently, you may run each .SH file yourself.
+#
 
-d_eunice='$d_eunice'
-define='$define'
-eunicefix='$eunicefix'
-loclist='$loclist'
-expr='$expr'
-sed='$sed'
-echo='$echo'
-cat='$cat'
-rm='$rm'
-mv='$mv'
-cp='$cp'
-tail='$tail'
-tr='$tr'
-mkdir='$mkdir'
-sort='$sort'
-uniq='$uniq'
-grep='$grep'
-trylist='$trylist'
-test='$test'
-inews='$inews'
-egrep='$egrep'
-more='$more'
-pg='$pg'
-Mcc='$Mcc'
-vi='$vi'
-mailx='$mailx'
-mail='$mail'
-cpp='$cpp'
-perl='$perl'
-emacs='$emacs'
-ls='$ls'
-rmail='$rmail'
-sendmail='$sendmail'
-shar='$shar'
-smail='$smail'
-tbl='$tbl'
-troff='$troff'
-nroff='$nroff'
-uname='$uname'
-uuname='$uuname'
-line='$line'
-chgrp='$chgrp'
-chmod='$chmod'
-lint='$lint'
-sleep='$sleep'
-pr='$pr'
-tar='$tar'
-ln='$ln'
-lpr='$lpr'
-lp='$lp'
-touch='$touch'
-make='$make'
-date='$date'
-csh='$csh'
-Log='$Log'
+# 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'
+alignbytes='$alignbytes'
+aphostname='$aphostname'
+ar='$ar'
+archlib='$archlib'
+archlibexp='$archlibexp'
+archname='$archname'
+archobjs='$archobjs'
+awk='$awk'
+baserev='$baserev'
+bash='$bash'
 bin='$bin'
+bincompat3='$bincompat3'
+binexp='$binexp'
+bison='$bison'
+byacc='$byacc'
 byteorder='$byteorder'
+c='$c'
+castflags='$castflags'
+cat='$cat'
+cc='$cc'
+cccdlflags='$cccdlflags'
+ccdlflags='$ccdlflags'
+ccflags='$ccflags'
+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'
-cppstdin='$cppstdin'
+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_bincompat3='$d_bincompat3'
+d_bsd='$d_bsd'
+d_bsdgetpgrp='$d_bsdgetpgrp'
+d_bsdpgrp='$d_bsdpgrp'
+d_bsdsetpgrp='$d_bsdsetpgrp'
 d_bzero='$d_bzero'
+d_casti32='$d_casti32'
 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'
 d_crypt='$d_crypt'
-cryptlib='$cryptlib'
 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_ftime='$d_ftime'
 d_getgrps='$d_getgrps'
+d_setgrps='$d_setgrps'
 d_gethent='$d_gethent'
-d_getpgrp='$d_getpgrp'
+d_gethname='$d_gethname'
+d_getlogin='$d_getlogin'
+d_getpgid='$d_getpgid'
 d_getpgrp2='$d_getpgrp2'
+d_getpgrp='$d_getpgrp'
+d_getppid='$d_getppid'
 d_getprior='$d_getprior'
+d_gettimeod='$d_gettimeod'
+d_gnulibc='$d_gnulibc'
 d_htonl='$d_htonl'
 d_index='$d_index'
-d_ioctl='$d_ioctl'
+d_inetaton='$d_inetaton'
+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_ndbm='$d_ndbm'
-d_odbm='$d_odbm'
+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_readlink='$d_readlink'
 d_rename='$d_rename'
+d_rewinddir='$d_rewinddir'
 d_rmdir='$d_rmdir'
+d_safebcpy='$d_safebcpy'
+d_safemcpy='$d_safemcpy'
+d_sanemcmp='$d_sanemcmp'
+d_seekdir='$d_seekdir'
 d_select='$d_select'
+d_sem='$d_sem'
+d_semctl='$d_semctl'
+d_semget='$d_semget'
+d_semop='$d_semop'
 d_setegid='$d_setegid'
 d_seteuid='$d_seteuid'
-d_setpgrp='$d_setpgrp'
+d_setlinebuf='$d_setlinebuf'
+d_setlocale='$d_setlocale'
+d_setpgid='$d_setpgid'
 d_setpgrp2='$d_setpgrp2'
+d_setpgrp='$d_setpgrp'
 d_setprior='$d_setprior'
 d_setregid='$d_setregid'
 d_setresgid='$d_setresgid'
-d_setreuid='$d_setreuid'
 d_setresuid='$d_setresuid'
+d_setreuid='$d_setreuid'
 d_setrgid='$d_setrgid'
 d_setruid='$d_setruid'
+d_setsid='$d_setsid'
+d_sfio='$d_sfio'
+d_shm='$d_shm'
+d_shmat='$d_shmat'
+d_shmatprototype='$d_shmatprototype'
+d_shmctl='$d_shmctl'
+d_shmdt='$d_shmdt'
+d_shmget='$d_shmget'
+d_sigaction='$d_sigaction'
+d_sigsetjmp='$d_sigsetjmp'
 d_socket='$d_socket'
 d_sockpair='$d_sockpair'
-d_oldsock='$d_oldsock'
-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_strchr='$d_strchr'
+d_strcoll='$d_strcoll'
 d_strctcpy='$d_strctcpy'
+d_strerrm='$d_strerrm'
 d_strerror='$d_strerror'
+d_strtod='$d_strtod'
+d_strtol='$d_strtol'
+d_strtoul='$d_strtoul'
+d_strxfrm='$d_strxfrm'
+d_suidsafe='$d_suidsafe'
 d_symlink='$d_symlink'
 d_syscall='$d_syscall'
-d_sysvipc='$d_sysvipc'
-d_ipcmsg='$d_ipcmsg'
-d_ipcsem='$d_ipcsem'
-d_ipcshm='$d_ipcshm'
+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'
+d_times='$d_times'
 d_truncate='$d_truncate'
-d_varargs='$d_varargs'
+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'
+d_voidtty='$d_voidtty'
 d_volatile='$d_volatile'
 d_vprintf='$d_vprintf'
-d_charvspr='$d_charvspr'
 d_wait4='$d_wait4'
 d_waitpid='$d_waitpid'
+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'
+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'
+gzip='$gzip'
+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'
 i_dirent='$i_dirent'
-d_dirnamlen='$d_dirnamlen'
+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_pwd='$i_pwd'
-d_pwcomment='$d_pwcomment'
-d_pwquota='$d_pwquota'
-d_pwage='$d_pwage'
-d_pwchange='$d_pwchange'
-d_pwclass='$d_pwclass'
-d_pwexpire='$d_pwexpire'
+i_rpcsvcdbm='$i_rpcsvcdbm'
+i_sfio='$i_sfio'
+i_sgtty='$i_sgtty'
+i_stdarg='$i_stdarg'
+i_stddef='$i_stddef'
+i_stdlib='$i_stdlib'
+i_string='$i_string'
 i_sysdir='$i_sysdir'
+i_sysfile='$i_sysfile'
+i_sysfilio='$i_sysfilio'
+i_sysin='$i_sysin'
 i_sysioctl='$i_sysioctl'
 i_sysndir='$i_sysndir'
-i_time='$i_time'
+i_sysparam='$i_sysparam'
+i_sysresrc='$i_sysresrc'
+i_sysselct='$i_sysselct'
+i_syssockio='$i_syssockio'
+i_sysstat='$i_sysstat'
 i_systime='$i_systime'
-d_systimekernel='$d_systimekernel'
+i_systimek='$i_systimek'
+i_systimes='$i_systimes'
+i_systypes='$i_systypes'
+i_sysun='$i_sysun'
+i_syswait='$i_syswait'
+i_termio='$i_termio'
+i_termios='$i_termios'
+i_time='$i_time'
+i_unistd='$i_unistd'
 i_utime='$i_utime'
+i_values='$i_values'
 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'
-libc='$libc'
-mallocsrc='$mallocsrc'
-mallocobj='$mallocobj'
-usemymalloc='$usemymalloc'
-mansrc='$mansrc'
-manext='$manext'
-models='$models'
-split='$split'
-small='$small'
-medium='$medium'
+known_extensions='$known_extensions'
+ksh='$ksh'
 large='$large'
-huge='$huge'
-optimize='$optimize'
-ccflags='$ccflags'
-cppflags='$cppflags'
+ld='$ld'
+lddlflags='$lddlflags'
 ldflags='$ldflags'
-cc='$cc'
+less='$less'
+lib_ext='$lib_ext'
+libc='$libc'
+libperl='$libperl'
+libpth='$libpth'
 libs='$libs'
+libswanted='$libswanted'
+line='$line'
+lint='$lint'
+lkflags='$lkflags'
+ln='$ln'
+lns='$lns'
+locincpth='$locincpth'
+loclibpth='$loclibpth'
+longsize='$longsize'
+lp='$lp'
+lpr='$lpr'
+ls='$ls'
+lseektype='$lseektype'
+mail='$mail'
+mailx='$mailx'
+make='$make'
+make_set_make='$make_set_make'
+mallocobj='$mallocobj'
+mallocsrc='$mallocsrc'
+malloctype='$malloctype'
+man1dir='$man1dir'
+man1direxp='$man1direxp'
+man1ext='$man1ext'
+man3dir='$man3dir'
+man3direxp='$man3direxp'
+man3ext='$man3ext'
+medium='$medium'
+mips='$mips'
+mips_type='$mips_type'
+mkdir='$mkdir'
+models='$models'
+modetype='$modetype'
+more='$more'
+mv='$mv'
+myarchname='$myarchname'
+mydomain='$mydomain'
+myhostname='$myhostname'
+myuname='$myuname'
 n='$n'
-c='$c'
+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'
+osname='$osname'
+osvers='$osvers'
 package='$package'
+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'
 randbits='$randbits'
+ranlib='$ranlib'
+rd_nodata='$rd_nodata'
+rm='$rm'
+rmail='$rmail'
+runnm='$runnm'
 scriptdir='$scriptdir'
+scriptdirexp='$scriptdirexp'
+sed='$sed'
+selecttype='$selecttype'
+sendmail='$sendmail'
+sh='$sh'
+shar='$shar'
+sharpbang='$sharpbang'
+shmattype='$shmattype'
+shortsize='$shortsize'
+shrpenv='$shrpenv'
+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'
-shsharp='$shsharp'
-sharpbang='$sharpbang'
+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'
+uname='$uname'
+uniq='$uniq'
+usedl='$usedl'
+usemymalloc='$usemymalloc'
+usenm='$usenm'
+useopcode='$useopcode'
+useperlio='$useperlio'
+useposix='$useposix'
+usesfio='$usesfio'
+useshrplib='$useshrplib'
+usevfork='$usevfork'
+usrinc='$usrinc'
+uuname='$uuname'
+vi='$vi'
 voidflags='$voidflags'
-defvoidused='$defvoidused'
-yacc='$yacc'
-privlib='$privlib'
-lib='$lib'
-CONFIG=true
+xlibpth='$xlibpth'
+zcat='$zcat'
+zip='$zip'
 EOT
 
-CONFIG=true
+: add special variables
+$test -f patchlevel.h && \
+awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
+echo "CONFIG=true" >>config.sh
+
+: propagate old symbols
+if $test -f UU/config.sh; then
+       <UU/config.sh sort | uniq >UU/oldconfig.sh
+       sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
+       sort | uniq -u >UU/oldsyms
+       set X `cat UU/oldsyms`
+       shift
+       case $# in
+       0) ;;
+       *)
+               cat <<EOM
+Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
+EOM
+               echo "# Variables propagated from previous config.sh file." >>config.sh
+               for sym in `cat UU/oldsyms`; do
+                       echo "    Propagating $hint variable "'$'"$sym..."
+                       eval 'tmp="$'"${sym}"'"'
+                       echo "$tmp" | \
+                               sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
+               done
+               ;;
+       esac
+fi
 
-echo " "
-dflt=''
-fastread=''
-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:"
-$echo $n "$rp $c"
-. UU/myread
-case "$ans" in
-'') ;;
-*) : in case they cannot read
-    eval $ans;;
+: Finish up by extracting the .SH files
+case "$alldone" in
+exit)
+       $rm -rf UU
+       echo "Done."
+       exit 0
+       ;;
+cont)
+       ;;
+'')
+       dflt=''
+       nostick=true
+       $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
+       '') ;;
+       *) : in case they cannot read
+               sh 1>&4 -c "$ans";;
+       esac
+       ;;
 esac
+
 : if this fails, just run all the .SH files by hand
 . ./config.sh
 
 echo " "
-echo "Doing variable substitutions on .SH files..."
-set x `awk '{print $1}' <MANIFEST | $grep '\.SH'`
-shift
-case $# in
-0) set x *.SH; shift;;
-esac
-if test ! -f $1; then
-    shift
-fi
-for file in $*; do
-    case "$file" in
-    */*)
-       dir=`$expr X$file : 'X\(.*\)/'`
-       file=`$expr X$file : 'X.*/\(.*\)'`
-       (cd $dir && . $file)
-       ;;
-    *)
-       . $file
-       ;;
-    esac
-done
-if test -f config.h.SH; then
-    if test ! -f config.h; then
-       : oops, they left it out of MANIFEST, probably, so do it anyway.
-       . config.h.SH
-    fi
-fi
+exec 1>&4
+. ./UU/extract
 
-if $contains '^depend:' Makefile >/dev/null 2>&1; then
-    dflt=n
-    $cat <<EOM
+if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
+       dflt=y
+       case "$silent" in
+       true) ;;
+       *)
+               $cat <<EOM
 
 Now you need to generate make dependencies by running "make depend".
 You might prefer to run it in background: "make depend > makedepend.out &"
 It can take a while, so you might not want to run it right now.
 
 EOM
-    rp="Run make depend now? [$dflt]"
-    $echo $n "$rp $c"
-    . UU/myread
-    case "$ans" in
-    y*) make depend && echo "Now you must run a make."
-       ;;
-    *)  echo "You must run 'make depend' then 'make'."
-       ;;
-    esac
-elif test -f Makefile; then
-    echo " "
-    echo "Now you must run a make."
+               ;;
+       esac
+       rp="Run make depend now?"
+       . UU/myread
+       case "$ans" in
+       y*)
+               make depend && echo "Now you must run a make."
+               ;;
+       *)
+               echo "You must run 'make depend' then 'make'."
+               ;;
+       esac
+elif test -f [Mm]akefile; then
+       echo " "
+       echo "Now you must run a make."
 else
-    echo "Done."
+       echo "Done."
 fi
 
-$rm -f kit*isdone
-: the following is currently useless
-cd UU && $rm -f $rmlist
-: since this removes it all anyway
-cd .. && $rm -rf UU
-: end of Configure
+$rm -f kit*isdone ark*isdone
+$rm -rf UU
+
+: End of Configure
+