home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
TELECOM
/
rn_4_3_blars.lzh
/
Configure
< prev
next >
Wrap
Text File
|
1990-08-22
|
55KB
|
2,466 lines
#!/bin/sh
#
# If these # comments don't work, trim them. Don't worry about the other
# shell scripts, Configure will trim # comments from them for you.
#
# $Header: Configure,v 4.3.2.25 90/05/12 17:34:53 sob Exp $
#
# $Log: Configure,v $
# Revision 4.3.2.25 90/05/12 17:34:53 sob
# Still more XENIX fixes and fixes for using socketlib when rrn and not when
# just rn.
#
# Revision 4.3.2.24 90/05/12 14:07:43 sob
# Fixed up LDFLAGS for xenix 286
#
# Revision 4.3.2.23 90/05/04 00:42:31 sob
# Fixes for Pyramids, more on the return value of signal() and
# syncing up the use of socketlib.
#
# Revision 4.3.2.22 90/04/17 15:44:24 sob
# Added better directory structure detection.
#
# Revision 4.3.2.21 90/04/14 19:36:38 sob
# Added better support for the NeXT.
#
# Revision 4.3.2.20 90/04/14 01:53:36 sob
# Spelling Problem!
#
# Revision 4.3.2.19 90/03/17 21:33:21 sob
# Reworked VOIDSIG into SIGRET.
#
# Revision 4.3.2.18 90/03/17 17:45:25 sob
# Changes to detect when to use termio and when not to.
#
# Revision 4.3.2.17 90/03/17 16:53:11 sob
# Applied a patch to correctly determine being on a Sun running OS 4.0 or
# later.
#
# Revision 4.3.2.16 89/12/20 23:20:38 sob
# Added hp-ux support suggested by tml@hemuli.atk.vtt.fi. Also,
# corrected some bugs reported by tml@hemuli.atk.vtt.fi.
#
# Revision 4.3.2.15 89/12/18 00:02:04 sob
# Fixed bug reported by Jim Thompson <jthomp@sun.com> on the
# use of ypmatch against the so-called services.byname YP map.
# Sigh. Will YP EVER work?
#
# Revision 4.3.2.14 89/12/17 12:55:39 sob
# Minor bug fix to yp detection code.
#
# Revision 4.3.2.13 89/12/17 01:53:21 sob
# Changed from using ypcat to using ypmatch
#
# Revision 4.3.2.12 89/12/15 19:35:20 sob
# getpwent was not getting defined when YP is present.
# bug reported by dglo@ads.com
#
# Revision 4.3.2.11 89/12/13 00:42:59 sob
# Included suggested patches by weening@gang-of-four.stanford.edu.
#
# Revision 4.3.2.10 89/12/09 01:47:49 sob
# Configure now removes myread when exiting.
#
# Revision 4.3.2.9 89/12/08 22:41:14 sob
# Added minor changes suggested by weening@Gang-of-Four.Stanford.EDU and
# jik@pit-manager.mit.edu
#
# Revision 4.3.2.8 89/11/28 00:30:06 sob
# Attempted to make some of the references to the news software version
# levels more clear for the benefit of novice news installers.
#
# Revision 4.3.2.7 89/11/27 02:25:26 sob
# Better detection of SunOS 4.0 and getpwent will be used on systems
# that support YP, just in case.
#
# Revision 4.3.2.6 89/11/27 01:32:56 sob
# Added some changes suggested by various usenet postings.
# Limited support for NeXT.
#
# Revision 4.3.2.5 89/11/08 04:47:27 sob
# Added VOIDSIG handling for SunOS 4.X
#
# Revision 4.3.2.4 89/11/06 00:05:38 sob
# Added RRN support originally distributed with NNTP 1.5
#
# Revision 4.3.2.3 89/11/05 23:35:43 sob
# Added checks for ultrix and sun
#
# Revision 4.3.1.6 86/07/24 14:41:18 lwall
# Handles missing Relay-Version: from news 2.10.3 headers.
#
# Revision 4.3.1.5 85/05/23 11:23:22 lwall
# filexp flubs sed command.
#
# Revision 4.3.1.4 85/05/20 17:13:11 lwall
# Makes sure -lcurses is really a terminfo library.
# Puts single instead of double quotes around defs in config.sh.
#
# Revision 4.3.1.3 85/05/16 16:48:48 lwall
# Took space from end of filexp output.
#
# Revision 4.3.1.2 85/05/13 15:54:35 lwall
# Libraries in /usr/local/lib shouldn't use -l switch.
#
# Revision 4.3.1.1 85/05/10 11:29:20 lwall
# Branch for patches.
#
# Revision 4.3 85/05/01 11:31:23 lwall
# Baseline for release with 4.3bsd.
#
# Yes, you may rip this off to use in other distribution packages.
n=''
c=''
libc=''
eunicefix=''
eunice=''
cpp=''
shsharp=''
spitshell=''
startsh=''
test=''
expr=''
sed=''
echo=''
cat=''
rm=''
mv=''
cp=''
tail=''
tr=''
mkdir=''
sort=''
uniq=''
inews=''
grep=''
egrep=''
ypmatch=''
contains=''
lib=''
nametype=''
cc=''
iandd=''
include=''
rrninclude=''
termlib=''
jobslib=''
ndirlib=''
socketlib=''
dirtype=''
dirinc=''
libndir=''
usendir=''
ndirc=''
ndiro=''
pager=''
mailer=''
internet=''
rnbin=''
filexp=''
distlist=''
Log=''
Header=''
sitename=''
domain=''
orgname=''
isadmin=''
newsadmin=''
rnlib=''
mansrc=''
manext=''
maildir=''
spool=''
active=''
myactive=''
mininact=''
pref=''
defeditor=''
rootid=''
mboxchar=''
locpref=''
orgpref=''
citypref=''
statepref=''
cntrypref=''
contpref=''
strchr=''
novoid=''
novfork=''
portable=''
passnam=''
berknam=''
usgnam=''
whoami=''
termio=''
fcntl=''
ioctl=''
normsig=''
sigblock=''
sigret=''
getuidgid=''
getcwd=''
havetlib=''
getpwent=''
gethostname=''
douname=''
phostname=''
hostcmd=''
norelay=''
isrrn=''
rdchk=''
serverfile=''
NNTPSRC=''
CONFIG=''
echo "Beginning of configuration questions for rn kit."
: Eunice requires " " instead of "", can you believe it
echo " "
: sanity checks
PATH='.:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc'
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 "Type 'sh Configure', not 'sh <Configure'"
exit 1
fi
: some greps do not return status, grrr.
echo "grimblepritz" >grimble
if grep blurfldyick grimble >/dev/null 2>&1 ; then
contains=contains
else
if grep grimblepritz grimble >/dev/null 2>&1 ; then
contains=grep
else
contains=contains
fi
fi
: 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 755 contains
esac
: 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
echo "...using \\\c."
n=''
c='\c'
fi
echo $n "Type carriage return to continue. Your cursor should be here-->$c"
read ans
rm .echotmp
: now set up to do reads with possible shell escape
: if this does not work on your machine, 1,$s/. myread/read ans/
cat <<EOSC >myread
ans='!'
while expr "X\$ans" : "X!" >/dev/null; do
read ans
case "\$ans" in
!)
sh
echo " "
echo $n "Your answer: $c"
;;
!*)
set \`expr "X\$ans" : "X!\(.*\)\$"\`
sh -c "\$*"
echo " "
echo $n "Your answer: $c"
;;
esac
done
EOSC
: general instructions
cat <<'EOH'
This installation shell script will examine your system and ask you questions
to determine how rn and its auxiliary files 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)".
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. (Trying to install rn without having run
Configure is well nigh impossible.) Also, tell Stan Barber (rrn@lib.tmc.edu)
how he blew it.
This installation script affects things in two ways: 1) it does 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.
EOH
echo $n "[Type carriage return to continue] $c"
. myread
: get old answers, if there is a config file out there
if test -f config.sh; then
echo " "
echo "(Fetching default answers from your old config.sh file...)"
. config.sh
fi
: get list of predefined functions in a handy place
echo " "
if 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 -f /lib/Llibc.a; then
echo "Your C library is in /lib/Llibc.a. I smell Xenix!"
libc=/lib/Llibc.a
else
if test -f /usr/lib/libc.a; then
echo "Your C library is in /usr/lib/libc.a, of all places."
libc=/usr/lib/libc.a
else
if test -f "$libc"; then
echo "Your C library is in $libc, like you said before."
else
cat <<'EOM'
I can't seem to find your C library. I've looked for /lib/libc.a and
/usr/lib/libc.a, but neither of those are there. What is the full name
EOM
echo $n "of your C library? $c"
. myread
libc="$ans"
fi
fi
fi
fi
echo " "
echo $n "Extracting names from $libc for later perusal...$c"
if ar t $libc > libc.list; then
echo "done"
else
echo " "
echo "The archiver doesn't think $libc is a reasonable library."
exit 1
fi
: make some quick guesses about what we are up against
echo " "
echo $n "Hmm... $c"
if $contains SIGTSTP /usr/include/signal.h >/dev/null 2>&1 ; then
echo "Looks kind of like a BSD system, but we'll see..."
echo exit 0 >bsd
echo exit 1 >usg
echo exit 1 >v7
else
if $contains SIGTSTP /usr/include/sys/signal.h >/dev/null 2>&1 ; then
echo "Looks sort of like a BSD system, but we'll see..."
echo exit 0 >bsd
echo exit 1 >usg
echo exit 1 >v7
else
if $contains fcntl.o libc.list >/dev/null 2>&1 ; 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
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
fi
fi
if $contains vmssystem.o libc.list >/dev/null 2>&1 ; then
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
eunicefix=unixtovms
eunice=define
: it so happens the Eunice I know will not run shell scripts in Unix format
else
echo " "
echo "Congratulations. You aren't running Eunice."
eunicefix=':'
eunice=undef
echo "exit 1" >eunice
fi
chmod 755 bsd usg v7 eunice
$eunicefix bsd usg v7 eunice
: see how we invoke the C preprocessor
echo " "
echo "Checking to see how your C preprocessor is invoked..."
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
if $contains 'abc+xyz' testcpp.out >/dev/null 2>&1 ; then
echo "Yup, it does."
cpp='cc -E'
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."
cpp='cc -P'
else
echo 'Nixed again...maybe "/lib/cpp" will work...'
/lib/cpp testcpp.c >testcpp.out 2>&1
if $contains 'abc+xyz' testcpp.out >/dev/null 2>&1 ; then
echo "Hooray, it works! I was beginning to wonder."
cpp='/lib/cpp'
else
if $contains 'abc +xyz' testcpp.out >/dev/null 2>&1 ; then
echo "Found it! You're on a NeXT, aren't you?"
cpp='/lib/cpp'
else
echo 'Hmm...maybe you already told me...'
case "$cpp" in
'') ;;
*) $cpp 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 "Nope. I can't find a C preprocessor. Name one: $c"
. myread
cpp="$ans"
$cpp 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
rm -f testcpp.c testcpp.out
: check for pdp11
echo " "
cat <<'EOT' >pdp11.c
#ifdef pdp11
exit 0
#else
exit 1
#endif
EOT
$cpp pdp11.c | grep exit >pdp11
chmod 755 pdp11
$eunicefix pdp11
rm pdp11.c
if pdp11; then
echo "This looks like a pdp11 to me."
fi
: check for ultrix
cat <<'EOT' >ultrix.c
#ifdef ultrix
exit 0
#else
exit 1
#endif
EOT
$cpp ultrix.c | grep exit >ultrix
chmod 755 ultrix
$eunicefix ultrix
rm ultrix.c
if ultrix; then
echo "Running ultrix, eh?"
fi
: check for sun 4.0
cat <<'EOT' >sun.c
#ifdef sun
exit 0
#else
exit 1
#endif
EOT
$cpp sun.c | grep exit >sun
chmod 755 sun
$eunicefix sun
rm sun.c
if sun; then
echo "This looks like a sun to me."
if test -f /etc/ld.so.cache ; then
echo "And it appears you are running SunOS 4.0 or greater."
fi
fi
: check for hp-ux
cat <<'EOT' >hp-ux.c
#ifdef hpux
exit 0
#else
exit 1
#endif
EOT
$cpp hp-ux.c | grep exit >hp-ux
chmod 755 hp-ux
$eunicefix hp-ux
rm hp-ux.c
if hp-ux; then
echo "Hewlett-Packard must have built this..."
socketlib=-lbsdipc
fi
: check for sgi
cat <<'EOT' >sgi.c
#ifdef sgi
exit 0
#else
exit 1
#endif
EOT
$cpp sgi.c | grep exit >sgi
chmod 755 sgi
$eunicefix sgi
rm sgi.c
if sgi; then
echo "Silicon Graphics must have built this..."
include=-I/usr/include/bsd
rrninclude="-I/usr/include/bsd -DUSG"
socketlib=-lbsd
fi
: check for XENIX
cat <<'EOT' >xenix.c
#ifdef M_XENIX
exit 0
#else
exit 1
#endif
EOT
$cpp xenix.c | grep exit >xenix
chmod 755 xenix
$eunicefix xenix
rm xenix.c
if xenix; then
echo "Kinda looks like XENIX....hmmm"
rrninclude="-DUSG -DLAI_TCP"
socketlib=-lsocket
sigret=void
rdchk=define
dirtype=dirent
else
rdchk=undef
fi
: check for Pyramid OSx
cat <<'EOT' >pyr.c
#ifdef pyr
exit 0
#else
exit 1
#endif
EOT
$cpp pyr.c | grep exit >pyr
chmod 755 pyr
$eunicefix pyr
rm pyr.c
if pyr; then
echo "This looks like a Pyramid to me."
fi
if bsd; then
getuidgid=define
else
getuidgid=undef
fi
: 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 755 try
try > today
if test -s today; then
echo "It does."
sharpbang='#!'
else
echo "#! /bin/echo hi" > try
$eunicefix try
chmod 755 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 755 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 755 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
: find out where common programs are
echo " "
echo "Locating common programs..."
pth="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /etc /usr/lib /usr/etc /usr/5bin"
cat <<EOSC >loc
$startsh
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
fi
;;
esac
done
echo \$dflt
exit 1
EOSC
chmod 755 loc
$eunicefix loc
loclist="expr sed echo cat rm mv cp tail tr mkdir sort uniq grep"
trylist="test inews egrep more pg Mcc ypmatch"
for file in $loclist; do
xxx=`loc $file $file $pth`
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..."
for file in $trylist; do
xxx=`loc $file $file $pth`
eval $file=$xxx
case "$xxx" in
/*)
echo $file is in $xxx.
;;
*)
echo "I don't see $file out there, offhand."
;;
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)
echo " "
echo $n 'Is your "test" built into sh? [n] (OK to guess) '"$c"
. myread
case $ans in
y*) test=test ;;
esac
;;
*)
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
echo "They are not compatible--the echo builtin will be used."
echo=echo
fi
$rm -f foo1 foo2
;;
*)
echo=echo
;;
esac
$echo " "
: test yp
case $ypmatch in
ypmatch)
$echo "I don't see ypmatch out there, so YP is not available. We'll search the"
$echo "passwd file the old fashioned way!"
;;
*)
$ypmatch 513/tcp services > /dev/null 2>/dev/null
status=$?
if $test $status -ne 0 ; then
$echo "YP installed, but not operational. We won't use it."
else
$echo "YP installed and operational."
fi
;;
esac
if $test "$ypmatch" = "ypmatch"; then
ypmatch=""
fi
: decide how portable to be
case "$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
$echo $n "Do you expect to run these scripts and binaries on multiple machines? [$dflt] $c"
. myread
case $ans in
'') ans=$dflt;;
esac
case $ans in
y*) portable=define
for file in $loclist; do
eval $file=$file
done
;;
*) portable=undef ;;
esac
: set up shell script to do ~ expansion
cat >filexp <<EOSS
$startsh
: expand filename
case \$1 in
~/*|~)
$echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
;;
~*)
if $test -f /bin/csh; then
/bin/csh -f -c "glob \$1"
$echo ""
else
name=\`$expr x\$1 : '..\([^/]*\)'\`
if $test "$ypmatch" != ""; then
dir=\`$ypmatch \$name passwd 2>/dev/null | $sed "s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/"'\`
fi
if $test "\$dir" = ""; then
dir=\`$sed </etc/passwd -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}'\`
fi
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 755 filexp
$eunicefix filexp
: now get the site name
$echo " "
$echo "Figuring out site name..."
$echo 'Maybe "hostname" will work...'
if ans=`sh -c hostname 2>&1` ; then
sitename=$ans
hostcmd=hostname
else
$echo 'No, maybe "uuname -l" will work...'
if ans=`sh -c 'uuname -l' 2>&1` ; then
sitename=$ans
hostcmd='uuname -l'
else
$echo 'Strange. Maybe "uname -n" will work...'
if ans=`sh -c 'uname -n' 2>&1` ; then
sitename=$ans
hostcmd='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
sitename=`$echo "$ans" | $sed 's/^.*"\(.*\)"/\1/'`
hostcmd="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' </usr/include/whoami.h"
else
case "$sitename" in
'') $echo "Does this machine have an identity crisis or something?"
hostcmd=''
;;
*) $echo "Well, you said $sitename before...";;
esac
fi
fi
fi
fi
: you do not want to know about this
set $sitename
sitename=$1
: translate upper to lower case. This is mostly to help UUCP work right.
case $sitename in
*[A-Z]*)
sitename=`$echo $sitename | tr '[A-Z]' '[a-z]'`
$echo "(Normalizing case in your site name)"
;;
esac
: verify guess
if $test "$sitename" ; then
$echo 'Your site name appears to be "'$sitename'".'
$echo $n "Is this correct? [y] $c"
. myread
case $ans in
y*|'') ;;
*) sitename='' ;;
esac
fi
: bad guess or no guess
while $test "X$sitename" = X ; do
$echo $n "Please type the (one word) name of your site: $c"
. myread
sitename="$ans"
case $hostcmd in
sed*)
$echo "(That doesn't agree with your whoami.h file, by the way.)"
;;
*)
$echo "(That doesn't agree with your $hostcmd command, by the way.)"
;;
esac
hostcmd=''
done
: try to deal with domains
$cat << 'EOH'
Please enter your domain name. This will be used in conjunction
with the site name for return addresses on news articles and
mail. If you use the 4.3ism of having your domain in your
hostname, all the posting programs will figure this out on the
fly, so don't worry.
Examples of some valid domains:
berkeley.edu
nasa.gov
Example of an invalid domain in common use:
uucp
EOH
case "$domain" in
'') dflt="uucp";;
*) dflt="$domain" ;;
esac
$echo $n "Your domain: [$dflt] $c"
. myread
case "$ans" in
'') domain="$dflt";;
*) domain="$ans" ;;
esac
if $test $portable = "undef" ; then
case $sitename in
*.*) ;;
*) sitename=$sitename.$domain
;;
esac
fi
: get organizaton name
longshots='/usr/src/new /usr/src/local /usr/local/src'
case "$orgname" in
'') if xxx=`loc news/src/defs.h x $longshots`; then
dflt=`$sed -n 's/^.*MYORG[ ]*"\(.*\)".*$/\1/p' $xxx`
else
dflt='no default'
fi
;;
*) dflt="$orgname";;
esac
$cat << 'EOH'
Please type the name of your organization as you want it to appear on the
Organization line of outgoing articles. (It's nice if this also specifies
your location. Your city name is probably sufficient if well known.)
For example:
University of Southern North Dakota, Hoople
You may also put the name of a file, as long as it begins with a slash.
For example:
/etc/organization
EOH
orgname="no default"
while test "X$orgname" = "Xno default"; do
$echo $n "Organization: [$dflt] $c"
. myread
case "$ans" in
'') orgname="$dflt";;
*) orgname="$ans" ;;
esac
done
: get news administrator name
case "$newsadmin" in
'')
if $contains "^news:" /etc/passwd >/dev/null 2>&1 ; then
dflt=news
else
if $contains "^usenet:" /etc/passwd >/dev/null 2>&1 ; then
dflt=usenet
else
if eunice; then
dflt=system
else
dflt=root
fi
fi
fi
;;
*) dflt="$newsadmin"
;;
esac
cat <<'EOM'
Many systems keep their news in a private directory, or have a non-superuser
in charge of administering news. (If you don't have such a user, take the
default answer.) What is the login name (not directory) that is used for news
EOM
$echo $n "administration? [$dflt] $c"
. myread
newsadmin="$ans"
case $newsadmin in
'') newsadmin=$dflt ;;
esac
case $newsadmin in
root) isadmin=undef ;;
*) isadmin=define ;;
esac
: figure out news library
case "$lib" in
'')
dflt=/usr/lib/news
;;
*) dflt=$lib ;;
esac
libexp=$lib
libexp='blurfl/dyick'
while $test ! -d "$libexp"; do
$echo " "
case "$libexp" in
blurfl*) ;;
*) $echo "Directory $libexp not found";;
esac
$echo "(If you are building this as rrn, it is a good idea"
$echo "to make your news library directory the same as where the rn"
$echo "library directory is, usually /usr/local/lib/rn)"
$echo " "
$echo $n "Where is your news library (~name okay)? [$dflt] $c"
. myread
case "$ans" in
'') ans="$dflt";;
esac
lib="$ans"
case $lib in
~*)
libexp=`filexp $lib`
$echo "(That is $libexp on this particular system.)"
case $portable in
undef) lib=$libexp ;;
esac
;;
*)
libexp=$lib
;;
esac
done
if $test -f $libexp/inews; then
$echo "Aha! Inews is really in $libexp!"
$echo "Maybe this is Bnews 2.10.2 or later, or rrn."
inews=$libexp/inews
fi
: determine where manual pages go
case "$mansrc" in
'')
dflt=`loc . /usr/man/man1 /usr/man/mann /usr/man/local/man1 /usr/man/u_man/man1 /usr/man/man1`
;;
*) dflt="$mansrc"
;;
esac
mansrc='blurfl/dyick'
while $test ! -d "$mansrc" ; do
case $mansrc in
blurfl*) ;;
*) $echo "$mansrc does not appear to exist." ;;
esac
$echo " "
$echo $n "Where do the manual pages (source) go? [$dflt] $c"
. myread
mansrc=`filexp "$ans"`
case $mansrc in
'') mansrc=$dflt ;;
esac
done
case "$mansrc" in
*l)
manext=l
;;
*n)
manext=n
;;
*)
manext=1
;;
esac
: determine where mail is spooled
case "$maildir" in
'')
dflt=`loc . /usr/spool/mail /usr/spool/mail /usr/mail`
;;
*) dflt="$maildir"
;;
esac
maildir='blurfl/dyick'
while $test ! -d "$maildir" ; do
case $maildir in
blurfl*) ;;
*) $echo "$maildir does not appear to exist." ;;
esac
$echo " "
$echo $n "Where is yet-to-be-read mail spooled? [$dflt] $c"
. myread
maildir=`filexp "$ans"`
case $maildir in
'') maildir=$dflt ;;
esac
done
: find out how to find out full name
$echo " "
case "$berkname" in
define)
dflt=y;;
undef)
dflt=n;;
*)
if bsd; 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"
. myread
case $ans in
'') ans=$dflt ;;
esac
case $ans in
y*)
passnam=define
berknam=define
usgnam=undef
nametype=bsd
;;
*)
$echo " "
case "$usgname" 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"
. myread
case $ans in
'') ans=$dflt ;;
esac
case $ans in
n*)
$echo "Full name will be taken from ~/.fullname"
passnam=undef
berknam=undef
usgnam=undef
nametype=other
;;
*)
passnam=define
berknam=undef
usgnam=define
nametype=usg
;;
esac
;;
esac
: see if we need a special compiler
$echo " "
if usg; then
case "$cc" in
'')
case "$Mcc" in
/*) dflt='Mcc'
;;
*)
if $contains '\-M' $mansrc/cc.1 >/dev/null 2>&1 ; then
dflt='cc -M'
else
dflt='cc'
fi
;;
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. What command will force resolution on
EOM
$echo $n "this system? [$dflt] $c"
. myread
cc="$ans"
case "$cc" in
'') cc="$dflt" ;;
esac
else
$echo "Not a USG system--assuming cc can resolve multiple definitions."
cc=cc
fi
: see if we should throw a -i into the Makefile
$echo " "
if pdp11; then
if $contains '\-i' $mansrc/cc.1 >/dev/null 2>&1 ; then
$echo $n "Your system appears to have separate I and D space. Is this true? [y] $c"
. myread
case $ans in
n*|f*) iandd='' ;;
*) iandd='-i' ;;
esac
else
$echo "Your system appears to NOT have separate I and D space."
$echo $n "Is this correct? [y] $c"
. myread
case $ans in
n*|f*) iandd='-i' ;;
*) iandd='' ;;
esac
fi
else
$echo "Not a pdp11--assuming no separate I and D."
fi
: index or strcpy
$echo " "
if $contains index.o libc.list >/dev/null 2>&1 ; then
$echo "Your system appears to use index() and rindex() rather than strchr()"
$echo $n "and strrchr(). Is this correct? [y] $c"
. myread
case $ans in
n*|f*) strchr='define' ;;
*) strchr='undef' ;;
esac
else
$echo "Your system appears to use strchr() and strrchr() rather than index()"
$echo $n "and rindex(). Is this correct? [y] $c"
. myread
case $ans in
n*|f*) strchr=undef ;;
*) strchr=define ;;
esac
fi
: determine how to determine when a file is a mailbox
case "$mboxchar" in
'') dflt=F;;
*) dflt="$mboxchar";;
esac
$cat <<'EOM'
In saving articles, rn wants to differentiate between saving to mailbox
format files and normal files. It does this by examining the first character
of the file in question. On most systems the first line starts "From...",
so the first character is F. On other systems there are magic cookies like
control codes between articles, so one of those would be first. On your
system, if a file is in mailbox format, what is the first character of
EOM
$echo $n "that file? [$dflt] $c"
. myread
mboxchar="$ans"
case $mboxchar in
'') mboxchar="$dflt" ;;
esac
case $mboxchar in
'F') ;;
*) cat <<'EOM'
You will need to edit the shell script mbox.saver to properly append an
article to a mailbox. The arguments to the script are documented in
EOM
case $shsharp in
false)
$echo "comments in mbox.saver.std."
;;
true)
$echo "comments in the shell script itself."
;;
esac
esac
$rm -f grimble
: where do we get termlib routines from
$echo " "
ans=`loc libcurses.a x /usr/lib /usr/local/lib /lib`
case "$ans" in
/*)
ar t $ans >grimble
if $contains tputs.o grimble >/dev/null 2>&1; then
termlib='-lcurses'
havetlib=define
$echo "Terminfo library found."
else
ans=x
fi
;;
esac
case "$ans" in
x)
ans=`loc libtermlib.a x /usr/lib /usr/local/lib /lib`
case "$ans" in
/usr/lib*|/lib*)
termlib='-ltermlib'
havetlib=define
$echo "Termlib library found."
;;
/*)
termlib="$ans"
havetlib=define
$echo "Termlib library found."
;;
*)
if xenix; then
ans=/lib/Llibtermcap.a
else
ans=`loc libtermcap.a x /usr/lib /usr/local/lib /lib`
fi
case "$ans" in
/usr/lib*|/lib*)
termlib='-ltermcap'
havetlib=define
$echo "Termcap library found."
;;
/*)
termlib="$ans"
havetlib=define
$echo "Termcap library found."
;;
*)
case "$termlib" in
'')
$echo $n "Your system appears to NOT have termlib-style routines. Is this true? [y] $c"
. myread
case $ans in
n*|f*) havetlib=define
$echo "Then where are the termlib-style routines kept (specify either -llibname"
$echo $n " or full pathname (~name ok))? $c"
. myread
termlib=`filexp $ans`
;;
*) 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
: see if there is a whoami file
if $test -r /usr/include/whoami.h ; then
whoami=define
$echo "whoami.h found."
else
whoami=undef
fi
: see if this is a termio system
ultrix ; ultrix=$?
sun ; sun=$?
pyr ; pyr=$?
if $test -r /usr/include/termio.h -a $ultrix -ne 0 -a $sun -ne 0 -a $pyr -ne 0; then
termio=define
$echo "termio.h found."
else
if $test -r /usr/include/sgtty.h ; then
termio=undef
$echo "sgtty.h found."
else
termio=undef
$echo "Neither termio.h nor sgtty.h found--you could have problems."
fi
fi
: see if this system has fcntl
if $test -r /usr/include/fcntl.h ; then
fcntl=define
$echo "fcntl.h found."
else
fcntl=undef
$echo "No fcntl.h found, but that's ok."
fi
: see if ioctl defs are in sgtty/termio or sys/ioctl
if $test -r /usr/include/sys/ioctl.h ; then
ioctl=define
$echo "sys/ioctl.h found."
else
ioctl=undef
$echo "sys/ioctl.h not found, assuming ioctl args are defined in sgtty.h."
fi
: see if the system has sigblock
if $contains sigblock.o libc.list >/dev/null 2>&1 ; then
$echo "sigblock() found."
sigblock=define
else
sigblock=undef
fi
: see if the system has getwd
if $contains getwd.o libc.list >/dev/null 2>&1 ; then
$echo "getwd() found."
getcwd=undef
else
: see if the system has getcwd
if $contains getcwd.o libc.list >/dev/null 2>&1 ; then
$echo "getcwd() found."
getcwd=define
else
getcwd=undef
fi
fi
: see if there is a vfork
if $contains vfork.o libc.list >/dev/null 2>&1 ; then
$echo "vfork() found."
novfork='undef'
else
$echo "No vfork() found--will use fork() instead."
novfork='define'
fi
: see if YP could be running here
if $contains yp_master.o libc.list >/dev/null 2>&1 ; then
$echo "YP may be running -- will use getpwent(), just in case."
getpwent='define'
else
: see if there is a getpw
if $contains getpw.o libc.list >/dev/null 2>&1 ; then
$echo "getpw() found."
getpwent='undef'
else
$echo "No getpw() found--will use getpwent() instead."
getpwent='define'
fi
fi
: default
sigret=int
: determine type of signal function
if [ -f /usr/include/signal.h ]
then
WHITE='[ ]'; : between the brackets are a tab and a space.
if grep "$WHITE*void$WHITE*(\*signal())();" \
/usr/include/signal.h >/dev/null
then
sigret=void
fi
fi
if [ -f /usr/include/sys/signal.h ]
then
WHITE='[ ]'; : between the brackets are a tab and a space.
if grep "$WHITE*void$WHITE*(\*signal())();" \
/usr/include/sys/signal.h >/dev/null
then
sigret=void
fi
fi
$echo "signal() returns $sigret on this system"
: see how we will look up site name
douname=undef
gethostname=undef
phostname=undef
if $contains gethostname.o libc.list >/dev/null 2>&1 ; then
$echo "gethostname() found."
gethostname=define
else
if $contains uname.o libc.list >/dev/null 2>&1 ; then
$echo "uname() found."
douname=define
else
case $hostcmd in
'') ;;
*)
$cat <<EOT
There is no gethostname() or uname() on this system. You have two
possibilites at this point:
1) You can have your site name ($sitename) compiled into rn, which lets rn
start up faster, but makes your binaries non-portable, or
2) you can have rn use a
popen("$hostcmd","r")
which will start slower but be more portable.
Option 1 will use whoami.h if you have one. If you want option 2 but with
a different command, you can edit config.h after this shell script is done.
EOT
case "$phostname" in
define) dflt=n;;
undef) dflt=y;;
'')
case $portable in
define) dflt=n ;;
*) dflt=y ;;
esac
;;
esac
$echo $n "Do you want your site name compiled in? [$dflt] $c"
. myread
case $ans in
'') ans=$dflt;;
esac
case $ans in
n*) phostname=define ;;
*) hostcmd='' phostname=undef;;
esac
;;
esac
case $hostcmd in
'')
case $whoami in
define)
$echo 'No hostname function--using whoami.h.'
;;
undef)
$echo 'No hostname function--hardwiring "'$sitename'".'
;;
esac
;;
esac
fi
fi
: see if we need -ljobs and if we have sigset, etc.
if $test -r /usr/lib/libjobs.a || $test -r /usr/local/lib/libjobs.a ; then
$echo "Jobs library found."
normsig=undef
jobslib='-ljobs'
else
if bsd; then
$echo "No jobs library found. (I suppose this is at least 4.2...)"
else
$echo "No jobs library found. (That's okay, we all have our faults.)"
fi
normsig=define
jobslib=''
fi
: set the right options for cc and include the x library for XENIX
if xenix; then
if $test -d /lib/386 ; then
iandd="-M3e"
else
iandd="-M2let8 -LARGE -F 3000"
fi
jobslib=-lx
fi
: see if there are directory access routines out there
if $test -r /usr/lib/libndir.a || $test -r /usr/local/lib/libndir.a ; then
$echo "Ndir library found."
if $test -r /usr/lib/libndir.a; then
ndirlib='-lndir'
else
ndirlib="/usr/local/lib/libndir.a"
fi
libndir=define
usendir=undef
ndirc=''
ndiro=''
dirtype=direct
else
ndirlib=''
libndir=undef
if $contains readdir.o libc.list >/dev/null 2>&1 ; then
$echo "No ndir library found, but you have readdir() so we'll use that."
usendir=undef
ndirc=''
ndiro=''
if sgi ; then
dirtype=direct
dirinc="<sys/dir.h>"
$echo "Using direct directory structure."
else
if $test -r /usr/include/dirent.h ; then
$echo "Using dirent directory structure."
dirtype=dirent
dirinc="<dirent.h>"
else
$echo "Using direct directory structure."
dirtype=direct
dirinc="<sys/dir.h>"
fi
fi
else
$echo "No ndir library found and no readdir() found--using ./ndir.c."
usendir=define
ndirc='ndir.c'
ndiro='ndir.o'
fi
fi
: locate spool directory and check if rrn
case "$isrrn" in
define)
dflt="y";;
*)
dflt="n";;
esac
isrrn=''
while $test -z "$isrrn" ; do
$echo " "
$echo $n "Do you want this built as remote rn (rrn)? [$dflt] $c"
. myread
case "$ans" in
'') ans="$dflt";;
esac
case "$ans" in
n*)
isrrn=undef;;
y*)
isrrn=define
spool=/tmp
$echo "net.foobar 00001 00001 y" > .falseactive
case "$serverfile" in
'') dflt="no default" ;;
*) dflt="$serverfile";;
esac
$cat <<'EOM'
rrn determines the machine to use as a news server by two means:
1. It examines the environment variable NNTPSERVER for
a machine name; this allows users to use server machines
other than the default.
2. It looks in a file which contains the name of a server
machine.
You must create the file mentioned in (2), above. Simply put the name
of the machine you wish to use as your news server in this file.
If you really want, you can use # for comments and blank lines in
this file as well.
EOM
ans='blurfl/dyick'
while $test ! -r "$ans" ; do
$echo $n "Enter the name of the news server file: [$dflt] $c"
. myread
case "$ans" in
'') ans="$dflt";;
esac
ans=`filexp "$ans"`
if $test ! -r $ans ; then
$echo "Can't find $ans"
ans='blurfl/dyick'
fi
done
serverfile="$ans"
case "$NNTPSRC" in
'') dflt="no default";;
*) dflt="$NNTPSRC";;
esac
ans='blurfl/dyick'
while $test ! -d "$ans"; do
$echo $n "Enter the pathname of the NNTP source directory: [$dflt] $c"
. myread
case "$ans" in
'') ans="$dflt";;
esac
ans=`filexp "$ans"`
if $test ! -r $ans/common/nntp.h ; then
$echo "Can't find $ans/common/nntp.h!"
ans='blurfl/dyick'
fi
done
NNTPSRC="$ans"
cat > server.h <<EOF_SERVE
#ifdef SERVER
EXT char *getserverbyfile();
EXT int server_init();
EXT void put_server();
EXT int get_server();
EXT void close_server();
#include "$NNTPSRC/common/nntp.h"
#endif
EOF_SERVE
esac
done
: hack for Unisys NET-5000
case "$isrrn" in
define)
if $test -d /usr/include/NET-5000 ; then
$echo "I sense you are on a Unisys 5000 computer...poor soul."
rrninclude="-I/usr/include/NET-5000 -DEXCELAN -DUSG"
socketlib=-lsocket
fi
;;
*) ;;
esac
case "$spool" in
'')
dflt=/usr/spool/news
;;
*) dflt="$spool";;
esac
case "$isrrn" in
define) ans=/tmp;;
*) ans='blurfl/dyick';;
esac
while $test ! -d $ans; do
$echo " "
case "$ans" in
blurfl*);;
*) $echo "Directory $ans not found.";;
esac
$echo $n "Where is news spooled (~name ok)? [$dflt] $c"
. myread
case "$ans" in
'') ans="$dflt";;
esac
spool="$ans"
case $spool in
~*)
ans=`filexp $spool`
$echo "(That is $ans on this particular system.)"
case $portable in
undef) spool=$ans ;;
esac
;;
*)
ans=$spool
;;
esac
done
: locate active file
case "$active" in
'')
dflt=$lib/active
;;
*) dflt="$active";;
esac
case "$isrrn" in
define) myactive=.falseactive;;
*) myactive='blurfl/dyick'
esac
while $test ! -f "$myactive"; do
$echo " "
case "$myactive" in
blurfl*);;
*) "File $myactive not found.";;
esac
$echo $n "Where is the active file (~name ok)? [$dflt] $c"
. myread
case "$ans" in
'') ans="$dflt";;
esac
active="$ans"
case $active in
~*)
myactive=`filexp $active`
$echo "(That is $myactive on this particular system.)"
case $portable in
undef) active=$myactive ;;
esac
;;
*)
myactive=$active
;;
esac
if $test -d $myactive ; then
myactive=$myactive/active
active=$active/active
fi
done
: check for 2.10.2 and above
$echo " "
if $contains ' [0-9][0-9]* [0-9]' "$myactive" >/dev/null 2>&1; then
case "$norelay" in
undef) dflt="y";;
*) dflt="n";;
esac
case "$isrrn" in
define)
$echo "Is your NNTP server running an old version of news software," ;;
*) $echo "Is your system running an old version of news software," ;;
esac
$echo $n "predating B News 2.10.3? [${dflt}] $c"
. myread
case "$ans" in
'') ans=$dflt;;
esac
case "$ans" in
y*)
norelay='undef'
$echo "Looks like you are running at least 2.10.2 news."
;;
*) norelay='define' ;;
esac
mininact=define
else
$echo "It doesn't look like you are running 2.10.2 news yet. Are you planning"
$echo $n "to install it in the near future? [y] $c"
. myread
case $ans in
n*) mininact=undef ;;
*) mininact=define ;;
esac
norelay='undef'
fi
: check for void type
$echo " "
$echo "Checking to see if your C compiler groks the void type..."
$cat >try.c <<'EOCP'
void main();
EOCP
if cc -c try.c >/dev/null 2>&1 ; then
novoid='undef'
$echo "Yup, it does."
else
novoid='define'
$echo "Nope, it doesn't (boo hiss). I will substitute int."
fi
$rm try.*
: find out which shell people like to use most
ans='blurfl/dyick'
while $test ! -f "$ans" ; do
case $ans in
blurfl*) ;;
*) $echo "$ans does not appear to exist." ;;
esac
case "$pref" in
'')
if $test -f /bin/ksh; then
dflt='/bin/ksh'
else
if $test -f /bin/csh; then
dflt='/bin/csh'
else
dflt='/bin/sh'
fi
fi
;;
*) dflt="$pref";;
esac
$echo " "
$echo "Give the full path name of the shell most people like to use on your"
$echo $n "system: [$dflt] $c"
. myread
case $ans in
'') ans=$dflt ;;
esac
done
pref=$ans
: locate the preferred pager for this system
case "$pager" in
'')
case $pg in
/*) dflt=$pg
;;
esac
case $more in
/*) dflt=$more
;;
esac
case $dflt in
'') dflt=/usr/ucb/more
;;
esac
;;
*) dflt="$pager";;
esac
pager='blurfl/dyick'
while $test ! -f "$pager" ; do
case $pager in
blurfl*)
$echo " "
$echo "(If your kernel does terminal paging then you may answer this with '/bin/cat'.)"
;;
/*) $echo "$pager does not appear to exist."
$echo " "
;;
*) $echo "Please give the full path name."
$echo " "
;;
esac
$echo $n "What pager is used on your system? [$dflt] $c"
. myread
pager="$ans"
case $pager in
'') pager="$dflt" ;;
esac
done
: determine default editor
case "$defeditor" in
'')
dflt=/usr/ucb/vi
;;
*) dflt="$defeditor"
;;
esac
defeditor='blurfl/dyick'
while $test ! -f "$defeditor" ; do
case $defeditor in
blurfl*) ;;
*) $echo "$defeditor does not appear to exist." ;;
esac
$echo " "
$echo $n "What is the default editor on your system? [$dflt] $c"
. myread
defeditor="$ans"
case $defeditor in
'') defeditor=$dflt ;;
esac
done
: determine mailer for Rnmail to use
$echo " "
if $test -f /usr/lib/sendmail; then
mailer=/usr/lib/sendmail
else
if usg && $test -f $libexp/recmail; then
mailer=$libexp/recmail
else
mailer=/bin/mail
fi
fi
$echo "Mail sender is $mailer"
: check for internet mailer
case "$internet" in
define) dflt=y;;
undef) dflt=n;;
*)
case "$isrrn" in
define) dflt=y ;;
*) dflt=n ;;
esac
;;
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"
. myread
case "$ans" in
'') ans=$dflt;;
esac
case "$ans" in
y*) internet=define;;
*) internet=undef;;
esac
: determine where public executables go
case "$rnbin" in
'')
dflt=`loc . /bin /usr/local/bin /usr/lbin /usr/local /usr/bin`
;;
*) dflt="$rnbin"
;;
esac
rnbin='blurfl/dyick'
while $test ! -d "$rnbin" ; do
case $rnbin in
blurfl*) ;;
*) $echo "$rnbin does not appear to exist." ;;
esac
$echo " "
$echo $n "Where do you want to put the public executables? [$dflt] $c"
. myread
rnbin="$ans"
rnbin=`filexp $rnbin`
case $rnbin in
'') rnbin=$dflt ;;
esac
done
: determine where private executables go
case "$rnlib" in
'')
case "$isrrn" in
define) dflt=/usr/local/lib/rn ;;
*) dflt=$lib/rn ;;
esac
;;
*) dflt="$rnlib"
;;
esac
$echo " "
$echo "Rn has a number of auxiliary programs that need not be visible to the"
$echo "whole world. Where do you want to put these private executables?"
$echo $n "[$dflt] (~name ok) $c"
. myread
rnlib="$ans"
case $rnlib in
'') rnlib=$dflt ;;
esac
case $portable in
undef)
rnlib=`filexp $rnlib`
;;
esac
: must not allow self reference
case $rnlib in
/*)
filexp=$rnlib/filexp
;;
*)
filexp=`pwd`/filexp
;;
esac
: get the local distribution prefixes
if $test -f $libexp/sys ; then
$sed <$libexp/sys -n -e "s/^$sitename://p" | \
$sed -e "s/:.*//" -e "s/,/ /g" | tr ' ' '\012' | \
$sed -e "/^to./d" -e "/^net$/d" -e "/^fa$/d" -e "/^mod$/d" > .distlist
fi
$cat <<'EOH'
Distribution groups are the things you use on the Distribution line to limit
where an article will go to. You are likely to be a member of several
distribution groups, such as organization, city, state, province, country,
continent, etc. For example, Los Angeles has the distribution prefix "la",
New Jersey has the prefix "nj", and Europe has the prefix "eunet".
The categories you will be asked are:
local organization (Could be just one machine or a cluster or an office)
organization att, dec, kgb, ...
city la, ny, mosc, ...
state/province ca, nj, bc, ...
country usa, can, rok, whatever
continent na (North America, not "Not Applicable"), asia, etc.
(If you don't have a distribution prefix in any of these categories then
just hit return.)
EOH
if $test -f .distlist; then
distlist=`tr '\012' ' ' <.distlist`
if $test "$distlist" ; then
$echo "(These are the distributions in your sys file: $distlist)"
$echo " "
fi
fi
case "$locpref" in
'') dflt="";;
*) dflt="[$locpref] ";;
esac
$echo $n "What is the distribution prefix for your local organization? $dflt$c"
. myread
case "$ans" in
'') ;;
*) locpref="$ans";;
esac
case $locpref in
'') locpref=none ;;
esac
case "$orgpref" in
'') dflt="";;
*) dflt="[$orgpref] ";;
esac
$echo $n "What is the distribution prefix for your organization? $dflt$c"
. myread
case "$ans" in
'') ;;
*) orgpref="$ans";;
esac
case $orgpref in
'') orgpref=none ;;
esac
case "$citypref" in
'') dflt="";;
*) dflt="[$citypref] ";;
esac
$echo $n "What is the distribution prefix for your city? $dflt$c"
. myread
case "$ans" in
'') ;;
*) citypref="$ans";;
esac
case $citypref in
'') citypref=none ;;
esac
case "$statepref" in
'') dflt="";;
*) dflt="[$statepref] ";;
esac
$echo $n "What is the distribution prefix for your state/province? $dflt$c"
. myread
case "$ans" in
'') ;;
*) statepref="$ans";;
esac
case $statepref in
'') statepref=none ;;
esac
case "$cntrypref" in
'') dflt="";;
*) dflt="[$cntrypref] ";;
esac
$echo $n "What is the distribution prefix for your country? $dflt$c"
. myread
case "$ans" in
'') ;;
*) cntrypref="$ans";;
esac
case $cntrypref in
'') cntrypref=none ;;
esac
case "$contpref" in
'') dflt="";;
*) dflt="[$contpref] ";;
esac
$echo $n "What is the distribution prefix for your continent? $dflt$c"
. myread
case "$ans" in
'') ;;
*) contpref="$ans";;
esac
case $contpref in
'') contpref=none ;;
esac
$echo " "
$echo "If you have any other distribution groups you will need to edit Pnews"
$echo "and newsetup to add them."
$echo " "
: determine root id
rootid=`$sed </etc/passwd -e "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" -e "q" -e "}" -e "d"`
case $rootid in
'') rootid=0 ;;
*) $echo "Root uid = $rootid" ;;
esac
: weed out incompatibilities
case $douname in
define) whoami=undef ;;
esac
: preserve RCS keywords in files with variable substitution, grrr
Log='$Log'
Header='$Header'
: Warnings
if v7; then
cat <<'EOM'
NOTE: the V7 compiler may ignore some #undefs that rn uses. If so, you will
get messages about redefining EXT. Some V7 compilers also have difficulties
with #defines near buffer boundaries, so beware. You may have to play with
the spacing in common.h.
EOM
fi
if pdp11; then
cat <<'EOM'
NOTE: the PDP-11 does not have enough data space to do subject caching
reliably. That feature will be disabled automatically. Subject searching
will tend to be slow.
EOM
fi
case "$isrrn" in
define) ;;
*) socketlib=""
rrninclude=""
;;
esac
$echo " "
$echo "End of configuration questions."
$echo " "
: create config.sh file
$echo " "
$echo "Creating config.sh..."
$spitshell <<EOT >config.sh
$startsh
# config.sh
# This file was produced by running the Configure script.
n='$n'
c='$c'
libc='$libc'
eunicefix='$eunicefix'
eunice='$eunice'
cpp='$cpp'
shsharp='$shsharp'
startsh='$startsh'
spitshell='$spitshell'
test='$test'
expr='$expr'
sed='$sed'
echo='$echo'
cat='$cat'
rm='$rm'
mv='$mv'
cp='$cp'
tail='$tail'
tr='$tr'
mkdir='$mkdir'
sort='$sort'
uniq='$uniq'
inews='$inews'
grep='$grep'
egrep='$egrep'
ypmatch='$ypmatch'
contains='$contains'
lib='$lib'
libexp='$libexp'
nametype='$nametype'
cc='$cc'
iandd='$iandd'
include='$include'
rrninclude='$rrninclude'
termlib='$termlib'
jobslib='$jobslib'
socketlib='$socketlib'
getcwd='$getcwd'
dirtype='$dirtype'
ndirlib='$ndirlib'
libndir='$libndir'
usendir='$usendir'
ndirc='$ndirc'
ndiro='$ndiro'
pager='$pager'
mailer='$mailer'
internet='$internet'
rnbin='$rnbin'
filexp='$filexp'
distlist='$distlist'
Log='$Log'
Header='$Header'
sitename='$sitename'
domain='$domain'
orgname='$orgname'
isadmin='$isadmin'
newsadmin='$newsadmin'
rnlib='$rnlib'
mansrc='$mansrc'
manext='$manext'
maildir='$maildir'
spool='$spool'
active='$active'
myactive='$myactive'
mininact='$mininact'
pref='$pref'
defeditor='$defeditor'
rootid='$rootid'
mboxchar='$mboxchar'
locpref='$locpref'
orgpref='$orgpref'
citypref='$citypref'
statepref='$statepref'
cntrypref='$cntrypref'
contpref='$contpref'
strchr='$strchr'
novoid='$novoid'
novfork='$novfork'
portable='$portable'
passnam='$passnam'
berknam='$berknam'
usgnam='$usgnam'
whoami='$whoami'
termio='$termio'
fcntl='$fcntl'
ioctl='$ioctl'
normsig='$normsig'
sigblock='$sigblock'
sigret='$sigret'
getuidgid='$getuidgid'
havetlib='$havetlib'
getpwent='$getpwent'
gethostname='$gethostname'
douname='$douname'
phostname='$phostname'
hostcmd='$hostcmd'
norelay='$norelay'
rdchk='$rdchk'
isrrn='$isrrn'
serverfile='$serverfile'
NNTPSRC='$NNTPSRC'
CONFIG=true
EOT
: create config.h file
$echo " "
$echo "Creating config.h..."
$cat <<EOT >config.h
/* config.h
* This file was produced by running the Configure script.
* Feel free to modify any of this as the need arises.
*/
/* name of the site. May be overridden by gethostname, uname, etc. */
#define SITENAME "$sitename"
/* name of the organization, may be a file name */
#define ORGNAME "$orgname"
/* login name of news administrator, if any. */
#$isadmin NEWSADMIN "$newsadmin"
/* news library, may use only ~ and %l expansion */
#define LIB "$lib"
/* rn private library, may use ~ expansion, %x and %l */
#define RNLIB "$rnlib"
/* location of the news spool directory, may use ~ expansion, %x and %l */
#define SPOOL "$spool"
/* location of the active file, may use ~ expansion, %x and %l */
#define ACTIVE "$active"
/* location of spooled mail */
#define MAILFILE "$maildir/%L"
/* default shell--ok to be a slow shell like csh */
#define PREFSHELL "$pref"
/* default editor */
#define DEFEDITOR "$defeditor"
/* root uid */
#define ROOTID $rootid
/* what is the first character of a mailbox? */
#define MBOXCHAR '$mboxchar'
/* how to cancel an article */
#define CANCEL "$inews -h <%h"
/* distribution groups */
#define LOCDIST "$locpref"
#define ORGDIST "$orgpref"
#define CITYDIST "$citypref"
#define STATEDIST "$statepref"
#define CNTRYDIST "$cntrypref"
#define CONTDIST "$contpref"
#$strchr index strchr /* cultural */
#$strchr rindex strrchr /* differences? */
#$novoid void int /* is void to be avoided? */
#$novfork vfork fork /* is vfork too virtual? */
#$eunice EUNICE /* no linking? */
#$eunice VMS /* not currently used, here just in case */
#$getcwd GETCWD /* do we have getcwd()? */
#$usendir USENDIR /* include ndir.c? */
#$libndir LIBNDIR /* include /usr/include/ndir.h? */
#define DIRTYPE $dirtype
#ifndef USENDIR
#define DIRINC $dirinc
#endif
#$mininact MININACT /* include 2.10.2 optimization? */
#$portable PORTABLE /* do we do extra lookups to start up? */
#$passnam PASSNAMES /* do names come from the passwd file? */
/* (undef to take name from ~/.fullname) */
#$berknam BERKNAMES /* if so, are they Berkeley format? */
/* (that is, ":name,stuff:") */
#$usgnam USGNAMES /* or are they USG format? */
/* (that is, ":stuff-name(stuff):") */
#$whoami WHOAMI /* should we include whoami.h? */
#$rdchk RDCHK /* do we have rdchk()? */
#$termio TERMIO /* is this a termio system? */
#$fcntl FCNTL /* should we include fcntl.h? */
#$ioctl IOCTL /* are ioctl args all defined in one place? */
#$normsig NORMSIG /* use signal rather than sigset? */
#$sigblock SIGBLOCK /* use sigblock and sigsetmask */
#define SIGRET $sigret /* what does signal() return? */
#$havetlib HAVETERMLIB /* do we have termlib-style routines? */
#$getuidgid GETUIDGID /* allow setuid (if possible) */
#$getpwent GETPWENT /* should we include getpwent? */
#$internet INTERNET /* does our mailer do INTERNET addressing? */
#$gethostname GETHOSTNAME /* do we have a gethostname function? */
#$douname DOUNAME /* do we have a uname function? */
#$phostname PHOSTNAME "$hostcmd" /* how to get host name with popen */
#$norelay NORELAY /* 2.10.3 doesn't have Relay-Version line */
#$isrrn SERVER /* rrn server code */
#$isrrn SERVER_FILE "$serverfile"
EOT
CONFIG=true
$rm -f libc.list .distlist kit*isdone
$echo " "
$echo "Doing variable substitutions on various files..."
$echo " "
set `$grep <MANIFEST '\.SH' | awk '{print $1}'`
for file in $*; do
. $file
done
$echo " "
$echo 'Now you need to generate make dependencies by running "makedepend".'
$echo 'You might prefer to run it in background: "makedepend > makedepend.out &"'
$echo $n "Would you like me to run it for you (it takes quite a while)? [n] $c"
. myread
case "$ans" in
y*) makedepend;;
esac
$rm -f myread
: end of Configure