home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume23
/
trn
/
part01
/
Configure.2
next >
Wrap
Text File
|
1991-08-22
|
43KB
|
1,916 lines
*) dflt="$domain" ;;
esac
$echo $n "Your domain: [$dflt] $c"
. myread
case "$ans" in
'') domain="$dflt";;
*) domain="$ans" ;;
esac
: now get the site name
$echo " "
$echo "Figuring out site name..."
$echo 'Maybe "hostname" will work...'
if ans=`sh -c hostname 2>&1` ; then
thissite=$ans
hostcmd=hostname
else
$echo 'No, maybe "uuname -l" will work...'
if ans=`sh -c 'uuname -l' 2>&1` ; then
thissite=$ans
hostcmd='uuname -l'
else
$echo 'Strange. Maybe "uname -n" will work...'
if ans=`sh -c 'uname -n' 2>&1` ; then
thissite=$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
thissite=`$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..."
thissite="$sitename"
;;
esac
fi
fi
fi
fi
: you do not want to know about this
set $thissite
thissite=$1
: translate upper to lower case. This is mostly to help UUCP work right.
case $thissite in
*[A-Z]*)
thissite=`$echo $thissite | tr '[A-Z]' '[a-z]'`
$echo "(Normalizing case in your site name)"
;;
esac
: verify site name and allow them to override it
if $test "$thissite" ; then
$echo 'Your site name appears to be "'$thissite'".'
else
thissite='unknown'
fi
case "$hostfile" in
/*) dflt="$hostfile" ;;
*) case "$sitename" in
'') dflt="$thissite" ;;
*) dflt="$sitename" ;;
esac
esac
$cat <<'EOM'
In some cases it is not desirable to use the actual site name in your return
addresses (if, for example, all mail gets routed first to one site). In this
case trn allows you to either hard-wire a site name or read the site name from
a file. To indicate a file, start the name with a slash (e.g. /etc/sitename).
To use just your domain name, re-enter it here. A period-less site name will
automatically get your domain name added to it.
EOM
while $test $dflt ; do
$echo $n "What site name goes in return addresses? [$dflt] $c"
. myread
case $ans in
'') ans=$dflt;;
esac
case $ans in
/*)
if $test -f $ans ; then
hostfile="$ans"
hostcmd="$cat $ans"
sitename=`$hostcmd`
$echo "Trn will read the site name from $ans: $sitename."
dflt=''
else
$echo "Unable to locate $ans."
fi
;;
*) hostfile=''
if $test "X$thissite" = "X$ans" ; then
sitename="$thissite"
$echo "Using the site name derived by $hostcmd: $sitename."
else
hostcmd=''
sitename="$ans"
$echo "Using a hard-wired site name: $sitename."
fi
dflt=''
;;
esac
done
if $test $portable = "undef" ; then
case $sitename in
*.*) ;;
*) sitename=$sitename.$domain
;;
esac
fi
case $hiddennet in
define) dflt=y;;
*) dflt=n;;
esac
$echo "Do you want your site ($sitename) to be hidden in"
$echo $n "domain '$domain'? [$dflt] $c"
. myread
case $ans in
'') ans=$dflt ;;
esac
case $ans in
y*) hiddennet=define
sitename=$domain
;;
*) hiddennet=undef
;;
esac
: get organization 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 $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."
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
case "$dflt" in
*%L*) ;;
*) dflt="$dflt/%L"
esac
$cat <<'EOM'
Trn needs to know where to find yet-to-be-read mail. Sendmail sites
use /usr/spool/mail/%L (where '%L' is the user's login name). Some
MMDF sites use /usa/%L/.mail instead.
EOM
$echo $n "Where is yet-to-be-read mail spooled? [$dflt] $c"
. myread
maildir="$ans"
case $maildir in
'') maildir=$dflt ;;
esac
: find out how to find out full name
$echo " "
case "$berknam" in
define)
dflt=y;;
undef)
dflt=n;;
*)
if bsd || 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"
. myread
case $ans in
'') ans=$dflt ;;
esac
case $ans in
y*)
passnam=define
berknam=define
usgnam=undef
nametype=bsd
;;
*)
$echo " "
case "$usgnam" 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
: bcopy/bzero or memcpy/memset
$echo " "
if $contains bcopy.o libc.list >/dev/null 2>&1 ; then
$echo "Your system appears to use bcopy() and bzero() rather than memcpy()"
$echo $n "and memset(). Is this correct? [y] $c"
. myread
case $ans in
n*|f*) memcpy='define' ;;
*) memcpy='undef' ;;
esac
else
$echo "Your system appears to use memcpy() and memset() rather than bcopy()"
$echo $n "and bzero(). Is this correct? [y] $c"
. myread
case $ans in
n*|f*) memcpy='undef' ;;
*) memcpy='define' ;;
esac
fi
: check for S5-style timezone handling - current offset from GMT in
: external variable "timezone" rather than gotten with "ftime".
$echo " "
if $contains tzname /usr/include/time.h >/dev/null 2>&1 ; then
$echo "Your system appears to get the current timezone's offset"
$echo "from GMT from the external variable timezone rather than"
$echo "by calling ftime() or gettimeofday()."
$echo $n "Is this correct? [y] $c"
. myread
case $ans in
n*|f*) tzset='undef' ;;
*) tzset='define' ;;
esac
else
$echo "Your system appears to get the current timezone's offset"
$echo "from GMT by calling ftime() or gettimeofday() rather than"
$echo "from the external variable timezone."
$echo $n "Is this correct? [y] $c"
. myread
case $ans in
n*|f*) tzset='define' ;;
*) tzset='undef' ;;
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, trn 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. For example,
MMDF messages are separated with lines of 4 control-A's. On your system, if a
EOM
$echo $n "file is in mailbox format, what is the first character of that file? [$dflt] $c"
. myread
mboxchar="$ans"
case $mboxchar in
'') mboxchar="$dflt" ;;
esac
case $mboxchar in
'F') ;;
"$CTRLA") ;;
*) 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 ptem.h exists
if $test -r /usr/include/sys/ptem.h ; then
ptem=define
$echo "sys/ptem.h found."
else
ptem=undef
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
getwd=define
else
: see if the system has getcwd
if $contains getcwd.o libc.list >/dev/null 2>&1 ; then
$echo "getcwd() found."
getcwd=define
getwd=undef
else
getcwd=undef
getwd=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
if next; then
$echo "I know NeXTs have vfork()!"
novfork='undef'
else
$echo "No vfork() found--will use fork() instead."
novfork='define'
fi
fi
: check for rename
if $contains rename.o libc.list >/dev/null 2>&1 ; then
$echo "rename() found."
rename='define'
else
$echo "No rename() found -- we'll emulate it."
rename='undef'
fi
: check for truncate
if $contains truncate.o libc.list >/dev/null 2>&1 ; then
$echo "truncate() found."
truncate='define'
else
$echo "No truncate() found -- we'll emulate it."
truncate='undef'
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
$cpp /usr/include/signal.h >sigtest
else
if [ -f /usr/include/sys/signal.h ]
then
$cpp /usr/include/sys/signal.h >sigtest
fi
fi
if grep "$WHITE*void$WHITE*(\*signal())();" sigtest >/dev/null
then
sigret=void
fi
$echo "signal() returns $sigret on this system"
: see how we will look up site name
douname=undef
gethostname=undef
phostname=undef
if $test ! "X$hostfile" = X ; then
gethostname=define
else
if $test "X$hostcmd" = X ; then
: it is already compiled in
else
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 trn, which lets
trn start up faster, but makes your binaries non-portable, or
2) you can have trn 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
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"
iandd="-Ml2et32 -LARGE -F B000"
fi
jobslib=-lx
chsize=define
else
if $test -r /lib/libx.a ; then
$echo "Found Xenix library; using chsize()"
jobslib=-lx
chsize=define
else
chsize=undef
fi
fi
: No Steve jokes...
if next; then
jobslib='-lsys_s'
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
if xenix; then
$echo "Using Xenix readdir() from -lx."
usendir=undef
ndirc=''
ndiro=''
dirtype=direct
dirinc="<sys/ndir.h>"
$echo "Using direct directory structure."
else
$echo "No ndir library and no readdir()--using ./ndir.c."
usendir=define
ndirc='ndir.c'
ndiro='ndir.o'
dirtype=direct
fi
fi
fi
: check if they want threads by default
case "$threaddef" in
F*) dflt="n";;
*) dflt="y";;
esac
$cat <<EOT
Trn has two distinct operating modes (selected by the -x option):
traditional rn and threaded rn. If you like, trn will check the first
letter of the command name and default to threaded mode (-x) if it is
a 't', or run as traditional rn (+x) if it isn't (this lets you install
as both trn and rn, linked together). Otherwise, you can install trn
to default to threaded rn (-x) no matter what its name is. Would you
EOT
$echo $n "prefer the latter? (defaults to -x, regardless of name)? [$dflt] $c"
. myread
case "$ans" in
'') ans="$dflt";;
esac
case "$ans" in
n*|f*) threaddef='FALSE'
ans=' when -x is specified';;
*) threaddef='TRUE'
ans='';;
esac
: check if they want the thread selector used by default
case "$selectdef" in
F*) dflt="n";;
*) dflt="y";;
esac
$cat <<EOT
When the -X option is specified, trn will set the default command
for starting a newsgroup to be the thread selector. Should the -X
EOT
$echo $n "option be on by default$ans? [$dflt] $c"
. myread
case "$ans" in
'') ans="$dflt";;
esac
case "$ans" in
n*|f*) selectdef='FALSE';;
*) selectdef='TRUE';;
esac
: 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 to build the NNTP versions of trn (trrn) and mthreads? [$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'
Trrn 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 and Interactive V/386
case "$isrrn" in
define)
: NET-5000
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
: Interactive Unix
if $test -f /usr/lib/libinet.a ; then
rrninclude="-DUSG"
socketlib=-linet
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
: check on .thread file placement
case "$isrrn" in
define)
case "$threaddir" in
''|'.') dflt="/usr/spool/threads";;
*) dflt="$threaddir";;
esac
$echo " "
$echo "Pick a directory where you would like the thread files to"
$echo $n "be placed: [$dflt] $c"
. myread
case "$ans" in
''|'.') ans="$dflt";;
esac
;;
*)
case "$threaddir" in
''|'.') dflt=".";;
*) dflt="$threaddir";;
esac
$cat <<EOT
By default we place each group's .thread file in the same spool
directory as the article files. Alternately, you can place the
data files in a separate directory if space is tight on the news
drive. Where would you like them put? (use '.' to specify the
EOT
$echo $n "default): [$dflt] $c"
. myread
case "$ans" in
'') ans="$dflt";;
esac
;;
esac
threaddir="$ans"
: 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=`loc vi /usr/ucb $pth`
;;
*) 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 "$mailer"; then
mailer=
for x in /usr/lib/sendmail /bin/smail /usr/bin/smail \
/usr/lib/mail/execmail; do
if $test "$mailer" = "" -a -f $x; then
mailer=$x
fi
done
if $test ! -f "$mailer"; then
if usg && $test -f $libexp/recmail; then
mailer=$libexp/recmail
else
if s5uniq && $test -f /usr/bin/mailx; then
mailer=/usr/bin/mailx
else
mailer=/bin/mail
fi
fi
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/trn ;;
*) dflt=$lib/trn ;;
esac
;;
*) dflt="$rnlib"
;;
esac
$echo " "
$echo "Trn 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 trn 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'
nidump='$nidump'
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'
getwd='$getwd'
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'
hostfile='$hostfile'
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'
memcpy='$memcpy'
rename='$rename'
truncate='$truncate'
chsize='$chsize'
tzset='$tzset'
threaddef='$threaddef'
selectdef='$selectdef'
threaddir='$threaddir'
novoid='$novoid'
novfork='$novfork'
portable='$portable'
passnam='$passnam'
berknam='$berknam'
usgnam='$usgnam'
whoami='$whoami'
termio='$termio'
fcntl='$fcntl'
ioctl='$ioctl'
ptem='$ptem'
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
CTRLA='$CTRLA'
hiddennet='$hiddennet'
EOT
: create config.h file
$echo " "
$echo "Creating config.h..."
case "$threaddir" in
'.') threaddir='/usr/spool/threads'
tdir='/*';;
*) tdir='';;
esac
case "$strchr" in
define) strchr='';;
*) strchr='/*';;
esac
case "$memcpy" in
define) memcpy='';;
*) memcpy='/*';;
esac
case "$novoid" in
define) novoid='';;
*) novoid='/*';;
esac
case "$novfork" in
define) novfork='';;
*) novfork='/*';;
esac
case "$phostname" in
define) phostname='';;
*) phostname='/*';;
esac
case "$isrrn" in
define) isrrn2='';;
*) isrrn2='/*';;
esac
case "$hostfile" in
'') usehostfile='/*';;
*) usehostfile='';;
esac
$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 HOSTFILE, gethostname, uname, etc. */
#define SITENAME "$sitename"
$usehostfile#define HOSTFILE "$hostfile"
/* domain name for the site */
#define OURDOMAIN "$domain"
/* 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"
/* put thread files in each spool directory, unless THREAD_DIR is defined */
$tdir#define THREAD_DIR "$threaddir" /* base directory */
/* save in subdirectories unless LONG_THREAD_NAMES & THREAD_DIR are defined */
#undef LONG_THREAD_NAMES /* not for short-name systems */
/* location of the active file, may use ~ expansion, %x and %l */
#define ACTIVE "$active"
/* location of spooled mail */
#define MAILFILE "$maildir"
/* 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"
#define THREAD_INIT $threaddef
#define SELECT_INIT $selectdef
$strchr#define index strchr /* cultural */
$strchr#define rindex strrchr /* differences? */
$memcpy#define bcopy(s,d,n) memcpy((char*)d,(char*)s,(int)n) /* Different */
$memcpy#define bzero(d,n) memset((char*)d,0,(int)n) /* flavors. */
#$rename RENAME /* is rename() a system call? */
#$truncate TRUNCATE /* is truncate() available? */
#$chsize CHSIZE /* is chsize() available? */
#$tzset TZSET /* modern timezone functions? */
$novoid#define void int /* is void to be avoided? */
$novfork#define 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()? */
#$getwd GETWD /* do we have getwd()? */
#$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? */
#$ptem PTEM /* has the ptem.h include file ? */
#$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#define 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 */
$isrrn2#define SERVER_FILE "$serverfile" /* news server file */
#$hiddennet HIDDENNET /* hide the host inside the domain? */
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