Article 2695 of comp.sources.unix:
Path: nntpd.lkg.dec.com!lead.zk3.dec.com!crl.dec.com!crl.dec.com!bloom-beacon.mit.edu!spool.mu.edu!howland.reston.ans.net!newsfeed.internetmci.com!in1.uu.net!news1.digital.com!vixie!vixie!not-for-mail
From: davison@borland.com (Wayne Davison)
Newsgroups: comp.sources.unix
Subject: v29i049: trn-3.6 - threaded newsreader based on RN, V3.6, Part12/14
Date: 29 Oct 1995 01:33:04 -0800
Organization: Vixie Enterprises
Lines: 2606
Sender: vixie@vix.com
Approved: vixie@gw.home.vix.com
Message-ID: <46vhog$t5e@gw.home.vix.com>
References: <1.814959141.29825@gw.home.vix.com>
NNTP-Posting-Host: gw.home.vix.com

Submitted-By: davison@borland.com (Wayne Davison)
Posting-Number: Volume 29, Issue 49
Archive-Name: trn-3.6/part12

#!/bin/sh
# This is `part12' (part 12 of a multipart archive).
# Do not concatenate these parts, unpack them in order with `/bin/sh'.
# File `trn-3.6/HACKERSGUIDE' is being continued...
#
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
  shar_touch=touch
else
  shar_touch=:
  echo
  echo 'WARNING: not restoring timestamps.  Consider getting and'
  echo "installing GNU \`touch', distributed in GNU File Utilities..."
  echo
fi
rm -f 1231235999 $$.touch
#
if test ! -r _sharseq.tmp; then
  echo 'Please unpack part 1 first!'
  exit 1
fi
shar_sequence=`cat _sharseq.tmp`
if test "$shar_sequence" != 12; then
  echo "Please unpack part $shar_sequence next!"
  exit 1
fi
if test ! -f _sharnew.tmp; then
  echo 'x - still skipping trn-3.6/HACKERSGUIDE'
else
  echo 'x - continuing file trn-3.6/HACKERSGUIDE'
  sed 's/^X//' << 'SHAR_EOF' >> 'trn-3.6/HACKERSGUIDE' &&
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 trn already uses!  This is my pet peeve.  Well, one
X    of 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.4.[2-9].  (I will use 4.4.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
  echo 'File trn-3.6/HACKERSGUIDE is complete' &&
  $shar_touch -am 0223110793 'trn-3.6/HACKERSGUIDE' &&
  chmod 0644 'trn-3.6/HACKERSGUIDE' ||
  echo 'restore of trn-3.6/HACKERSGUIDE failed'
  shar_count="`wc -c < 'trn-3.6/HACKERSGUIDE'`"
  test 4463 -eq "$shar_count" ||
    echo "trn-3.6/HACKERSGUIDE: original size 4463, current size $shar_count"
  rm -f _sharnew.tmp
fi
# ============= trn-3.6/rt-ov.h ==============
if test -f 'trn-3.6/rt-ov.h' && test X"$1" != X"-c"; then
  echo 'x - skipping trn-3.6/rt-ov.h (file already exists)'
  rm -f _sharnew.tmp
else
  > _sharnew.tmp
  echo 'x - extracting trn-3.6/rt-ov.h (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/rt-ov.h' &&
X/* $Id: rt-ov.h,v 3.0 1992/12/14 00:14:15 davison Trn $
X*/
X/* The authors make no claims as to the fitness or correctness of this software
X * for any use whatsoever, and it is provided as is. Any use of this software
X * is at the user's own risk. 
X */
X
Xbool ov_init _((void));
Xbool ov_data _((ART_NUM,ART_NUM,bool_int));
Xvoid ov_close _((void));
X
X/* Stuff internal to rt-ov.c */
X
X#ifdef DOINIT
X
Xstatic ARTICLE *ov_parse _((char*, ART_NUM));
X#ifndef USE_XOVER
Xstatic char *ov_name _((char*));
X#endif
X
X#endif
SHAR_EOF
  $shar_touch -am 0711223693 'trn-3.6/rt-ov.h' &&
  chmod 0644 'trn-3.6/rt-ov.h' ||
  echo 'restore of trn-3.6/rt-ov.h failed'
  shar_count="`wc -c < 'trn-3.6/rt-ov.h'`"
  test 507 -eq "$shar_count" ||
    echo "trn-3.6/rt-ov.h: original size 507, current size $shar_count"
  rm -f _sharnew.tmp
fi
# ============= trn-3.6/Pnews.1 ==============
if test -f 'trn-3.6/Pnews.1' && test X"$1" != X"-c"; then
  echo 'x - skipping trn-3.6/Pnews.1 (file already exists)'
  rm -f _sharnew.tmp
else
  > _sharnew.tmp
  echo 'x - extracting trn-3.6/Pnews.1 (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/Pnews.1' &&
X.\" $Id: Pnews.1,v 4.4.3.1 1992/02/01 03:17:20 sob PATCH_3 sob $
X.\"
X.\" This software is Copyright 1991 by Stan Barber. 
X.\"
X.\" Permission is hereby granted to copy, reproduce, redistribute or otherwise
X.\" use this software as long as: there is no monetary profit gained
X.\" specifically from the use or reproduction of this software, it is not
X.\" sold, rented, traded or otherwise marketed, and this copyright notice is
X.\" included prominently in any copy made. 
X.\"
X.\" The authors make no claims as to the fitness or correctness of this software
X.\" for any use whatsoever, and it is provided as is. Any use of this software
X.\" is at the user's own risk. 
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.\" unbreakable dash.
X.tr \(*W-|\(bv\*(Tr
X.ie n \{\
X.ds -- \(*W-
X.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
X.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\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
XIf you put a
X.I .signature
Xfile in your home directory, your inews program will usually append it
Xto your message after you are done editing it.
XIf you prefer to see your signature while you are editing, rename your
X\&.signature file to be .news_sig and it will be appended before you
Xbegin to edit.
XNote that .news_sig obeys the setting of DOTDIR, but .signature may
Xnot, since it is out of Pnews's control.
XIf both .news_sig and .signature exist you'll get two signatures appended.
X.PP
XThe -h form is used when invoked from
X.I trn
Xor
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 [t]rn
Xpasses to Pnews.
X.SH ENVIRONMENT
X.IP AUTHORCOPY 8
XIf defined, contains the name of a file to which the finished article will
Xbe appended.
X.Sp
XDefault: article not saved
X.IP DOTDIR 8
XWhere to find your dot files, if they aren't in your home directory.
XThis is primarily for accounts which are shared by more than one person.
X.Sp
XDefault: $HOME
X.IP EDITOR 8
XThe editor you want to use, if VISUAL is undefined.
X.Sp
XDefault: whatever your news administrator installed, usually vi.
X.IP HOME 8
XYour home directory.
X.Sp
XDefault: $LOGDIR
X.IP LOGDIR 8
XYour home directory if HOME is undefined.
X.IP LOGNAME 8
XYour login name, if USER is undefined.
X.Sp
XDefault: value of \*(L"whoami\*(R".
X.IP NAME 8
XYour full name.
X.Sp
XDefault: name from /etc/passwd, or ~/.fullname.
X.IP NEWSORG 8
XEither the name of your organization, or the name of a file containing the
Xname of your organization. (For use at organizations where the ORGANIZATION
Xenvironmental variable is in use for other purposes). If both NEWSORG and
XORGANIZATION are set, NEWSORG will override ORGANIZATION.
X.IP ORGANIZATION 8
XEither the name of your organization, or the name of a file containing the
Xname of your organization.
X.Sp
XDefault: whatever your news administrator chose.
X.IP REPLYTO 8
XThe contents of a \*(L"Reply-To:\*(R" header line to insert into your message.
X.Sp
XDefault: header line not inserted.
X.IP USER 8
XYour login name.
X.Sp
XDefault: $LOGNAME
X.IP VISUAL 8
XThe editor you want to use.
X.Sp
XDefault: $EDITOR
X.SH FILES
X$DOTDIR/.article
X.br
X$DOTDIR/.news_sig
X.br
X~/dead.article
X.SH SEE ALSO
Xtrn(1), rn(1), Rnmail(1), inews(1)
X.SH DIAGNOSTICS
X.SH BUGS
XNot the speediest program in the world, but maybe that's a blessing to the
Xnet.
SHAR_EOF
  $shar_touch -am 0820134794 'trn-3.6/Pnews.1' &&
  chmod 0644 'trn-3.6/Pnews.1' ||
  echo 'restore of trn-3.6/Pnews.1 failed'
  shar_count="`wc -c < 'trn-3.6/Pnews.1'`"
  test 4076 -eq "$shar_count" ||
    echo "trn-3.6/Pnews.1: original size 4076, current size $shar_count"
  rm -f _sharnew.tmp
fi
# ============= trn-3.6/Rnmail.1 ==============
if test -f 'trn-3.6/Rnmail.1' && test X"$1" != X"-c"; then
  echo 'x - skipping trn-3.6/Rnmail.1 (file already exists)'
  rm -f _sharnew.tmp
else
  > _sharnew.tmp
  echo 'x - extracting trn-3.6/Rnmail.1 (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/Rnmail.1' &&
X.\" $Id: Rnmail.1,v 4.4.3.1 1992/02/01 03:17:20 sob PATCH_3 sob $
X.\"
X.\" This software is Copyright 1991 by Stan Barber. 
X.\"
X.\" Permission is hereby granted to copy, reproduce, redistribute or otherwise
X.\" use this software as long as: there is no monetary profit gained
X.\" specifically from the use or reproduction of this software, it is not
X.\" sold, rented, traded or otherwise marketed, and this copyright notice is
X.\" included prominently in any copy made. 
X.\"
X.\" The authors make no claims as to the fitness or correctness of this software
X.\" for any use whatsoever, and it is provided as is. Any use of this software
X.\" is at the user's own risk. 
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.\" unbreakable dash.
X.tr \(*W-|\(bv\*(Tr
X.ie n \{\
X.ds -- \(*W-
X.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
X.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\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 RNMAIL 1 LOCAL
X.SH NAME
XRnmail - a program for replying via mail
X.SH SYNOPSIS
X.B Rnmail destination_list
X.br
X  or
X.br
X.B Rnmail -h headerfile [oldarticle]
X.br
X  or
X.br
X.B Rnmail
X.SH DESCRIPTION
XRnmail is a friendly interface for mailing replies to news articles.
XIt will ask several questions, then allow you to enter your letter,
Xand then mail it off.
XIf you type h and a carriage return at any point,
X.I Rnmail
Xwill tell you what it wants to know.
X.PP
XIf you put a
X.I .signature
Xfile in your home directory, Rnmail will append it
Xto your message after you are done editing it.
XIf you prefer to see your signature while you are editing, rename your
X\&.signature file to be .mail_sig and it will be appended before you
Xbegin to edit.
XNote that both .mail_sig and .signature obey the setting of DOTDIR unless
XRnmail was modified to take the .signature appending out of Rnmail's control
Xand that if both files exist you get two signatures appended.
X.PP
XThe -h form is used when invoked from
X.I trn
Xor
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 MAILPOSTER as \*(L"Rnmail -h %h %A\*(R".
XYou can also modify the the MAILHEADER environment variable to change the
Xheader file that
X.I [t]rn
Xpasses to Rnmail.
X.SH ENVIRONMENT
X.IP DOTDIR 8
XIf defined, specifies a place other than your home directory where 'dot' files
Xmay be stored.
XThis is primarily for accounts which are shared by more than one person.
X.Sp
XDefault: $HOME
X.IP EDITOR 8
XThe editor you want to use, if VISUAL is undefined.
X.Sp
XDefault: whatever your news administrator installed, usually vi.
X.IP HOME 8
XYour home directory.
X.Sp
XDefault: $LOGDIR
X.IP LOGDIR 8
XYour home directory if HOME is undefined.
X.IP LOGNAME 8
XYour login name, if USER is undefined.
X.Sp
XDefault: value of \*(L"whoami\*(R".
X.IP MAILRECORD 8
XIf defined, contains the name of a file to which the finished message will
Xbe appended.
X.Sp
XDefault: message not saved
X.IP NEWSORG 8
XEither the name of your organization, or the name of a file containing the
Xname of your organization. (For use at organizations where the ORGANIZATION
Xenvironmental variable is in use for other purposes). If both NEWSORG and 
XORGANIZATION are set, NEWSORG will override ORGANIZATION.
X.Sp
XDefault: whatever your news administrator chose.
X.IP ORGANIZATION 8
XEither the name of your organization, or the name of a file containing the
Xname of your organization.
X.Sp
XDefault: whatever your news administrator chose.
X.IP REPLYTO 8
XThe contents of a \*(L"Reply-To:\*(R" header line to insert into your message.
X.Sp
XDefault: header line not inserted.
X.IP USER 8
XYour login name.
X.Sp
XDefault: $LOGNAME
X.IP VISUAL 8
XThe editor you want to use.
X.Sp
XDefault: $EDITOR
X.SH FILES
X$DOTDIR/.letter
X.br
X$DOTDIR/.signature
X.br
X$DOTDIR/.mail_sig
X.br
X~/dead.letter
X.SH SEE ALSO
Xtrn(1), rn(1), Pnews(1), mail(1)
X.SH DIAGNOSTICS
X.SH BUGS
XUses /bin/mail in the absence of sendmail.
SHAR_EOF
  $shar_touch -am 0725103093 'trn-3.6/Rnmail.1' &&
  chmod 0644 'trn-3.6/Rnmail.1' ||
  echo 'restore of trn-3.6/Rnmail.1 failed'
  shar_count="`wc -c < 'trn-3.6/Rnmail.1'`"
  test 4061 -eq "$shar_count" ||
    echo "trn-3.6/Rnmail.1: original size 4061, current size $shar_count"
  rm -f _sharnew.tmp
fi
# ============= trn-3.6/Policy.sh.SH ==============
if test -f 'trn-3.6/Policy.sh.SH' && test X"$1" != X"-c"; then
  echo 'x - skipping trn-3.6/Policy.sh.SH (file already exists)'
  rm -f _sharnew.tmp
else
  > _sharnew.tmp
  echo 'x - extracting trn-3.6/Policy.sh.SH (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/Policy.sh.SH' &&
Xcase $CONFIG in
X'') . ./config.sh ;;
Xesac
Xecho "Extracting Policy.sh (with variable substitutions)"
X$spitshell <<!GROK!THIS! >Policy.sh
X$startsh
X#
X#  This file was produced by running the Polich.sh.SH script, which
X#  gets its values from config.sh, which is generally produced by
X#  running Configure.
X# 
X#  $Id: Policy.sh.SH,v 3.5 1994/04/24 16:47:38 davison Trn $
X
X# login name of the person who configured trn (not particularly interesting).
Xcf_by='$cf_by'
X# time of configuration (not particularly interesting).
Xcf_time='$cf_time'
X
X#		install directives.
X
X#		bin directories (string values)
X#	name of the final resting place
Xbin='$bin'
X#	how to get to the final resting place (thank you, AFS)
Xinstallbin='$installbin'
X
X#		private libraries
X#	name of the final resting place for those items in the library
X#	directory (string value)
Xprivlib='$privlib'
X#	How to get to the library final resting place (thanks, AFS)
Xinstallprivlib='$installprivlib'
X
X#	interesting questions about man
X# 	where do man page sources go?
Xmansrc='$mansrc'
X#	what extention do man pages get?
Xmanext='$manext'
X
X#		path to assorted programs that we might want to override.
X#	name of the default editor.  (string value)
Xdefeditor='$defeditor'
X#	prefered user shell (string value)
Xprefshell='$prefshell'
X#	favorite local pager (string value)
Xpager='$pager'
X# where is inews?  (string value)
Xinewsloc='$inewsloc'
X#	path to interactive speller or "none" (string value)
Xispell_prg='$ispell_prg'
X#	spelling options for ispell_prg or "spell" if "none" (string value)
Xispell_options='$ispell_options'
X
X#		internal options
X#	ignore the ORGANIZATION environment variable? (define/undef)
Xd_ignoreorg='$d_ignoreorg'
X#	does the mailer understand FQDN addressing? (define/undef)
Xd_internet='$d_internet'
X#	do you have a news admin? (define/undef)
Xd_newsadm='$d_newsadm'
X#	name of the news admin? (string value)
Xnewsadmin='$newsadmin'
X#	read via NNTP? (define/undef)
Xd_nntp='$d_nntp'
X#	use the XDATA NNTP extension? (define/undef)
Xd_xdata='$d_xdata'
X#	path to a file containing a server name, or a hostname (string value)
Xservername='$servername'
X
X#	distribution names (string values)
X# local city
Xcitydist='$citydist'
X# "local" country
Xcntrydist='$cntrydist'
X# "local" continent
Xcontdist='$contdist'
X# site distribution
Xlocdist='$locdist'
X# organizational distribution
Xorgdist='$orgdist'
X# state/province distribution name
Xstatedist='$statedist'
X# multistate region distribution name
Xmultistatedist='$multistatedist'
X
X#		Naming information.
X#	password file contains names (define/undef)
Xd_passnames='$d_passnames'
X#	berkeley style password entries (name first in GCOS) (define/undef)
Xd_berknames='$d_berknames'
X#	USG style password entries (account number first in GCOS)
X#	(define/undef)
Xd_usgnames='$d_usgnames'
X#	what type of name to use.. (bsd/usg/other)
Xnametype='$nametype'
X
X#	How portable do we want to be? Determines if we do lookups now
X#	or wait until run time.  (define/undef)
Xd_portable='$d_portable'
X
X#		news library information
X#	where is the news library (usually /usr/lib/news) may contain ~<usrname>
Xnewslib='$newslib'
X#	absolute path name to /usr/lib/news.
Xnewslibexp='$newslibexp'
X#	where is the news spool (usually /{var,usr}/spool/news)
Xnewsspool='$newsspool'
X#	active file stuff, like where is it, what is its name, etc
X#	path to the active file. (string value)
Xactive='$active'
X#	do we have an active.times file? (define/undef)
Xd_acttimes='$d_acttimes'
X#	path to the active.times file. (string value)
Xacttimes='$acttimes'
X#	organizations name. path to file, or constant string
Xorgname='$orgname'
X
X#	only one of the two following is needed
X#	command to find the posting hosts name (string value, optional)
Xphostcmd='$phostcmd'
X#	file containing posting hosts name or constant string
X#				(string value, optional)
X#
Xphost='$phost'
X
X#	what should we use? mthreads or overview
X#	use the mthreads format? (define/undef)
Xd_usemt='$d_usemt'
X#	where do we find the thread files? (string value)
Xthreaddir='$threaddir'
X#	use the overview format? (define/undef)
Xd_useov='$d_useov'
X#	where do we find the .overview fils? (string value)
Xoverviewdir='$overviewdir'
X
X#	trn start up options
Xtrn_init='$trn_init'
X#	start up with the selector? 
Xtrn_select='$trn_select'
X
X!GROK!THIS!
X$eunicefix Policy.sh
Xcase "$srcdir" in
X'') srcdir='.';;
Xesac
Xif test -f $srcdir/hints/Policy.sh ; then
X    echo "Checking for changes."
X    grep -v '^cf_' Policy.sh >Policy.tmp
X    if grep -v '^cf_' $srcdir/hints/Policy.sh | diff - Policy.tmp >/dev/null
X    then
X	echo "Policy.sh unchanged, retaining original"
X	rm Policy.sh
X    else
X	echo "installing new Policy.sh, old one left in Policy.sh.old"
X	(cd $srcdir/hints; mv Policy.sh Policy.sh.old)
X	mv Policy.sh $srcdir/hints
X    fi
X    rm Policy.tmp
Xelse
X    mv Policy.sh $srcdir/hints
Xfi
SHAR_EOF
  $shar_touch -am 0823175594 'trn-3.6/Policy.sh.SH' &&
  chmod 0644 'trn-3.6/Policy.sh.SH' ||
  echo 'restore of trn-3.6/Policy.sh.SH failed'
  shar_count="`wc -c < 'trn-3.6/Policy.sh.SH'`"
  test 4788 -eq "$shar_count" ||
    echo "trn-3.6/Policy.sh.SH: original size 4788, current size $shar_count"
  rm -f _sharnew.tmp
fi
# ============= trn-3.6/Speller.SH ==============
if test -f 'trn-3.6/Speller.SH' && test X"$1" != X"-c"; then
  echo 'x - skipping trn-3.6/Speller.SH (file already exists)'
  rm -f _sharnew.tmp
else
  > _sharnew.tmp
  echo 'x - extracting trn-3.6/Speller.SH (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/Speller.SH' &&
Xcase $CONFIG in
X    '') . ./config.sh ;;
Xesac
Xecho "Extracting Speller (with variable substitutions)"
X$spitshell >Speller <<!GROK!THIS!
X$startsh
X# $Id: Speller.SH,v 3.0 1992/02/23 21:25:39 davison Trn $
X#	Speller - a script to disassemble a posting; use ispell to spell-
X#	check the body along with the Subject, Keywords, and Summary lines;
X#	and put it all back together again.
X#
X#	Written by Eric Schnoebelen, (eric@cirr.com)
X#					Fri May 14 20:33:48 CDT 1993
X
Xexport PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh \$0; kill \$\$)
X
X# what pager you use--if you have kernal paging use cat
Xpager="\${PAGER-$pager}"
X# either the ispell program or "none"
Xispell=$ispell_prg
Xispell_options=$ispell_options
Xtest=${test-test}
Xsed=${sed-sed}
Xecho=${echo-echo}
Xcat=${cat-cat}
Xawk=${awk-awk}
Xrm=${rm-rm}
Xmv=${mv-mv}
Xdiff=${diff-diff}
Xed=${ed-ed}
Xspell=${spell-spell}
Xbasename=${basename-basename}
X!GROK!THIS!
X$spitshell >>Speller <<'!NO!SUBS!'
X
Xtmpdir="${TMPDIR-/tmp}"
X
X# get us some temporary files.
Xhdrs=$tmpdir/sp$$hdr
Xbody=$tmpdir/sp$$body
Xsig=$tmpdir/sp$$sig
Xmine=$tmpdir/sp$$mine
Xquoted=$tmpdir/sp$$quoted
Xbad=$tmpdir/sp$$bad
X
XCmdname=`$basename $0`
X
Xif $test "X$1" = X; then
X    $echo "$Cmdname: insufficent arguments" >&2
X    $echo "$Cmdname: usage: $Cmdname <filename>" >&2 
X    exit 1
Xfi
X
Xtrap "$rm -f $hdrs $body $body~ $sig $mine $quoted $bad; exit 1" 0 1 2 15
X
Xwhile $test "X$1" != X; do
X
X    # create the files, so that cat is quiet later..
X    >$hdrs
X    >$body
X    >$sig
X    >$mine
X    >$quoted
X
X    # tear the wanted headers out and toss them at body, leaving the 
X    # the remainder to be put back in later.
X
X    $awk 'BEGIN { inhdr = 1; keephdr = 0; insig = 0 } 
X	/^$/		{ 
X			inhdr = 0;
X			print $0 > Body;
X			next;
X			}
X	/^-- $/		{
X			insig = 1;
X			print $0 > Sig;
X			next;
X			}
X	/^Subject: /	{ 
X			if (inhdr) { 
X			    keephdr = 1;
X			    print $0 > Body;
X			    next;
X			}  
X			}
X	/^Keywords: /	{
X			if (inhdr) { 
X			    keephdr = 1;
X			    print $0 > Body 
X			}
X			next;
X			}
X	/^Summary: /	{ if (inhdr) { 
X			    keephdr = 1;
X			    print $0 > Body 
X			}
X			next;
X			}
X	/^[ \t]/	{
X			    if (keephdr && indhr) {
X				print $0 > Body;
X			    } else if (inhdr) {
X				print $0 > Hdrs;
X			    }
X			}
X	/^.*: /		{ if (inhdr) { 
X			    keephdr = 0;
X			    print $0 > Hdrs;
X			    next;
X			} }
X	/^.*$/		{ if (!inhdr && !insig) {
X			    print $0 > Body;
X			    next;
X			} 
X			if (insig) {
X			    print $0 > Sig;
X			    next
X			} }
X    ' Body=$body Hdrs=$hdrs Sig=$sig $1
X
X    # now rip out the quoted text from the article, so we only
X    # spell check our own pristine prose..
X
X    if $test "X$QUOTECHARS" = X ; then
X	$mv $body $mine
X    else
X	$sed -e "/^$QUOTECHARS/s/.*//" $body >$mine
X	$diff -e $mine $body > $quoted
X    fi
X
X    # ok, we've torn everything asunder, now lets spell check
X    # the guts of the article..
X
X    if $test "X$ispell" = "Xnone"; then
X	$spell $ispell_options $mine > $bad
X	if $test -s $bad ; then
X	    ($echo ---- misspelled words -------------------------------------
X	     #$cat $bad | fmt
X	     $cat $bad | pr -t -4
X	     $echo -----------------------------------------------------------
X	    ) | $pager
X	else
X	    $echo 'No misspelled words.'
X	fi
X    else
X	$ispell $ispell_options $mine
X    fi
X
X    if $test $? -ne 0; then
X	$echo "$Cmdname: error returned, leaving message untouched"
X
X	# don't want to mess with this file again, either
X	shift
X	continue
X    fi
X
X    # resurrect the body of the article..
X    if $test -s $quoted ; then
X	($cat $quoted; $echo w $body; $echo q) | $ed - $mine
X    else
X	$mv $mine $body
X    fi
X
X    # ..and re-assemble the article.
X    $cat $hdrs $body $sig >$1
X
X    # move to the next filename!
X    shift
X
Xdone
X!NO!SUBS!
X$eunicefix Speller
Xchmod 755 Speller
SHAR_EOF
  $shar_touch -am 0402172194 'trn-3.6/Speller.SH' &&
  chmod 0644 'trn-3.6/Speller.SH' ||
  echo 'restore of trn-3.6/Speller.SH failed'
  shar_count="`wc -c < 'trn-3.6/Speller.SH'`"
  test 3766 -eq "$shar_count" ||
    echo "trn-3.6/Speller.SH: original size 3766, current size $shar_count"
  rm -f _sharnew.tmp
fi
# ============= trn-3.6/newsetup.1 ==============
if test -f 'trn-3.6/newsetup.1' && test X"$1" != X"-c"; then
  echo 'x - skipping trn-3.6/newsetup.1 (file already exists)'
  rm -f _sharnew.tmp
else
  > _sharnew.tmp
  echo 'x - extracting trn-3.6/newsetup.1 (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/newsetup.1' &&
X.\" $Id: newsetup.1,v 4.4.3.1 1992/02/01 03:17:20 sob PATCH_3 sob $
X.\"
X.\" This software is Copyright 1991 by Stan Barber. 
X.\"
X.\" Permission is hereby granted to copy, reproduce, redistribute or otherwise
X.\" use this software as long as: there is no monetary profit gained
X.\" specifically from the use or reproduction of this software, it is not
X.\" sold, rented, traded or otherwise marketed, and this copyright notice is
X.\" included prominently in any copy made. 
X.\"
X.\" The authors make no claims as to the fitness or correctness of this software
X.\" for any use whatsoever, and it is provided as is. Any use of this software
X.\" is at the user's own risk. 
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.\" unbreakable dash.
X.tr \(*W-|\(bv\*(Tr
X.ie n \{\
X.ds -- \(*W-
X.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
X.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\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 NEWSETUP 1 LOCAL
X.SH NAME
Xnewsetup - a program to set up a .newsrc file
X.SH SYNOPSIS
X.B newsetup
X.SH DESCRIPTION
XThe
X.I newsetup
Xprogram creates a new .newsrc file containing an list of recommended
Xnewsgroups for the first time user.
XIf your news admin has specified such a list (usually in the file
XNEWSLIB/subscriptions) trn will use that as a default for your .newsrc.
XOtherwise you get a ridiculously small list that you'll want to add to
Xusing the \*(L"a pattern\*(R" command in trn (such as \*(L"a linux\*(R").
XIf you already have a .newsrc, it will be backed up with the name
X\*(L".newsrc-old\*(R".
X.SH ENVIRONMENT
X.IP DOTDIR 8
XWhere to put your .newsrc, if not in your home directory.
X.Sp
XDefault: $HOME
X.IP HOME 8
XYour home directory.
X.Sp
XDefault: $LOGDIR
X.IP LOGDIR 8
XYour home directory if HOME is undefined.
X.SH FILES
X/usr/lib/news/subscriptions or a reasonable facsimile
X.br
X${DOTDIR-{$HOME-$LOGDIR}}/.newsrc
X.SH SEE ALSO
Xtrn(1), rn(1), newsrc(5)
X.SH DIAGNOSTICS
X.SH BUGS
SHAR_EOF
  $shar_touch -am 0816122093 'trn-3.6/newsetup.1' &&
  chmod 0644 'trn-3.6/newsetup.1' ||
  echo 'restore of trn-3.6/newsetup.1 failed'
  shar_count="`wc -c < 'trn-3.6/newsetup.1'`"
  test 2067 -eq "$shar_count" ||
    echo "trn-3.6/newsetup.1: original size 2067, current size $shar_count"
  rm -f _sharnew.tmp
fi
# ============= trn-3.6/newsgroups.1 ==============
if test -f 'trn-3.6/newsgroups.1' && test X"$1" != X"-c"; then
  echo 'x - skipping trn-3.6/newsgroups.1 (file already exists)'
  rm -f _sharnew.tmp
else
  > _sharnew.tmp
  echo 'x - extracting trn-3.6/newsgroups.1 (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/newsgroups.1' &&
X.\" $Id: newsgroups.1,v 4.4.3.1 1992/02/01 03:17:20 sob PATCH_3 sob $
X.\"
X.\" This software is Copyright 1991 by Stan Barber. 
X.\"
X.\" Permission is hereby granted to copy, reproduce, redistribute or otherwise
X.\" use this software as long as: there is no monetary profit gained
X.\" specifically from the use or reproduction of this software, it is not
X.\" sold, rented, traded or otherwise marketed, and this copyright notice is
X.\" included prominently in any copy made. 
X.\"
X.\" The authors make no claims as to the fitness or correctness of this software
X.\" for any use whatsoever, and it is provided as is. Any use of this software
X.\" is at the user's own risk. 
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.\" unbreakable dash.
X.tr \(*W-|\(bv\*(Tr
X.ie n \{\
X.ds -- \(*W-
X.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
X.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\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 NEWSGROUPS 1 LOCAL
X.SH NAME
Xnewsgroups - a program to list unsubscribed newsgroups.
X.SH SYNOPSIS
X.B newsgroups pattern flag
X.SH DESCRIPTION
XThe
X.I newsgroups
Xprogram compares your .newsrc file with the file of active newsgroups,
Xand prints a list of unsubscribed newsgroups matching pattern.
XIf the second argument \*(L"flag\*(R" is present, only newsgroups not
Xfound in your .newsrc are listed, and the display is not paged.
XIf the second argument is missing, the display is paged, and an additional
Xlist of unsubscribed newsgroups occurring in your .newsrc is printed.
X.SH ENVIRONMENT
X.IP DOTDIR 8
XWhere to find your .newsrc, if not in your home directory.
X.Sp
XDefault: $HOME
X.IP HOME 8
XYour home directory.
X.Sp
XDefault: $LOGDIR
X.IP LOGDIR 8
XYour home directory if HOME is undefined.
X.SH FILES
X/usr/lib/news/active or a reasonable facsimile
X.br
X${DOTDIR-{$HOME-$LOGDIR}}/.newsrc
X.SH SEE ALSO
Xrn(1), newsrc(5)
X.SH DIAGNOSTICS
X.SH BUGS
XThe flag argument is a kludge.
SHAR_EOF
  $shar_touch -am 0725103093 'trn-3.6/newsgroups.1' &&
  chmod 0644 'trn-3.6/newsgroups.1' ||
  echo 'restore of trn-3.6/newsgroups.1 failed'
  shar_count="`wc -c < 'trn-3.6/newsgroups.1'`"
  test 2051 -eq "$shar_count" ||
    echo "trn-3.6/newsgroups.1: original size 2051, current size $shar_count"
  rm -f _sharnew.tmp
fi
# ============= trn-3.6/trn.1 ==============
if test -f 'trn-3.6/trn.1' && test X"$1" != X"-c"; then
  echo 'x - skipping trn-3.6/trn.1 (file already exists)'
  rm -f _sharnew.tmp
else
  > _sharnew.tmp
  echo 'x - extracting trn-3.6/trn.1 (text)'
  sed 's/^X//' << 'SHAR_EOF' > 'trn-3.6/trn.1' &&
X.\" $Id: trn.1,v 3.0 1992/12/14 00:14:10 davison Trn $
X.\"
X.\" This software is Copyright 1991 by Stan Barber. 
X.\"
X.\" Permission is hereby granted to copy, reproduce, redistribute or otherwise
X.\" use this software as long as: there is no monetary profit gained
X.\" specifically from the use or reproduction of this software, it is not
X.\" sold, rented, traded or otherwise marketed, and this copyright notice is
X.\" included prominently in any copy made. 
X.\"
X.\" The authors make no claims as to the fitness or correctness of this software
X.\" for any use whatsoever, and it is provided as is. Any use of this software
X.\" is at the user's own risk. 
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.de Ip
X.br
X.ie \\n.$>=3 .ne \\$3
X.el .ne 3
X.IP "\\$1" \\$2
X..
X.\" unbreakable dash.
X.tr \(*W-|\(bv\*(Tr
X.ie n \{\
X.ds -- \(*W-
X.ds qq ""
X.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
X.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\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 TRN 1 LOCAL
X.UC 6
X.SH NAME
Xtrn - threaded read news program
X.SH SYNOPSIS
X.B trn [options] [newsgroups]
X.SH DESCRIPTION
X.I Trn
Xis a threaded version of
X.I rn,
Xwhich is a replacement for the readnews(1) program.
XBeing \*(L"threaded\*(R" means that the articles are interconnected
Xin reply order.
XEach discussion thread is a tree of articles where all the
Xreply (child) articles branch off from their respective originating
X(parent) articles.
XA representation of this tree (or a portion of it) is displayed in the
Xarticle header as you are reading news.
XThis gives you a better feel for how all the articles are related, and
Xeven lets you see at a glance when an article has replies \*(-- a good
Xthing to check before posting.
XIn addition,
X.I trn
Xhas a thread selector that allows you to quickly browse through a
Xlist of subjects and choose the ones you find interesting.
XThis thread selector sorts articles according to various criteria
Xand can be switched
Xinto various display modes that allows you to pick all the subjects
Xseparately (threads can have multiple subjects) or even pick individual
Xarticles.
XAny items you don't select can be saved for reading later or
Xmarked as read with a single keystroke.
X.PP
XIf you are already familiar with
X.I trn
Xyou may just want to read the
X.IR "WHAT'S NEW" 
Xsection.
XPeople upgrading from
X.I rn
Xwill probably want to pay attention to the sections on
X.IR "The Selector" ,
X.IR "The Tree Display" ,
Xand the aforementioned
X.IR "WHAT'S NEW" .
XIf you're impatient, just dive in and get started.
XAll the regular commands will be familiar to an
X.I rn
Xor
X.I trn
Xuser, and the on-line help will give you a quick run-down of what commands
Xare available (just type \*(L'h\*(R' from any prompt).
XI'd also suggest using the command:
X.Sp
X    trn \-x \-X
X.Sp
Xto make sure some of the best features are turned on.
X.Sh "Starting Trn"
XIf no newsgroups are specified, all the newsgroups which have unread news
Xwill be presented to the user in the order in which they occur in the
X.I .newsrc
Xfile.
XAt the prompt for each group you can choose to read it, skip it, move it,
Xetc.
XIf a list of newsgroups is provided on the command line,
X.I trn
Xwill start up in \*(L"add\*(R" mode, using the list as a set of patterns to
Xadd new newsgroups and restrict which newsgroups are displayed (see also
Xthe discussion of the \*(L'a\*(R' command on the newsgroup-selection level).
X.PP
X.I Trn
Xoperates on four levels: the newsgroup-selection level, the thread
Xselector, the article-reading level, and the paging level.
XEach level has its own set of commands, and its own help menu.
XAt the paging level (the bottom level)
X.I trn
Xbehaves much like the
X.IR more (1)
Xprogram.
XAt the article-reading level articles are presented to you in the
Xorder of their replies, with the subjects being ordered by the date
Xof the oldest unread article (though there are commands for changing
Xthe default display order).
XIn the thread selector you are presented with the subjects and
X(usually) authors associated with each discussion thread, and given
Xa chance to choose which ones you wish to read now, save for later, or
Xmanipulate in some way.
XAt the newsgroup-selection level (the top level), you may specify which
Xnewsgroup you want next, or read them in the default order, which is the
Xorder that the newsgroups occur in your
X.I .newsrc
Xfile.
X(You will therefore want to rearrange your
X.I .newsrc
Xfile to put the most interesting newsgroups first.
XThis can be done with the \*(L'm\*(R' command on the Newsgroup Selection level.
XWARNING: invoking readnews/vnews (the old user interface) in any way (including
Xas a news checker in your login sequence!) will cause your
X.I .newsrc
Xto be disarranged again.)
X.PP
XOn any level, at ANY prompt, help is available by typing an \*(L'h\*(R'.
XThis gives you a summary of available commands and what they do.
XRemember this command, you'll need it.
X.PP
XTyping space to any question means to do the normal thing.
XYou will know what that is because
Xevery prompt has a list of several plausible commands enclosed in
Xsquare brackets.
XThe first command in the list is the one which will be done if you type
Xa space.
X(All input is done in cbreak mode, so carriage returns should not be typed
Xto terminate anything except certain multi-character commands.
XThose commands will be obvious in the discussion below because they take an
Xargument.)
X.PP
XUpon startup,
X.I trn
Xwill do several things:
X.Ip 1. 4
XIt will look for your
X.I .newsrc
Xfile, which is your list of subscribed-to
Xnewsgroups.
XIf
X.I trn
Xdoesn't find a
X.IR .newsrc ,
Xit will create one.
XIf it does find one, it will back it up under the name \*(L".\|oldnewsrc\*(R".
X.Ip 2. 4
XIt will input your
X.I .newsrc
Xfile, listing out the first several newsgroups
Xwith unread news.
X.Ip 3. 4
XIt will perform certain consistency checks on your
X.IR .newsrc .
XIf your
X.I .newsrc
Xis out of date in any of several ways,
X.I trn
Xwill warn you and patch it up for you, but you may have to wait a little
Xlonger for it to start up.
X.Ip 4. 4
X.I Trn
Xwill next check to see if any new newsgroups have been created, and give
Xyou the opportunity to add them to your
X.IR .newsrc .
X.Ip 5. 4
X.I Trn
Xgoes into the top prompt level \*(-- the newsgroup-selection level.
X.Sh "Newsgroup Selection Level"
XIn this section the words \*(L"next\*(R" and \*(L"previous\*(R" refer to
Xthe ordering of the newsgroups in your
X.I .newsrc
Xfile.
XOn the newsgroup-selection level, the prompt looks like this:
X.Sp
X====== 17 unread articles in talk.blurfl \*(-- read now? [ynq]
X.Sp
Xunless the group is set for unthreaded reading, in which case the first
Xsix characters are \*(L"******\*(R".
XThe following commands may be given at this level:
X.Ip \+ 8
XEnter this newsgroup through the selector.
X.Ip y 8
XBegin reading this newsgroup now.
X.Ip SP 8
XEnter the newsgroup by executing the default command listed in []'s.
X.Ip .command 8
XDo this newsgroup now, but execute
X.I command
Xbefore displaying anything.
XThe command will be interpreted as if typed on the article selection level.
X.Ip = 8
XStart this newsgroup, but list subjects before displaying articles.
X.Ip U 8
XEnter this newsgroup through the \*(L"Set unread\*(R" prompt.
X.Ip t 8
XToggle the newsgroup between threaded and unthreaded reading.
XThe default is threaded, and the current setting is stored in your .newsrc.
X.Ip n 8
XGo to the next newsgroup with unread news.
X.Ip N 8
XGo to the next newsgroup.
X.Ip p 8
XGo to the previous newsgroup with unread news.
XIf there is none, stay at the current newsgroup.
X.Ip P 8
XGo to the previous newsgroup.
X.Ip \- 8
XGo to the previously displayed newsgroup (regardless of whether it is
Xbefore or after the current one in the list).
X.Ip 1 8
XGo to the first newsgroup.
X.Ip ^ 8
XGo to the first newsgroup with unread news.
X.Ip $ 8
XGo to the end of the newsgroups list.
X.Ip "g newsgroup" 8
XGo to
X.IR newsgroup ,
Xwhich can be the group's name or a zero-relative number of the groups in
Xyour .newsrc (see the \*(L'L\*(R' command to list your .newsrc).
XIf it isn't currently subscribed to, you will be asked if you want to
Xsubscribe.
X.Ip "/pattern" 8
XScan forward for a newsgroup matching
X.IR pattern .
XPatterns do globbing like filenames, i.\|e., use * to match any sequence
Xof characters, and [] to specify a list of characters to match.
XUse . to match a single character.
XUnlike normal filename globbing, newsgroup-searching is not anchored to
Xthe front and back of the filename, i.\|e. \*(L"/ski\*(R" will find
Xrec.skiing.
XYou may use ^ or $ to anchor the front or back of the search:
X\*(L"/^test$\*(R" will find newsgroup test and nothing else
XIf you want to include newsgroups with 0 unread articles, append /r.
XIf the newsgroup is not found between the current newsgroup and the last
Xnewsgroup, the search will wrap around to the beginning.
X.Ip "?pattern" 8
XSame as /, but search backwards.
X.Ip u 8
XUnsubscribe from the current newsgroup.
X.Ip "l string" 8
XList newsgroups not subscribed to which contain the string specified.
X.Ip L 8 13v
XLists the current state of the
X.IR .newsrc ,
Xalong with status information.
X.Sp
X.nf
X    \h'|0.5i'Status    \h'|2i'Meaning
X    \h'|0.5i'<number>  \h'|2i'Count of unread articles in newsgroup.
X    \h'|0.5i'READ      \h'|2i'No unread articles in newsgroup.
X    \h'|0.5i'UNSUB     \h'|2i'Unsubscribed newsgroup.
X    \h'|0.5i'BOGUS     \h'|2i'Bogus newsgroup.
X    \h'|0.5i'JUNK      \h'|2i'Ignored line in .newsrc
X\h'|2i'(e.\|g. readnews \*(L"options\*(R" line).
X.fi
X.Sp
X(A bogus newsgroup is one that is not in the list of active newsgroups
Xin the active file, which on most systems is /usr/lib/news/active unless
Xyou use NNTP.)
X.Ip "m {name}" 8
XMove the named newsgroup somewhere else in the
X.IR .newsrc .
XIf no name is given, the current newsgroup is moved.
XThere are a number of ways to specify where you want the newsgroup \*(-- type
Xh for help when it asks where you want to put it.
X.Ip c 8
XCatch up \*(-- mark all unread articles in this newsgroup as read.
X.Ip A 8
XAbandon the changes made to the current newsgroup since
X.I trn
Xwas started.
XUseful when you accidentally mark a group as read.
X.Ip "o {pattern}" 8
X.Ip "O {pattern}" 8
XOnly display those newsgroups whose name matches
X.IR pattern .
XPatterns are the same as for the \*(L'/\*(R' command.
XMultiple patterns may be separated by spaces, just as on the
Xcommand line.
XThe restriction will remain in effect either until there are no articles
Xleft in the restricted set of newsgroups, or another restriction command
Xis given.
XSince
X.I pattern
Xis optional, \*(L'o\*(R' by itself will remove the
Xrestriction.
XUsing \*(L'O\*(R' will omit empty groups from the cycle.
X.Ip "a pattern" 8
XAdd unsubscribed newsgroups matching
X.IR pattern .
XIf any matching newsgroups are found, you will be asked for each one whether
Xyou would like to add it.
XIf you want to add all the newsgroups, you can
Xtype \*(L'Y\*(R' and they will be added the the end of the
X.I .newsrc
Xfile.
XIf you don't want to subscribe, all
Xthe remaining groups can be ignored by typing \*(L'N\*(R'.
XAfter any new newsgroups have been added, the \*(L'a\*(R' command also
Xrestricts the current set of newsgroups just like the \*(L'O\*(R' command
Xdoes.
X.Ip & 8
XPrint out the current status of command-line switches and any newsgroup
Xrestrictions.
X.Ip "&switch {switch}" 8
XSet additional command-line switches.
X.Ip && 8
XPrint out the current macro definitions.
X.Ip "&&keys commands" 8
XDefine additional macros.
X.Ip !command 8
XEscape to a subshell.
XOne exclamation mark (!) leaves you in your own news directory.
XA double exclamation mark (!!) leaves you in the spool
Xdirectory for news, which is usually /usr/spool/news unless you're
Xusing NNTP to read news.
XThe environment variable SHELL will be used if defined.
XIf
X.I command
Xis null, an interactive shell is started.
X.Ip v 8
XPrint the current version number and information on where to send bug
Xreports.
X.Ip q 8
XQuit.
X.Ip x 8
XQuit, restoring .newsrc to its state at startup of
X.IR trn .
XThe .newsrc you would have had if you had exited with \*(L'q\*(R' will be
Xcalled .newnewsrc, in case you didn't really want to type \*(L'x\*(R'.
X.Ip ^K 8
XEdit the global list of memorized commands (in the global KILL file) that
Xyou wish to be performed in every newsgroup as it is started up (that is, when
Xit is selected at the newsgroup-selection level).
XThis file contains commands (one per line) such as /subject/:j or /author/f:+
Xto kill or select articles based on the indicated search criteria.
XThere is also a local list of commands for each newsgroup that can contain
Xkill/selection commands tailored for each specific group.
XBecause of the overhead involved in searching for articles to kill, it is
Xbetter if possible to use a local list rather than the global one.
XLocal memorized commands are usually maintained by using the \*(L'A\*(R'
Xor \*(L'T\*(R' commands from the article/pager level or in the selector.
XThere is also a K search modifier that appends any search command you
Xdesire to add.
XIt is also possible to manually edit the file with the \*(L'^K\*(R'
Xcommand from anywhere inside a newsgroup.
XIf either of the environment variables VISUAL or EDITOR is set, the
Xspecified editor will be invoked; otherwise a default editor
Xis invoked on the KILL file.
X.Sh "The Selector"
XMost people who don't have all day to read news will want to enter a newsgroup
Xby way of the selector.
XThis is accomplished by using the \*(L'+\*(R'
Xcommand at the newsgroup-selection or article/pager levels.
XIn fact, this may be the default command for entering a newsgroup, depending
Xon how your version of
X.I trn
Xwas configured and your use of the
X.B \-X
Xoption.
X.PP
XThe selector displays a list of articles by their subjects and (usually)
Xauthors.
XThe articles are grouped into threads by default (which may list multiple
Xsubjects per selectable item if the subject has changed during the discussion)
Xand ordered by the date of their oldest unread article.
XThread or subject groups are also shown with a count of the number of
Xarticles in each group.
XEach selectable item is preceded by a letter or number that can be typed
Xto toggle its selection.
XItems that are selected are flagged with a \*(L'+\*(R' after their letter.
XGroups that have only some of their articles selected are flagged with
Xa \*(L'*\*(R'.
XYou can change the selector's mode (to pick each subject separately or
Xpick individual articles), order the list by a variety of sort
Xcriteria, and switch the author display between its long, medium and short
Xstyles using the commands detailed below.
X.PP
XThe following commands are available in the selector:
X.Ip "a-z,0-9,A-Z" 8
XSelect/deselect the indicated item by its letter or number.
XThere are quite a few letters omitted from the alpha characters to be
Xtyped as commands \*(-- see below.
XAlso, the variable SELECTCHARS is available to customize which characters
Xyou want to be used as selection letters, overriding their command function.
X.Ip SP 8
XPerform the default command.
XThis is usually > for most pages, and Z on the last page (although D and X
Xare also quite popular).
X.Ip CR 8
XBegin reading.
XIf no articles are selected, the current item is selected (unless you've
Xmarked it as killed).
X.Ip "Z,TAB" 8
XBegin reading.
XIf no articles are selected, read all unread articles.
X.Ip "\*(L'.\*(R'" 8
XToggle the current item's selection (the one under the cursor).
X.Ip * 8
XSame as \*(L'.\*(R' except that it affects all articles with the same
Xsubject (useful in the article selector).
X.Ip # 8
XMake an overriding selection that reads the current item only,
Xtemporarily ignoring all other selections.
X.Ip "k, \*(L',\*(R'" 8
XMark the current item as killed.
X.Ip "m, \e" 8
XUnmark the current item.
X.Ip \- 8
XSet a range, as in a \- k.
XRepeats the last marking action: selection, deselection, killing,
Xor unmarking.
X.Ip @ 8
XToggle all visible selections.
X.Ip M 8
XMark the current item's article(s) to return on newsgroup exit
Xand kill the item.
X.Ip Y 8
XYank back and select the marked-to-return articles, clearing their
Xto-return status.
X.Ip E 8
XExclude all unselected items from the selection list (narrow the display).
XPress it again to pick from all available items.
X.Ip "n, ]" 8
XMove down to the next item (try the down-arrow keypad key also).
X.Ip "p, [" 8
XMove up to the previous item (try the up-arrow keypad key also).
X.Ip < 8
XGo to previous page (try the left-arrow keypad key also).
X.Ip > 8
XGo to next page (try the right-arrow keypad key also).
X.Ip ^ 8
XGo to the first page.
X.Ip $ 8
XGo to the last page.
X.Ip S 8
XSet the items the selector displays: threads, subjects or articles.
XIf the group is unthreaded setting this to threads will thread the
Xgroup.
X.Ip = 8
XSwitch between the article selector and the subject/thread selector.
X.Ip O 8
XPick the order for the items: date, subject, author, item count
X(for thread/subject groups), and a subject-date grouping of
Xindividual articles.
XTyping the selection in lower-case will sort the articles in the
Xdefault direction, while using upper-case will reverse the sort.
XThere is a separate default sort order for the subject/thread selector
Xand the article selector.
XSee the
X.B \-O
Xoption to set your favorite selector mode and sort order as the default.
X.Ip R 8
XReverse the current sort order.
X.Ip L 8
XSwitch the selector's display between the long, medium and short
Xdisplay styles.
XSee the
X.B \-x
Xoption to set your favorite style as the default.
X.Ip U 8
XSwitch between selecting unread/read articles.
X.Ip X 8
XMark all unselected articles as read and start reading.
X.Ip D 8
XMark unselected articles on the current page as read and
Xbegin reading if articles are selected, otherwise go to the next page.
X.Ip J 8
XMark all selected articles as read (useful after performing some action
Xon them with the \*(L':\*(R' command).
X.Ip c 8
XCatch up \*(-- marks ALL articles as read without affecting their cross-posted
Xcounterparts.
X.Ip A 8
XAdd a subject-search command to the memorized list (a.\|k.\|a. a KILL file)
Xfor this group.
XYou are prompted to choose selection (+), junking (j),
Xselection including all replies (.) or junking including all replies (,).
XIf the thread has more than one subject the first subject is the one
Xchosen for the memorized command.
X.Ip T 8
XAdd a thread-oriented command to the memorized list for this group.
XYou are prompted to choose selecting the thread (+), junking the
Xthread (j), or clearing the auto-selection/junking for the thread (c).
X(Note: there are three other options (\*(L'.\*(R', \*(L',\*(R',
Xand \*(L'C\*(R') on the
Xarticle-reading level \*(-- look there for an explanation of their use.)
X.Ip ^K 8
XEdit the local list of memorized commands (a.\|k.\|a. a KILL file) for this
Xnewsgroup.
XA detailed description of memorized commands is found in the Article Selection
Xsection.
X.Ip ":command" 8
XApply a command to all the selected threads or their selected articles.
XYou can also use ":E" to end a binary extraction or ":p" to post a new article.
XUse \*(L"::command\*(R" to apply it to all non-selected threads/articles.
X.Sp
XApplicable commands include \*(L'+\*(R'/\*(L'-\*(R' (select/deselect
Xan article), \*(L"++\*(R"/\*(L"--\*(R" (select/deselect a thread),
X\&\*(L"T+\*(R" (auto-select the entire thread), \*(L"Tj\*(R"
X(auto-junk the entire thread), \*(L't\*(R'
X(display article tree), \*(L"s dest\*(R" (save article to a destination),
X\*(L"e dir\*(R" (extract to directory), \*(L'E\*(R' (end partial uudecode),
Xas well as: S, |, w, W, m, M, j, = and \*(L',\*(R'.
X.Ip ":.command" 8
XApply a command to the current thread or the selected articles in the
Xcurrent thread.
XUse \*(L"::.command\*(R" to apply a command to the unselected articles in
Xthe current thread.
X.Ip "/pattern" 8
XScan all articles for a subject containing
X.I pattern
Xand select it.
X.Ip "/pattern/modifiers:command{:command}" 8
XApply the commands listed to articles matching the search command (possibly
Xwith h, a, b, r, or K modifiers).
XThe default action, if no command is specified, is to select the article's
Xitem in the selector (e.\|g. the entire thread (\*(L"++\*(R") in the thread
Xselector).
XSee the section on Regular Expressions and the description of pattern
Xsearching in the Article Selection section.
X.Sp
XOne example: to scan all the unread articles looking for \*(L"topic\*(R"
Xanywhere in the article and then select its group and save the articles to
Xthe files topic.1, topic.2, etc. use \*(L"/topic/a:++:s topic.%#\*(R".
X.Ip N 8
XGo to the next newsgroup with unread news.
X.Ip P 8
XGo to the previous newsgroup with unread news.
X.Ip & 8
XDisplay or set the current status of command-line switches.
X.Ip && 8
XDisplay or set the current macro definitions.
X.Ip !command 8
XEscape to a subshell.
X.Ip q 8
XQuit this group.
X.Ip "ESC,+" 8
XQuit the selector to the article level.
XNote: ESC won't work if trn has mapped your arrow keys with default macros
Xand the first character that your arrow keys send is an ESC.
X.Ip Q 8
XQuit the current newsgroup and return to the newsgroup-selection prompt
Xfor this group.
X.Sh "Article-Reading Level"
XOn the article-reading level,
X.I trn
Xdisplays unread articles in thread sequence (reading each article and its
Xreplies before going on to another topic) unless threads are disabled for
Xa particular group, in which case the default order is the order they
Xarrived at your site (numeric sequence).
XIn either case if you use the subject-search command (^N) you will switch
Xto reading the articles in date order within each matching subject.
X(Making selections in the subject selector or using the
X.B \-S
Xswitch will automatically turn subject search mode on in an unthreaded group.)
X.Sp
XOn the article-reading level you are
X.I not
Xasked whether you want to read an article before the article is displayed;
Xrather,
X.I trn
Xsimply displays the first page (or portion of a page, at low baud rates) of an
Xarticle and asks if you want to continue.
XThe normal article-reading prompt comes at the END of an article
X(although article-reading commands can also be given from within the middle
Xof an article in addition to the pager level commands).
XThe prompt at the end of an article looks like this:
X.Sp 
XEnd of article 248 (of 257) \*(-- what next? [npq]
X.Sp
XThe following are the options at this point:
X.Ip n,SP 8
XScan forward for next unread article.
X(Note: the \*(L'n\*(R' (next) command when typed at the end of an article
Xdoes not mark the article as read, since an article is automatically marked
Xas read after the last line of it is printed.
XIt is therefore possible to type a sequence such as \*(L'mn\*(R' and leave
Xthe article marked as unread.
XThe fact that an article is marked as read by typing n, N, ^N, e, s, S, |,
Xw, or W within the MIDDLE of the article is in fact a special case.)
X.Ip N 8
XGo to the next article.
X.Ip ^N 8
XFind the next article with the same subject in date order.
XThis also makes subject search mode (^N) the default command at the end
Xof an article.
X.Ip p 8
XScan backward for previous unread article.
XIf there is none, stay at the current article.
X.Ip P 8
XGo to the previous article.
X.Ip \- 8
XGo to the previously displayed article (regardless of whether that article
Xis before or after this article in the normal sequence).
X.Ip ^P 8
XFind the previous article with the same subject in date order.
XMakes subject search mode (^N) the default.
X.Ip _N 8
XGo to the next article in numeric sequence.
X.Ip _P 8
XGo to the previous article in numeric sequence.
X.Ip "<, >" 8
XBrowse the previous/next selected thread/subject.
XIf no selections have been made, all the threads that had unread news when
Xyou entered the newsgroup (or last left the selector) are treated
Xas selected.
XEntering an empty newsgroup makes all the already-read threads available
Xfor browsing.
X.Ip "[, ]" 8
XProceed to the left/right in the article tree.
XVisits already-read articles as well as empty nodes.
XTry using the left-/right-arrow keys also.
X.Ip "{, }" 8
XGo to the root/leaf of the article tree, even if the node is
Xalready read or empty.
XProceeds to the very first/last node if you're already at a root/leaf in
Xa multi-root thread.
X.Ip "(, )" 8
XGo to the previous/next sibling in the thread, including \*(L"cousin\*(R"
Xsiblings.
XTry using the up-/down-arrow keys also.
X.Ip t 8
XDisplay the entire article tree and all its associated subjects.
XIf the group is not currently threaded, it will become threaded to
Xprocess this command.
X.Ip ^R 8
XRestart the current article.
X.Ip v 8
XRestart the current article verbosely, displaying the entire header.
X.Ip ^L 8
XRefresh the screen.
X.Ip ^X 8
XRestart the current article, and decrypt as a rot13 message.
X.Ip X 8
XRefresh the screen, and decrypt as a rot13 message.
X.Ip b 8
XBack up one page.
X.Ip ^E 8
XDisplay the last page of the article.
X.Ip q 8
XQuit this newsgroup and go back to the newsgroup-selection level.
X.Ip ^ 8
XGo to the first unread article.
X.Ip $ 8
XGo to the last article (actually, one past the last article).
X.Ip "number" 8
XGo to the numbered article.
X.Ip _C 8
XSwitch to next available charset conversion.
X.Ip "range{,range}:command{:command}" 8
XApply a set of commands to a set of articles.
XA range consists of either <article number> or
X<article\ number>\-<article\ number>.
XA dot \*(L'.\*(R' represents the current article, and a dollar
Xsign \*(L'$\*(R' represents the last article.
X.Sp
XApplicable commands include \*(L'm\*(R' (mark as unread), \*(L'M\*(R'
X(mark as read-until-exit), \*(L'j\*(R' (mark as read), \*(L"s dest\*(R"
X(save to a destination), \*(L"e dir\*(R" (extract to directory),
X\&\*(L"!command\*(R" (shell escape), \*(L"=\*(R" (print the subject),
X\&\*(L'+\*(R'/\*(L'-\*(R' (select/deselect the article),
X\&\*(L'T+\*(R' (auto-select the entire thread), \*(L'Tj\*(R'
X(auto-junk the entire thread), \*(L"++\*(R"/\*(L"--\*(R" (select/deselect
Xthe associated thread), \*(L'C\*(R' (cancel),
Xas well as S, |, w, W, and t.
X.Ip ":command" 8
XApply a command to all the selected threads or their selected articles.
XUse \*(L"::command\*(R" to apply it to all non-selected threads/articles.
XFor applicable commands, see the discussion above for the range command.
X.Ip ":.command" 8
XApply a command to the current thread or the selected articles in the
Xcurrent thread.
XUse \*(L"::.command\*(R" to apply a command to the unselected articles in
Xthe current thread.
X.Ip j 8
XJunk the current article (i.\|e. mark it as read).
XIf this command is used from within an article, you are left at the end of
Xthe article, unlike \*(L'n\*(R', which looks for the next article.
X.Ip m 8
XMark the current article as still unread.
X(If you don't want to see this article for a while you're probably better
Xoff using M instead of m, otherwise this article might get picked again
Xas the first available article sooner than you'd like.)
X.Ip M 8
XMark the current article to return on newsgroup exit.
XUntil then, the current article will be marked as read.
XThis is useful for returning to an article in another session.
X.Ip Y 8
XYank back the marked-to-return articles, clearing their to-return status.
XIf you are reading selected articles, the yanked articles come back selected.
X.Ip /pattern 8
XScan forward for article containing
X.I pattern
Xin the subject.
XSee the Regular Expressions section.
XTogether with the escape substitution facility described later, it becomes
Xeasy to search for various attributes of the current article, such as
Xsubject, article ID, author name, etc.
XThe previous pattern can be recalled with ESC.
XIf
X.I pattern
Xis omitted, the previous pattern is assumed.
X.Ip /pattern/f 8
XScan forward for article containing
X.I pattern
Xin the from line.
XIf you are using thread files the article data you are matching against
XMAY contain only the real name of the user.
XIf you want to always match the full from line, see the following
Xheader-matching option that will read in the full from-line data if
Xit is not already available.
X.Ip /pattern/Hheader 8
XScan forward for article containing
X.I pattern
Xin the indicated
X.I header.
XBecause we scan the entire string up to the end of the modifiers, this
Xmodifier must be the last one.
XFor example, \*(L"/jsmoe@somesite.com/rHfrom:m+\*(R" will mark all
Xarticles from \*(L"jsmoe@somesite.com\*(R" as unread and select them.
XNote that if the header line isn't one that trn recognizes in its
Xheader parser, you'll have to use the following full-header matching.
X.Ip /pattern/h 8
XScan forward for an article containing
X.I pattern
Xin the header.
X.Ip /pattern/a 8
XScan forward for an article containing
X.I pattern
Xanywhere in the article.
X.Ip /pattern/b 8
XScan forward for an article containing
X.I pattern
Xin the body of the article, but not the signature.
X(The signature must be properly delimited to be ignored, however.)
X.Ip /pattern/B 8
XScan forward for an article containing
X.I pattern
Xanywhere in the body of the article.
X.Ip /pattern/r 8
XScan read articles also.
X.Ip /pattern/c 8
XMake search case sensitive.
XOrdinarily upper- and lower-case are considered the same.
X.Ip /pattern/t 8
XForce the search to start at the top of the group (useful while reading
Xthe group, since the default is to start at the current article).
X.Ip /pattern/I 8
XForce the search to ignore the THRU line when executed as a memorized
Xcommand.
XIf the command portion is a selection command (i.\|e. it starts with
Xa \*(L'+\*(R' or a \*(L'.\*(R') this is the default behavior.
X.Ip /pattern/N 8
XForce the search to NOT ignore the THRU line when executed as a memorized
Xcommand (useful on selection commands -- see also \-k).
X.Ip "/pattern/modifiers:command{:command}" 8
XApply the commands listed to articles matching the search command (possibly
Xwith h, a, b, or r modifiers).
XApplicable commands include \*(L'm\*(R' (mark as UNread), \*(L'M\*(R'
X(mark as read-until-exit), \*(L'j\*(R' (junk -- mark as read in all groups),
X\&\*(L'x\*(R' (mark as read in this group),
X\&\*(L"s dest\*(R" (save to a dest), \*(L"e dir\*(R" (extract to dir),
X\&\*(L"!command\*(R" (shell escape), \*(L"=\*(R" (print the subject),
X\&\*(L'+\*(R' (select the article), \*(L'-\*(R' deselect the article,
X\&\*(L'T+\*(R' (auto-select the entire thread), \*(L'Tj\*(R'
X(auto-junk the entire thread), \*(L"++\*(R" (select the associated thread),
X\&\*(L"--\*(R" deselect the associated thread), and \*(L'C\*(R' (cancel).
XIf the first command is \*(L'm\*(R' or \*(L'M\*(R', modifier r is assumed.
XA K may be included in the modifiers (not the commands) to cause the
Xentire command (sans K) to be saved to the local KILL file, where it will
Xbe applied to every article that shows up in the newsgroup.
X.Sp
XFor example, to save all articles in a given newsgroup to the line printer
Xand mark them read, use \*(L"/^/\||\|lpr:j\*(R".
XIf you type \*(L"/^/K\||\|lpr:j\*(R", this will happen every time you enter the
Xnewsgroup.
X.Ip ?pattern 8
XScan backward for article containing
X.I pattern
Xin the subject.
XMay be modified as the forward search is: ?pattern?modifiers[:commands].
XIt is likely that you will want an r modifier when scanning backward.
X.Ip k 8
XMark as read all articles with the same subject as the current article.
X(Note: there is no single character command to temporarily mark as read (M
Xcommand) articles matching the current subject.
XThat can be done with \*(L"/<ESC>s/M\*(R", however.)
X.Ip \, 8
XMark the current article and all its replies as read.
X.Ip J 8
XJunk all the articles in the current thread, even if it contains multiple
Xsubjects.
X.Ip A 8
XAdd a subject-search command to the memorized list for this group (in the
XKILL file).
XYou are prompted to choose selection (+), junking (j),
Xselection including all replies (.) or junking including all replies (,).
X.Ip K 8
XThis is a synonym for the command \*(L"Aj\*(R" which adds a command to
Xjunk the current subject to the memorized commands for the group.
XSee also the K modifier on searches above.
X.Ip T 8
XAdd a thread-oriented command to the memorized list for this group.
XYou are prompted to choose selection of entire thread (+), junking of
Xentire thread (j), selection of an article and its replies (.), junking
Xof an article and its replies (,), clearing the auto-selection/junking
Xfor this thread (c), or clearing the auto-selection/junking for an article
Xand its replies (C).
X.Ip ^K 8
XEdit the local list of memorized commands (a.\|k.\|a. a KILL file) for this
Xnewsgroup.
XEach line of the KILL file is either a subject-affecting command of the
Xform /pattern/x or a thread-affecting command of the form <message-id> Tx.
XThe first line in the KILL file has the form \*(L"THRU <number>\*(R",
Xwhich tells
X.I trn
Xthe maximum article number that the KILL file has been applied to.
XThe THRU value is usually only used to keep header or article searches
Xfrom happening multiple times.
XSubject and from-line searches are quite fast if the group has cached data
Xaround (e.\|g. a .\|thread or .\|overview file).
XIf it doesn't, the THRU line is used to set a lower boundary on the
Xsearch to keep the startup time as short as possible.
XIf trn skipped some selections (or you're not sure), wait for the group to
Xfinish being cached (e.\|g. visiting the selector forces the caching of
Xall unread articles), quit the group, and re-enter.
X.Sp
XTo see only newgroup articles in the control newsgroup, for instance, you
Xmight include the line
X.Sp
X/newgroup/:+
X.Sp
Xwhich selects all subjects containing \*(L"newgroup\*(R".
XYou can add lines automatically via the A and T commands as well as the
XK search modifier, but editing is the only way to remove subject commands
X(thread commands die automatically as the thread dies).
XIf either of the environment variables VISUAL or EDITOR is set, the
Xspecified editor will be invoked; otherwise a default editor (normally vi)
Xis invoked on the KILL file.
X.Sp
XThe KILL file may also contain switch-setting lines beginning with \*(L'&\*(R'
X(see the section on \*(L"Options\*(R") and special commands beginning
Xwith \*(L'*\*(R'.
XThere are two such commands at the moment:  \*(L"*j\*(R" (junk all articles
Xfrom THRU to the end of the group) and \*(L"*X\*(R" (junk all
X.I unselected
Xarticles from THRU to the end of the group).
XAdditionally, any line beginning with \*(L'X\*(R' is executed on exit
Xfrom the newsgroup rather than on entrance.
XThis can be used to set switches back to a default value.
XOne use for this capability is to set your save directory to a custom value
Xupon entry to a newsgroup and set it back on exit using the \-ESAVEDIR option.
XSee also the
X.B \-/
Xoption for another solution to multiple save directories without using KILL
Xfiles.
X.Ip r 8
XReply through net mail.
XThe environment variables MAILPOSTER and MAILHEADER may be used to modify
Xthe mailing behavior of
X.I trn
X(see the environment section).
XIf the current article does not exist (such as the \*(L"End of newsgroup\*(R"
Xpseudo-article you can get to with a \*(L'$\*(R' command), invokes the mailer
Xto nobody in particular.
X.Ip R 8
XReply, including the current article in the header file generated.
X(See \*(L'F\*(R' command below).
XThe YOUSAID environment variable controls the format of the attribution line.
X.Ip ^F 8
XForward the current article.
X.Ip f 8
XSubmit a follow-up article.
XIf the current article does not exist (such as the \*(L"End of newsgroup\*(R"
Xpseudo-article you can get to with a \*(L'$\*(R' command), posts an original
X(root) article.
X.Ip F 8
XSubmit a follow-up article, and include the old article, with lines prefixed
Xeither by \*(L">\*(R" or by the argument to the
X.B \-F
Xswitch.
X.I Trn
Xwill attempt to provide an attribution line in front of the quoted article,
Xgenerated from the From: line of the article.
XUnfortunately, the From: line doesn't always contain the right name; you
Xshould double check it against the signature and change it if necessary,
Xor you may have to apologize for quoting the wrong person.
XThe environment variables NEWSPOSTER, NEWSHEADER and ATTRIBUTION may be
Xused to modify the posting behavior of
X.I trn
X(see environment section).
X.Ip C 8
XCancel the current article, but only if you are the contributor or superuser.
X.Ip z 8
XSupersede the current article, but only if you are the contributor.
X.Ip Z 8
XSame as the \*(L'z\*(R' command, but you start with a copy of the
Xoriginal article to work with.
X.Ip c 8
XCatch up in this newsgroup; i.\|e., mark all articles as read.
X.Ip U 8
XMark some or all articles as unread.
XYou can choose to mark the current thread, sub-thread (the current article
Xand its replies), all the articles, or start up the selector
Xto choose specific articles to set unread.
X.Ip u 8
XUnsubscribe from this newsgroup.
X.Ip "s destination" 8
XSave to a filename or pipe using sh.
XIf the first character of the destination is a vertical bar, the rest of
Xthe command is considered a shell command to which the article is passed
Xthrough standard input.
XThe command is subject to filename expansion.
X(See also the environment variable PIPESAVER.)
XIf the destination does not begin with a vertical bar, the rest of the
Xcommand is assumed to be a filename of some sort.
XAn initial tilde \*(L'~\*(R' will be translated to the name of the home
Xdirectory, and an initial environment variable substitution is also allowed.
XIf only a directory name is specified, the environment variable SAVENAME
Xis used to generate the actual name.
XIf a non-absolute filename is specified, the environment variable
XSAVEDIR will be used to generate the actual directory.
XIf nothing is specified, then obviously both variables will be used.
XSince the current directory for
X.I trn
Xwhile doing a save command is your
Xprivate news directory, typing \*(L"s ./filename\*(R" will force the file
Xto your news directory.
XSave commands are also run through % interpretation, so that you can
Xenter \*(L"s %O/filename\*(R" to save to the directory you were in when you ran
X.IR trn ,
Xand \*(L"s %t\*(R" to save to a filename consisting of the Internet address
Xof the sender.
X.Sp
XAfter generating the full pathname of the file to save to,
X.I trn
Xdetermines if the file exists already, and if so, appends to it.
X.I trn
Xwill attempt to determine if an existing file is a mailbox or a normal file,
Xand save the article in the same format.
XIf the output file does not yet exist,
X.I trn
Xwill by default ask you which format you want, or you can make it skip the
Xquestion with either the
X.B \-M
Xor
X.B \-N
Xswitch.
XIf the article is to be saved in mailbox format, the command to do so is
Xgenerated from the environment variable MBOXSAVER.
XOtherwise, NORMSAVER is used.
X.Ip "S destination" 8
XSave to a filename or pipe using a preferred shell, such as csh.
XWhich shell is used depends first on what you have the environment variable
XSHELL set to, and in the absence of that, on what your news administrator
Xset for the preferred shell when he or she installed
X.IR trn .
X.Ip "| command" 8
XShorthand for \*(L"s | command\*(R".
X.Ip "w destination" 8
XThe same as \*(L"s destination\*(R", but saves without the header.
X.Ip "W destination" 8
XThe same as \*(L"S destination\*(R", but saves without the header.
X.Ip "e directory" 8
XExtract a shell archive or uuencoded binary to the designated directory.
XThe article is first scanned to try discover what type of data is
Xencapsulated.
XIf a \*(L"cut here\*(R" line is found, the first non-blank line after it
Xmust be either the start of a shar header, or the \*(L"begin\*(R"
Xor \*(L"table\*(R" line of a uuencoded binary.
XThe default for extracting shars is to send the data portion of the file
Xto /bin/sh, but that can be overridden with the UNSHAR variable (see the
XENVIRONMENT section).
XUudecoding is done internally by a decoder that can handle the data
Xbeing split up over multiple articles, and extracted one piece at a time.
XTo decode a multi-article file, either execute the \*(L'e\*(R'
Xcommand in each article in sequence, use an article range to execute the
Xcommand, or use the \*(L":e\*(R" command to repeat the command for each of the
Xcurrently selected articles.
XWhen the \*(L'e\*(R' command is not followed by any arguments, it will
Xrepeat the arguments from the last extraction.
XAll directory specifications are relative to the value of SAVEDIR, so you
Xcan use the command \*(L"e .\*(R" to force an extraction to SAVEDIR itself.
XIf a uudecoding is in progress (i.\|e. the last piece wasn't extracted yet)
Xand you exit the group, the partial file will be removed.
XThis also occurs if you start to extract a new uuencoded file before the
Xprevious one was finished.
XSee also the \*(L'E\*(R' command for ending a multi-part uudecoding
Xmanually.
X.Sp
XThere is one special case that is handled differently: if the first file in a
Xrecognizable shar file is a uuencoded binary that was packed with lines
Xstarting with an \*(L'X\*(R', we will not unshar the file but instead
Xuudecode it.
XIf this causes problems, you can override the default extraction method
Xby following the directory with an explicit command to execute, as
Xdescribed below.
X.Ip "e directory|command" 8
XThis form of the \*(L'e\*(R' command allows you to extract other data
Xformats than shar or uuencoded files or to override the decisions made
Xby the automatic extraction selection described above.
XIn normal operation, all data following what we recognize as
Xa \*(L"cut here\*(R" line will be sent to the specified command.
XAdditionally, the distinctive beginning of a shell archive is also recognized
Xwithout a preceding cut line.
XWhen the command is run, the default directory will be set to the
Xspecified directory, or the value
Xof SAVEDIR if unspecified.
XEntering the \*(L'e\*(R' command without arguments will repeat your
Xprevious extract command.
XYou can use the command \*(L"e dir|\*(R" to extract to a new directory
Xusing the previously-specified command.
X.Ip E 8
XThis command ends any multi-part uuencoded file extraction that you began,
Xbut are unable (or unwilling) to complete.
XThe partially extracted file is removed.
X.Ip & 8
XPrint out the current status of command-line switches.
X.Ip "&switch {switch}" 8
XSet additional command-line switches.
X.Ip && 8
XPrint out current macro definitions.
X.Ip "&&keys commands" 8
XDefine an additional macro.
X.Ip !command 8
XEscape to a subshell.
XOne exclamation mark (!) leaves you in your own news directory.
XA double exclamation mark (!!) leaves you in the spool
Xdirectory of the current newsgroup.
XThe environment variable SHELL will be used if defined.
XIf
X.I command
Xis null, an interactive shell is started.
X.Sp
XYou can use escape key substitutions described later to get to many
Xrun-time values.
XThe command is also run through % interpretation, in case it is being called
Xfrom a range or search command.
X.Ip \+ 8
XStart the selector in the last-used mode.
XIf the newsgroup is unthreaded and the default selector mode is threads,
Xwe temporarily switch to subject selection unless manually overridden.
X.Ip _a 8
XStart the selector in article mode.
X.Ip _s 8
XStart the selector in subject mode.
X.Ip _t 8
XStart the selector in thread mode.
X.Ip _T 8
XStart the selector in thread mode unless the group isn't threaded, in
Xwhich case we settle for the subject selector.
X.Ip = 8
XList subjects of unread articles.
X.Ip # 8
XPrint last article number.
X.Ip _+ 8
XSelect the entire thread associated with the current article.
X.Ip _- 8
XDeselect the entire thread associated with the current article.
X.Sh "Pager Level"
XAt the pager level (within an article), the prompt looks like this:
X.Sp
X\*(--MORE\*(--(17%)
X.Sp
Xand a number of commands may be given:
X.Ip SP 8
XDisplay next page.
X.Ip x 8
XDisplay next page and decrypt as a rot13 message.
X.Ip d 8
XDisplay half a page more.
X.Ip CR 8
XDisplay one more line.
X.Ip q 8
XGo to the end of the current article (don't mark it either read or unread).
XLeaves you at the \*(L"What next?\*(R" prompt.
X.Ip j 8
XJunk the current article.
XMark it read and go to the end of the article.
X.Ip ^L 8
XRefresh the screen.
X.Ip X 8
XRefresh the screen and decrypt as a rot13 message.
X.Ip b 8
XBack up one page.
X.Ip ^E 8
XDisplay the last page of the article.
X.Ip _C 8
XSwitch to next available charset conversion.
X.Ip t 8
XDisplay the entire article tree, including its associated subjects, and
Xcontinue reading.
XIf the group is not currently threaded, it will be threaded first.
X.Ip gpattern 8
XGoto (search forward for)
X.I pattern
Xwithin current article.
XNote that there is no space between the command and the pattern.
XIf the pattern is found, the page containing the pattern will be displayed.
XWhere on the page the line matching the pattern goes depends on the value
Xof the
X.B \-g
Xswitch.
XBy default the matched line goes at the top of the screen.
X.Ip G 8
XSearch for g pattern again.
X.Ip ^G 8
XThis is a special version of the \*(L'g\*(R' command that is for skipping
Xarticles in a digest.
XIt is equivalent to setting \*(L"\-g4\*(R" and then executing the command
X\*(L"g^Subject:\*(R".
X.Ip TAB 8
XThis is another special version of the \*(L'g\*(R' command that is for
Xskipping inclusions of older articles.
XIt is equivalent to setting \*(L"\-g4\*(R" and then executing the command
X\*(L"g^[^c]\*(R", where \fIc\fR is the first character of the last line
Xon the screen.
XIt searches for the first line that doesn't begin with the same character
Xas the last line on the screen.
X.Ip !command 8
XEscape to a subshell.
X.PP
XThe following commands skip the rest of the current article, then behave just
Xas if typed to the \*(L"What next?\*(R" prompt at the end of the article.
XSee the documentation at the article selection level for these commands.
X.Sp	
X    # $ & / = ? A c C f F k K T ^K J , m M r R ^R u U v Y ^
X.br
X    p P ^P - < > [ ] { } number
X.br
X    range{,range} command{:command}
X.Sp
XThe following commands also skip to the end of the article, but have the
Xadditional effect of marking the current article as read:
X.Sp
X    n N ^N e s S | w W
X.Sp
X.Sh "Miscellaneous facts about commands"
XAn \*(L'n\*(R' typed at either the \*(L"Last newsgroup\*(R" prompt or a
X\*(L"Last article\*(R" prompt will cycle back to the top of the newsgroup
Xor article list, whereas a \*(L'q\*(R' will quit the level.
X(Note that \*(L'n\*(R' does not mean \*(L"no\*(R", but rather
X\*(L"next\*(R".)
XA space will of course do whatever is shown as the
Xdefault, which will vary depending on whether
X.I trn
Xthinks you have more articles or newsgroups to read.
X.PP
XThe \*(L'b\*(R' (backup page) command may be repeated until the beginning of
Xthe article is reached.
XIf
X.I trn
Xis suspended (via a ^Z), then when the job is resumed, a refresh (^L) will
Xautomatically be done (Berkeley-type systems only).
XIf you type a command such as \*(L'!\*(R' or \*(L's\*(R' which takes you
Xfrom the middle of the article to the end, you can always get back into the
Xmiddle by typing \*(L'^L\*(R'.
X.PP
XIn multi-character commands such as \*(L'!\*(R', \*(L's\*(R', \*(L'/\*(R',
Xetc, you can interpolate various run-time values by typing escape and a
Xcharacter.
XTo find out what you can interpolate, type escape and \*(L'h\*(R', or check
Xout the single character % substitutions for environment variables in the
XInterpretation and Interpolation section, which are the same.
XAdditionally, typing a double escape will cause any % substitutions in the
Xstring already typed in to be expanded.
X.Sh "The Tree Display"
XWhen reading a threaded newsgroup,
X.I trn
Xdisplays a character representation of the article tree in the upper right
Xcorner of the header.
XFor example, consider the following display:
X.Sp
X.nf
X.in +4n
X(1)+-(1)--(\fI2\fP)--\fI[2]\fP
X\h'\w'(1)'u'|-(1)+-<3>
X\h'\w'(1)'u'|\h'\w'-(1)'u'\\-[1]
X\h'\w'(1)'u'\\-(1)+-[1]--[1]
X\h'\w'(1)+-(1)'u'\\-[1]
X.in -4n
X.fi
X.Sp
XThis tree represents an initial article that has three direct replies
X(the second column with three (1)'s).
XEach reply has further replies branching off from them.
XIn two cases the subject line was altered in the reply, as indicated
Xby the increasing numbers.
X.PP
XThe third subject is not selected for reading, as indicated by the <>'s.
XNote you can always forcefully visit an unselected article with \*(L'N\*(R'
Xand \*(L'P\*(R' as well as the thread-navagation commands (which are
Xtypically macro'ed to the arrow keys on your keypad).
X.PP
XWhen there is only one subject associated with a thread, all the nodes
Xare marked with the number 1.
XWhen the first subject change arrives, it is marked with the number 2,
Xand so on.
XIf you were to look at this thread in the thread selector, the three
Xsubjects associated with it would be listed in the same order as the
Xascending digits.
XIn those rare cases where more than 9 subjects are associated with each
Xthread, the nodes are marked with the letters A-Z, and then by a-z.
X.PP
XThe articles that have already been read are enclosed in ()'s,
XUnread articles are displayed in []'s, and unread-but-unselected articles
Xare displayed in <>'s.
XThe currently displayed article has its entire node highlighted in the
Xdisplay.
XThe previously displayed article has only its number highlighted.
XIf the group has not been completely threaded yet, some articles will
Xappear as (?) until trn can determine if the referenced article truly
Xexists or not.
XIf you visit such an article and wait for trn to finish threading the
Xgroup, the screen will refresh as soon as the presence or absence of
Xthe article is determined.
X.Sh "Options"
X.I Trn
Xhas a nice set of options to allow you to tailor the interaction
Xto your liking.
X(You might like to know that the author swears by
X\*(L"\-x6ms \+e \-mu \-S -XX -N -B -p\*(R".)
XThese options may be set on the command line, via the TRNINIT
Xenvironment variable, via a file pointed to by the TRNINIT variable, or
Xfrom within
X.I trn
Xvia the & command.
XOptions may generally be unset by typing \*(L"+switch\*(R".
XOptions include:
X.TP 5
X.B \-a
Xcauses trn to always thread the unread articles on entry to a group.
XWithout this option trn may enter a group in a partially-threaded
Xstate and process the unthreaded articles in the background.
XThe down side of this is that the tree display may not be complete when
Xit is first displayed and you may start out at an odd position in the
Xfirst thread's article tree.
X.TP 5
X.B \-A
Xtells trn to attempt to create some default macros that will map your
Xarrow keys to useful trn functions (this is the default).
XUse 
X.B +A
Xto turn this behavior off.
X.TP 5
X.B \-b
Xwill force trn to read each thread in a breadth-first order, rather than
Xdepth-first.
X.TP 5
X.B \-B
Xwill turn on a spinner that twirls when trn is doing background
Xarticle-processing.
XA gizmo for those interested in what's going on behind the scenes.
X.TP 5
X.B \-c
Xchecks for news without reading news.
XIf a list of newsgroups is given on the command line, only those newsgroups
Xwill be checked; otherwise all subscribed-to newsgroups are checked.
XWhenever the
X.B \-c
Xswitch is specified, a non-zero exit status from
X.I trn
Xmeans that there is unread news in one of the checked newsgroups.
XThe
X.B \-c
Xswitch does not disable the printing of newsgroups with unread news;
Xthis is controlled by the
X.B \-s
Xswitch.
X(The
X.B \-c
Xswitch is not meaningful when given via the & command.)
X.TP 5
X.B \-C<number>
Xtells
X.I trn
Xhow often to checkpoint the
X.IR .newsrc ,
Xin articles read.
XActually, this number says when to start thinking about doing a checkpoint
Xif the situation is right.
XIf a reasonable check-pointing situation doesn't arise within 10 more
Xarticles, the
X.I .newsrc
Xis check-pointed willy-nilly.
X.TP 5
X.B \-d<directory name>
Xsets your private news directory to something other than ~/News.
XThe directory name will be globbed (via csh) if necessary (and if possible).
XThe value of SAVEDIR (where articles are saved) is initially set to this
Xdirectory, but is often manipulated via the
X.B \-/
Xoption or by manipulating SAVEDIR directly (perhaps via the memorized
Xcommands (the KILL file) for a group.
XAny KILL files (see the K command in the Article Selection section)
Xalso reside in this directory and its subdirectories, by default.
XIn addition, shell escapes leave you in this directory.
X.TP 5
X.B \-D<flags>
Xenables debugging output.
XSee common.h for flag values.
XWarning: normally
X.I trn
Xattempts to restore your
X.I .newsrc
Xwhen an unexpected signal or internal error occurs.
XThis is disabled when any debugging flags are set.
X.TP 5
X.B \-e
Xcauses each page within an article to be started at the top of the screen,
Xnot just the first page.
X(It is similar to the
X.B \-c
Xswitch of
X.IR more (1).)
XYou never have to read scrolling text with this switch.
XThis is helpful especially at certain baud rates because you can start reading
Xthe top of the next page without waiting for the whole page to be printed.
XIt works nicely in conjunction with the
X.B \-m
Xswitch, especially if you use half-intensity for your highlight mode.
XSee also the
X.B \-L
Xswitch.
X.TP 5
X.B \-E<name>=<val>
Xsets the environment variable <name> to the value specified.
XWithin
X.IR trn ,
X\*(L"&\-ESAVENAME=%t\*(R" is similar to \*(L"setenv SAVENAME '%t'\*(R" in
X.IR csh ,
Xor \*(L"SAVENAME='%t'; export SAVENAME\*(R" in
X.IR sh .
XAny environment variables set with
X.B \-E
Xwill be inherited by subprocesses of
X.IR trn .
X.TP 5
X.B \-f
Xwill make trn avoid various sleep calls and the prompt after the processing
Xof the memorized commands that are intended to allow you time to read a
Xmessage before the screen clears.
XThis allows the advanced user to cruise along a little faster at the
Xexpense of readability.
XThe \-t (terse) option turns on -f by default, but you can override this
Xby specifying \+f after the \-t option.
X.TP 5
X.B \-F<string>
Xsets the prefix string for the \*(L'F\*(R' follow-up command to use in
Xprefixing each line of the quoted article.
XFor example, \*(L"\-F<tab>\*(R" inserts a tab on the front of each line
X(which will cause long lines to wrap around, unfortunately),
X\*(L"\-F>>>>\*(R" inserts \*(L">>>>\*(R" on every line, and
X\*(L"\-F\*(R" by itself causes nothing to be inserted, in case you want to
Xreformat the text, for instance.
XThe initial default prefix is \*(L">\*(R".
X.TP 5
X.B \-g<line>
Xtells
X.I trn
Xwhich line of the screen you want searched-for strings to show up on when
Xyou search with the \*(L'g\*(R' command within an article.
XThe lines are numbered starting with 1.
XThe initial default is \*(L"\-g1\*(R", meaning the first line of the screen.
XSetting the line to less than 1 or more than the number of lines on the screen
Xwill set it to the last line of the screen.
X.TP 5
X.B \-G
Xselects the "fuzzy" processing on the go command when you don't type in a
Xvalid group name.
XWith this option on trn will attempt to find the group you probably meant
Xto type, but it can be a little slow about it, so it's not on by default.
X.TP 5
X.B \-h<string>
Xhides (disables the printing of) all header lines beginning with
X.I string
Xthat trn recognizes.
XFor instance, \-hexp will disable the printing of the \*(L"Expires:\*(R" line.
XCase is insignificant.
XHeaders unknown to trn cannot be disabled except by turning them all off
X(\-h without a string will disable all headers except the Subject)
Xand then using
X.B +h
Xto select those lines you want to see.
XYou may wish to use the baud-rate switch modifier below to hide more lines
Xat lower baud rates.
X.TP 5
X.B \-H<string>
Xworks just like
X.B \-h
Xexcept that instead of setting the hiding flag for a header line, it sets
Xthe magic flag for that header line.
XCertain header lines have magic behavior that can be controlled this way.
XAt present, the following actions are caused by the flag for the particular
Xline:
Xthe Date line prints the date in local time if the group is threaded;
Xthe From line will only print the commented portion of the user name;
Xthe Newsgroups line will only print when there are multiple newsgroups;
Xthe Subject line will be underlined and (when threaded) the
Xkeyword \*(L'Subject:\*(R' is replaced by its subject number (e.\|g. [1]);
Xand the Expires line will always be suppressed if there is nothing on it.
XIn fact, all of these actions are the default, and you must use
X.B +H
Xto undo them.
X.TP 5
X.B \-i=<number>
Xspecifies how long (in lines) to consider the initial page of an
Xarticle \*(-- normally this is determined automatically depending on baud rate.
X(Note that an entire article header will always be printed regardless of the
Xspecified initial page length.
XIf you are working at low baud rate and wish to reduce the size of the
Xheaders, you may hide certain header lines with the
X.B \(bsh
Xswitch.)
X.TP 5
X.B \-I
Xtells trn to append all new, unsubscribed groups to the end of the .newsrc.
X.TP 5
X.B \-j
Xforces trn to leave control characters unmolested in messages.
X.TP 5
X.B \-J{<number>}
Xcauses trn to join similar subjects into a common thread if they are the
Xsame up to the indicated number of characters (the default is 30).
XYou can turn this on and off for specific groups by putting the following
Xlines into your kill file for the group(s):
X.Sp
X&-J30
X.br
XX&+J
X.TP 5
X.B \-k
Xtells trn to ignore the THRU line when processing selection searches
X(i.\|e. searches with a command portion that starts with a \*(L'+\*(R'
Xor a \*(L'.\*(R') in the memorized commands (aka kill files).
XThis is turned on by default, so use
X.B +k
Xif you want to turn it off.
X.TP 5
X.B \-K
Xis used to keep a trn from checking for new news while you're in the group.
XUse this when your kill-file processing is so slow that you don't want the
Xgroup to expand while you're reading.
XIf you only want specific groups to be affected, put these lines into
Xyour kill file for the group(s):
X.Sp
X&-K
X.br
XX&+K
X.TP 5
X.B \-l
Xdisables the clearing of the screen at the beginning of each
Xarticle, in case you have a bizarre terminal.
X.TP 5
X.B \-L
Xtells
X.I trn
Xto leave information on the screen as long as possible by not blanking
Xthe screen between pages, and by using clear to end-of-line.
X(The
X.IR more (1)
Xprogram does this.)
XThis feature works only if you have the requisite termcap
Xcapabilities.
XThe switch has no effect unless the
X.B \-e
Xswitch is set.
X.TP 5
X.B \-m=<mode>
Xenables the marking of the last line of the previous page
Xprinted, to help the user see where to continue reading.
XThis is most helpful when less than a full page is going to be displayed.
XIt may also be used in conjunction with the
X.B \-e
Xswitch, in which case the page is erased, and the first line (which is
Xthe last line of the previous page) is highlighted.
XIf
X.B \-m=s
Xis specified, the standout mode will be used, but if
X.B \-m=u
Xis specified, underlining will be used.
XIf neither
X.B =s
Xor
X.B =u
Xis specified, standout is the default.
XUse
X.B +m
Xto disable highlighting.
X.TP 5
X.B \-M
Xforces mailbox format in creating new save files.
XOrdinarily you are asked which format you want.
X.TP 5
X.B \-N
Xforces normal (non-mailbox) format in creating new save files.
XOrdinarily you are asked which format you want.
X.TP 5
X.B \-o
Xwill act like old versions of trn and not junk cross-referenced articles
Xwhen using thread commands to junk articles in the current group (such as
Xthe selector's \*(L'X\*(R' command).
X.TP 5
X.B \-O<mode>{<order>}
Xspecifies the selector's mode and (optionally) the sort order.
XThe modes are \*(L'a\*(R'rticle, \*(L's\*(R'ubject, or \*(L't\*(R'hread.
XThe orders are \*(L'd\*(R'ate, \*(L's\*(R'ubject, \*(L'a\*(R'uthor,
Xarticle \*(L'c\*(R'ount per group, \*(L'n\*(R'umeric,
Xor subject-date \*(L'g\*(R'roups.
XThe order can be capitalized to reverse the indicated order.
XFor example, to choose the article selector in subject order specify
X\*(L"-Oas\*(R".
X.TP 5
X.B \-p{opt}
Xtells trn to auto-select your postings and their replies as it encounters them
Xin the various groups you read.
XThe optional parameter is either a \*(L'.\*(R', \*(L'p\*(R', or \*(L'+\*(R'
X(it defaults to \*(L'.\*(R' if omitted) and affects what command trn should
Xexecute when it encounters your postings.
XThe default is to execute the command \*(L"T.\*(R" on each of your postings
Xwhich tells trn to memorize the auto-selection of this article and all its
Xreplies.
XUsing \-pp tells trn to use the same command, but start the selection with
Xthe parent article, so that you see any other replies to the same article.
XUsing \-p+ tells trn to select the whole thread that contains your reply.
X.TP 5
X.B \-q
Xbypasses the automatic check for new newsgroups when starting 
X.IR trn .
X.TP 5
X.B \-Q<set>
Xdefines the set of available charset conversions. This can be useful
Xto restrict the available conversions to those your terminal can handle
Xand/or to specify an alternate default. The first element of this set
Xis taken as default for each article.
X.TP 5
X.B \-r
Xcauses
X.I trn
Xto restart in the last newsgroup read during a previous session with
X.IR trn .
XIt is equivalent to starting up normally and then getting to the newsgroup
Xwith a g command.
X.TP 5
X.B \-s
Xwith no argument suppresses the initial listing of newsgroups with unread
Xnews, whether
X.B \-c
Xis specified or not.
XThus
X.B \-c
Xand
X.B \-s
Xcan be used together to test \*(L"silently\*(R" the status of news from
Xwithin your
X.I .login
Xfile.
XIf
X.B \-s
Xis followed by a number, the initial listing is suppressed after that many
Xlines have been listed.
XPresuming that you have your
SHAR_EOF
  : || echo 'restore of trn-3.6/trn.1 failed'
fi
echo 'End of archive part 12'
echo 'File trn-3.6/trn.1 is continued in part 13'
echo 13 > _sharseq.tmp
exit 0


