|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: C T
Length: 87251 (0x154d3) Types: TextFile Names: »Configure«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦4fd8323b9⟧ »EurOpenD3/mail/elm2.3.tar.Z« └─⟦698c4f91f⟧ └─⟦this⟧ »Configure«
#! /bin/sh # # 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 # of config.h for certain machines, so you might look for one of those.) # # $Header: /files/home/users/syd/elm.dev/RCS/Configure,v 4.1 90/04/28 22:40:46 syd Exp $ # # 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.) : sanity checks PATH=".:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc:/usr/new:/usr/new/bin:/usr/nbin:$PATH" export PATH || (echo "OOPS, this isn't sh. Desperation time. I will feed myself to sh."; sh $0; kill $$) if test ! -t 0; then echo "Say 'sh Configure', not 'sh <Configure'" exit 1 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.)" if test ! -d ../UU; then if test ! -d UU; then mkdir UU fi cd UU fi case "$1" in -d) shift; fastread='yes';; esac define='' eunicefix='' Log='' Header='' bin='' byteorder='' contains='' cppstdin='' cppminus='' d_crypt='' cryptlib='' d_getopt='' d_havetlib='' termlib='' d_mkdir='' d_portable='' d_rename='' d_sigvec='' d_sigvectr='' d_symlink='' d_vfork='' d_whoami='' defeditor='' hostname='' phostname='' mydomain='' i_time='' i_systime='' d_systimekernel='' maildir='' n='' c='' package='' pager='' prefshell='' spitshell='' shsharp='' sharpbang='' startsh='' d_eunice='' loclist='' expr='' sed='' echo='' cat='' rm='' mv='' cp='' tail='' tr='' mkdir='' sort='' uniq='' grep='' trylist='' test='' inews='' egrep='' more='' pg='' Mcc='' vi='' mailx='' mail='' cpp='' perl='' emacs='' ls='' rmail='' sendmail='' shar='' smail='' tbl='' troff='' nroff='' uname='' uuname='' line='' chgrp='' chmod='' lint='' sleep='' pr='' tar='' ln='' lpr='' lp='' touch='' make='' date='' csh='' c_date='' d_calendar='' calendar='' d_cuserid='' d_flock='' d_flockonly='' lock_dir='' d_gethname='' d_douname='' d_phostname='' d_host_comp='' d_havedbm='' dbm='' d_index='' d_internet='' d_mboxedit='' d_mmdf='' d_newauto='' d_nfs='' d_networkorder='' d_noxheader='' d_optreturn='' d_pafirst='' d_notouchadd='' d_noaddfrom='' d_usedomain='' d_nocheckvalid='' d_pidcheck='' d_ptem='' d_remlock='' maxattempts='' d_setgid='' mailermode='' d_strcspn='' d_strspn='' d_strings='' d_pwdinsys='' strings='' includepath='' d_subshell='' d_tempnam='' tempnamo='' tempnamc='' d_termio='' d_termios='' d_tz_min='' d_useembed='' d_utimbuf='' d_voidsig='' defbatsub='' elmalias='' maxsysalias='' maxuseralias='' lib='' libc='' linepr='' mailer='' mailgrp='' mansrc='' manext='' models='' split='' small='' medium='' large='' huge='' optimize='' ccflags='' cppflags='' ldflags='' cc='' libs='' nametype='' d_passnames='' d_berknames='' d_usgnames='' passcat='' pathalias='' domains='' rmttape='' roff='' tmpdir='' xencf='' xenlf='' d_xenix='' d_bsd='' CONFIG='' : set package name package=elm2 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 /lib' libpth='/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 : We must find out about Eunice early eunicefix=':' if test -f /etc/unixtovms; then eunicefix=/etc/unixtovms fi if test -f /etc/unixtovms.exe; then eunicefix=/etc/unixtovms.exe fi : Now test for existence of everything in MANIFEST 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__" d_newshome="/usr/NeWS" defvoidused=7 pth="/usr/ucb /bin /usr/bin /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 /usr/convex" : check for out bin directory if test ! -d ../bin; then echo "Making bin directory" mkdir ../bin else echo "Found bin directory" fi : 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 : 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 $eunicefix try chmod +x try ./try > today if test -s today; then echo "It does." sharpbang='#! ' else echo "It doesn't." sharpbang=': use ' 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 ' fi : 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..." cat >try <<EOSS $startsh set abc test "$?abc" != 1 EOSS chmod +x try $eunicefix try if ./try; then echo "Yup, it does." else echo "Nope. You may have to fix up the shell scripts to make sure sh runs them." fi rm -f try today : 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='' else cat <<'EOM' ...using \c EOM n='' c='\c' 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";; 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 fi : find out where common programs are echo " " echo "Locating common programs..." cat <<EOSC >loc $startsh case \$# in 0) exit 1;; esac thing=\$1 shift dflt=\$1 shift for dir in \$*; do case "\$thing" in .) if test -d \$dir/\$thing; then echo \$dir exit 0 fi ;; *) if test -f \$dir/\$thing; then echo \$dir/\$thing exit 0 elif test -f \$dir/\$thing.exe; then : on Eunice apparently echo \$dir/\$thing exit 0 fi ;; esac done echo \$dflt exit 1 EOSC chmod +x loc $eunicefix loc loclist=" cat chgrp chmod cp echo expr grep ln ls make mv rm sed sleep touch tr " trylist=" Mcc cpp date emacs line lint lp lpr mailx more nroff pg pr rmail sendmail shar smail tar tbl test troff uname uuname vi " 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 done echo " " echo "Don't worry if any of the following aren't found..." ans=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 done case "$egrep" in egrep) echo "Substituting grep for egrep." egrep=$grep ;; 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 ;; *) test=test ;; 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 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 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. FOO rp="Your cursor should be here-->" $echo $n "$rp$c" . myread fi $rm -f foo1 foo2 ;; *) : cross your fingers echo=echo ;; 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 ;; *) echo \$1 ;; esac EOSS chmod +x filexp $eunicefix filexp : determine where public executables go case "$bin" in '') dflt=`loc . /bin /usr/local/bin /usr/lbin /usr/local /usr/bin` ;; *) dflt="$bin" ;; esac cont=true while $test "$cont" ; do echo " " rp="Where do you want to put the public executables? [$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='' case "$ans" in y*) cont='';; esac fi done : see if date exists, if so, init c_date if $test ! "x$date" = "x" ; then c_date=`$date` else c_date='date was unavailable at configuration' fi : make some quick guesses about what we are up against echo " " $echo $n "Hmm... $c" if $test -n "$uname"; then uname_os=`uname -s` uname_rel=`uname -r` uname_rel=`expr "$uname" : "\(...\).*"` else uname_os=unknown uname_rel=unknown fi 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 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then if $test "$uname_os" = "SunOs" -a "$uname_rel" = "4.1" ; then echo "Looks like SunOs 4.1, a USG system, but we'll see..." echo exit 1 >bsd echo exit 0 >usg echo exit 1 >v7 else echo "Looks kind of like a BSD system, but we'll see..." echo exit 0 >bsd echo exit 1 >usg echo exit 1 >v7 fi 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 fi case "$eunicefix" in *unixtovms*) cat <<'EOI' There is, however, a strange, musty smell in the air that reminds me of something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. EOI echo "exit 0" >eunice d_eunice="$define" ;; *) echo " " echo "Congratulations. You aren't running Eunice." d_eunice="$undef" echo "exit 1" >eunice ;; esac if test -f /xenix; then echo "Actually, this looks more like a XENIX system..." echo "exit 0" >xenix else echo " " echo "It's not Xenix..." echo "exit 1" >xenix fi chmod +x xenix $eunicefix xenix if test -f /venix; then echo "Actually, this looks more like a VENIX system..." echo "exit 0" >venix else echo " " if xenix; then : null else echo "Nor is it Venix..." fi echo "exit 1" >venix 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" : determine text processor to use, default to troff if found. case "$roff" in '') if $test -n "$troff"; then dflt="$troff" else dflt=$nroff fi ;; *) dflt="$roff";; esac $cat <<EOM The Elm manuals are set up for troff. If you only have nroff, it can be used, but the manuals will not be as readable. If you use an alternate processor for troff/nroff documents it can be specified here. EOM cont=true while $test "$cont" ; do echo " " echo "Give the name of the program used to process manual pages on your" $echo $n "system: [$dflt] $c" rp="Preferred troff/nroff program: [$dflt]" . myread roff=$ans; if $test -f "$ans"; then cont='' else lookup=`loc "$ans" "" . $pth` if $test -f "$lookup"; then cont='' roff=$lookup else if $test "$fastread" = yes; then dflt=y else dflt=n fi echo "Text processor $ans doesn't exist." rp="Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi fi done : 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? [$dflt]" $echo $n "$rp $c" . myread mansrc=`filexp "$ans"` if $test -d "$mansrc"; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="Directory $mansrc doesn't exist. Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done case "$mansrc" in *l) manext=l ;; *n) manext=n ;; *o) manext=l ;; *p) manext=n ;; *C) manext=C ;; *L) manext=L ;; *) manext=1 ;; esac : default clear to no extra flags xencf= xenlf= d_xenix="$undef" d_bsd="$undef" : see if we are xenix if xenix; then d_xenix="$define" : now are we a 286 case "`uname -p`" in i80286) xencf="-LARGE -Ml2et32" xenlf="-Ml2t32 -F 5600 -SEG 512" esac fi if bsd; then d_bsd="$define" fi : 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' main() { #ifdef pdp11 exit(0); #else exit(1); #endif } EOP cc -o pdp11 pdp11.c >/dev/null 2>&1 if pdp11 2>/dev/null; then dflt='unsplit split' else 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" ;; esac if $test -z "$xencf" ; then $cat <<EOM Some systems have different model sizes. On most systems they are called small, medium, large, and huge. On the PDP11 they are called unsplit and split. If your system doesn't support different memory models, say "none". If you wish to force everything to one memory model, say "none" here and put the appropriate flags later when it asks you for other cc and ld flags. Xenix and 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" 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" ;; *) 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" ;; *) 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 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 case "$ans" in none) ans=''; esac small="$ans" ;; *) small='';; esac ;; *) echo "Unrecognized memory models--you may have to edit Makefile.SH" ;; esac fi : 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' $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" ;; 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 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 *DEBUG*);; *) dflt="$dflt -DDEBUG";; esac ;; esac case "$dflt" in '') dflt=none;; esac if $test -n "$xencf" ; then $echo "Xenix 286 system, using compiler flags $xencf" $echo "do not respecify these flags below." $echo "" fi 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. 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=''; esac ccflags="$ans" : 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 if $test -n "$xenlf" ; then $echo "Xenix 286 system, using linker flags $xenlf" $echo "do not respecify these flags below" $echo "" fi case "$ldflags" in '') if venix; then dflt='-i -z' else dflt='none' fi ;; *) dflt="$ldflags";; esac echo " " rp="Any additional ld flags (NOT including libraries)? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in none) ans=''; esac ldflags="$ans" rmlist="$rmlist pdp11" echo " " echo "Checking for optional libraries..." case "$libs" in '') dflt='';; *) dflt="$libs";; esac case "$libswanted" in '') libswanted='c_s';; esac for thislib in $libswanted; do case "$thislib" in dbm) thatlib=ndbm;; *_s) thatlib=NONE;; *) thatlib="${thislib}_s";; *) thatlib=NONE;; esac xxx=`loc lib$thislib.a X /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 "$dflt" in '') dflt='none';; esac $cat <<EOM Some versions of Unix support shared libraries, which make executables smaller but make load time slightly longer. On some systems, mostly newer Unix System V's, the shared library is included by putting the option "-lc_s" as the last thing on the cc command line when linking. Other systems use shared libraries by default. There may be other libraries needed to compile $package on your machine as well. If your system needs the "-lc_s" option, include it here. Include any other special libraries here as well. Say "none" for none. EOM echo " " rp="Any additional libraries? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in none) ans=''; esac libs="$ans" : 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 = 0x0807060504030201; else u.l = 0x04030201; for (i=0; i < sizeof(long); i++) printf("%c",u.c[i]+'0'); printf("\n"); } EOCP if $cc 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.)";; 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 : get list of predefined functions in a handy place echo " " case "$libc" in '') libc=unknown;; esac case "$libpth" in '') libpth='/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/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." elif test -f /lib/libc.a; then echo "Your C library is in /lib/libc.a. You're normal." libc=/lib/libc.a else if test "$uname_os" != DomainOS ; then ans=`loc libc.a blurfl/dyick $libpth` fi if test ! -f "$ans"; then ans=`loc libc blurfl/dyick $libpth` fi if test ! -f "$ans"; then ans=`loc clib blurfl/dyick $libpth` fi 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 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 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 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/^.* [AT] *_[_.]*//p' -e 's/^.* [AT] //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 '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 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 fi fi fi 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' rmlist="$rmlist libc.tmp libc.list" : see if nfs exists echo " " dflt=`loc exports xyz /etc /usr/etc` if $test "$dflt" = xyz; then dflt=`loc nfsd xyz /etc /usr/etc $pth` fi if $test "$dflt" = xyz; then echo "System does not support NFS, internal byte order will be used" d_nfs="$undef" else echo "System supports NFS, network byte order will be used" d_nfs="$define" fi if $test "$d_nfs" = "$define"; then case "$byteorder" in 4321) d_networkorder="$undef"; ;; *) d_networkorder="$define"; if $contains ntohl libc.list >/dev/null 2>&1; then echo 'ntohl found in libc, no special libraries needed for network byte ordering' else echo 'ntohl not found in libc, be sure to specify the library for network support' echo 'as an optional library' fi ;; esac else d_networkorder="$undef"; fi : get calendar mode and default calendar file name $cat <<EOM There is a neat feature that enables scanning of the message body for entries to add to the users ".calendar" (or whatever) file. These entries are then processed by the system program calendar. To use this feature it needs to be enabled. The name of the per user calendar file used by your systems calendar program is also required. EOM case "$d_calendar" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=y;; esac rp="Enable calendar feature [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_calendar="$define";; *) d_calendar="$undef";; esac case "$calendar" in '') dflt='calendar';; *) dflt=$calendar;; esac if $test "$d_calendar" = "$define"; then echo " " rp="Default calendar file: [$dflt]" $echo $n "$rp $c" . myread calendar="$ans" fi : find out how to find out full name echo " " case "$d_berknames" in "$define") dflt=y;; "$undef") dflt=n;; *) if bsd; then dflt=y elif xenix; then dflt=y else dflt=n fi ;; esac echo "Does your /etc/passwd file keep full names in Berkeley/V7 format (name first" $echo $n "thing after ':' in GCOS field)? [$dflt] $c" rp="Berkeley/V7 format full name? [$dflt]" . myread case "$ans" in y*) d_passnames="$define" d_berknames="$define" d_usgnames="$undef" nametype=bsd ;; *) echo " " case "$d_usgnames" in "$define") dflt=y;; "$undef") dflt=n;; *) if usg; then dflt=y else dflt=n fi ;; esac echo "Does your passwd file keep full names in USG format (name sandwiched" $echo $n "between a '-' and a '(')? [$dflt] $c" rp="USG format full name? [$dflt]" . myread case "$ans" in n*) echo "Full name will be taken from ~/.fullname" d_passnames="$undef" d_berknames="$undef" d_usgnames="$undef" nametype=other ;; *) d_passnames="$define" d_berknames="$undef" d_usgnames="$define" nametype=usg ;; esac ;; esac : see if we have to deal with yellow pages if $test -d /usr/etc/yp; then if $test "$passcat" = "ypcat passwd"; then dflt=y elif $contains '^\+:' /etc/passwd; then dflt=y else dflt=n fi rp="Are you getting the passwd file via yellow pages? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) passcat='ypcat passwd';; *) passcat='cat /etc/passwd';; esac else passcat='cat /etc/passwd' fi : see if crypt exists echo " " if $contains '^crypt$' libc.list >/dev/null 2>&1; then echo 'crypt() found.' d_crypt="$define" cryptlib='' else cryptlib=`loc Slibcrypt.a "" $xlibpth` if $test -z "$cryptlib"; then cryptlib=`loc Mlibcrypt.a "" $xlibpth` else cryptlib=-lcrypt fi if $test -z "$cryptlib"; then cryptlib=`loc Llibcrypt.a "" $xlibpth` else cryptlib=-lcrypt fi if $test -z "$cryptlib"; then cryptlib=`loc libcrypt.a "" $libpth` else cryptlib=-lcrypt fi if $test -z "$cryptlib"; then echo 'crypt() not found.' d_crypt="$undef" else d_crypt="$define" fi fi : check for cuserid function echo " " if $contains '^cuserid$' libc.list >/dev/null 2>&1 ; then echo "cuserid() found." d_cuserid="$undef" else echo "No cuserid() found--will use mine." d_cuserid="$define" fi : now get the host name echo " " echo "Figuring out host name..." echo 'Maybe "hostname" will work...' if ans=`sh -c hostname 2>&1` ; then hostname=$ans phostname=hostname else if xenix; then echo 'Oh, dear. Maybe "/etc/systemid" is the key...' if ans=`cat /etc/systemid 2>&1` ; then hostname=$ans phostname='cat /etc/systemid' echo "Whadyaknow. Xenix always was a bit strange..." else echo 'No, maybe "uuname -l" will work...' if ans=`sh -c 'uuname -l' 2>&1` ; then hostname=$ans phostname='uuname -l' else echo 'Strange. Maybe "uname -n" will work...' if ans=`sh -c 'uname -n' 2>&1` ; then hostname=$ans phostname='uname -n' else echo 'Oh well, maybe I can mine it out of whoami.h...' if ans=`sh -c $contains' sysname /usr/include/whoami.h' 2>&1` ; then hostname=`echo "$ans" | $sed 's/^.*"\(.*\)"/\1/'` phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' </usr/include/whoami.h" else case "$hostname" in '') echo "Does this machine have an identity crisis or something?" phostname='' ;; *) echo "Well, you said $hostname before...";; esac fi fi fi fi else if $test -r /etc/systemid ; then echo "What is a non-Xenix system doing with /etc/systemid?" fi echo 'No, maybe "uuname -l" will work...' if $test -n "$uuname" && ans=`sh -c "$uuname -l" 2>&1` ; then hostname=$ans phostname="$uuname -l" else echo 'Strange. Maybe "uname -n" will work...' if $test -n "$uname" && ans=`sh -c "$uname -n" 2>&1` ; then hostname=$ans phostname="$uname -n" else if ans=`cat /etc/systemid 2>&1` ; then hostname=$ans phostname='cat /etc/systemid' echo "Well, I'll use the systemid file anyway..." else echo 'Oh well, maybe I can mine it out of whoami.h...' if ans=`sh -c $contains' sysname /usr/include/whoami.h' 2>&1` ; then hostname=`echo "$ans" | $sed 's/^.*"\(.*\)"/\1/'` phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' </usr/include/whoami.h" else case "$hostname" in '') echo "Does this machine have an identity crisis or something?" phostname='' ;; *) echo "Well, you said $hostname before...";; esac fi fi fi fi fi fi : you do not want to know about this set $hostname hostname=$1 : translate upper to lower if necessary case "$hostname" in *[A-Z]*) hostname=`echo $hostname | tr '[A-Z]' '[a-z]'` echo "(Normalizing case in your host name)" ;; esac : verify guess if $test "$hostname" ; then dflt=y echo 'Your host name appears to be "'$hostname'".' $echo $n "Is this correct? [$dflt] $c" rp="Sitename is $hostname? [$dflt]" . myread case "$ans" in y*) ;; *) hostname='' ;; esac fi : bad guess or no guess while $test "X$hostname" = X ; do dflt='' rp="Please type the (one word) name of your host:" $echo $n "$rp $c" . myread hostname="$ans" done echo " " case "$hostname" in *.*) dflt=`$expr "X$hostname" : "X[^.]*\(\..*\)"` hostname=`$expr "X$hostname" : "X\([^.]*\)\."` echo "(Trimming domain name from host name--host name is now $hostname)" ;; *) case "$mydomain" in '') dflt='.UUCP';; *) dflt="$mydomain";; esac ;; esac rp="What is your domain name? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in '') ;; .*) ;; *) ans=".$ans";; esac mydomain="$ans" : a little sanity check here case "$phostname" in '') ;; *) case `$phostname` in $hostname$mydomain|$hostname) ;; *) 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 phostname='' ;; esac ;; esac : decide how portable to be case "$d_portable" in "$define") dflt=y;; *) dflt=n;; esac $cat <<'EOH' I can set things up so that your shell scripts and binaries are more portable, at what may be a noticable cost in performance. In particular, if you ask to be portable, the following happens: 1) shell scripts will rely on the PATH variable rather than using the paths derived above. 2) ~username interpretations will be done at run time rather than by Configure. 3) the system name will be determined at run time, if at all possible. EOH rp="Do you expect to run these scripts and binaries on multiple machines? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_portable="$define" for file in $loclist; do eval $file=$file done ;; *) d_portable="$undef" ;; esac : see if there is a whoami file echo " " if $test -r /usr/include/whoami.h ; then d_whoami="$define" echo "whoami.h found." else d_whoami="$undef" fi : see how we will look up host name echo " " d_douname="$undef" d_gethname="$undef" if $test -z "$d_phostname"; then d_phostname="$undef" fi if $contains '^gethostname$' libc.list >/dev/null 2>&1 ; then echo "gethostname() found." d_gethname="$define" ans=gethostname elif xenix; then if $test -n "$uname"; then u_name=`$uname -n` else u_name= fi if $test -n "$line"; then if $test -r /etc/systemid; then s_name=`$line < /etc/systemid` else s_name= fi else s_name= fi if $test -n "$u_name"; then if $test "$u_name" = "$s_name"; then cat <<EOM On Xenix, UUCP uses the name found in /etc/systemid, while uname() returns the name compiled into the operating system via configure. Elm needs the UUCP name, and currently these two match. However, they need not match. Be sure to always keep these two names in sync. Since they match, Elm will not consider that the Xenix uname function is broken. However, if you are not always able to make them match, answer the compile in hostname question Yes. EOM if $contains '^uname$' libc.list >/dev/null 2>&1 ; then echo "uname() found." d_douname="$define" ans=uname fi else cat <<EOM On Xenix, UUCP uses the name found in /etc/systemid, while uname() returns the name compiled into the operating system via configure. Your /etc/systemid file contains $s_name. But uname returns $u_name. Since Elm needs the UUCP name, and currently these two do not match, Elm will assume Xenix uname() is broken. EOM fi else cat <<EOM On Xenix, UUCP uses the name found in /etc/systemid, while uname() returns the name compiled into the operating system via configure. Elm needs the UUCP name, and currently the compiled in name is undefined. Since mail needs the UUCP name, and these two need not match, Elm will assume Xenix uname() is broken. EOM fi elif $contains '^uname$' libc.list >/dev/null 2>&1 ; then echo "uname() found." d_douname="$define" ans=uname fi case "$d_douname$d_gethname" in *define*) case "$d_host_comp" in "$define") dflt=y;; *) dflt=n;; esac cat <<EOM Every now and then someone has a $ans() that lies about the hostname but can't be fixed for political or economic reasons. Would you like to EOM rp="pretend $ans() isn't there and maybe compile in the hostname? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_douname="$undef" d_gethname="$undef" d_host_comp="$define" $echo $n "Okay... $c" ;; *) d_host_comp="$undef" ;; esac ;; esac case "$d_douname$d_gethname" in *define*) ;; *) case "$phostname" in '') ;; *) $cat <<EOT There is no gethostname() or uname() on this system. You have two possibilities at this point: 1) You can have your host name ($hostname) compiled into $package, which lets $package start up faster, but makes your binaries non-portable, or 2) you can have $package use a popen("$phostname","r") which will start slower but be more portable. Option 1 will give you the option of using whoami.h if you have one. If you want option 2 but with a different command, you can edit config.sh at the end of this shell script. EOT case "$d_phostname" in "$define") dflt=n;; "$undef") dflt=y;; '') case "$d_portable" in "$define") dflt=n ;; *) dflt=y ;; esac ;; esac rp="Do you want your host name compiled in? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in n*) d_phostname="$define" d_host_comp="$undef" ;; *) phostname='' d_host_comp="$define" d_phostname="$undef" ;; esac ;; esac case "$phostname" in '') case "$d_whoami" in "$define") dflt=y $cat <<EOM No hostname function--you can either use the whoami.h file, which has this line: `grep sysname /usr/include/whoami.h` or you can have the name we came up with earlier ($hostname) hardwired in. EOM rp="Use whoami.h to get hostname? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in n*) d_whoami="$undef";; esac ;; "$undef") echo 'No hostname function and no whoami.h--hardwiring "'$hostname'".' d_host_comp="$define" d_phostname="$undef" ;; esac ;; esac ;; esac : see if flock exists echo " " if $contains flock libc.list >/dev/null 2>&1; then echo 'flock() found.' if $contains EWOULDBLOCK /usr/include/errno.h > /dev/null 2>&1; then echo 'EWOULDBLOCK found, will use flock type mailbox locking' d_flock="$define" elif $contains EWOULDBLOCK /usr/include/sys/errno.h > /dev/null 2>&1; then echo 'EWOULDBLOCK found, will use flock type mailbox locking' d_flock="$define" else echo 'flock() not found--will use .lock type mailbox locking' d_flock="$undef" fi else echo 'flock() not found--will use .lock type mailbox locking' d_flock="$undef" d_flockonly="$undef" fi if $test "$d_flock" = "$define"; then case "$d_flockonly" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=n;; esac $cat <<EOM Some sites wish to use flock style locking only. This allows Elm to be installed without the setgid bit being set on some systems that would otherwise require it. Note: Be sure no other mail utility that needs to lock the mail spool file uses .lock type locking before using only flock style locking. EOM rp="Would you like to use flock style mail spool locking only? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_flockonly="$define";; *) d_flockonly="$undef";; esac fi if $test -d /usr/spool/locks ; then lock_dir=/usr/spool/locks elif $test -d /usr/spool/uucp ; then lock_dir=/usr/spool/uucp elif $test -d /var/spool/locks ; then lock_dir=/var/spool/locks elif $test -d /var/spool/uucp ; then lock_dir=/var/spool/uucp else lock_dir=/tmp fi echo " " echo "Non mailbox locks will use the $lock_dir directory" echo " " : see if getopt exists set getopt d_getopt eval $inlibc : determine pathnames of the domains and pathalias case "$pathalias" in '') dflt=`loc paths blurfl/dyick $pth /usr/lib/uucp` if $test "$dflt" = blurfl/dyick; then dflt=`loc nmail.paths /usr/lib/nmail.paths $pth /usr/lib/uucp` fi ;; *) dflt="$pathalias";; esac cont=true while $test "$cont" ; do echo " " echo "Give the full path name of the pathalias" rp="data file? [$dflt]" $echo $n "$rp $c" . myread pathalias="$ans" if $test -f "$ans"; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi echo "Pathalias data file $ans doesn't exist." rp="Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done case "$domains" in '') dflt=`loc domains /usr/lib/domains $pth /usr/lib/uucp`;; *) dflt="$domains";; esac cont=true while $test "$cont" ; do echo " " echo "Where does the uumail-style 'domains'" rp="file live? [$dflt]" $echo $n "$rp $c" . myread domains="$ans" if $test -f "$ans"; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi echo "Domains data file $ans doesn't exist." rp="Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done : is pathalias available as a dbm file d_havedbm="$undef" dbm='' if $test -f "$pathalias.pag" -a -f "$pathalias.dir"; then ans=`loc libdbm.a x $libpth` if $test "$ans" = x; then ans=`loc Slibdbm.a x $libpth` fi if $test "$ans" = x; then dflt=y echo " " rp="You have pathalias as a DBM file, but I cannot find the DBM library. Do you have dbm? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*|t*) d_havedbm="$define" echo " " echo "Then where are the dbm routines kept (specify either -llibname" $echo $n " or full pathname (~name ok))? $c" rp='Specify dbm library:' . myread dbm=`filexp $ans` ;; *) d_havedbm="$undef" dbm='' echo "I will use the non dbm access methods then." ;; esac else echo " " echo "You have pathalias as a DBM file...I'll use that instead." dbm=-ldbm d_havedbm="$define" fi fi : see if strings.h is in /usr/include or /usr/include/sys echo " " strings=`loc string.h "" /usr/include $includepath` if $test -z "$strings"; then strings=`loc strings.h "" /usr/include $includepath` fi while $test -z "$strings"; do echo " " dflt='' rp="What is the full path name of the include file directory? []" $echo $n "$rp $c" . myread includepath=`filexp $ans` if $test -d "$includepath"; then strings=`loc string.h "" /usr/include $includepath` if $test -z "$strings"; then strings=`loc strings.h "" /usr/include $includepath` fi if $test -z "$strings"; then $cat <<EOM Include file string.h or strings.h not found in $includepath. Elm requires string.h on USG type systems or strings.h on BSD type systems. Please specify the directory where one of these files can be found. EOM fi else echo "Directory $includepath not found" fi done strings_f=`$expr "$strings" : ".*/\(.*\)"` if $test "$strings_f" = "string.h"; then d_strings="$undef" echo Using string.h instead of strings.h else d_strings="$define" echo Using strings.h instead of string.h fi pwdinsys=`loc pwd.h "" /usr/include $includepath` if $test -z "$pwdinsys"; then d_pwdinsys="$define" else d_pwdinsys="$undef" fi : index or strcpy echo " " case "$d_index" in n) dflt=n;; *) dflt=y;; esac if $contains '^index$' libc.list >/dev/null 2>&1 ; then if $contains '^strchr$' libc.list >/dev/null 2>&1 ; then if $contains strchr "$strings" >/dev/null 2>&1 ; then if $contains index "$strings" >/dev/null 2>&1 ; then # has index, strchr, and index and strchr in strings.h 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" ;; esac else # has index, strchr, and strchr in strings.h d_index="$define" echo "strchr() found." fi else # has index, strchr, and no strchr in strings.h d_index="$undef" echo "index() found." fi else # has only index, no strchr, strings.h is a moot point 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 : determine mail delivery agent for Elm to use case "$mailer" in '') if $test -f "$sendmail"; then dflt="$sendmail" elif $test -f "$rmail"; then dflt="$rmail" elif $test -f /bin/mail; then dflt=/bin/mail else dflt=$mail fi ;; *) dflt="$mailer";; esac cont=true while $test "$cont" ; do echo " " echo "Give the full path name of the program used to deliver mail on your" $echo $n "system: [$dflt] $c" rp="Preferred mail delivery agent: [$dflt]" . myread mailer="$ans" if $test -f "$ans"; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi echo "Mail delivery agent $ans doesn't exist." rp="Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done if $test "$mailer" != "$sendmail"; then sendmail='' fi : check for internet mailer case "$d_internet" in "$define") dflt=y;; "$undef") dflt=n;; *) if $test -f "$sendmail"; then dflt=y elif $test -f "$smail"; then dflt=y else dflt=n fi ;; esac $cat <<EOM Some newer mailers can deliver mail to addresses of the INTERNET persuasion, such as user@host.UUCP. Other older mailers require the complete path to the destination to be specified in the address. Does your mailer understand EOM $echo $n "INTERNET addresses? [$dflt] $c" rp="Does your mailer understand INTERNET addresses? [$dflt]" . myread case "$ans" in y*) d_internet="$define";; *) d_internet="$undef";; esac case "$d_mboxedit" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=n;; esac $cat <<EOM A lot of sites that install the Elm Mail System find that the function E)dit mailbox from within Elm is dangerous and confusing. If you choose, you can instead disable that function, with the program being slightly smaller and presenting an appropriate error message to the user if they try to E)dit their mailbox. EOM rp="Would you like to enable the E)dit Mailbox function? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_mboxedit="$define";; *) d_mboxedit="$undef";; esac : see if mkdir exists set mkdir d_mkdir eval $inlibc case "$d_mmdf" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=n;; esac $cat <<EOM Some systems run MMDF as their Mail Transport Agent. MMDF uses a different way of delimiting messages in the mailbox files. Usually this is a series of four Control A's. $package needs to know if this system uses MMDF. EOM rp="Does this system use MMDF as its MTA? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_mmdf="$define";; *) d_mmdf="$undef";; esac : ask about newmail running in the background automatically case "$d_newauto" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=y;; esac echo " " rp="Should newmail automatically run in the background? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_newauto="$define";; *) d_newauto="$undef";; esac case "$d_notouchadd" in "$define") dflt=n;; "$undef") dflt=y;; *) dflt=y;; esac $cat <<EOM Some sites are configured so that the low level transport mechanism is supposed to resolve and rewrite uucp paths, unreachable domains/networks, and so on. If your site running either "smail", a "gateway" configuration of sendmail, or some similar software then the low level transport mechanism will resolve the uucp paths. In this case it is not necessary to have Elm resolve the paths on outbound mail addresses. EOM echo " " rp="Should Elm resolve outbound addresses? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_notouchadd="$undef";; *) d_notouchadd="$define";; esac case "$d_pafirst" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=n;; esac if $test "$d_notouchadd" = "$undef"; then $cat <<EOM When given a machine that you talk to directly, should the 'pathalias' route to the machine be used instead?" EOM echo " " rp="Would you like to use pathalias route instead? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_pafirst="$define";; *) d_pafirst="$undef";; esac else d_pafirst="$undef" fi if $test -f "$sendmail"; then echo "You're running sendmail. Setting noaddfrom, nocheckvalid, usedomain" d_noaddfrom="$define" d_nocheckvalid="$define" d_usedomain="$undef" else case "$d_nocheckvalid" in "$define") dflt=n;; "$undef") dflt=y;; *) dflt=y;; esac $cat << EOM Since you're not running sendmail, should I check local user entered addresses against the valid mailboxes on this system? EOM echo " " rp="Would you like to check local addresses? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_nocheckvalid="$undef";; *) d_nocheckvalid="$define";; esac if $test "$d_internet" = "$define"; then case "$d_usedomain" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=y;; esac $cat <<EOM Are you running a machine where you want to have a domain name appended to the hostname on outbound mail? EOM echo " " rp="Would you like the domain name appended? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_usedomain="$define";; *) d_usedomain="$undef";; esac else d_usedomain="$undef" $cat <<EOM Since your mailer does not understand internet addresses, undefining usedomain, your domain name will not be appended to the hostname on outbound mail. EOM fi case "$d_noaddfrom" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=n;; esac echo " " rp="Does your mailer add the From: header for you? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_noaddfrom="$define";; *) d_noaddfrom="$undef";; esac fi : ask about optimizing return addresses case "$d_optreturn" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=n;; esac echo " " echo "Should I optimize the return address when you" rp="'alias current message'? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_optreturn="$define";; *) d_optreturn="$undef";; esac : check for "kill(pid, 0)" echo " " case "$d_pidcheck" in "$define") ;; "$undef") ;; *) echo "Checking to see if kill(pid, 0) works..." $cat >try.c <<'EOCP' main() { int pid, status0, status9; if ((pid = fork()) == 0) { sleep(30); exit(1); } status0 = kill(pid, 0); status9 = kill(pid, 9); exit(status0 == status9); } EOCP if $cc try.c -o try >/dev/null 2>&1 ; then if try >/dev/null 2>&1 ; then echo "Your system does not support kill(pid, 0)..." d_pidcheck="$undef" else d_pidcheck="$define" echo "Your system supports kill(pid, 0)..." fi else echo "Your system does not support kill(pid, 0)..." d_pidcheck="$undef" fi $rm -f try.c try.o try ;; esac : see if /usr/include/sys/ptem.h exists, making it a possible System V/386 d_ptem="$undef" if usg ; then echo " " echo "Checking to see if your system has sys/ptem.h..." if $test -f /usr/include/sys/ptem.h ; then echo "Yep, it does..." if "$contains" "struct winsize" /usr/include/sys/ptem.h >/dev/null 2>&1 ; then d_ptem="$define" echo " and it has the needed structure." fi fi fi : get remove at last flag and number of lock attempts $cat <<EOM The next pair of questions have to do with what to do when another program has locked a mailbox... First, how many times should the Elm check for the removal of the lock file before giving up? EOM case "$maxattempts" in '') dflt=6;; *) dflt=$maxattempts;; esac cont=true while $test "$cont" ; do echo " " rp="Number of lock attempts: [$dflt]" $echo $n "$rp $c" . myread maxattempts="$ans" if $test "$maxattempts" -lt 3 -o "$maxattempts" -gt 10 ; then echo "The recommended range is 3-10" odflt=$dflt dflt=n rp="Should I use your answer of $maxattempts lock attempts anyway? [$dflt]" $echo $n "$rp $c" . myread dflt=$odflt case "$ans" in y*) cont='';; esac else cont='' fi done case "$d_remlock" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=n;; esac echo " " rp="Should it REMOVE the lockfile after $maxattempts checks? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_remlock="$define";; *) d_remlock="$undef";; esac : see if rename exists set rename d_rename eval $inlibc : ask about setgid running of Elm case "$d_setgid" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=y;; esac echo " " rp="Am I going to be running as a setgid program? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_setgid="$define";; *) d_setgid="$undef";; esac case "$d_setgid" in "$define") mailermode=2755;; *) mailermode=755;; esac : see if sigvector exists -- since sigvec will match the substring echo " " if $contains sigvector libc.list >/dev/null 2>&1; then echo 'sigvector() found--you must be running HP-UX.' d_sigvectr="$define" d_sigvec="$define" else : try the original name d_sigvectr="$undef" if $contains sigvec libc.list >/dev/null 2>&1; then echo 'sigvec() found.' d_sigvec="$define" else echo 'sigvec() not found--race conditions with signals may occur.' d_sigvec="$undef" fi fi : see if strspn exists echo " " if $contains strspn libc.list >/dev/null 2>&1; then echo 'strspn() found.' d_strspn="$define" else echo 'strspn() not found--will use our strspn instead.' d_strspn="$undef" fi : see if strcspn exists echo " " if $contains strcspn libc.list >/dev/null 2>&1; then echo 'strcspn() found.' d_strcspn="$define" else echo 'strcspn() not found--will use our strcspn instead.' d_strcspn="$undef" fi case "$d_subshell" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=y;; esac $cat <<EOM Some sites wish to disable the usage of the shell escape from Elm. If you choose, you can not allow subshells from withing Elm. Note: This only controls Elms usage of the ! command. Any pager or editor could still allow subshells. EOM rp="Would you like to allow the ! command (subshells)? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_subshell="$define";; *) d_subshell="$undef";; esac : see if tempnam exists echo " " if $contains tempnam libc.list >/dev/null 2>&1; then echo 'tempnam() found.' d_tempnam="$define" else echo 'tempnam() not found--will use our tempnam instead.' d_tempnam="$undef" fi : see how we invoke the C preprocessor 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=''; else echo 'Nope, maybe "'$cpp'" will work...' $cpp <testcpp.c >testcpp.out 2>&1 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then echo "Yup, it does." cppstdin="$cpp" 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 "'"$cc"' -E -" will work...' $cc -E - <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="$cc -E" 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." else echo "Sorry, I can't get that to work. Go find one." exit 1 fi fi fi fi fi fi fi fi fi rm -f testcpp.c testcpp.out : get C preprocessor symbols handy echo " " echo $attrlist | $tr '[ - ]' '[\012-\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 unknown="\$unknown \$sym" fi done set X \$unknown shift ;; esac case \$# in 0) exit 1;; esac echo \$* | $tr '[ - ]' '[\012-\012]' | $sed -e 's/\(.*\)/\\ #ifdef \1\\ exit 0; _ _ _ _\1\\ \1\\ #endif\\ /' >/tmp/Cppsym\$\$ echo exit 1 >>/tmp/Cppsym\$\$ $cppstdin $cppminus </tmp/Cppsym\$\$ >/tmp/Cppsym2\$\$ case "\$list" in true) awk 'NF > 5 {print substr(\$6,2,100)}' </tmp/Cppsym2\$\$ ;; *) sh /tmp/Cppsym2\$\$ status=\$? ;; esac $rm -f /tmp/Cppsym\$\$ /tmp/Cppsym2\$\$ exit \$status EOSS chmod +x Cppsym $eunicefix Cppsym echo "Your C preprocessor defines the following symbols:" Cppsym -l $attrlist >Cppsym.true cat Cppsym.true rmlist="$rmlist Cppsym Cppsym.know Cppsym.true" : see if this is a termio system : Prefer POSIX-approved termios.h over all else. : echo " " d_termios="$undef" d_termio="$undef" if $test -r /usr/include/termios.h ; then set tcsetattr d_termios eval $inlibc fi if $test "$d_termios" = "$define" ; then echo "You have POSIX termios.h... good!" elif Cppsym pyr ; then if $test "`/bin/universe`" = "ucb" ; then if $test -r /usr/include/sgtty.h ; then echo "sgtty.h found." else echo "System is a pyramid, and universe is bsd," echo "sgtty.h not found--you could have problems." fi else if $test -r /usr/include/termio.h ; then d_termio="$define" echo "termio.h found." else echo "System is a pyramid, and universe is att," echo "termio.h not found--you could have problems." fi fi elif bsd ; then if $test -r /usr/include/sgtty.h ; then echo "sgtty.h found." elif $test -r /usr/include/termio.h ; then d_termio="$define" echo "termio.h found." else echo "Neither termio.h nor sgtty.h found--you could have problems." fi else if $test -r /usr/include/termio.h ; then d_termio="$define" echo "termio.h found." elif $test -r /usr/include/sgtty.h ; then echo "sgtty.h found." else echo "Neither termio.h nor sgtty.h found--you could have problems." fi fi : 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 $cat >try.c <<'EOCP' #ifdef I_TIME #include <time.h> #endif #ifdef I_SYSTIME #ifdef SYSTIMEKERNEL #define KERNEL #endif #include <sys/time.h> #endif main() { struct tm foo; #ifdef S_TIMEVAL struct timeval bar; #endif if (foo.tm_sec == foo.tm_sec) exit(0); #ifdef S_TIMEVAL if (bar.tv_sec == bar.tv_sec) exit(0); #endif exit(1); } EOCP flags='' for s_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 shift flags="$*" echo Succeeded with $flags fi ;; esac done done done done case "$flags" in *SYSTIMEKERNEL*) d_systimekernel="$define";; *) d_systimekernel="$undef";; esac case "$flags" in *I_TIME*) i_time="$define";; *) i_time="$undef";; esac case "$flags" in *I_SYSTIME*) i_systime="$define";; *) i_systime="$undef";; esac $rm -f try.c try timeincl="" if $test "$i_time" = define ; then timeincl="/usr/include/time.h" fi if $test "$i_systime" = define ; then timeincl="$timeincl /usr/include/sys/time.h" fi $cat $timeincl /dev/null | $cppstdin $cppminus > try.c 2>&1 if $contains 'tz_minuteswest' try.c > /dev/null 2>&1 ; then echo "You have tz_minuteswest defined in $timeincl rather than timezone." d_tz_min="$define" else echo "You have timezone defined in $timeincl rather than tz_minuteswest." d_tz_min="$undef" fi $rm -f try.c : check for valid reply/to fields case "$d_useembed" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=n;; esac $cat <<EOM One of the more annoying quirks of the UUCP network and various other systems that interact with it are that everyone seems to have different ideas about how to do routing, etc. Therefore, a lot of times email will arrive from offsite with corrupt, unreply-able "Reply-To:" and "From:" fields. This next question relates to whether your site is liable to get mangled fields or not... Does your site receive email with valid "Reply-To:" and "From:" fields? EOM $echo $n "Use Reply-To: and From: addresses? [$dflt] $c" rp="Are Reply-to: and From: addresses reliable? [$dflt]" . myread case "$ans" in y*) d_useembed="$define";; *) d_useembed="$undef";; esac : check for utimbuf structure echo " " case "$d_utimbuf" in "$define") ;; "$undef") ;; *) : Pyramid passes the att compile test but still needs the definition if Cppsym pyr ; then if $test "`/bin/universe`" = "att" ; then d_utimbuf="$define" echo "I will use my 'utimbuf' structure..." fi fi if $test "$d_utimbuf" != "$define"; then echo "Checking to see if struct utimbuf exists." $cat >try.c <<'EOCP' #include <stdio.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #define far /* to keep XENIX from complaining */ #include <sys/file.h> #include <time.h> main() { struct utimbuf test; test.actime = 0; exit(1); } EOCP if $cc try.c -o try >/dev/null 2>&1 ; then d_utimbuf="$undef" echo "You have the 'utimbuf' structure..." else echo "I will use my 'utimbuf' structure..." d_utimbuf="$define" fi $rm -f try.c try.o try fi ;; esac : see if there is a vfork set vfork d_vfork eval $inlibc : see if signal is declared as pointer to function returning int or void echo " " $cppstdin $cppflags < /usr/include/signal.h >$$.tmp if $contains 'int.*signal' $$.tmp >/dev/null 2>&1 ; then echo "You have int (*signal())() instead of void." d_voidsig="$undef" elif $contains 'void.*signal' $$.tmp >/dev/null 2>&1 ; then echo "You have void (*signal())() instead of int." d_voidsig="$define" elif $test -z "$d_voidsig"; then echo $n "As you already told me, signal handlers return " if $test "$d_voidsig" = "$define"; then echo void else echo int fi else echo "I can't determine whether signal handlers return void or int..." echo "I'm assuming they return void like ANSI and POSIX want" d_voidsig="$define" fi rm -f $$.tmp : get user and system aliases sizes $cat <<EOM The number of aliases allowed for users of the Elm system can vary based on system speed and memory available. If you have a fast system and/or a lot of memory you can enter a fairly large number of aliases for the next two questions...if not, you'll probably want to enter the suggested small-system values. (This applies to the speed of the swapping on your system too - if you're on a FAST system, use the big values!) First, how many aliases should be allowed for an individual user? The suggested values are 503 for blindly fast systems, 251 for average systems and 127 for slow systems. EOM case "$maxuseralias" in '') dflt=251;; *) dflt=$maxuseralias;; esac cont=true while $test "$cont" ; do echo " " rp="Number of user aliases: [$dflt]" $echo $n "$rp $c" . myread maxuseralias="$ans" if $test "$maxuseralias" -lt 50 -o "$maxuseralias" -gt 1000 ; then $cat <<EOM Pretty strange answer! I think you should reconsider and try a number from the range 50-1000. EOM odflt=$dflt if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="Should I use your answer of $maxuseralias user aliases anyway? [$dflt]" $echo $n "$rp $c" . myread dflt=$odflt case "$ans" in y*) cont='';; esac else cont='' fi done case "$maxsysalias" in '') case "$maxuseralias" in 127) dflt=223;; 503) dflt=739;; * ) dflt=503;; esac ;; *) dflt=$maxsysalias;; esac cont=true while $test "$cont" ; do echo " " rp="Maximum number of system aliases: [$dflt]" $echo $n "$rp $c" . myread maxsysalias="$ans" if $test "$maxsysalias" -lt 50 -o "$maxsysalias" -gt 1000 ; then $cat <<EOM Pretty strange answer! I think you should reconsider and try a number from the range 50-1000. EOM odflt=$dflt if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="Should I use your answer of $maxsysalias system aliases anyway? [$dflt]" $echo $n "$rp $c" . myread dflt=$odflt case "$ans" in y*) cont='';; esac else cont='' fi done elmalias="$maxsysalias" : preserve RCS keywords in files with variable substitution, grrr Log='$Log' Header='$Header' : see if symlink exists set symlink d_symlink eval $inlibc : get default batch subject $cat <<EOM Elm will provide a default subject for mail messages that are sent in batch mode (redirected from a file.) EOM case "$defbatsub" in '') dflt='no subject (file transmission)';; *) dflt=$defbatsub;; esac echo " " rp="Default batch subject: [$dflt]" $echo $n "$rp $c" . myread defbatsub="$ans" : determine default editor case "$defeditor" in '') case "$_vi" in */*) dflt="$_vi";; *) dflt=/usr/ucb/vi;; esac ;; *) dflt="$defeditor" ;; esac cont=true while $test "$cont" ; do echo " " rp="What is the default editor on your system? [$dflt]" $echo $n "$rp $c" . myread defeditor="$ans" if $test -f $ans; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="File $ans doesn't exist. Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done : determine where public libraries go case "$lib" in '') dflt=`loc . "." /usr/local/lib /usr/lib /lib` ;; *) dflt="$lib" ;; esac cont=true while $test "$cont" ; do echo " " rp="Where do you want to put the public libraries? [$dflt]" $echo $n "$rp $c" . myread lib="$ans" lib=`filexp $lib` if $test -d "$lib"; then cont='' else dflt=n rp="Directory $lib doesn't exist. Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done : ask the preferred line printer and options for this system. case "$linepr" in '') if $test -f "$lp"; then dflt="$lp" elif $test -f "$lpr"; then dflt="$lpr" else dflt= fi ;; *) dflt="$linepr";; esac linepr='blurfl/dyick' $cat <<EOM Elm has an option to send messages to the printer. This question asks for the default spooler name. You can also specify options to the command by separating them from the command by at least one space. EOM cont=true while $test "$cont" ; do rp="What print spooler do you prefer to use with Elm? [$dflt]" $echo $n "$rp $c" . myread linepr="$ans" ans=`$expr "$linepr" : "\([^ ]*\).*"` case "$ans" in /*) if $test -f "$ans"; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="File $ans doesn't exist. Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) cont='';; esac fi ;; *) echo "Please give the full path name." ;; esac done : determine where mail is spooled case "$maildir" in '') dflt=`loc . /usr/spool/mail /usr/spool/mail /usr/mail` ;; *) dflt="$maildir" ;; esac cont=true while $test "$cont" ; do echo " " rp="Where is yet-to-be-read mail spooled? [$dflt]" $echo $n "$rp $c" . myread maildir=`filexp "$ans"` if test -d $maildir; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="Directory $maildir doesn't exist. Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done : determine the group of the mail directory- what group elm should use mailgrp=`$ls -lgd $maildir` mailgrp=`$expr "$mailgrp" : "[ld][rwxstS-]*[ 0123456789]*\(.*\)"` : now mailgrp is either user group size mon day time/year name : or group size mon day time/year name try1=`$expr "$mailgrp" : "[A-z0-9]* *\([A-z0-9]*\).*"` try1a=`$expr "$try1" : "\([0-9]*\).*"` if $test "$try1" = "$try1a"; then mailgrp=`$expr "$mailgrp" : "\([A-z0-9]*\).*"` else mailgrp="$try1" fi case "$mailgrp" in '') mailgrp=mail ;; esac echo " " echo "Mail group is $mailgrp" : ask the preferred pager for this system. case "$pager" in '') dflt="builtin+";; *) dflt="$pager";; esac pager='blurfl/dyick' echo " " cont=true while $test "$cont" ; do rp="What pager do you prefer to use with $package? [$dflt]" $echo $n "$rp $c" . myread pager="$ans" case "$ans" in builtin) cont='' ;; builtin+) cont='' ;; /*) if $test -f "$ans"; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="File $ans doesn't exist. Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) cont='';; esac fi ;; *) echo "Please give the full path name." ;; esac done : find out which shell people like to use most case "$prefshell" in '') if $test -f /bin/ksh; then dflt='/bin/ksh' elif $test -f /bin/csh; then dflt='/bin/csh' else dflt='/bin/sh' fi ;; *) dflt="$prefshell";; esac cont=true while $test "$cont" ; do echo " " echo "Give the full path name of the shell most people like to use on your" $echo $n "system: [$dflt] $c" rp="Preferred shell: [$dflt]" . myread prefshell=$ans if test -f $ans; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="File $ans doesn't exist. Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done : determine the name of the tape device rmttape=`loc rct0 "" /dev` if $test -z "$rmttape"; then rmttape=`loc rmt0 "" /dev` fi if $test -z "$rmttape"; then rmttape=`loc rtp0 "unknown-remote-tape-unit" /dev` fi echo "remote tape drive is $rmttape" echo " " : where do we get termlib routines from echo " " ans=`loc libcurses.a x $libpth` if $test "$ans" = x; then ans=`loc Slibcurses.a x $libpth` fi case "$ans" in /*) ar t $ans >grimble if $contains tputs.o grimble >/dev/null 2>&1; then termlib='-lcurses' d_havetlib="$define" echo "Terminfo library found." else ans=x fi rm -f grimble ;; esac case "$ans" in x) ans=`loc libtermlib.a x $libpth` if $test "$ans" = x; then ans=`loc Slibtermlib.a x $libpth` fi case "$ans" in /usr/lib*|/lib*) termlib='-ltermlib' d_havetlib="$define" echo "Termlib library found." ;; /*) termlib="$ans" d_havetlib="$define" echo "Termlib library found." ;; *) ans=`loc libtermcap.a x $libpth` if $test "$ans" = x; then ans=`loc Slibtermcap.a x $libpth` fi case "$ans" in /usr/lib*|/lib*) termlib='-ltermcap' d_havetlib="$define" echo "Termcap library found." ;; /*) termlib="$ans" d_havetlib="$define" echo "Termcap library found." ;; *) case "$termlib" in '') dflt=y rp="Your system appears to NOT have termlib-style routines. Is this true? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in n*|f*) d_havetlib="$define" echo "Then where are the termlib-style routines kept (specify either -llibname" $echo $n " or full pathname (~name ok))? $c" rp='Specify termlib:' . myread termlib=`filexp $ans` ;; *) d_havetlib="$undef" termlib='' echo "You will have to play around with term.c then." ;; esac echo " " ;; *) echo "You said termlib was $termlib before." ;; esac ;; esac ;; esac ;; esac : determine where temporary files should go case "$tmpdir" in '') dflt=`loc . "." "/tmp /usr/tmp"` ;; *) dflt="$tmpdir" ;; esac if $test -d "$tmpdir" -a "$tmpdir" != ""; then $echo " " $echo "Temporary files will be put in the $tmpdir directory" else cont=true while $test "$cont" ; do $echo " " rp="Where do you want to put the temporary files? [$dflt]" $echo $n "$rp $c" . myread tmpdir="$ans" tmpdir=`filexp $tmpdir` if $test -d "$tmpdir" -a "$tmpdir" != ""; then cont='' else if $test "$fastread" = yes; then dflt=y else dflt=n fi rp="Directory $tmpdir doesn't exist. Use that name anyway? [$dflt]" $echo $n "$rp $c" . myread dflt='' case "$ans" in y*) cont='';; esac fi done fi case "$d_noxheader" in "$define") dflt=y;; "$undef") dflt=n;; *) dflt=n;; esac $cat <<EOM Some sites to not like to see the mail header "X-mailer:" in outgoing messages. If you choose, you may disable these headers. However, it is strongly urged to leave these headers in the mail to assist in tracking down problems. EOM rp="Would you like to disable the X-mailer: headers? [$dflt]" $echo $n "$rp $c" . myread case "$ans" in y*) d_noxheader="$define";; *) d_noxheader="$undef";; esac echo " " echo "End of configuration questions." echo " " : create config.sh file echo " " if test -d ../UU; then cd .. fi echo "Creating config.sh..." $spitshell <<EOT >config.sh $startsh # config.sh # This file was produced by running the Configure script. define='$define' eunicefix='$eunicefix' Log='$Log' Header='$Header' bin='$bin' byteorder='$byteorder' contains='$contains' cppstdin='$cppstdin' cppminus='$cppminus' d_crypt='$d_crypt' cryptlib='$cryptlib' d_getopt='$d_getopt' d_havetlib='$d_havetlib' termlib='$termlib' d_mkdir='$d_mkdir' d_portable='$d_portable' d_rename='$d_rename' d_sigvec='$d_sigvec' d_sigvectr='$d_sigvectr' d_symlink='$d_symlink' d_vfork='$d_vfork' d_whoami='$d_whoami' defeditor='$defeditor' hostname='$hostname' phostname='$phostname' mydomain='$mydomain' i_time='$i_time' i_systime='$i_systime' d_systimekernel='$d_systimekernel' maildir='$maildir' n='$n' c='$c' package='$package' pager='$pager' prefshell='$prefshell' spitshell='$spitshell' shsharp='$shsharp' sharpbang='$sharpbang' startsh='$startsh' d_eunice='$d_eunice' 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' c_date='$c_date' d_calendar='$d_calendar' calendar='$calendar' d_cuserid='$d_cuserid' d_flock='$d_flock' d_flockonly='$d_flockonly' lock_dir='$lock_dir' d_gethname='$d_gethname' d_douname='$d_douname' d_phostname='$d_phostname' d_host_comp='$d_host_comp' d_havedbm='$d_havedbm' dbm='$dbm' d_index='$d_index' d_internet='$d_internet' d_mboxedit='$d_mboxedit' d_mmdf='$d_mmdf' d_newauto='$d_newauto' d_nfs='$d_nfs' d_networkorder='$d_networkorder' d_noxheader='$d_noxheader' d_optreturn='$d_optreturn' d_pafirst='$d_pafirst' d_notouchadd='$d_notouchadd' d_noaddfrom='$d_noaddfrom' d_usedomain='$d_usedomain' d_nocheckvalid='$d_nocheckvalid' d_pidcheck='$d_pidcheck' d_ptem='$d_ptem' d_remlock='$d_remlock' maxattempts='$maxattempts' d_setgid='$d_setgid' mailermode='$mailermode' d_strcspn='$d_strcspn' d_strspn='$d_strspn' d_strings='$d_strings' d_pwdinsys='$d_pwdinsys' strings='$strings' includepath='$includepath' d_subshell='$d_subshell' d_tempnam='$d_tempnam' tempnamo='$tempnamo' tempnamc='$tempnamc' d_termio='$d_termio' d_termios='$d_termios' d_tz_min='$d_tz_min' d_useembed='$d_useembed' d_utimbuf='$d_utimbuf' d_voidsig='$d_voidsig' defbatsub='$defbatsub' elmalias='$elmalias' maxsysalias='$maxsysalias' maxuseralias='$maxuseralias' lib='$lib' libc='$libc' linepr='$linepr' mailer='$mailer' mailgrp='$mailgrp' mansrc='$mansrc' manext='$manext' models='$models' split='$split' small='$small' medium='$medium' large='$large' huge='$huge' optimize='$optimize' ccflags='$ccflags' cppflags='$cppflags' ldflags='$ldflags' cc='$cc' libs='$libs' nametype='$nametype' d_passnames='$d_passnames' d_berknames='$d_berknames' d_usgnames='$d_usgnames' passcat='$passcat' pathalias='$pathalias' domains='$domains' rmttape='$rmttape' roff='$roff' tmpdir='$tmpdir' xencf='$xencf' xenlf='$xenlf' d_xenix='$d_xenix' d_bsd='$d_bsd' CONFIG=true EOT CONFIG=true 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;; 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 if $contains '^depend:' Makefile >/dev/null 2>&1; then dflt=n $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." else 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