Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!tut.cis.ohio-state.edu!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!cica!iuvax!rutgers!devon!paul From: paul@devon.lns.pa.us (Paul Sutcliffe Jr.) Newsgroups: alt.sources Subject: Enhanced SYSV Getty, v1.1, part 2 of 4 Keywords: getty source Message-ID: <1990Jan17.075737.701@devon.lns.pa.us> Date: 17 Jan 90 07:57:37 GMT Organization: Devon Computer Services, Lancaster, PA Lines: 2163 #! /bin/sh # Make a new directory for the getty sources, cd to it, and run kits 1 # thru 4 through sh. When all 4 kits have been run, read README. echo "This is getty 1.1 kit 2 (of 4). If kit 2 is complete, the line" echo '"'"End of kit 2 (of 4)"'" will echo at the end.' echo "" export PATH || (echo "You didn't use sh, you clunch." ; kill $$) mkdir 2>/dev/null echo Extracting Configure sed >Configure <<'!STUFFY!FUNK!' -e 's/X//' X#! /bin/sh X# X# If these # comments don't work, trim them. Don't worry about any other X# shell scripts, Configure will trim # comments from them for you. X# X# (If you are trying to port this package to a machine without sh, I would X# suggest you cut out the prototypical config.h from the end of Configure X# and edit it to reflect your system. Some packages may include samples X# of config.h for certain machines, so you might look for one of those.) X# X# $Id: Configure,v 1.1 90/01/16 16:09:23 paul Exp Locker: paul $ X# X# $Log: Configure,v $ X# Revision 1.1 90/01/16 16:09:23 paul X# Initial revision X# X# X X: sanity checks XPATH='.:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc:/usr/new:/usr/new/bin:/usr/nbin' Xexport PATH || (echo "OOPS, this isn't sh. Desperation time. I will feed myself to sh."; sh $0; kill $$) X Xif test ! -t 0; then X echo "Say 'sh Configure', not 'sh /dev/null 2>&1 && \ X echo "(I see you are using the Korn shell. Some ksh's blow up on Configure," && \ X echo "especially on exotic machines. If yours does, try the Bourne shell instead.)" X Xif test ! -d ../UU; then X if test ! -d UU; then X mkdir UU X fi X cd UU Xfi X Xcase "$1" in X-d) shift; fastread='yes';; Xesac X Xpackage='' Xdefine='' Xundef='' Xd_eunice='' Xeunicefix='' Xcontains='' Xn='' Xc='' Xspitshell='' Xshsharp='' Xsharpbang='' Xstartsh='' Xloclist='' Xexpr='' Xsed='' Xsort='' Xuniq='' Xecho='' Xcat='' Xrm='' Xmv='' Xcp='' Xtr='' Xgrep='' Xcc='' Xcpp='' Xtrylist='' Xtest='' Xegrep='' XMcc='' Xsendmail='' Xmailx='' Xmail='' Xlibc='' XLog='' XId='' Xxenix='' Xd_getutent='' Xd_strdup='' Xd_putenv='' Xtermlib='' Xllib_termlib='' Xd_ttytype='' Xttytype='' Xgettytab='' Xutmp='' Xwtmp='' Xhostname='' Xphostname='' Xd_douname='' Xd_phostname='' Xd_portable='' Xbin='' Xstdchar='' Xdefvoidused='' Xvoidflags='' Xd_voidsig='' Xmodels='' Xsmall='' Xmedium='' Xlarge='' Xhuge='' Xunsplit='' Xsplit='' Xccflags='' Xldflags='' Xcppstdin='' Xcppminus='' Xregisters='' Xreg1='' Xreg2='' Xreg3='' Xreg4='' Xreg5='' Xreg6='' Xreg7='' Xreg8='' Xreg9='' Xreg10='' Xreg11='' Xreg12='' Xreg13='' Xreg14='' Xreg15='' Xreg16='' Xuidtype='' Xgidtype='' Xuucpid='' Xlock='' Xd_asciipid='' Xmailer='' XCONFIG='' X: set package name Xpackage=getty X Xecho " " Xecho "Beginning of configuration questions for $package kit." X: Eunice requires " " instead of "", can you believe it Xecho " " X Xdefine='define' Xundef='undef' Xlibpth='/usr/lib /usr/local/lib /lib' Xsmallmach='pdp11 i8086 z8000 i80286 iAPX286' Xrmlist='kit[1-9]isdone kit[1-9][0-9]isdone' Xtrap 'echo " "; rm -f $rmlist; exit 1' 1 2 3 X X: We must find out about Eunice early Xeunicefix=':' Xif test -f /etc/unixtovms; then X eunicefix=/etc/unixtovms Xfi Xif test -f /etc/unixtovms.exe; then X eunicefix=/etc/unixtovms.exe Xfi X X: Now test for existence of everything in MANIFEST X Xecho "First let's make sure your kit is complete. Checking..." X(cd ..; cat `awk 'NR>4{print $1}' MANIFEST` >/dev/null || kill $$) Xecho " " X Xattrlist="mc68000 sun gcos unix ibm gimpel interdata tss os mert pyr" Xattrlist="$attrlist vax pdp11 i8086 z8000 u3b2 u3b5 u3b20 u3b200" Xattrlist="$attrlist hpux hp9000s300 hp9000s500 hp9000s800" Xattrlist="$attrlist ns32000 ns16000 iAPX286 mc300 mc500 mc700 sparc" Xattrlist="$attrlist nsc32000 sinix xenix venix posix ansi M_XENIX" Xattrlist="$attrlist $mc68k __STDC__ UTS M_I8086 M_I186 M_I286 M_I386" Xpth="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /etc /usr/lib /lib /usr/local/lib" Xdefvoidused=7 X X: some greps do not return status, grrr. Xecho "grimblepritz" >grimble Xif grep blurfldyick grimble >/dev/null 2>&1 ; then X contains=contains Xelif grep grimblepritz grimble >/dev/null 2>&1 ; then X contains=grep Xelse X contains=contains Xfi Xrm -f grimble X: the following should work in any shell Xcase "$contains" in Xcontains*) X echo " " X echo "AGH! Grep doesn't return a status. Attempting remedial action." X cat >contains <<'EOSS' Xgrep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp XEOSS Xchmod +x contains Xesac X X: first determine how to suppress newline on echo command Xecho "Checking echo to see how to suppress newlines..." X(echo "hi there\c" ; echo " ") >.echotmp Xif $contains c .echotmp >/dev/null 2>&1 ; then X echo "...using -n." X n='-n' X c='' Xelse X cat <<'EOM' X...using \c XEOM X n='' X c='\c' Xfi Xecho $n "Type carriage return to continue. Your cursor should be here-->$c" Xread ans Xrm -f .echotmp X X: now set up to do reads with possible shell escape and default assignment Xcat <myread Xcase "\$fastread" in Xyes) ans=''; echo " " ;; X*) ans='!';; Xesac Xwhile expr "X\$ans" : "X!" >/dev/null; do X read ans X case "\$ans" in X !) X sh X echo " " X echo $n "\$rp $c" X ;; X !*) X set \`expr "X\$ans" : "X!\(.*\)\$"\` X sh -c "\$*" X echo " " X echo $n "\$rp $c" X ;; X esac Xdone Xrp='Your answer:' Xcase "\$ans" in X'') ans="\$dflt";; Xesac XEOSC X X: general instructions Xcat </dev/null 2>&1 ; then X echo "Your sh handles # comments correctly." X shsharp=true X spitshell=cat X echo " " X echo "Okay, let's see if #! works on this system..." X echo "#!/bin/echo hi" > try X $eunicefix try X chmod +x try X try > today X if $contains hi today >/dev/null 2>&1; then X echo "It does." X sharpbang='#!' X else X echo "#! /bin/echo hi" > try X $eunicefix try X chmod +x try X try > today X if test -s today; then X echo "It does." X sharpbang='#! ' X else X echo "It doesn't." X sharpbang=': use ' X fi X fi Xelse X echo "Your sh doesn't grok # comments--I will strip them later on." X shsharp=false X echo "exec grep -v '^#'" >spitshell X chmod +x spitshell X $eunicefix spitshell X spitshell=`pwd`/spitshell X echo "I presume that if # doesn't work, #! won't work either!" X sharpbang=': use ' Xfi X X: figure out how to guarantee sh startup Xecho " " Xecho "Checking out how to guarantee sh startup..." Xstartsh=$sharpbang'/bin/sh' Xecho "Let's see if '$startsh' works..." Xcat >try <loc X$startsh Xcase \$# in X0) exit 1;; Xesac Xthing=\$1 Xshift Xdflt=\$1 Xshift Xfor dir in \$*; do X case "\$thing" in X .) X if test -d \$dir/\$thing; then X echo \$dir X exit 0 X fi X ;; X *) X if test -f \$dir/\$thing; then X echo \$dir/\$thing X exit 0 X elif test -f \$dir/\$thing.exe; then X : on Eunice apparently X echo \$dir/\$thing X exit 0 X fi X ;; X esac Xdone Xecho \$dflt Xexit 1 XEOSC Xchmod +x loc X$eunicefix loc Xloclist=" Xexpr Xsed Xsort Xuniq Xecho Xcat Xrm Xmv Xcp Xtr Xgrep Xcc Xcpp X" Xtrylist=" Xtest Xegrep XMcc Xsendmail Xmailx Xmail X" Xfor file in $loclist; do X xxx=`loc $file $file $pth` X eval $file=$xxx X eval _$file=$xxx X case "$xxx" in X /*) X echo $file is in $xxx. X ;; X *) X echo "I don't know where $file is. I hope it's in everyone's PATH." X ;; X esac Xdone Xecho " " Xecho "Don't worry if any of the following aren't found..." Xans=offhand Xfor file in $trylist; do X xxx=`loc $file $file $pth` X eval $file=$xxx X eval _$file=$xxx X case "$xxx" in X /*) X echo $file is in $xxx. X ;; X *) X echo "I don't see $file out there, $ans." X ans=either X ;; X esac Xdone Xcase "$egrep" in Xegrep) X echo "Substituting grep for egrep." X egrep=$grep X ;; Xesac Xcase "$test" in Xtest) X echo "Hopefully test is built into your sh." X ;; X/bin/test) X if sh -c "PATH= test true" >/dev/null 2>&1; then X echo "Using the test built into your sh." X test=test X fi X ;; X*) X test=test X ;; Xesac Xcase "$echo" in Xecho) X echo "Hopefully echo is built into your sh." X ;; X/bin/echo) X echo " " X echo "Checking compatibility between /bin/echo and builtin echo (if any)..." X $echo $n "hi there$c" >foo1 X echo $n "hi there$c" >foo2 X if cmp foo1 foo2 >/dev/null 2>&1; then X echo "They are compatible. In fact, they may be identical." X else X case "$n" in X '-n') n='' c='\c' ans='\c' ;; X *) n='-n' c='' ans='-n' ;; X esac X cat </dev/null >libc.tmp Xsed -n -e 's/^.* [AT] _//p' -e 's/^.* [AT] //p' libc.list Xif $contains '^printf$' libc.list >/dev/null 2>&1; then X echo "done" Xelse X sed -n -e 's/^.* D _//p' -e 's/^.* D //p' libc.list X $contains '^printf$' libc.list >/dev/null 2>&1 || \ X sed -n -e 's/^_//' \ X -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p' libc.list X if $contains '^printf$' libc.list >/dev/null 2>&1; then X echo "done" X else X echo " " X echo "nm didn't seem to work right." X echo "Trying ar instead..." X if ar t $libc > libc.tmp; then X sed -e 's/\.o$//' < libc.tmp > libc.list X echo "Ok." X else X echo "ar didn't seem to work right." X echo "Maybe this is a Cray...trying bld instead..." X if bld t $libc | sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list; then X echo "Ok." X else X echo "That didn't work either. Giving up." X exit 1 X fi X fi X fi Xfi Xrmlist="$rmlist libc.tmp libc.list" X X: make some quick guesses about what we are up against Xecho " " X$echo $n "Hmm... $c" Xif $contains SIGTSTP /usr/include/signal.h >/dev/null 2>&1 ; then X echo "Looks kind of like a BSD system, but we'll see..." X echo exit 0 >bsd X echo exit 1 >usg X echo exit 1 >v7 Xelif $contains '^fcntl$' libc.list >/dev/null 2>&1 ; then X echo "Looks kind of like a USG system, but we'll see..." X echo exit 1 >bsd X echo exit 0 >usg X echo exit 1 >v7 Xelse X echo "Looks kind of like a version 7 system, but we'll see..." X echo exit 1 >bsd X echo exit 1 >usg X echo exit 0 >v7 Xfi Xif $contains '^vmssystem$' libc.list >/dev/null 2>&1 ; then X cat <<'EOI' XThere is, however, a strange, musty smell in the air that reminds me of Xsomething...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. XEOI X echo "exit 0" >eunice X eunicefix=unixtovms X d_eunice="$define" X: it so happens the Eunice I know will not run shell scripts in Unix format Xelse X echo " " X echo "Congratulations. You aren't running Eunice." X eunicefix=':' X d_eunice="$undef" X echo "exit 1" >eunice Xfi Xif test -f /xenix; then X echo "Actually, this looks more like a XENIX system..." X echo "exit 0" >xenix X xenix="$define" Xelse X echo " " X echo "It's not Xenix..." X echo "exit 1" >xenix X xenix="$undef" Xfi Xchmod +x xenix X$eunicefix xenix Xif test -f /venix; then X echo "Actually, this looks more like a VENIX system..." X echo "exit 0" >venix Xelse X echo " " X if xenix; then X : null X else X echo "Nor is it Venix..." X fi X echo "exit 1" >venix Xfi Xchmod +x bsd usg v7 eunice venix X$eunicefix bsd usg v7 eunice venix Xrmlist="$rmlist bsd usg v7 eunice venix xenix" X X: Warnings Xif v7; then X cat <<'EOM' X XNOTE: many V7 systems do not have a way to do a non-blocking read. If you Xdon't have any of FIONREAD, O_NDELAY, or rdchk(), the $package package Xmay not work as well as it might. It might not work at all. XEOM Xfi X X: preserve RCS keywords in files with variable substitution, grrr XLog='$Log' XId='$Id' X X: set up shell script to do ~ expansion Xcat >filexp <&2 X exit 1 X fi X case "\$1" in X */*) X echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\` X ;; X *) X echo \$dir X ;; X esac X fi X ;; X*) X echo \$1 X ;; Xesac XEOSS Xchmod +x filexp X$eunicefix filexp X X: now get the host name Xecho "Figuring out host name..." Xecho 'Maybe "hostname" will work...' Xif ans=`sh -c hostname 2>&1` ; then X hostname=$ans X phostname=hostname Xelse X echo 'Oh, dear. Maybe "/etc/systemid" is the key...' X if ans=`cat /etc/systemid 2>&1` ; then X hostname=$ans X phostname='cat /etc/systemid' X if xenix; then X echo "Whadyaknow. Xenix always was a bit strange..." X else X echo "What is a non-Xenix system doing with /etc/systemid?" X fi X else X echo 'No, maybe "uuname -l" will work...' X if ans=`sh -c 'uuname -l' 2>&1` ; then X hostname=$ans X phostname='uuname -l' X else X echo 'Strange. Maybe "uname -n" will work...' X if ans=`sh -c 'uname -n' 2>&1` ; then X hostname=$ans X phostname='uname -n' X else X echo 'Oh well, maybe I can mine it out of whoami.h...' X if ans=`sh -c $contains' sysname /usr/include/whoami.h' 2>&1` ; then X hostname=`echo "$ans" | $sed 's/^.*"\(.*\)"/\1/'` X phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' /dev/null 2>&1 ; then X echo "getutent() found." X d_getutent="$define" Xelse X echo "No getutent() found--will use my own." X d_getutent="$undef" Xfi X X: see if there is a strdup Xif $contains '^strdup$' libc.list >/dev/null 2>&1 ; then X echo "strdup() found." X d_strdup="$define" Xelse X echo "No strdup() found--will use my own." X d_strdup="$undef" Xfi X X: see if there is a putenv Xif $contains '^putenv$' libc.list >/dev/null 2>&1 ; then X echo "putenv() found." X d_putenv="$define" Xelse X echo "No putenv() found--will use my own." X d_putenv="$undef" Xfi X X: see how we will look up host name Xd_douname="$undef" Xd_phostname="$undef" X X# if xenix; then X# echo " " X# echo "(Assuming Xenix uname() is broken.)" X# el Xif $contains '^uname$' libc.list >/dev/null 2>&1 ; then X echo "uname() found." X d_douname="$define" X ans=uname Xfi X Xcase "$d_douname" in X*define*) X dflt=n X cat <grimble X if $contains tputs.o grimble >/dev/null 2>&1; then X termlib='-lcurses' X echo "Terminfo library found." X else X ans=x X fi X rm -f grimble X ;; Xesac Xcase "$ans" in Xx) X ans=`loc libtermlib.a x $libpth` X case "$ans" in X /usr/lib*|/lib*) X termlib='-ltermlib' X echo "Termlib library found." X ;; X /*) X termlib="$ans" X echo "Termlib library found." X ;; X *) X ans=`loc libtermcap.a x $libpth` X case "$ans" in X /usr/lib*|/lib*) X termlib='-ltermcap' X echo "Termcap library found." X ;; X /*) X termlib="$ans" X echo "Termcap library found." X ;; X *) X case "$termlib" in X '') X dflt=y X rp="Your system appears to NOT have termlib-style routines. Is this true? [$dflt]" X $echo $n "$rp $c" X . myread X case "$ans" in X n*|f*) X echo "Then where are the termlib-style routines kept (specify either -llibname" X $echo $n " or full pathname (~name ok))? $c" X rp='Specify termlib:' X . myread X termlib=`filexp $ans` X ;; X *) termlib='' X echo "You will have to play around with main.c then." X ;; X esac X echo " " X ;; X *) echo "You said termlib was $termlib before." X ;; X esac X ;; X esac X ;; X esac X ;; Xesac Xans=`loc llib${termlib}.ln x $libpth` Xcase "$ans" in X/usr/lib*|/lib*) X llib_termlib='-ltermlib' X echo "Termlib lint library found." X ;; Xesac X X: see if there is a ttytype file Xecho " " Xif ttytype=`loc ttytype x /etc`; then X echo "Found $ttytype." X d_ttytype="$define" Xelse X d_ttytype="$undef" Xfi X X: see if there is a gettydefs file Xif gettytab=`loc gettydefs x /etc`; then X echo "Found $gettytab." Xelse X dflt=/etc/gettydefs X echo " " X $echo "No /etc/gettydefs found. I'll let you create your own." X $echo $n "What do you want to call your gettytab file? [$dflt] $c" X rp='Specify gettytab:' X . myread X gettytab=$ans X echo " " Xfi X X: find the utmp file Xif utmp=`loc utmp utmp /etc /usr/adm`; then X echo "Found $utmp." Xelse X dflt=/etc/utmp X echo " " X $echo $n "Where is your utmp file? [$dflt] $c" X rp="Utmp filename? [$dflt]" X . myread X utmp="$ans" X echo " " Xfi X X: find the wtmp file Xif wtmp=`loc wtmp wtmp /etc /usr/adm`; then X echo "Found $wtmp." Xelse X dflt=/etc/wtmp X echo " " X $echo $n "Where is your wtmp file? [$dflt] $c" X rp="Wtmp filename? [$dflt]" X . myread X wtmp="$ans" X echo " " Xfi X X: decide how portable to be Xcase "$d_portable" in X"$define") dflt=y;; X*) dflt=n;; Xesac X$cat </dev/null 2>&1 ; then X echo "Your stdio uses unsigned chars." X stdchar="unsigned char" Xelse X echo "Your stdio uses signed chars." X stdchar="char" Xfi X X: check for void type Xecho " " X$cat <try.c <<'EOCP' X#if TRY & 1 Xvoid main() { X#else Xmain() { X#endif X extern void moo(); /* function returning void */ X void (*goo)(); /* ptr to func returning void */ X#if TRY & 2 X void (*foo[10])(); X#endif X X#if TRY & 4 X if(goo == moo) { X exit(0); X } X#endif X exit(0); X} XEOCP X if $cc -S -DTRY=$defvoidused try.c >.out 2>&1 ; then X voidflags=$defvoidused X echo "It appears to support void." X if $contains warning .out >/dev/null 2>&1; then X echo "However, you might get some warnings that look like this:" X $cat .out X fi X else X echo "Hmm, your compiler has some difficulty with void. Checking further..." X if $cc -S -DTRY=1 try.c >/dev/null 2>&1 ; then X echo "It supports 1..." X if $cc -S -DTRY=3 try.c >/dev/null 2>&1 ; then X voidflags=3 X echo "And it supports 2 but not 4." X else X echo "It doesn't support 2..." X if $cc -S -DTRY=5 try.c >/dev/null 2>&1 ; then X voidflags=5 X echo "But it supports 4." X else X voidflags=1 X echo "And it doesn't support 4." X fi X fi X else X echo "There is no support at all for void." X voidflags=0 X fi X fi Xesac Xdflt="$voidflags"; Xrp="Your void support flags add up to what? [$dflt]" X$echo $n "$rp $c" X. myread Xvoidflags="$ans" X$rm -f try.* .out X X: see if signal is declared as pointer to function returning int or void Xecho " " Xif $contains 'void.*signal' /usr/include/signal.h >/dev/null 2>&1 ; then X echo "You have void (*signal())() instead of int." X d_voidsig="$define" Xelse X echo "You have int (*signal())() instead of void." X d_voidsig="$undef" Xfi X X: see how we invoke the C preprocessor Xecho " " Xecho "Now, how can we feed standard input to your C preprocessor..." Xcat <<'EOT' >testcpp.c X#define ABC abc X#define XYZ xyz XABC.XYZ XEOT Xecho 'Maybe "'"$cc"' -E" will work...' X$cc -E testcpp.out 2>&1 Xif $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then X echo "Yup, it does." X cppstdin="$cc -E" X cppminus=''; Xelse X echo 'Nope, maybe "'$cpp'" will work...' X $cpp testcpp.out 2>&1 X if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then X echo "Yup, it does." X cppstdin="$cpp" X cppminus=''; X else X echo 'No such luck...maybe "'$cpp' -" will work...' X $cpp - testcpp.out 2>&1 X if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then X echo "It works!" X cppstdin="$cpp" X cppminus='-'; X else X echo 'Nixed again...maybe "'"$cc"' -E -" will work...' X $cc -E - testcpp.out 2>&1 X if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then X echo "Hooray, it works! I was beginning to wonder." X cppstdin="$cc -E" X cppminus='-'; X else X echo 'Nope...maybe "'"$cc"' -P" will work...' X $cc -P testcpp.out 2>&1 X if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then X echo "Yup, that does." X cppstdin="$cc -P" X cppminus=''; X else X echo 'Nope...maybe "'"$cc"' -P -" will work...' X $cc -P - testcpp.out 2>&1 X if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then X echo "Yup, that does." X cppstdin="$cc -P" X cppminus='-'; X else X echo 'Hmm...perhaps you already told me...' X case "$cppstdin" in X '') ;; X *) $cppstdin $cppminus testcpp.out 2>&1;; X esac X if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then X echo "Hooray, you did! I was beginning to wonder." X else X echo 'Uh-uh. Time to get fancy...' X cd .. X echo 'Trying (cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c)' X echo 'cat >/tmp/$$.c; '"$cc"' -E /tmp/$$.c; rm /tmp/$$.c' >cppstdin X chmod 755 cppstdin X cppstdin=`pwd`/cppstdin X cppminus=''; X cd UU X $cppstdin testcpp.out 2>&1 X if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then X echo "Eureka!." X else X dflt=blurfl X $echo $n "No dice. I can't find a C preprocessor. Name one: $c" X rp='Name a C preprocessor:' X . myread X cppstdin="$ans" X $cppstdin testcpp.out 2>&1 X if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then X echo "OK, that will do." X else X echo "Sorry, I can't get that to work. Go find one." X exit 1 X fi X fi X fi X fi X fi X fi X fi X fi Xfi Xrm -f testcpp.c testcpp.out X X: get C preprocessor symbols handy Xecho " " Xecho $attrlist | $tr '[ - ]' '[\012-\012]' >Cppsym.know X$cat <Cppsym X$startsh Xcase "\$1" in X-l) list=true X shift X ;; Xesac Xunknown='' Xcase "\$list\$#" in X1|2) X for sym do X if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then X exit 0 X elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then X : X else X unknown="\$unknown \$sym" X fi X done X set X \$unknown X shift X ;; Xesac Xcase \$# in X0) exit 1;; Xesac Xecho \$* | $tr '[ - ]' '[\012-\012]' | $sed -e 's/\(.*\)/\\ X#ifdef \1\\ Xexit 0; _ _ _ _\1\\ \1\\ X#endif\\ X/' >/tmp/Cppsym\$\$ Xecho exit 1 >>/tmp/Cppsym\$\$ X$cppstdin $cppminus /tmp/Cppsym2\$\$ Xcase "\$list" in Xtrue) awk 'NF > 5 {print substr(\$6,2,100)}' Cppsym.true Xcat Cppsym.true Xrmlist="$rmlist Cppsym Cppsym.know Cppsym.true" X X: see what memory models we can support Xif Cppsym M_I8086 M_I186 M_I286; then X models='small medium large huge' Xfi Xcase "$models" in X'') X : We may not use Cppsym or we get a circular dependency through cc. X : But this should work regardless of which cc we eventually use. X cat >pdp11.c <<'EOP' Xmain() { X#ifdef pdp11 X exit(0); X#else X exit(1); X#endif X} XEOP X cc -o pdp11 pdp11.c >/dev/null 2>&1 X if pdp11 2>/dev/null; then X dflt='unsplit split' X else X ans=`loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge` X case "$ans" in X X) dflt='none';; X *) if $test -d /lib/small || $test -d /usr/lib/small; then X dflt='small' X else X dflt='' X fi X if $test -d /lib/medium || $test -d /usr/lib/medium; then X dflt="$dflt medium" X fi X if $test -d /lib/large || $test -d /usr/lib/large; then X dflt="$dflt large" X fi X if $test -d /lib/huge || $test -d /usr/lib/huge; then X dflt="$dflt huge" X fi X esac X fi X ;; X*) dflt="$models" ;; Xesac X$cat <.foo X. .foo Xawk "BEGIN { for (i=1; i<=$registers; i++) printf \"reg%d=register\n\", i}" \ X .foo X. .foo Xrm -f .foo X X: see what type uids are declared as in the kernel Xcase "$uidtype" in X'') X if $contains 'uid_t;' /usr/include/sys/types.h >/dev/null 2>&1 ; then X dflt='uid_t'; X else X set `grep '_ruid;' /usr/include/sys/user.h 2>/dev/null` unsigned short X case $1 in X unsigned) dflt="$1 $2" ;; X *) dflt="$1" ;; X esac X fi X ;; X*) dflt="$uidtype" X ;; Xesac Xcont=true Xecho " " Xrp="What type are user ids on this system declared as? [$dflt]" X$echo $n "$rp $c" X. myread Xuidtype="$ans" X X: see what type gids are declared as in the kernel Xcase "$gidtype" in X'') X if $contains 'gid_t;' /usr/include/sys/types.h >/dev/null 2>&1 ; then X dflt='gid_t'; X else X set `grep '_rgid;' /usr/include/sys/user.h 2>/dev/null` unsigned short X case $1 in X unsigned) dflt="$1 $2" ;; X *) dflt="$1" ;; X esac X fi X ;; X*) dflt="$gidtype" X ;; Xesac Xcont=true Xecho " " Xrp="What type are group ids on this system declared as? [$dflt]" X$echo $n "$rp $c" X. myread Xgidtype="$ans" X X: determine uucp id Xecho " " Xuucpid=`$sed -e "/uucp:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" -e "q" -e "}" -e "d" config.sh X$startsh X# config.sh X# This file was produced by running the Configure script. X Xpackage='$package' Xdefine='$define' Xundef='$undef' Xd_eunice='$d_eunice' Xeunicefix='$eunicefix' Xcontains='$contains' Xn='$n' Xc='$c' Xspitshell='$spitshell' Xshsharp='$shsharp' Xsharpbang='$sharpbang' Xstartsh='$startsh' Xloclist='$loclist' Xexpr='$expr' Xsed='$sed' Xsort='$sort' Xuniq='$uniq' Xecho='$echo' Xcat='$cat' Xrm='$rm' Xmv='$mv' Xcp='$cp' Xtr='$tr' Xgrep='$grep' Xcc='$cc' Xcpp='$cpp' Xtrylist='$trylist' Xtest='$test' Xegrep='$egrep' XMcc='$Mcc' Xsendmail='$sendmail' Xmailx='$mailx' Xmail='$mail' Xlibc='$libc' XLog='$Log' XId='$Id' Xxenix='$xenix' Xd_getutent='$d_getutent' Xd_strdup='$d_strdup' Xd_putenv='$d_putenv' Xtermlib='$termlib' Xllib_termlib='$llib_termlib' Xd_ttytype='$d_ttytype' Xttytype='$ttytype' Xgettytab='$gettytab' Xutmp='$utmp' Xwtmp='$wtmp' Xhostname='$hostname' Xphostname='$phostname' Xd_douname='$d_douname' Xd_phostname='$d_phostname' Xd_portable='$d_portable' Xbin='$bin' Xstdchar='$stdchar' Xdefvoidused='$defvoidused' Xvoidflags='$voidflags' Xd_voidsig='$d_voidsig' Xmodels='$models' Xsmall='$small' Xmedium='$medium' Xlarge='$large' Xhuge='$huge' Xunsplit='$unsplit' Xsplit='$split' Xccflags='$ccflags' Xldflags='$ldflags' Xcppstdin='$cppstdin' Xcppminus='$cppminus' Xregisters='$registers' Xreg1='$reg1' Xreg2='$reg2' Xreg3='$reg3' Xreg4='$reg4' Xreg5='$reg5' Xreg6='$reg6' Xreg7='$reg7' Xreg8='$reg8' Xreg9='$reg9' Xreg10='$reg10' Xreg11='$reg11' Xreg12='$reg12' Xreg13='$reg13' Xreg14='$reg14' Xreg15='$reg15' Xreg16='$reg16' Xuidtype='$uidtype' Xgidtype='$gidtype' Xuucpid='$uucpid' Xlock='$lock' Xd_asciipid='$d_asciipid' Xmailer='$mailer' XCONFIG=true XEOT X XCONFIG=true X Xecho " " Xdflt='' Xfastread='' Xecho "If you didn't make any mistakes, then just type a carriage return here." Xrp="If you need to edit config.sh, do it as a shell escape here:" X$echo $n "$rp $c" X. UU/myread Xcase "$ans" in X'') ;; X*) : in case they cannot read X eval $ans;; Xesac X. ./config.sh X Xecho " " Xecho "Doing variable substitutions on .SH files..." Xset x `awk '{print $1}' /dev/null 2>&1; then X dflt=n X $cat < makedep.out &" XIt can take a while, so you might not want to run it right now. X XEOM X rp="Run make depend now? [$dflt]" X $echo $n "$rp $c" X . UU/myread X case "$ans" in X y*) make depend X echo "Now you must run a make." X ;; X *) echo "You must run 'make depend' then 'make'." X ;; X esac Xelif test -f Makefile; then X echo " " X echo "Now you must run a make." Xelse X echo "Done." Xfi X X$rm -f kit*isdone X: the following is currently useless Xcd UU && $rm -f $rmlist X: since this removes it all anyway Xcd .. && $rm -rf UU X: end of Configure !STUFFY!FUNK! echo Extracting makedep.SH sed >makedep.SH <<'!STUFFY!FUNK!' -e 's/X//' X: X# $Id: makedep.SH,v 1.1 90/01/16 16:16:45 paul Exp Locker: paul $ X# X# $Log: makedep.SH,v $ X# Revision 1.1 90/01/16 16:16:45 paul X# Initial revision X# X# X Xcase $CONFIG in X'') X if test ! -f config.sh; then X ln ../config.sh . || \ X ln ../../config.sh . || \ X ln ../../../config.sh . || \ X (echo "Can't find config.sh."; exit 1) X fi X . ./config.sh X ;; Xesac Xcase "$0" in X*/*) cd `expr X$0 : 'X\(.*\)/'` ;; Xesac Xecho "Extracting makedep (with variable substitutions)" X$spitshell >makedep <>makedep <<'!NO!SUBS!' X X: the following weeds options from ccflags that are of no interest to cpp Xcase "$ccflags" in X'');; X*) set X $ccflags X ccflags='' X for flag do X case $flag in X -D*|-I*) ccflags="$ccflags $flag";; X esac X done X ;; Xesac X X$cat /dev/null >.deptmp X$rm -f *.c.c c/*.c.c Xif test -f Makefile; then X mf=Makefile Xelse X mf=makefile Xfi Xif test -f $mf; then X defrule=`<$mf sed -n \ X -e '/^\.c\.o:.*;/{' \ X -e 's/\$\*\.c//' \ X -e 's/^[^;]*;[ ]*//p' \ X -e q \ X -e '}' \ X -e '/^\.c\.o: *$/{' \ X -e N \ X -e 's/\$\*\.c//' \ X -e 's/^.*\n[ ]*//p' \ X -e q \ X -e '}'` Xfi Xcase "$defrule" in X'') defrule='$(CC) -c $(CFLAGS)' ;; Xesac X Xmake clist || ($echo "Searching for .c files..."; \ X $echo *.c | $tr ' ' '\012' | $egrep -v '\*' >.clist) Xfor file in `$cat .clist`; do X# for file in `cat /dev/null`; do X case "$file" in X *.c) filebase=`basename $file .c` ;; X *.y) filebase=`basename $file .c` ;; X esac X $echo "Finding dependencies for $filebase.o." X $sed -n <$file >$file.c \ X -e "/^${filebase}_init(/q" \ X -e '/^#/{' \ X -e 's|/\*.*$||' \ X -e 's|\\$||' \ X -e p \ X -e '}' X $cpp -I. $ccflags $file.c | \ X $sed \ X -e '/^# *[0-9]/!d' \ X -e 's/^.*"\(.*\)".*$/'$filebase'.o: \1/' \ X -e 's|: \./|: |' \ X -e 's|\.c\.c|.c|' | \ X $uniq | $sort | $uniq >> .deptmp Xdone X X$sed Makefile.new -e '1,/^# AUTOMATICALLY/!d' X Xmake shlist || ($echo "Searching for .SH files..."; \ X $echo *.SH | $tr ' ' '\012' | $egrep -v '\*' >.shlist) Xif $test -s .deptmp; then X for file in `cat .shlist`; do X $echo `$expr X$file : 'X\(.*\).SH`: $file config.sh \; \ X /bin/sh $file >> .deptmp X done X $echo "Updating Makefile..." X $echo "# If this runs make out of memory, delete /usr/include lines." \ X >> Makefile.new X $sed 's|^\(.*\.o:\) *\(.*/.*\.c\) *$|\1 \2; '"$defrule \2|" .deptmp \ X >>Makefile.new Xelse X make hlist || ($echo "Searching for .h files..."; \ X $echo *.h | $tr ' ' '\012' | $egrep -v '\*' >.hlist) X $echo "You don't seem to have a proper C preprocessor. Using grep instead." X $egrep '^#include ' `cat .clist` `cat .hlist` >.deptmp X $echo "Updating Makefile..." X <.clist $sed -n \ X -e '/\//{' \ X -e 's|^\(.*\)/\(.*\)\.c|\2.o: \1/\2.c; '"$defrule \1/\2.c|p" \ X -e d \ X -e '}' \ X -e 's|^\(.*\)\.c|\1.o: \1.c|p' >> Makefile.new X <.hlist $sed -n 's|\(.*/\)\(.*\)|s= \2= \1\2=|p' >.hsed X <.deptmp $sed -n 's|c:#include "\(.*\)".*$|o: \1|p' | \ X $sed 's|^[^;]*/||' | \ X $sed -f .hsed >> Makefile.new X <.deptmp $sed -n 's|c:#include <\(.*\)>.*$|o: /usr/include/\1|p' \ X >> Makefile.new X <.deptmp $sed -n 's|h:#include "\(.*\)".*$|h: \1|p' | \ X $sed -f .hsed >> Makefile.new X <.deptmp $sed -n 's|h:#include <\(.*\)>.*$|h: /usr/include/\1|p' \ X >> Makefile.new X for file in `$cat .shlist`; do X $echo `$expr X$file : 'X\(.*\).SH`: $file config.sh \; \ X /bin/sh $file >> Makefile.new X done Xfi X$rm -f Makefile.old X$cp Makefile Makefile.old X$cp Makefile.new Makefile X$rm Makefile.new X$echo "# WARNING: Put nothing here or make depend will gobble it up!" >> Makefile X$rm -f .deptmp `sed 's/\.c/.c.c/' .clist` .shlist .clist .hlist .hsed X X!NO!SUBS! X$eunicefix makedep Xchmod +x makedep Xcase `pwd` in X*SH) X $rm -f ../makedep X ln makedep ../makedep X ;; Xesac !STUFFY!FUNK! echo Extracting patchlevel.h sed >patchlevel.h <<'!STUFFY!FUNK!' -e 's/X//' X/* X** $Id: patchlevel.h,v 1.1 90/01/16 16:17:12 paul Exp Locker: paul $ X** X** Getty release/patchlevel X*/ X X X#define PATCHLEVEL 0 /* patchlevel */ X X/* these are used by the man pages, too X */ X#define RELEASE "1.1" /* release number */ X#define DATE "16-Jan-90" /* release date */ X X X/* end of patchlevel.h */ !STUFFY!FUNK! echo "" echo "End of kit 2 (of 4)" cat /dev/null >kit2isdone run='' config='' for iskit in 1 2 3 4; do if test -f kit${iskit}isdone; then run="$run $iskit" else todo="$todo $iskit" fi done case $todo in '') echo "You have run all your kits. Please read README and then type Configure." chmod 755 Configure ;; *) echo "You have run$run." echo "You still need to run$todo." ;; esac : Someone might mail this, so... exit Subject: Enhanced SYSV Getty, v1.1, part 2 of 4 Newsgroups: alt.sources Keywords: getty source INTERNET: paul@devon.lns.pa.us | If life's a bitch, then UUCP: ...!rutgers!devon!paul | we must be her puppies.