v23i062: TRN, version of RN that follows conversation threads, Part03/14

Rich Salz rsalz at bbn.com
Sat Dec 1 08:40:10 AEST 1990


Submitted-by: Wayne Davison <davison at dri.com>
Posting-number: Volume 23, Issue 62
Archive-name: trn/part03

---- Cut Here and unpack ----
#!/bin/sh
# this is part 3 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file Configure continued
#
CurArch=3
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
echo "x - Continuing file Configure"
sed 's/^X//' << 'SHAR_EOF' >> Configure
Xtrylist="test inews egrep more pg Mcc ypmatch"
Xfor file in $loclist; do
X    xxx=`loc $file $file $pth`
X    eval $file=$xxx
X    case "$xxx" in
X    /*)
X	echo $file is in $xxx.
X	;;
X    *)
X	echo "I don't know where $file is.  I hope it's in everyone's PATH."
X	;;
X    esac
Xdone
Xecho " "
Xecho "Don't worry if any of the following aren't found..."
Xfor file in $trylist; do
X    xxx=`loc $file $file $pth`
X    eval $file=$xxx
X    case "$xxx" in
X    /*)
X	echo $file is in $xxx.
X	;;
X    *)
X	echo "I don't see $file out there, offhand."
X	;;
X    esac
Xdone
Xcase $egrep in
Xegrep)
X    echo "Substituting grep for egrep."
X    egrep=$grep
X    ;;
Xesac
Xcase $test in
Xtest)
X    echo "Hopefully test is built into your sh."
X    ;;
X/bin/test)
X    echo " "
X    echo $n 'Is your "test" built into sh? [n] (OK to guess) '"$c"
X    . myread
X    case $ans in
X    y*) test=test ;;
X    esac
X    ;;
X*)
X    test=test
X    ;;
Xesac
Xcase $echo in
Xecho)
X    echo "Hopefully echo is built into your sh."
X    ;;
X/bin/echo)
X    echo " "
X    echo "Checking compatibility between /bin/echo and builtin echo (if any)..."
X    $echo $n "hi there$c" >foo1
X    echo $n "hi there$c" >foo2
X    if cmp foo1 foo2 >/dev/null 2>&1; then
X	echo "They are compatible.  In fact, they may be identical."
X    else
X	echo "They are not compatible--the echo builtin will be used."
X	echo=echo
X    fi
X    $rm -f foo1 foo2
X    ;;
X*)
X    echo=echo
X    ;;
Xesac
X$echo " "
X: test yp
Xcase $ypmatch in
Xypmatch)
X    $echo "I don't see ypmatch out there, so YP is not available. We'll search the"
X    $echo "passwd file the old fashioned way!"
X    ;;
X*)
X    $ypmatch 513/tcp services > /dev/null 2>/dev/null
X    status=$?
X    if $test $status  -ne 0 ; then
X	$echo "YP installed, but not operational. We won't use it."
X    else
X    	$echo "YP installed and operational."
X    fi
X    
X    ;;
Xesac
Xif $test "$ypmatch" = "ypmatch"; then
X    ypmatch=""
Xfi
X 
X: decide how portable to be
Xcase "$portable" in
Xdefine) dflt=y;;
X*)	dflt=n;;
Xesac
X$cat <<'EOH'
X 
XI can set things up so that your shell scripts and binaries are more portable,
Xat what may be a noticable cost in performance.  In particular, if you
Xask to be portable, the following happens:
X
X     1) shell scripts will rely on the PATH variable rather than using
X	the paths derived above.
X     2) ~username interpretations will be done at run time rather than
X	by Configure.
X     3) the system name will be determined at run time, if at all possible.
X
XEOH
X$echo $n "Do you expect to run these scripts and binaries on multiple machines? [$dflt] $c"
X. myread
Xcase $ans in
X'') ans=$dflt;;
Xesac
Xcase $ans in
X    y*) portable=define
X	for file in $loclist; do
X	    eval $file=$file
X	done
X	;;
X    *)  portable=undef ;;
Xesac
X
X: set up shell script to do ~ expansion
Xcat >filexp <<EOSS
X$startsh
X: expand filename
Xcase \$1 in
X~/*|~)
X    $echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
X    ;;
X~*)
X    if $test -f /bin/csh; then
X	/bin/csh -f -c "glob \$1"
X	$echo ""
X    else
X	name=\`$expr x\$1 : '..\([^/]*\)'\`
X	if $test "$ypmatch" != ""; then
X 		dir=\`$ypmatch \$name passwd 2>/dev/null | $sed "s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/"'\`
X	fi
X	if $test "\$dir" = ""; then
X	    dir=\`$sed </etc/passwd -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}'\`
X	fi
X	if $test ! -d "\$dir"; then
X	    me=\`basename \$0\`
X	    $echo "\$me: can't locate home directory for: \$name" >&2
X	    exit 1
X	fi
X	case \$1 in
X	*/*)
X	    $echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
X	    ;;
X	*)
X	    $echo \$dir
X	    ;;
X	esac
X    fi
X    ;;
X*)
X    $echo \$1
X    ;;
Xesac
XEOSS
Xchmod 755 filexp
X$eunicefix filexp
X
X: now get the site name
X$echo " "
X$echo "Figuring out site name..."
X$echo 'Maybe "hostname" will work...'
Xif ans=`sh -c hostname 2>&1` ; then
X    sitename=$ans
X    hostcmd=hostname
Xelse
X    $echo 'No, maybe "uuname -l" will work...'
X    if ans=`sh -c 'uuname -l' 2>&1` ; then
X	sitename=$ans
X	hostcmd='uuname -l'
X    else
X	$echo 'Strange.  Maybe "uname -n" will work...'
X	if ans=`sh -c 'uname -n' 2>&1` ; then
X	    sitename=$ans
X	    hostcmd='uname -n'
X	else
X	    $echo 'Oh well, maybe I can mine it out of whoami.h...'
X	    if ans=`sh -c $contains' sysname /usr/include/whoami.h' 2>&1` ; then
X		sitename=`$echo "$ans" | $sed 's/^.*"\(.*\)"/\1/'`
X		hostcmd="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' </usr/include/whoami.h"
X	    else
X		case "$sitename" in
X		'') $echo "Does this machine have an identity crisis or something?"
X		    hostcmd=''
X		    ;;
X		*)  $echo "Well, you said $sitename before...";;
X		esac
X	    fi
X	fi
X    fi
Xfi
X: you do not want to know about this
Xset $sitename
Xsitename=$1
X
X: translate upper to lower case. This is mostly to help UUCP work right.
Xcase $sitename in
X    *[A-Z]*)
X	sitename=`$echo $sitename | tr '[A-Z]' '[a-z]'`
X	$echo "(Normalizing case in your site name)"
X	;;
Xesac
X
X: verify guess
Xif $test "$sitename" ; then
X    $echo 'Your site name appears to be "'$sitename'".'
X    $echo $n "Is this correct? [y] $c"
X    . myread
X    case $ans in
X      y*|'')  ;;
X      *)      sitename='' ;;
X    esac
Xfi
X
X: bad guess or no guess
Xwhile $test "X$sitename" = X ; do
X    $echo $n "Please type the (one word) name of your site: $c"
X    . myread
X    sitename="$ans"
X    case $hostcmd in
X    sed*)
X	$echo "(That doesn't agree with your whoami.h file, by the way.)"
X	;;
X    *)
X	$echo "(That doesn't agree with your $hostcmd command, by the way.)"
X	;;
X    esac
X    hostcmd=''
Xdone
X
X: try to deal with domains
X$cat << 'EOH'
X
XPlease enter your domain name.  This will be used in conjunction
Xwith the site name for return addresses on news articles and
Xmail.  If you use the 4.3ism of having your domain in your
Xhostname, all the posting programs will figure this out on the
Xfly, so don't worry.
X
XExamples of some valid domains:
X
X	berkeley.edu
X	nasa.gov
XExample of an invalid domain in common use:
X	uucp
XEOH
X
Xcase "$domain" in
X'') dflt="uucp";;
X*)  dflt="$domain" ;;
Xesac
X$echo $n "Your domain: [$dflt] $c"
X. myread
Xcase "$ans" in
X'') domain="$dflt";;
X*)  domain="$ans" ;;
Xesac
X
Xif $test $portable = "undef" ; then
X	case $sitename in
X	*.*)	;;
X	*)	sitename=$sitename.$domain
X		;;
X	esac
Xfi
X
X: get organizaton name
Xlongshots='/usr/src/new /usr/src/local /usr/local/src'
Xcase "$orgname" in
X'') if xxx=`loc news/src/defs.h x $longshots`; then
X	dflt=`$sed -n 's/^.*MYORG[ 	]*"\(.*\)".*$/\1/p' $xxx`
X    else
X	dflt='no default'
X    fi
X    ;;
X*)  dflt="$orgname";;
Xesac
X$cat << 'EOH'
X 
XPlease type the name of your organization as you want it to appear on the
XOrganization line of outgoing articles.  (It's nice if this also specifies
Xyour location.  Your city name is probably sufficient if well known.)
XFor example:
X
X	University of Southern North Dakota, Hoople
X
XYou may also put the name of a file, as long as it begins with a slash.
XFor example:
X
X	/etc/organization
X
XEOH
Xorgname="no default"
Xwhile test "X$orgname" = "Xno default"; do
X    $echo $n "Organization: [$dflt] $c"
X    . myread
X    case "$ans" in
X    '') orgname="$dflt";;
X    *)  orgname="$ans" ;;
X    esac
Xdone
X
X: get news administrator name
Xcase "$newsadmin" in
X'')
X    if $contains "^news:" /etc/passwd >/dev/null 2>&1 ; then
X	dflt=news
X    else
X	if $contains "^usenet:" /etc/passwd >/dev/null 2>&1 ; then
X	    dflt=usenet
X	else
X	    if eunice; then
X		dflt=system
X	    else
X		dflt=root
X	    fi
X	fi
X    fi
X    ;;
X*)  dflt="$newsadmin"
X    ;;
Xesac
Xcat <<'EOM'
X 
XMany systems keep their news in a private directory, or have a non-superuser
Xin charge of administering news.  (If you don't have such a user, take the
Xdefault answer.)  What is the login name (not directory) that is used for news
XEOM
X$echo $n "administration? [$dflt] $c"
X. myread
Xnewsadmin="$ans"
Xcase $newsadmin in
X'') newsadmin=$dflt ;;
Xesac
Xcase $newsadmin in
Xroot) isadmin=undef ;;
X*)    isadmin=define ;;
Xesac
X
X: figure out news library
Xcase "$lib" in
X'')
X    dflt=/usr/lib/news
X    ;;
X*)  dflt=$lib ;;
Xesac
Xlibexp=$lib
Xlibexp='blurfl/dyick'
Xwhile $test ! -d "$libexp"; do
X    $echo " "
X    case "$libexp" in
X    blurfl*) ;;
X    *) $echo "Directory $libexp not found";;
X    esac
X    $echo $n "Where is your news library (~name okay)? [$dflt] $c"
X    . myread
X    case "$ans" in
X    '') ans="$dflt";;
X    esac
X    lib="$ans"
X    case $lib in
X    ~*)
X	libexp=`filexp $lib`
X	$echo "(That is $libexp on this particular system.)"
X	case $portable in
X	  undef) lib=$libexp ;;
X	esac
X	;;
X    *)
X	libexp=$lib
X	;;
X    esac
Xdone
Xif $test -f $libexp/inews; then
X    $echo "Aha!  Inews is really in $libexp!"
X    $echo "Maybe this is Bnews 2.10.2 or later."
X    inews=$libexp/inews
Xfi
X
X: determine where manual pages go
Xcase "$mansrc" in
X'')
X    dflt=`loc . /usr/man/man1 /usr/man/mann /usr/man/local/man1 /usr/man/u_man/man1 /usr/man/man1`
X    ;;
X*)  dflt="$mansrc"
X    ;;
Xesac
Xmansrc='blurfl/dyick'
Xwhile $test ! -d "$mansrc" ; do
X    case $mansrc in
X      blurfl*) ;;
X      *) $echo "$mansrc does not appear to exist." ;;
X    esac
X    $echo " "
X    $echo $n "Where do the manual pages (source) go? [$dflt] $c"
X    . myread
X    mansrc=`filexp "$ans"`
X    case $mansrc in
X      '') mansrc=$dflt ;;
X    esac
Xdone
Xcase "$mansrc" in
X*l)
X    manext=l
X    ;;
X*n)
X    manext=n
X    ;;
X*)
X    manext=1
X    ;;
Xesac
X
X: determine where mail is spooled
Xcase "$maildir" in
X'')
X    dflt=`loc . /usr/spool/mail /usr/spool/mail /usr/mail`
X    ;;
X*)  dflt="$maildir"
X    ;;
Xesac
Xmaildir='blurfl/dyick'
Xwhile $test ! -d "$maildir" ; do
X    case $maildir in
X      blurfl*) ;;
X      *) $echo "$maildir does not appear to exist." ;;
X    esac
X    $echo " "
X    $echo $n "Where is yet-to-be-read mail spooled? [$dflt] $c"
X    . myread
X    maildir=`filexp "$ans"`
X    case $maildir in
X      '') maildir=$dflt ;;
X    esac
Xdone
X
X: find out how to find out full name
X$echo " "
Xcase "$berknam" in
Xdefine)
X    dflt=y;;
Xundef)
X    dflt=n;;
X*)
X    if bsd || xenix; then
X	dflt=y
X    else
X	dflt=n
X    fi
X    ;;
Xesac
X$echo "Does your /etc/passwd file keep full names in Berkeley/V7 format (name first"
X$echo $n "thing after ':' in GCOS field)? [$dflt] $c"
X. myread
Xcase $ans in
X  '') ans=$dflt ;;
Xesac
Xcase $ans in
X  y*)
X    passnam=define
X    berknam=define
X    usgnam=undef
X    nametype=bsd
X    ;;
X  *)
X    $echo " "
X    case "$usgname" in
X    define)
X	dflt=y;;
X    undef)
X	dflt=n;;
X    *)
X	if usg; then
X	    dflt=y
X	else
X	    dflt=n
X	fi
X	;;
X    esac
X    $echo "Does your passwd file keep full names in USG format (name sandwiched"
X    $echo $n "between a '-' and a '(')? [$dflt] $c"
X    . myread
X    case $ans in
X      '') ans=$dflt ;;
X    esac
X    case $ans in
X      n*)
X	$echo "Full name will be taken from ~/.fullname"
X	passnam=undef
X	berknam=undef
X	usgnam=undef
X	nametype=other
X	;;
X      *)
X	passnam=define
X	berknam=undef
X	usgnam=define
X	nametype=usg
X	;;
X    esac
X    ;;
Xesac
X
X: see if we need a special compiler
X$echo " "
Xif usg; then
X    case "$cc" in
X    '')
X	case "$Mcc" in
X	/*) dflt='Mcc'
X	    ;;
X	*)
X	    if $contains '\-M' $mansrc/cc.1 >/dev/null 2>&1 ; then
X		dflt='cc -M'
X	    else
X		dflt='cc'
X	    fi
X	    ;;
X	esac
X	;;
X    *)  dflt="$cc";;
X    esac
X    $cat <<'EOM'
X 
XOn some systems the default C compiler will not resolve multiple global
Xreferences that happen to have the same name.  On some such systems the
X"Mcc" command may be used to force these to be resolved.  On other systems
Xa "cc -M" command is required.  What command will force resolution on
XEOM
X    $echo $n "this system? [$dflt] $c"
X    . myread
X    cc="$ans"
X    case "$cc" in
X	'') cc="$dflt" ;;
X    esac
Xelse
X    $echo "Not a USG system--assuming cc can resolve multiple definitions."
X    cc=cc
Xfi
X
X: see if we should throw a -i into the Makefile
X$echo " "
Xif pdp11; then
X    if $contains '\-i' $mansrc/cc.1 >/dev/null 2>&1 ; then
X	$echo $n "Your system appears to have separate I and D space.  Is this true? [y] $c"
X	. myread
X	case $ans in
X	    n*|f*) iandd='' ;;
X	    *)     iandd='-i' ;;
X	esac
X    else
X	$echo "Your system appears to NOT have separate I and D space."
X	$echo $n "Is this correct? [y] $c"
X	. myread
X	case $ans in
X	    n*|f*) iandd='-i' ;;
X	    *)     iandd='' ;;
X	esac
X    fi
Xelse
X    $echo "Not a pdp11--assuming no separate I and D."
Xfi
X
X: index or strcpy
X$echo " "
Xif $contains index.o libc.list >/dev/null 2>&1 ; then
X    $echo "Your system appears to use index() and rindex() rather than strchr()"
X    $echo $n "and strrchr().  Is this correct? [y] $c"
X    . myread
X    case $ans in
X	n*|f*) strchr='define' ;;
X	*)     strchr='undef' ;;
X    esac
Xelse
X    $echo "Your system appears to use strchr() and strrchr() rather than index()"
X    $echo $n "and rindex().  Is this correct? [y] $c"
X    . myread
X    case $ans in
X	n*|f*) strchr=undef ;;
X	*)     strchr=define ;;
X    esac
Xfi
X
X: bcopy/bzero or memcpy/memset
X$echo " "
Xif $contains bcopy.o libc.list >/dev/null 2>&1 ; then
X    $echo "Your system appears to use bcopy() and bzero() rather than memcpy()"
X    $echo $n "and memset().  Is this correct? [y] $c"
X    . myread
X    case $ans in
X	n*|f*) memcpy='define' ;;
X	*)     memcpy='undef' ;;
X    esac
Xelse
X    $echo "Your system appears to use memcpy() and memset() rather than bcopy()"
X    $echo $n "and bzero().  Is this correct? [y] $c"
X    . myread
X    case $ans in
X	n*|f*) memcpy='undef' ;;
X	*)     memcpy='define' ;;
X    esac
Xfi
X
X: determine how to determine when a file is a mailbox
Xcase "$mboxchar" in
X'') dflt=F;;
X*)  dflt="$mboxchar";;
Xesac
X$cat <<'EOM'
X 
XIn saving articles, trn wants to differentiate between saving to mailbox
Xformat files and normal files.  It does this by examining the first character
Xof the file in question.  On most systems the first line starts "From...",
Xso the first character is F.  On other systems there are magic cookies like
Xcontrol codes between articles, so one of those would be first.  On your
Xsystem, if a file is in mailbox format, what is the first character of
XEOM
X$echo $n "that file? [$dflt] $c"
X. myread
Xmboxchar="$ans"
Xcase $mboxchar in
X'') mboxchar="$dflt" ;;
Xesac
Xcase $mboxchar in
X'F') ;;
X*)  cat <<'EOM'
XYou will need to edit the shell script mbox.saver to properly append an
Xarticle to a mailbox.  The arguments to the script are documented in
XEOM
X    case $shsharp in
X    false)
X	$echo "comments in mbox.saver.std."
X	;;
X    true)
X	$echo "comments in the shell script itself."
X	;;
X    esac
Xesac
X$rm -f grimble
X: where do we get termlib routines from
X$echo " "
Xans=`loc libcurses.a x /usr/lib /usr/local/lib /lib`
Xcase "$ans" in
X/*)
X    ar t $ans >grimble
X    if $contains tputs.o grimble >/dev/null 2>&1; then
X	termlib='-lcurses'
X	havetlib=define
X	$echo "Terminfo library found."
X    else
X	ans=x
X    fi
X    ;;
Xesac
Xcase "$ans" in
Xx)
X    ans=`loc libtermlib.a x /usr/lib /usr/local/lib /lib`
X    case "$ans" in
X    /usr/lib*|/lib*)
X	termlib='-ltermlib'
X	havetlib=define
X	$echo "Termlib library found."
X	;;
X    /*)
X	termlib="$ans"
X	havetlib=define
X	$echo "Termlib library found."
X	;;
X    *)
X	if xenix; then
X	    ans=/lib/Llibtermcap.a
X	else
X	    ans=`loc libtermcap.a x /usr/lib /usr/local/lib /lib`
X	fi
X	case "$ans" in
X	/usr/lib*|/lib*)
X	    termlib='-ltermcap'
X	    havetlib=define
X	    $echo "Termcap library found."
X	    ;;
X	/*)
X	    termlib="$ans"
X	    havetlib=define
X	    $echo "Termcap library found."
X	    ;;
X	*)
X	    case "$termlib" in
X	    '')
X		$echo $n "Your system appears to NOT have termlib-style routines.  Is this true? [y] $c"
X		. myread
X		case $ans in
X		    n*|f*) havetlib=define
X			  $echo "Then where are the termlib-style routines kept (specify either -llibname"
X			  $echo $n " or full pathname (~name ok))? $c"
X			  . myread
X			  termlib=`filexp $ans`
X			  ;;
X		    *)    havetlib=undef
X			  termlib=''
X			  $echo "You will have to play around with term.c then."
X			  ;;
X		esac
X		$echo " "
X		;;
X	    *)  $echo "You said termlib was $termlib before."
X		;;
X	    esac
X	    ;;
X	esac
X	;;
X    esac
X    ;;
Xesac
X: see if there is a whoami file
Xif $test -r /usr/include/whoami.h ; then
X    whoami=define
X    $echo "whoami.h found."
Xelse
X    whoami=undef
Xfi
X
X: check for a ptem file
Xif $test -r /usr/include/sys/ptem.h ; then
X    sysptem=define
X    $echo "ptem.h found."
Xelse
X    sysptem=undef
Xfi
X
X: see if this is a termio system
Xultrix ; ultrix=$?
Xsun ; sun=$?
Xpyr ; pyr=$?
Xif $test -r /usr/include/termio.h -a $ultrix -ne 0 -a $sun -ne 0 -a $pyr -ne 0; then
X      termio=define
X      $echo "termio.h found."
X  else
X    if $test -r /usr/include/sgtty.h ; then
X	termio=undef
X	$echo "sgtty.h found."
X    else
X	termio=undef
X	$echo "Neither termio.h nor sgtty.h found--you could have problems."
X    fi
Xfi
X
X: see if this system has fcntl
Xif $test -r /usr/include/fcntl.h ; then
X    fcntl=define
X    $echo "fcntl.h found."
Xelse
X    fcntl=undef
X    $echo "No fcntl.h found, but that's ok."
Xfi
X
X: see if ioctl defs are in sgtty/termio or sys/ioctl
Xif $test -r /usr/include/sys/ioctl.h ; then
X    ioctl=define
X    $echo "sys/ioctl.h found."
Xelse
X    ioctl=undef
X    $echo "sys/ioctl.h not found, assuming ioctl args are defined in sgtty.h."
Xfi
X
X: see if the system has sigblock
Xif $contains sigblock.o libc.list >/dev/null 2>&1 ; then
X    $echo "sigblock() found."
X    sigblock=define
Xelse
X    sigblock=undef
Xfi
X
X: see if the system has getwd
Xif $contains getwd.o libc.list >/dev/null 2>&1 ; then
X    $echo "getwd() found."
X    getcwd=undef
Xelse
X: see if the system has getcwd
Xif $contains getcwd.o libc.list >/dev/null 2>&1 ; then
X    $echo "getcwd() found."
X    getcwd=define
Xelse
X    getcwd=undef
Xfi
Xfi
X
X: see if there is a vfork
Xif $contains vfork.o libc.list >/dev/null 2>&1 ; then
X    $echo "vfork() found."
X    novfork='undef'
Xelse
X    $echo "No vfork() found--will use fork() instead."
X    novfork='define'
Xfi
X
X: check for rename
Xif $contains rename.o libc.list >/dev/null 2>&1 ; then
X    $echo "rename() found."
X    rename='define'
Xelse
X    $echo "No rename() found -- we'll emulate it."
X    rename='undef'
Xfi
X
X: check for truncate
Xif $contains truncate.o libc.list >/dev/null 2>&1 ; then
X    $echo "truncate() found."
X    truncate='define'
Xelse
X    $echo "No truncate() found -- we'll emulate it."
X    truncate='undef'
Xfi
X
X: check for tzset.  ass_u_me others have ftime.
Xif $contains tzset libc.list >/dev/null 2>&1 ||
X   $contains mktime libc.list >/dev/null 2>&1 ; then
X    $echo "tzset() found."
X    tzset='define'
Xelse
X    $echo "No tzset() found -- we'll use ftime() instead."
X    tzset='undef'
Xfi
X
X: see if YP could be running here
Xif $contains yp_master.o libc.list >/dev/null 2>&1 ; then
X    $echo "YP may be running -- will use getpwent(), just in case."
X    getpwent='define'
Xelse
X: see if there is a getpw
Xif $contains getpw.o libc.list >/dev/null 2>&1 ; then
X    $echo "getpw() found."
X    getpwent='undef'
Xelse
X    $echo "No getpw() found--will use getpwent() instead."
X    getpwent='define'
Xfi
Xfi
X
X: default
Xsigret=int
X: determine type of signal function
Xif [ -f /usr/include/signal.h ]
Xthen
X	WHITE='[	 ]'; : between the brackets are a tab and a space.
X	if grep "$WHITE*void$WHITE*(\*signal())();" \
X					/usr/include/signal.h >/dev/null
X	then
X		sigret=void
X	fi
Xfi
Xif [ -f /usr/include/sys/signal.h ]
Xthen
X	WHITE='[	 ]'; : between the brackets are a tab and a space.
X	if grep "$WHITE*void$WHITE*(\*signal())();" \
X					/usr/include/sys/signal.h >/dev/null
X	then
X		sigret=void
X	fi
Xfi
X$echo "signal() returns $sigret on this system"
X: see how we will look up site name
Xdouname=undef
Xgethostname=undef
Xphostname=undef
Xif $contains gethostname.o libc.list >/dev/null 2>&1 ; then
X    $echo "gethostname() found."
X    gethostname=define
Xelse
X    if $contains uname.o libc.list >/dev/null 2>&1 ; then
X	$echo "uname() found."
X	douname=define
X    else
X	case $hostcmd in
X	  '') ;;
X	  *)
X	    $cat <<EOT
X 
XThere is no gethostname() or uname() on this system.  You have two
Xpossibilites at this point:
X
X1)  You can have your site name ($sitename) compiled into trn, which lets
X    trn start up faster, but makes your binaries non-portable, or
X2)  you can have trn use a
X	
X	popen("$hostcmd","r")
X
X    which will start slower but be more portable.
X
XOption 1 will use whoami.h if you have one.  If you want option 2 but with
Xa different command, you can edit config.h after this shell script is done.
X
XEOT
X	    case "$phostname" in
X	    define) dflt=n;;
X	    undef)  dflt=y;;
X	    '')
X		case $portable in
X		define) dflt=n ;;
X		*)      dflt=y ;;
X		esac
X		;;
X	    esac
X	    $echo $n "Do you want your site name compiled in? [$dflt] $c"
X	    . myread
X	    case $ans in
X	    '') ans=$dflt;;
X	    esac
X	    case $ans in
X	      n*) phostname=define ;;
X	      *)  hostcmd='' phostname=undef;;
X	    esac
X	    ;;
X	esac
X	case $hostcmd in
X	  '')
X	    case $whoami in
X	      define)
X		$echo 'No hostname function--using whoami.h.'
X		;;
X	      undef)
X		$echo 'No hostname function--hardwiring "'$sitename'".'
X		;;
X	    esac
X	    ;;
X	esac
X    fi
Xfi
X
X: see if we need -ljobs and if we have sigset, etc.
Xif $test -r /usr/lib/libjobs.a || $test -r /usr/local/lib/libjobs.a ; then
X    $echo "Jobs library found."
X    normsig=undef
X    jobslib='-ljobs'
Xelse
X    if bsd; then
X	$echo "No jobs library found.  (I suppose this is at least 4.2...)"
X    else
X	$echo "No jobs library found.  (That's okay, we all have our faults.)"
X    fi
X    normsig=define
X    jobslib=''
Xfi
X: set the right options for cc and include the x library for XENIX
Xif xenix; then
X    if $test -d /lib/386 ; then
X	iandd="-M3e"
X    else
X	iandd="-M2let8 -LARGE -F 3000"
X    fi
X    jobslib=-lx
X    chsize=define
Xelse
Xif $test -r /lib/libx.a ; then
X    $echo "Found Xenix library; using chsize()"
X    jobslib=-lx
X    chsize=define
Xelse
X    chsize=undef
Xfi
Xfi
X: see if there are directory access routines out there
Xif $test -r /usr/lib/libndir.a || $test -r /usr/local/lib/libndir.a ; then
X    $echo "Ndir library found."
X    if $test -r /usr/lib/libndir.a; then
X	ndirlib='-lndir'
X    else
X	ndirlib="/usr/local/lib/libndir.a"
X    fi
X    libndir=define
X    usendir=undef
X    ndirc=''
X    ndiro=''
X    dirtype=direct
Xelse
X    ndirlib=''
X    libndir=undef
X    if $contains readdir.o libc.list >/dev/null 2>&1 ; then
X	$echo "No ndir library found, but you have readdir() so we'll use that."
X	usendir=undef
X	ndirc=''
X	ndiro=''
X	if sgi ; then
X	    dirtype=direct
X	    dirinc="<sys/dir.h>"
X	    $echo "Using direct directory structure."
X	else 
X		if $test -r /usr/include/dirent.h ; then
X			$echo "Using dirent directory structure."
X	    		dirtype=dirent
X			dirinc="<dirent.h>"
X		else
X			$echo "Using direct directory structure."
X	    		dirtype=direct
X			dirinc="<sys/dir.h>"
X		fi
X	fi
X     else
X	if xenix; then
X	    $echo "Using Xenix readdir() from -lx."
X	    usendir=undef
X	    ndirc=''
X	    ndiro=''
X	    dirtype=direct
X	    dirinc="<sys/ndir.h>"
X	    $echo "Using direct directory structure."
X	else
X	    $echo "No ndir library and no readdir()--using ./ndir.c."
X	    usendir=define
X	    ndirc='ndir.c'
X	    ndiro='ndir.o'
X	fi
X    fi
Xfi
X
X: check if they want threads by default
Xcase "$threaddef" in
X    F*) dflt="n";;
X    *)  dflt="y";;
Xesac
X$cat <<EOT
X
XTrn has two distinct operating modes (selected by the -x option):
Xtraditional rn and threaded rn.  If you like, trn will check the first
Xletter of the command name and default to threaded mode (-x) if it is
Xa 't', or run as traditional rn (+x) if it isn't (this lets you install
Xas both trn and rn, linked together).  Otherwise, you can install trn
Xto default to threaded rn (-x) no matter what its name is.  Would you
XEOT
X$echo $n "prefer the latter? (defaults to -x, regardless of name)? [$dflt] $c"
X. myread
Xcase "$ans" in
X'') ans="$dflt";;
Xesac
Xcase "$ans" in
X    n*|f*) threaddef='FALSE'
X	   ans=' when -x is specified';;
X    *)     threaddef='TRUE'
X	   ans='';;
Xesac
X: check if they want the thread selector used by default
Xcase "$selectdef" in
X    F*) dflt="n";;
X    *)  dflt="y";;
Xesac
X$cat <<EOT
X
XWhen the -X option is specified, trn will set the default command
Xfor starting a newsgroup to be the thread selector.  Should the -X
XEOT
X$echo $n "option be on by default$ans? [$dflt] $c"
X. myread
Xcase "$ans" in
X'') ans="$dflt";;
Xesac
Xcase "$ans" in
X    n*|f*) selectdef='FALSE';;
X    *)     selectdef='TRUE';;
Xesac
X
X: locate spool directory and check if rrn
Xcase "$isrrn" in
Xdefine)
X    dflt="y";;
X*)
X    dflt="n";;
Xesac
Xisrrn=''
Xwhile $test -z "$isrrn" ; do
X    $echo " "
X    $echo $n "Do you want to build the NNTP versions of trn (trrn) and mthreads? [$dflt] $c"
X    . myread
X    case "$ans" in
X    '') ans="$dflt";;
X    esac
X    case "$ans" in
X    n*)
X	isrrn=undef;;
X    y*)
X	isrrn=define
X	spool=/tmp
X	$echo "net.foobar 00001 00001 y" > .falseactive
X
X	case "$serverfile" in
X	'')  dflt="no default" ;;
X	*)   dflt="$serverfile";;
X	esac
X
X	$cat <<'EOM'
X
XTrrn determines the machine to use as a news server by two means:
X
X	1. It examines the environment variable NNTPSERVER for
X	   a machine name; this allows users to use server machines
X	   other than the default.
X
X	2. It looks in a file which contains the name of a server
X	   machine.
X
XYou must create the file mentioned in (2), above.  Simply put the name
Xof the machine you wish to use as your news server in this file.
XIf you really want, you can use # for comments and blank lines in
Xthis file as well.
X
XEOM
X
X	ans='blurfl/dyick'
X	while $test ! -r "$ans" ; do
X	$echo $n "Enter the name of the news server file: [$dflt] $c"
X	. myread
X	    case "$ans" in
X	    '') ans="$dflt";;
X	    esac
X	    ans=`filexp "$ans"`
X	    if $test ! -r $ans ; then
X		$echo "Can't find $ans"
X		ans='blurfl/dyick'
X	    fi
X	done
X	serverfile="$ans"
X
X	case "$NNTPSRC" in
X	'') dflt="no default";;
X	*)  dflt="$NNTPSRC";;
X	esac
X
X	ans='blurfl/dyick'
X	while $test ! -d "$ans"; do
X	    $echo $n "Enter the pathname of the NNTP source directory: [$dflt] $c"
X	    . myread
X	    case "$ans" in
X	    '') ans="$dflt";;
X	    esac
X	    ans=`filexp "$ans"`
X	    if $test ! -r $ans/common/nntp.h ; then
X		$echo "Can't find $ans/common/nntp.h!"
X		ans='blurfl/dyick'
X	    fi
X	done
X	NNTPSRC="$ans"
Xcat > server.h <<EOF_SERVE
X#ifdef SERVER
X
XEXT	char	*getserverbyfile();
XEXT	int	server_init();
XEXT	void	put_server();
XEXT	int	get_server();
XEXT	void	close_server();
X
X#include "$NNTPSRC/common/nntp.h"
X#endif
XEOF_SERVE
X
X    esac
X
Xdone
X: hack for Unisys NET-5000
Xcase "$isrrn" in
Xdefine) 
X    if $test -d /usr/include/NET-5000 ; then
X	$echo "I sense you are on a Unisys 5000 computer...poor soul."
X	rrninclude="-I/usr/include/NET-5000 -DEXCELAN -DUSG"
X	socketlib=-lsocket
X    fi
X    ;;
X*) ;;
Xesac
X
X
Xcase "$spool" in
X'')
X    dflt=/usr/spool/news
X    ;;
X*)  dflt="$spool";;
Xesac
Xcase "$isrrn" in
Xdefine)  ans=/tmp;;
X*) ans='blurfl/dyick';;
Xesac
Xwhile $test ! -d $ans; do
X    $echo " "
X    case "$ans" in
X    blurfl*);;
X    *) $echo "Directory $ans not found.";;
X    esac
X    $echo $n "Where is news spooled (~name ok)? [$dflt] $c"
X    . myread
X    case "$ans" in
X    '') ans="$dflt";;
X    esac
X    spool="$ans"
X    case $spool in
X    ~*)
X	ans=`filexp $spool`
X	$echo "(That is $ans on this particular system.)"
X	case $portable in
X	  undef) spool=$ans ;;
X	esac
X	;;
X    *)
X	ans=$spool
X	;;
X    esac
Xdone
X
X: check on .thread file placement
Xcase "$isrrn" in
Xdefine) 
X    case "$threaddir" in
X    ''|'.')	dflt="/usr/spool/threads";;
X    *)		dflt="$threaddir";;
X    esac
X    $echo " "
X    $echo "Pick a directory where you would like the thread files to"
X    $echo $n "be placed: [$dflt] $c"
X    . myread
X    case "$ans" in
X    ''|'.') ans="$dflt";;
X    esac
X    ;;
X*)
X    case "$threaddir" in
X    ''|'.')	dflt=".";;
X    *)		dflt="$threaddir";;
X    esac
X    $cat <<EOT
X
XBy default we place each group's .thread file in the same spool
Xdirectory as the article files.  Alternately, you can place the
Xdata files in a separate directory if space is tight on the news
Xdrive.  Where would you like them put?  (use '.' to specify the
XEOT
X    $echo $n "default): [$dflt] $c"
X    . myread
X    case "$ans" in
X    '') ans="$dflt";;
X    esac
X    ;;
Xesac
Xthreaddir="$ans"
X
X: locate active file
Xcase "$active" in
X'')
X    dflt=$lib/active
X    ;;
X*)  dflt="$active";;
Xesac
Xcase "$isrrn" in
Xdefine) myactive=.falseactive;;
X*) myactive='blurfl/dyick'
Xesac
Xwhile $test ! -f "$myactive"; do
X    $echo " "
X    case "$myactive" in
X    blurfl*);;
X    *) "File $myactive not found.";;
X    esac
X    $echo $n "Where is the active file (~name ok)? [$dflt] $c"
X    . myread
X    case "$ans" in
X    '') ans="$dflt";;
X    esac
X    active="$ans"
X    case $active in
X    ~*)
X	myactive=`filexp $active`
X	$echo "(That is $myactive on this particular system.)"
X	case $portable in
X	  undef) active=$myactive ;;
X	esac
X	;;
X    *)
X	myactive=$active
X	;;
X    esac
X    if $test -d $myactive ; then
X	myactive=$myactive/active
X	active=$active/active
X    fi
Xdone
X
X: check for 2.10.2 and above
X$echo " "
Xif $contains ' [0-9][0-9]* [0-9]' "$myactive" >/dev/null 2>&1; then
X    case "$norelay" in
X    undef) dflt="y";;
X    *)     dflt="n";;
X    esac
X    case "$isrrn" in
X    define) 
X       $echo "Is your NNTP server running an old version of news software," ;;
X    *) $echo "Is your system running an old version of news software," ;;
X    esac
X    $echo $n "predating B News 2.10.3? [${dflt}] $c" 
X    . myread
X    case "$ans" in
X    '') ans=$dflt;;
X    esac
X    case "$ans" in
X    y*)
X      norelay='undef'
X    $echo "Looks like you are running at least 2.10.2 news."
X      ;;
X    *)  norelay='define' ;;
X    esac
X    mininact=define
Xelse
X    $echo "It doesn't look like you are running 2.10.2 news yet.  Are you planning"
X    $echo $n "to install it in the near future? [y] $c"
X    . myread
X    case $ans in
X    n*) mininact=undef ;;
X    *)  mininact=define ;;
X    esac
X    norelay='undef'
Xfi
X
X
X: check for void type
X$echo " "
X$echo "Checking to see if your C compiler groks the void type..."
X$cat >try.c <<'EOCP'
Xvoid main();
XEOCP
Xif cc -c try.c >/dev/null 2>&1 ; then
X    novoid='undef'
X    $echo "Yup, it does."
Xelse
X    novoid='define'
X    $echo "Nope, it doesn't (boo hiss).  I will substitute int."
Xfi
X$rm try.*
X
X: find out which shell people like to use most
Xans='blurfl/dyick'
Xwhile $test ! -f "$ans" ; do
X    case $ans in
X      blurfl*) ;;
X      *) $echo "$ans does not appear to exist." ;;
X    esac
X    case "$pref" in
X    '')
X	if $test -f /bin/ksh; then
X	    dflt='/bin/ksh'
X	else
X	    if $test -f /bin/csh; then
X		dflt='/bin/csh'
X	    else
X		dflt='/bin/sh'
X	    fi
X	fi
X	;;
X    *)  dflt="$pref";;
X    esac
X    $echo " "
X    $echo "Give the full path name of the shell most people like to use on your"
X    $echo $n "system: [$dflt] $c"
X    . myread
X    case $ans in
X      '') ans=$dflt ;;
X    esac
Xdone
Xpref=$ans
X
X: locate the preferred pager for this system
Xcase "$pager" in
X'')
X    case $pg in
X    /*) dflt=$pg
X	;;
X    esac
X    case $more in
X    /*) dflt=$more
X	;;
X    esac
X    case $dflt in
X    '') dflt=/usr/ucb/more
X	;;
X    esac
X    ;;
X*)  dflt="$pager";;
Xesac
Xpager='blurfl/dyick'
Xwhile $test ! -f "$pager" ; do
X    case $pager in
X      blurfl*)
X	$echo " "
X	$echo "(If your kernel does terminal paging then you may answer this with '/bin/cat'.)"
X	;;
X      /*) $echo "$pager does not appear to exist."
X	$echo " "
X        ;;
X      *) $echo "Please give the full path name."
X	$echo " "
X        ;;
X    esac
X    $echo $n "What pager is used on your system? [$dflt] $c"
X    . myread
X    pager="$ans"
X    case $pager in
X      '') pager="$dflt" ;;
X    esac
Xdone
X
X: determine default editor
Xcase "$defeditor" in
X'')
X    dflt=`loc vi /usr/ucb $pth`
X    ;;
X*)  dflt="$defeditor"
X    ;;
Xesac
Xdefeditor='blurfl/dyick'
Xwhile $test ! -f "$defeditor" ; do
X    case $defeditor in
X      blurfl*) ;;
X      *) $echo "$defeditor does not appear to exist." ;;
X    esac
X    $echo " "
X    $echo $n "What is the default editor on your system? [$dflt] $c"
X    . myread
X    defeditor="$ans"
X    case $defeditor in
X      '') defeditor=$dflt ;;
X    esac
Xdone
X
X: determine mailer for Rnmail to use
X$echo " "
Xif $test ! -f "$mailer"; then
X    mailer=
X    for x in /usr/lib/sendmail /bin/smail /usr/bin/smail \
X	     /usr/lib/mail/execmail; do
X	if $test "$mailer" = "" -a -f $x; then
X	    mailer=$x
X	fi
X    done
X    if $test ! -f "$mailer"; then
X	if usg && $test -f $libexp/recmail; then
X	    mailer=$libexp/recmail
X	else
X	    mailer=/bin/mail
X	fi
X    fi
Xfi
X$echo "Mail sender is $mailer"
X
X: check for internet mailer
Xcase "$internet" in
Xdefine) dflt=y;;
Xundef)	dflt=n;;
X*)
X    case "$isrrn" in
X	define) dflt=y ;;
X	*) dflt=n ;;
X    esac
X    ;;
Xesac
Xcat <<EOM
X 
XSome newer mailers can deliver mail to addresses of the INTERNET persuasion,
Xsuch as user at host.UUCP.  Other older mailers require the complete path to
Xthe destination to be specified in the address.  Does your mailer understand
XEOM
X$echo $n "INTERNET addresses? [$dflt] $c"
X. myread
Xcase "$ans" in
X'') ans=$dflt;;
Xesac
Xcase "$ans" in
Xy*) internet=define;;
X*)  internet=undef;;
Xesac
X
X: determine where public executables go
Xcase "$rnbin" in
X'')
X    dflt=`loc . /bin /usr/local/bin /usr/lbin /usr/local /usr/bin`
X    ;;
X*)  dflt="$rnbin"
X    ;;
Xesac
Xrnbin='blurfl/dyick'
Xwhile $test ! -d "$rnbin" ; do
X    case $rnbin in
X      blurfl*) ;;
X      *) $echo "$rnbin does not appear to exist." ;;
X    esac
X    $echo " "
X    $echo $n "Where do you want to put the public executables? [$dflt] $c"
X    . myread
X    rnbin="$ans"
X    rnbin=`filexp $rnbin`
X    case $rnbin in
X      '') rnbin=$dflt ;;
X    esac
Xdone
X
X: determine where private executables go
Xcase "$rnlib" in
X'')
X    case "$isrrn" in
X	define) dflt=/usr/local/lib/trn ;;
X	*) dflt=$lib/trn ;;
X    esac
X    ;;
X*)  dflt="$rnlib"
X    ;;
Xesac
X$echo " "
X$echo "Trn has a number of auxiliary programs that need not be visible to the"
X$echo "whole world.  Where do you want to put these private executables?"
X$echo $n "[$dflt] (~name ok) $c"
X. myread
Xrnlib="$ans"
Xcase $rnlib in
X  '') rnlib=$dflt ;;
Xesac
Xcase $portable in
Xundef)
X    rnlib=`filexp $rnlib`
X    ;;
Xesac
X: must not allow self reference
Xcase $rnlib in
X  /*)
X    filexp=$rnlib/filexp
X    ;;
X  *)
X    filexp=`pwd`/filexp
X    ;;
Xesac
X
X: get the local distribution prefixes
Xif $test -f $libexp/sys ; then
X    $sed <$libexp/sys -n -e "s/^$sitename://p" | \
X    $sed -e "s/:.*//" -e "s/,/ /g" | tr ' ' '\012' | \
X    $sed -e "/^to./d" -e "/^net$/d" -e "/^fa$/d" -e "/^mod$/d" > .distlist
Xfi
X
X$cat <<'EOH'
X 
XDistribution groups are the things you use on the Distribution line to limit
Xwhere an article will go to.  You are likely to be a member of several
Xdistribution groups, such as organization, city, state, province, country,
Xcontinent, etc.  For example, Los Angeles has the distribution prefix "la",
XNew Jersey has the prefix "nj", and Europe has the prefix "eunet".
X
XThe categories you will be asked are: 
X
Xlocal organization	(Could be just one machine or a cluster or an office)
Xorganization		att, dec, kgb, ...
Xcity			la, ny, mosc, ...
Xstate/province		ca, nj, bc, ...
Xcountry			usa, can, rok, whatever
Xcontinent		na (North America, not "Not Applicable"), asia, etc.
X
X(If you don't have a distribution prefix in any of these categories then
Xjust hit return.)
X
XEOH
Xif $test -f .distlist; then
X    distlist=`tr '\012' ' ' <.distlist`
X    if $test "$distlist" ; then
X	$echo "(These are the distributions in your sys file: $distlist)"
X	$echo " "
X    fi
Xfi
Xcase "$locpref" in
X'') dflt="";;
X*)  dflt="[$locpref] ";;
Xesac
X$echo $n "What is the distribution prefix for your local organization? $dflt$c"
X. myread
Xcase "$ans" in
X'') ;;
X*)  locpref="$ans";;
Xesac
Xcase $locpref in
X  '') locpref=none ;;
Xesac
Xcase "$orgpref" in
X'') dflt="";;
X*)  dflt="[$orgpref] ";;
Xesac
X$echo $n "What is the distribution prefix for your organization? $dflt$c"
X. myread
Xcase "$ans" in
X'') ;;
X*)  orgpref="$ans";;
Xesac
Xcase $orgpref in
X  '') orgpref=none ;;
Xesac
Xcase "$citypref" in
X'') dflt="";;
X*)  dflt="[$citypref] ";;
Xesac
X$echo $n "What is the distribution prefix for your city? $dflt$c"
X. myread
Xcase "$ans" in
X'') ;;
X*)  citypref="$ans";;
Xesac
Xcase $citypref in
X  '') citypref=none ;;
Xesac
Xcase "$statepref" in
X'') dflt="";;
X*)  dflt="[$statepref] ";;
Xesac
X$echo $n "What is the distribution prefix for your state/province? $dflt$c"
X. myread
Xcase "$ans" in
X'') ;;
X*)  statepref="$ans";;
Xesac
Xcase $statepref in
X  '') statepref=none ;;
Xesac
Xcase "$cntrypref" in
X'') dflt="";;
X*)  dflt="[$cntrypref] ";;
Xesac
X$echo $n "What is the distribution prefix for your country? $dflt$c"
X. myread
Xcase "$ans" in
X'') ;;
X*)  cntrypref="$ans";;
Xesac
Xcase $cntrypref in
X  '') cntrypref=none ;;
Xesac
Xcase "$contpref" in
X'') dflt="";;
X*)  dflt="[$contpref] ";;
Xesac
X$echo $n "What is the distribution prefix for your continent? $dflt$c"
X. myread
Xcase "$ans" in
X'') ;;
X*)  contpref="$ans";;
Xesac
Xcase $contpref in
X  '') contpref=none ;;
Xesac
X
X$echo " "
X$echo "If you have any other distribution groups you will need to edit Pnews"
X$echo "and newsetup to add them."
X$echo " "
X
X: determine root id
Xrootid=`$sed </etc/passwd -e "/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" -e "q" -e "}" -e "d"`
Xcase $rootid in
X  '') rootid=0 ;;
X  *)  $echo "Root uid = $rootid" ;;
Xesac
X
X: weed out incompatibilities
Xcase $douname in
X  define) whoami=undef ;;
Xesac
X
X: preserve RCS keywords in files with variable substitution, grrr
XLog='$Log'
XHeader='$Header'
X
X: Warnings
Xif v7; then
X    cat <<'EOM'
X 
XNOTE: the V7 compiler may ignore some #undefs that trn uses.  If so, you will
Xget messages about redefining EXT.  Some V7 compilers also have difficulties
Xwith #defines near buffer boundaries, so beware.  You may have to play with
Xthe spacing in common.h.
XEOM
Xfi
X
Xif pdp11; then
X    cat <<'EOM'
X 
XNOTE: the PDP-11 does not have enough data space to do subject caching
Xreliably.  That feature will be disabled automatically.  Subject searching
Xwill tend to be slow.
XEOM
Xfi
Xcase "$isrrn" in
X	define) ;;
X	*) socketlib=""
X	   rrninclude=""
X	 ;;
Xesac
X
X$echo " "
X$echo "End of configuration questions."
X$echo " "
X
X: create config.sh file
X$echo " "
X$echo "Creating config.sh..."
X$spitshell <<EOT >config.sh
X$startsh
X# config.sh
X# This file was produced by running the Configure script.
X
Xn='$n'
Xc='$c'
Xlibc='$libc'
Xeunicefix='$eunicefix'
Xeunice='$eunice'
Xcpp='$cpp'
Xshsharp='$shsharp'
Xstartsh='$startsh'
Xspitshell='$spitshell'
Xtest='$test'
Xexpr='$expr'
Xsed='$sed'
Xecho='$echo'
Xcat='$cat'
Xrm='$rm'
Xmv='$mv'
Xcp='$cp'
Xtail='$tail'
Xtr='$tr'
Xmkdir='$mkdir'
Xsort='$sort'
Xuniq='$uniq'
Xinews='$inews'
Xgrep='$grep'
Xegrep='$egrep'
Xypmatch='$ypmatch'
Xcontains='$contains'
Xlib='$lib'
Xlibexp='$libexp'
Xnametype='$nametype'
Xcc='$cc'
Xiandd='$iandd'
Xinclude='$include'
Xrrninclude='$rrninclude'
Xtermlib='$termlib'
Xjobslib='$jobslib'
Xsocketlib='$socketlib'
Xgetcwd='$getcwd'
Xdirtype='$dirtype'
Xndirlib='$ndirlib'
Xlibndir='$libndir'
Xusendir='$usendir'
Xndirc='$ndirc'
Xndiro='$ndiro'
Xpager='$pager'
Xmailer='$mailer'
Xinternet='$internet'
Xrnbin='$rnbin'
Xfilexp='$filexp'
Xdistlist='$distlist'
XLog='$Log'
XHeader='$Header'
Xsitename='$sitename'
Xdomain='$domain'
Xorgname='$orgname'
Xisadmin='$isadmin'
Xnewsadmin='$newsadmin'
Xrnlib='$rnlib'
Xmansrc='$mansrc'
Xmanext='$manext'
Xmaildir='$maildir'
Xspool='$spool'
Xactive='$active'
Xmyactive='$myactive'
Xmininact='$mininact'
Xpref='$pref'
Xdefeditor='$defeditor'
Xrootid='$rootid'
Xmboxchar='$mboxchar'
Xlocpref='$locpref'
Xorgpref='$orgpref'
Xcitypref='$citypref'
Xstatepref='$statepref'
Xcntrypref='$cntrypref'
Xcontpref='$contpref'
Xstrchr='$strchr'
Xmemcpy='$memcpy'
Xrename='$rename'
Xtruncate='$truncate'
Xchsize='$chsize'
Xsysptem='$sysptem'
Xtzset='$tzset'
Xthreaddef='$threaddef'
Xselectdef='$selectdef'
Xthreaddir='$threaddir'
Xnovoid='$novoid'
Xnovfork='$novfork'
Xportable='$portable'
Xpassnam='$passnam'
Xberknam='$berknam'
Xusgnam='$usgnam'
Xwhoami='$whoami'
Xtermio='$termio'
Xfcntl='$fcntl'
Xioctl='$ioctl'
Xnormsig='$normsig'
Xsigblock='$sigblock'
Xsigret='$sigret'
Xgetuidgid='$getuidgid'
Xhavetlib='$havetlib'
Xgetpwent='$getpwent'
Xgethostname='$gethostname'
Xdouname='$douname'
Xphostname='$phostname'
Xhostcmd='$hostcmd'
Xnorelay='$norelay'
Xrdchk='$rdchk'
Xisrrn='$isrrn'
Xserverfile='$serverfile'
XNNTPSRC='$NNTPSRC'
XCONFIG=true
XEOT
X
X: create config.h file
X$echo " "
X$echo "Creating config.h..."
Xcase "$threaddir" in
X'.')	threaddir='/usr/spool/threads'
X	tdir='/*';;
X*)	tdir='';;
Xesac
Xcase "$strchr" in
Xdefine)	strchr='';;
X*)	strchr='/*';;
Xesac
Xcase "$memcpy" in
Xdefine)	memcpy='';;
X*)	memcpy='/*';;
Xesac
Xcase "$novoid" in
Xdefine)	novoid='';;
X*)	novoid='/*';;
Xesac
Xcase "$novfork" in
Xdefine)	novfork='';;
X*)	novfork='/*';;
Xesac
Xcase "$phostname" in
Xdefine)	phostname='';;
X*)	phostname='/*';;
Xesac
Xcase "$isrrn" in
Xdefine)	isrrn2='';;
X*)	isrrn2='/*';;
Xesac
X$cat <<EOT >config.h
X/* config.h
X * This file was produced by running the Configure script.
X * Feel free to modify any of this as the need arises.
X */
X
X/* name of the site.  May be overridden by gethostname, uname, etc. */
X#define SITENAME "$sitename"
X
X/* name of the organization, may be a file name */
X#define ORGNAME "$orgname"
X
X/* login name of news administrator, if any. */
X#$isadmin NEWSADMIN "$newsadmin"
X
X/* news library, may use only ~ and %l expansion */
X#define LIB "$lib"
X
X/* rn private library, may use ~ expansion, %x and %l */
X#define RNLIB "$rnlib"
X
X/* location of the news spool directory, may use ~ expansion, %x and %l */
X#define SPOOL "$spool"
X
X/* put thread files in each spool directory, unless THREAD_DIR is defined */
X$tdir#define THREAD_DIR "$threaddir"	/* base directory */
X
X/* save in subdirectories unless LONG_THREAD_NAMES & THREAD_DIR are defined */
X#undef LONG_THREAD_NAMES		/* not for short-name systems */
X
X/* location of the active file, may use ~ expansion, %x and %l */
X#define ACTIVE "$active"
X
X/* location of spooled mail */
X#define MAILFILE "$maildir/%L"
X
X/* default shell--ok to be a slow shell like csh */
X#define PREFSHELL "$pref"
X
X/* default editor */
X#define DEFEDITOR "$defeditor"
X
X/* root uid */
X#define ROOTID $rootid
X
X/* what is the first character of a mailbox? */
X#define MBOXCHAR '$mboxchar'
X
X/* how to cancel an article */
X#define CANCEL "$inews -h <%h"
X
X/* distribution groups */
X#define LOCDIST "$locpref"
X#define ORGDIST "$orgpref"
X#define CITYDIST "$citypref"
X#define STATEDIST "$statepref"
X#define CNTRYDIST "$cntrypref"
X#define CONTDIST "$contpref"
X
X#define THREAD_INIT $threaddef
X#define SELECT_INIT $selectdef
X
X$strchr#define index   strchr	/* cultural */
X$strchr#define rindex  strrchr	/*  differences? */
X$memcpy#define bcopy(s,d,n)	memcpy((char*)d,(char*)s,(int)n)	/* Different */
X$memcpy#define bzero(d,n)	memset((char*)d,0,(int)n)		/*  flavors. */
X#$rename	RENAME		/* is rename() a system call? */
X#$truncate	TRUNCATE	/* is truncate() available? */
X#$chsize	CHSIZE		/* is chsize() available? */
X#$sysptem	SYS_PTEM	/* is /usr/include/sys/ptem.h needed? */
X#$tzset	TZSET		/* modern timezone functions? */
X$novoid#define void int	/* is void to be avoided? */
X$novfork#define vfork fork	/* is vfork too virtual? */
X#$eunice	EUNICE		/* no linking? */
X#$eunice	VMS		/* not currently used, here just in case */
X#$getcwd	GETCWD		/* do we have getcwd()? */
X#$usendir	USENDIR		/* include ndir.c? */
X#$libndir	LIBNDIR		/* include /usr/include/ndir.h? */
X#define	DIRTYPE   $dirtype
X#ifndef USENDIR
X#define	DIRINC	  $dirinc
X#endif
X#$mininact	MININACT	/* include 2.10.2 optimization? */
X#$portable	PORTABLE	/* do we do extra lookups to start up? */
X#$passnam	PASSNAMES	/* do names come from the passwd file? */
X			/*  (undef to take name from ~/.fullname) */
X#$berknam	BERKNAMES	/* if so, are they Berkeley format? */
X			/* (that is, ":name,stuff:") */
X#$usgnam	USGNAMES	/* or are they USG format? */
X			/* (that is, ":stuff-name(stuff):") */
X#$whoami	WHOAMI		/* should we include whoami.h? */
X#$rdchk	RDCHK		/* do we have rdchk()? */
X#$termio	TERMIO		/* is this a termio system? */
X#$fcntl	FCNTL		/* should we include fcntl.h? */
X#$ioctl	IOCTL		/* are ioctl args all defined in one place? */
X#$normsig	NORMSIG		/* use signal rather than sigset? */
X#$sigblock	SIGBLOCK	/* use sigblock and sigsetmask */
X#define	SIGRET	$sigret	/* what does signal() return? */
X#$havetlib	HAVETERMLIB	/* do we have termlib-style routines? */
X#$getuidgid	GETUIDGID	/* allow setuid (if possible) */
X#$getpwent	GETPWENT	/* should we include getpwent? */
X#$internet	INTERNET	/* does our mailer do INTERNET addressing? */
X#$gethostname	GETHOSTNAME	/* do we have a gethostname function? */
X#$douname	DOUNAME		/* do we have a uname function? */
X$phostname#define PHOSTNAME "$hostcmd"	/* how to get host name with popen */
X#$norelay	NORELAY		/* 2.10.3 doesn't have Relay-Version line */
X#$isrrn	SERVER		/* rrn server code */
X$isrrn2#define SERVER_FILE	"$serverfile"	/* news server file */
XEOT
X
XCONFIG=true
X
X$rm -f libc.list .distlist kit*isdone 
X
X$echo " "
X$echo "Doing variable substitutions on various files..."
X$echo " "
Xset `$grep <MANIFEST '\.SH' | awk '{print $1}'`
Xfor file in $*; do
X    . $file
Xdone
X
X$echo " "
X$echo 'Now you need to generate make dependencies by running "makedepend".'
X$echo 'You might prefer to run it in background: "makedepend > makedepend.out &"'
X$echo $n "Would you like me to run it for you (it takes quite a while)? [n] $c" 
X. myread
Xcase "$ans" in
Xy*) makedepend;;
Xesac
X$rm -f myread
X: end of Configure
SHAR_EOF
echo "File Configure is complete"
chmod 0770 Configure || echo "restore of Configure fails"
echo "x - extracting EXTERN.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > EXTERN.h &&
X/* $Header: EXTERN.h,v 4.3 85/05/01 11:58:01 lwall Exp $
X *
X * $Log:	EXTERN.h,v $
X * Revision 4.3  85/05/01  11:58:01  lwall
X * Baseline for release with 4.3bsd.
X * 
X */
X
X#undef EXT
X#define EXT extern
X
X#undef INIT
X#define INIT(x)
X
X#undef DOINIT
SHAR_EOF
chmod 0660 EXTERN.h || echo "restore of EXTERN.h fails"
echo "x - extracting HACKERSGUIDE (Text)"
sed 's/^X//' << 'SHAR_EOF' > HACKERSGUIDE &&
XHacking Notes
X
XIf you aren't interested in mucking with the innards of rn, don't read this.
X
XIn the interests of both space and time optimization, things are done inside
Xrn that don't always conform to the highest ideals of programming.  To the
Xextent I felt it was practical, I've tried to conform to good programming
Xpractice, but you must realize that my goal was to make a better mousetrap,
Xso certain conscious tradeoffs were made in the design of rn right from the
Xstart.  In particular, if you want to hack on rn (and I wouldn't blame you,
Xit's fun), beware of the following:
X  
X  * buf and cmd_buf are reused all over the place.  11-squishing is a good
X    term for it.  No, I'm on a Vax now, but I've been there.
X
X  * The article header is parsed on the fly, while it is being displayed.
X    In fact, practically everything is done on the fly within the article
X    display loop, and there are plenty of state variables.  The header
X    is never explicitly stored in memory; rather, pointers are kept into
X    the file.  The information required to backup pages is not stored in
X    memory, except for 1 buffer's worth.  The information required to do
X    the delayed mark as unread (M) is not stored in memory either.
X
X  * Lots of contortions are gone through to avoid using static memory, or
X    allocating unnecessary memory, or losing track of allocated memory,
X    while at the same time allowing .newsrc lines and header lines to be
X    ANY length up to the amount of memory you have.  Rn spends a great deal
X    of effort being lazy.  Do not use a static buffer when you can use
X    growstr().
X
X  * Lots of contortions are gone through to try to do things when people
X    aren't waiting, or have only been waiting a very short time.  Guessing
X    the next article to be opened and opening it, searching ahead for the
X    next article with the same subject, delaying the look up of the number
X    of articles in a newsgroup, writing the rest of the page while the
X    reader is examining the header, cacheing up subjects while the user
X    is reading, checkpointing the .newsrc only while the reader is in the
X    middle of an interesting article, are some of the strategies employed.
X  
X  * There are plenty of goto's.  Most of them involve going back to reprompt,
X    to reask for input, or to just plain do the unstructured things people
X    want to do when they are glaring at a terminal.  If they bother you
X    too much, just think of rn as a big state machine.  If they don't bother
X    you at all, I don't want you hacking on rn.
X
X  * Put all includes at the front of the file, before the first function,
X    or makedepend will not work right.  I could relax this, but makedepend
X    would take about 5 times longer to run.
X
XIn general then, feel free to hack on rn.  Just don't broadcast untested
Xpatches to the net.  Remember that there are people with limited address
Xspaces and limited cpu cycles.  If you add a wonderful new feature and
Xwant to publish a patch, put #ifdef's around it so that people who don't
Xwant it or can't afford it can work around it.  THIS MEANS YOU.  We don't
Xneed 57 varieties of mutually incompatible and incomprehensible rn floating
Xabout the net.  Consider telling me about your patch so that I can consider
Xincluding it in the standard version.  A COMPLETE PATCH TAKES INTO ACCOUNT
XSYSTEM DEPENDENCIES AS DETERMINED BY THE CONFIGURE SCRIPT.
X
X* Don't use ints where rn uses typedefs, in particular, for article numbers.
X* Don't use %d anywhere that someone might need a %ld.  (Just because YOU
X    typedefed it as an int doesn't mean someone else won't need a long.)
X* Don't use %D, that's archaic.
X* Put FLUSHes after printf()s, fputs()es and putchar('\n')s for our poor
X    brethern and sistern without line buffering.
X* Declare the type of every function.  Use void, even if your C compiler
X    doesn't.
X* Follow the style that rn already uses!  This is my pet peeve.  Well, one of
X    them, anyway.  I follow other people's strange styles when modifying
X    their programs, so I'd be much obliged if you did likewise.
X* Use lint.
X* Use RCS.  Start a new branch, like 4.3.[2-9].  (I will use 4.3.1 myself.)
X* Be structured wherever it doesn't interfere with practicality.
X* Long live paranoid programming.  The rest of the program is out to get you.
X    The world is out to destroy the program, not to mention the .newsrc.
X    And then there's always bitrot...
X* Stop reading this lugubrious trash and start thinking for yourself.
X* Thank you and good night.
SHAR_EOF
chmod 0660 HACKERSGUIDE || echo "restore of HACKERSGUIDE fails"
echo "x - extracting INIT (Text)"
sed 's/^X//' << 'SHAR_EOF' > INIT &&
X-ESAMPLE="sample"
SHAR_EOF
chmod 0660 INIT || echo "restore of INIT fails"
echo "x - extracting INTERN.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > INTERN.h &&
X/* $Header: INTERN.h,v 4.3 85/05/01 11:33:16 lwall Exp $
X *
X * $Log:	INTERN.h,v $
X * Revision 4.3  85/05/01  11:33:16  lwall
X * Baseline for release with 4.3bsd.
X * 
X */
X
X#undef EXT
X#define EXT
X
X#undef INIT
X#define INIT(x) = x
X
X#define DOINIT
SHAR_EOF
chmod 0660 INTERN.h || echo "restore of INTERN.h fails"
echo "x - extracting MANIFEST (Text)"
sed 's/^X//' << 'SHAR_EOF' > MANIFEST &&
XAfter unpacking, you should have the following files:
X
XFilename	Description
X--------	-----------
XConfigure       A shell script that installs everything system dependent.
XEXTERN.h        When included, makes other includes not belong to me.
XHACKERSGUIDE    A brief guide to the contorted innards of trn.
XINIT            Sample system-wide switch file.
XINTERN.h        When included, makes other includes belong to me.
XMANIFEST        This list of files.
XMakefile.SH     The makefile.
XNEW             List of new features with trn v1.0.
XPnews.1         Manual page for Pnews.
XPnews.SH        A news posting shell script that knows about -h.
XREADME          Installation instructions and other tidbits.
XRnmail.1        Manual page for Rnmail.
XRnmail.SH       A mailer that knows about -h.
XWishlist        What the next version wants in it.
Xaddng.c         Routines for scanning the active file for new newsgroups.
Xaddng.h         Public info regarding addng.c.
Xart.c           Routines to display an article.
Xart.h           Public info regarding art.c.
Xartio.c         Reserved for the article abstract type, someday.
Xartio.h         Public info regarding artio.c.
Xartsrch.c       Routines for searching among articles.
Xartsrch.h       Public info regarding artsrch.c.
Xartstate.h      Info on the current state of the article.
Xbackpage.c      Routines for paging backwards in articles.
Xbackpage.h      Public info regarding backpage.c.
Xbits.c          Bitmap management functions.
Xbits.h          Public info regarding bits.c.
Xcheat.c         Routines to do lookahead of several types.
Xcheat.h         Public info regarding cheat.c.
Xcommon.h        Global info.
Xfinal.c         Finalization (exit) routines.
Xfinal.h         Public info regarding final.c.
Xgetactive.c     Program used by shell scripts to the active file (trrn only).
Xgetdate.y       A yacc script for date parsing.
Xhead.c          Header parsing routines.
Xhead.h          Public info regarding head.c.
Xhelp.c          Help routines.
Xhelp.h          Public info regarding help.c.
Xinit.c          Initialization (startup) routines.
Xinit.h          Public info regarding init.c.
Xintrp.c         Filename expansion and % interpretation routines.
Xintrp.h         Public info regarding intrp.c.
Xkfile.c         KILL file routines.
Xkfile.h         Public info regarding kfile.c.
Xlast.c          Routines for handling the .rnlast file.
Xlast.h          Public info regarding last.c.
Xmakedepend.SH   Shell script to generate make dependencies.
Xmakedir.SH      Shell script to make nested subdirectories.
Xmbox.saver.SH   Shell script to save an article to a mailbox.
Xmt-lint.h       A kludge file included when lint'ing.
Xmt-process.c    Mthreads' article processing routines.
Xmt-read.c       Mthreads' data-file reading routines.
Xmt-write.c      Mthreads' data-file writing routines.
Xmt.check.SH     A sample mt.log checker/trimmer.
Xmthreads.1      The man page for mthreads.
Xmthreads.c      The main workloop for the mthreads database manager.
Xmthreads.h      The include file for accessing the 'mt' structures.
Xndir.c          4.2 directory routine emulation.
Xndir.h          Public info regarding ndir.c.
Xnewsetup.1      Manual page for newsetup.
Xnewsetup.SH     Shell script to create a .newsrc file.
Xnewsgroups.1    Manual page for newsgroups.
Xnewsgroups.SH   Shell script to list unsubscribed newsgroups.
Xnewsnews.SH     A motd-like file that trn may print at startup.
Xng.c            Routines to display a newsgroup.
Xng.h            Public info regarding ng.c.
Xngdata.c        General data fetching routines for a newsgroup.
Xngdata.h        Public info regarding ngdata.c.
Xngsrch.c        Routines to search among newsgroups.
Xngsrch.h        Public info regarding ngsrch.c.
Xngstuff.c       Support routines for ng.c.
Xngstuff.h       Public info regarding ng.c.
Xnorm.saver.SH   Shell script to save an article to a normal file.
Xonly.c          Routines to perform newsgroup restriction.
Xonly.h          Public info regarding only.c.
Xpatchlevel      Indicates current patch level.
Xrcln.c          Routines to mung a .newsrc line.
Xrcln.h          Public info regarding rcln.c.
Xrcstuff.c       Routines to mung the .newsrc file.
Xrcstuff.h       Public info regarding rcstuff.c.
Xrespond.c       Various routines for doing things with articles.
Xrespond.h       Public info regarding respond.c.
Xrn.c            Main program.
Xrn.h            Public info regarding rn.c.
Xrt-rn.c         Misc. threaded routines.
Xrt-select.c     The thread selector.
Xrthreads.c      Routines that read the thread data files in reader format.
Xrthreads.h      The include file for accessing the 'rt' structures.
Xsearch.c        Regular expression processing ala emacs.
Xsearch.h        Public info regarding search.c.
Xsw.c            Switch processing routines.
Xsw.h            Public info regarding switch.c.
Xterm.c          Terminal interface routines.
Xterm.h          Public info regarding term.c.
Xthreads.c       Routines common to both thread makers and readers.
Xthreads.h       The include file for common thread structures.
Xtrn.1           Manual pages for trn -- PLEASE READ.
Xutil.c          Utility routines.
Xutil.h          Public info regarding util.c.
Xuudecode.c      The uudecoder routines.
Xuudecode.h      The uudecoder's include file.
SHAR_EOF
chmod 0660 MANIFEST || echo "restore of MANIFEST fails"
echo "x - extracting Pnews.1 (Text)"
sed 's/^X//' << 'SHAR_EOF' > Pnews.1 &&
X''' $Header: Pnews.1,v 4.3.3.1 90/07/21 19:57:23 davison Trn $
X''' 
X''' $Log:	Pnews.1,v $
X''' Revision 4.3.3.1  90/07/21  19:57:23  davison
X''' Initial Trn Release
X''' 
X''' Revision 4.3.1.2  85/08/01  14:22:48  lwall
X''' Added AUTHORCOPY.
X''' 
X''' Revision 4.3.1.1  85/05/10  11:30:30  lwall
X''' Branch for patches.
X''' 
X''' Revision 4.3  85/05/01  11:33:50  lwall
X''' Baseline for release with 4.3bsd.
X''' 
X.de Sh
X.br
X.ne 5
X.PP
X\fB\\$1\fR
X.PP
X..
X.de Sp
X.if t .sp .5v
X.if n .sp
X..
X'''
X'''     Set up \*(-- to give an unbreakable dash;
X'''     string Tr holds user defined translation string.
X'''     Bell System Logo is used as a dummy character.
X'''
X.ie n \{\
X.tr \(bs-\*(Tr
X.ds -- \(bs-
X.if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch
X.if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch
X.ds L" ""
X.ds R" ""
X.ds L' '
X.ds R' '
X'br\}
X.el\{\
X.ds -- \(em\|
X.tr \*(Tr
X.ds L" ``
X.ds R" ''
X.ds L' `
X.ds R' '
X'br\}
X.TH PNEWS 1 LOCAL
X.SH NAME
XPnews - a program for posting news articles
X.SH SYNOPSIS
X.B Pnews newsgroup title
X.br
X  or
X.br
X.B Pnews -h headerfile [oldarticle]
X.br
X  or
X.br
X.B Pnews
X.SH DESCRIPTION
XPnews is a friendly interface for posting news articles.
XIt will ask several questions, then allow you to enter your article,
Xand then post it using the inews(1) program.
XIf you type h and a carriage return at any point,
X.I Pnews
Xwill tell you what it wants to know.
X.PP
XThe -h form is used when invoked from
X.IR rn .
XIf your editor can edit multiple files, and you want the article to which
Xyou are replying to show up as an alternate file, define the environment
Xvariable NEWSPOSTER as \*(L"Pnews -h %h %A\*(R".
XYou can also modify the the NEWSHEADER environment variable to change the
Xheader file that
X.I rn
Xpasses to Pnews.
SHAR_EOF
echo "End of part 3"
echo "File Pnews.1 is continued in part 4"
echo "4" > s2_seq_.tmp
exit 0
-- 
Please send comp.sources.unix-related mail to rsalz at uunet.uu.net.
Use a domain-based address or give alternate paths, or you may lose out.



More information about the Comp.sources.unix mailing list