home *** CD-ROM | disk | FTP | other *** search
- From: sob@lib.tmc.edu (Stan Barber)
- Newsgroups: alt.sources
- Subject: rrn/rn combo kit part 2 of 9
- Message-ID: <428@lib.tmc.edu>
- Date: 14 Jun 90 03:26:40 GMT
-
- #! /bin/sh
-
- # Make a new directory for the rn sources, cd to it, and run kits 1 thru 9
- # through sh. When all 9 kits have been run, read README.
-
- echo "This is rn kit 2 (of 9). If kit 2 is complete, the line"
- echo '"'"End of kit 2 (of 9)"'" will echo at the end.'
- echo ""
- export PATH || (echo "You didn't use sh, you clunch." ; kill $$)
- echo Extracting Configure
- cat >Configure <<'!STUFFY!FUNK!'
- #!/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
- !STUFFY!FUNK!
- echo Extracting ngstuff.c
- cat >ngstuff.c <<'!STUFFY!FUNK!'
- /* $Header: ngstuff.c,v 4.3.2.2 90/04/14 19:40:02 sob Exp $
- *
- * $Log: ngstuff.c,v $
- * Revision 4.3.2.2 90/04/14 19:40:02 sob
- * Fixed small syntax problem that generates errors with particular C
- * preprocessors.
- *
- * Revision 4.3.1.2 85/05/10 14:31:52 lwall
- * Prevented "Junked" or "Marked unread" when no state change.
- *
- * Revision 4.3.1.1 85/05/10 11:36:45 lwall
- * Branch for patches.
- *
- * Revision 4.3 85/05/01 11:45:03 lwall
- * Baseline for release with 4.3bsd.
- *
- */
-
- #include "EXTERN.h"
- #include "common.h"
- #include "term.h"
- #include "util.h"
- #include "ng.h"
- #include "bits.h"
- #include "intrp.h"
- #include "cheat.h"
- #include "head.h"
- #include "final.h"
- #include "sw.h"
- #include "INTERN.h"
- #include "ngstuff.h"
-
- void
- ngstuff_init()
- {
- ;
- }
-
- /* do a shell escape */
-
- int
- escapade()
- {
- register char *s;
- bool interactive = (buf[1] == FINISHCMD);
- bool docd;
- char whereiam[256];
-
- if (!finish_command(interactive)) /* get remainder of command */
- return -1;
- s = buf+1;
- docd = *s != '!';
- if (!docd) {
- s++;
- }
- else {
- getwd(whereiam);
- if (chdir(cwd)) {
- printf(nocd,cwd) FLUSH;
- sig_catcher(0);
- }
- }
- while (*s == ' ') s++;
- /* skip leading spaces */
- interp(cmd_buf, (sizeof cmd_buf), s);/* interpret any % escapes */
- resetty(); /* make sure tty is friendly */
- doshell(Nullch,cmd_buf); /* invoke the shell */
- noecho(); /* and make terminal */
- crmode(); /* unfriendly again */
- if (docd) {
- if (chdir(whereiam)) {
- printf(nocd,whereiam) FLUSH;
- sig_catcher(0);
- }
- }
- #ifdef MAILCALL
- mailcount = 0; /* force recheck */
- #endif
- return 0;
- }
-
- /* process & command */
-
- int
- switcheroo()
- {
- if (!finish_command(TRUE)) /* get rest of command */
- return -1; /* if rubbed out, try something else */
- if (!buf[1])
- pr_switches();
- #ifdef PUSHBACK
- else if (buf[1] == '&') {
- if (!buf[2]) {
- page_init();
- show_macros();
- }
- else {
- char tmpbuf[LBUFLEN];
- register char *s;
-
- for (s=buf+2; isspace(*s); s++);
- mac_line(s,tmpbuf,(sizeof tmpbuf));
- }
- }
- #endif
- else {
- bool docd = (instr(buf,"-d") != Nullch);
- char whereami[256];
-
- if (docd)
- getwd(whereami);
- sw_list(buf+1);
- if (docd) {
- cwd_check();
- if (chdir(whereami)) { /* -d does chdirs */
- printf(nocd,whereami) FLUSH;
- sig_catcher(0);
- }
- }
- }
- return 0;
- }
-
- /* process range commands */
-
- int
- numnum()
- {
- ART_NUM min, max;
- char *cmdlst = Nullch;
- register char *s, *c;
- ART_NUM oldart = art;
- char tmpbuf[LBUFLEN];
- bool justone = TRUE; /* assume only one article */
-
- if (!finish_command(TRUE)) /* get rest of command */
- return NN_INP;
- if (lastart < 1) {
- fputs("\nNo articles\n",stdout) FLUSH;
- return NN_ASK;
- }
- #ifdef ARTSRCH
- if (srchahead)
- srchahead = -1;
- #endif
- for (s=buf; *s && (isdigit(*s) || index(" ,-.$",*s)); s++)
- if (!isdigit(*s))
- justone = FALSE;
- if (*s) {
- cmdlst = savestr(s);
- justone = FALSE;
- }
- else if (!justone)
- cmdlst = savestr("m");
- *s++ = ',';
- *s = '\0';
- safecpy(tmpbuf,buf,LBUFLEN);
- for (s = tmpbuf; c = index(s,','); s = ++c) {
- *c = '\0';
- if (*s == '.')
- min = oldart;
- else
- min = atol(s);
- if (min<absfirst) { /* make sure it is reasonable */
- min = absfirst;
- printf("(First article is %ld)\n",(long)absfirst) FLUSH;
- pad(just_a_sec/3);
- }
- if ((s=index(s,'-')) != Nullch) {
- s++;
- if (*s == '$')
- max = lastart;
- else if (*s == '.')
- max = oldart;
- else
- max = atol(s);
- }
- else
- max = min;
- if (max>lastart) {
- max = lastart;
- if (min > max)
- min = max;
- printf("(Last article is %ld)\n",(long)lastart) FLUSH;
- pad(just_a_sec/3);
- }
- if (max < min) {
- fputs("\nBad range\n",stdout) FLUSH;
- if (cmdlst)
- free(cmdlst);
- return NN_ASK;
- }
- if (justone) {
- art = min;
- return NN_REREAD;
- }
- check_first(min);
- for (art=min; art<=max; art++) {
- if (perform(cmdlst,TRUE)) {
- #ifdef VERBOSE
- IF(verbose)
- printf("\n(Interrupted at article %ld)\n",(long)art)
- FLUSH;
- ELSE
- #endif
- #ifdef TERSE
- printf("\n(Intr at %ld)\n",(long)art) FLUSH;
- #endif
- if (cmdlst)
- free(cmdlst);
- return NN_ASK;
- }
- }
- }
- art = oldart;
- if (cmdlst)
- free(cmdlst);
- return NN_NORM;
- }
-
- int
- perform(cmdlst,toplevel)
- register char *cmdlst;
- int toplevel;
- {
- register int ch;
-
- if (toplevel) {
- printf("%-6ld",art);
- fflush(stdout);
- }
- for (; ch = *cmdlst; cmdlst++) {
- if (isspace(ch) || ch == ':')
- continue;
- if (ch == 'j') {
- if (!was_read(art)) {
- mark_as_read(art);
- #ifdef VERBOSE
- IF(verbose)
- fputs("\tJunked",stdout);
- #endif
- }
- }
- else if (ch == 'm') {
- if (was_read(art)) {
- unmark_as_read(art);
- #ifdef VERBOSE
- IF(verbose)
- fputs("\tMarked unread",stdout);
- #endif
- }
- }
- else if (ch == 'M') {
- #ifdef DELAYMARK
- delay_unmark(art);
- #ifdef VERBOSE
- IF(verbose)
- fputs("\tWill return",stdout);
- #endif
- #else
- notincl("M");
- return -1;
- #endif
- }
- else if (ch == '=') {
- printf("\t%s",fetchsubj(art,FALSE,FALSE));
- #ifdef VERBOSE
- IF(verbose)
- ;
- ELSE
- #endif
- putchar('\n') FLUSH; /* ghad! */
- }
- else if (ch == 'C') {
- #ifdef ASYNC_PARSE
- printf("\t%sancelled",(cancel_article() ? "Not c" : "C"));
- #else
- notincl("C");
- return -1;
- #endif
- }
- else if (ch == '%') {
- #ifdef ASYNC_PARSE
- char tmpbuf[512];
-
- cmdlst = dointerp(tmpbuf, (sizeof tmpbuf), cmdlst,":");
- if (*cmdlst != ':')
- --cmdlst;
- if (perform(tmpbuf,FALSE))
- return -1;
- #else
- notincl("%");
- return -1;
- #endif
- }
- else if (index("!&sSwW|",ch)) {
- cmdlst = cpytill(buf,cmdlst,':') - 1;
- /* we now have the command in buf */
- if (ch == '!') {
- escapade();
- #ifdef VERBOSE
- IF(verbose)
- fputs("\tShell escaped",stdout);
- #endif
- }
- else if (ch == '&') {
- switcheroo();
- #ifdef VERBOSE
- IF(verbose)
- fputs("\tSwitched",stdout);
- #endif
- }
- else {
- putchar('\t');
- save_article();
- }
- }
- else {
- printf("\t???%s\n",cmdlst);
- return -1;
- }
- #ifdef VERBOSE
- fflush(stdout);
- #endif
- }
- if (toplevel) {
- #ifdef VERBOSE
- IF(verbose)
- putchar('\n') FLUSH;
- ELSE
- #endif
- #ifdef TERSE
- putchar(' ');
- #endif
- }
- return 0;
- }
-
- !STUFFY!FUNK!
- echo Extracting kitleader
- cat >kitleader <<'!STUFFY!FUNK!'
- #! /bin/sh
- # $Header: kitleader,v 4.3 85/05/01 11:42:03 lwall Exp $
- #
- # $Log: kitleader,v $
- # Revision 4.3 85/05/01 11:42:03 lwall
- # Baseline for release with 4.3bsd.
- #
-
- cat >$1 <<EOT
- #! /bin/sh
-
- # Make a new directory for the rn sources, cd to it, and run kits 1 thru $3
- # through sh. When all $3 kits have been run, read README.
-
- echo "This is rn kit $2 (of $3). If kit $2 is complete, the line"
- echo '"'"End of kit $2 (of $3)"'" will echo at the end.'
- echo ""
- export PATH || (echo "You didn't use sh, you clunch." ; kill \$\$)
- EOT
- !STUFFY!FUNK!
- echo Extracting patchlevel
- cat >patchlevel <<'!STUFFY!FUNK!'
- Patch #: 47
-
- !STUFFY!FUNK!
- echo ""
- echo "End of kit 2 (of 9)"
- cat /dev/null >kit2isdone
- config=true
- for iskit in 1 2 3 4 5 6 7 8 9 ; do
- if test -f kit${iskit}isdone; then
- echo "You have run kit ${iskit}."
- else
- echo "You still need to run kit ${iskit}."
- config=false
- fi
- done
- case $config in
- true)
- echo "You have run all your kits. Please read README and then type Configure."
- chmod 755 Configure
- ;;
- esac
- : I do not append .signature, but someone might mail this.
- exit
-