|
|
1.1 root 1: ''' $Header: rn.1,v 4.3.1.3 85/05/23 17:14:14 lwall Exp $
2: '''
3: ''' $Log: rn.1,v $
4: ''' Revision 4.3.1.3 85/05/23 17:14:14 lwall
5: ''' Now allows 'r' and 'f' on null articles.
6: '''
7: ''' Revision 4.3.1.2 85/05/13 09:27:53 lwall
8: ''' Added CUSTOMLINES option.
9: '''
10: ''' Revision 4.3.1.1 85/05/10 11:38:22 lwall
11: ''' Branch for patches.
12: '''
13: ''' Revision 4.3 85/05/01 11:48:26 lwall
14: ''' Baseline for release with 4.3bsd.
15: '''
16: '''
17: .de Sh
18: .br
19: .ne 5
20: .PP
21: \fB\\$1\fR
22: .PP
23: ..
24: .de Sp
25: .if t .sp .5v
26: .if n .sp
27: ..
28: .de Ip
29: .br
30: .ie \\n.$>=3 .ne \\$3
31: .el .ne 3
32: .IP "\\$1" \\$2
33: ..
34: '''
35: ''' Set up \*(-- to give an unbreakable dash;
36: ''' string Tr holds user defined translation string.
37: ''' Bell System Logo is used as a dummy character.
38: '''
39: .tr \(bs-|\(bv\*(Tr
40: .ie n \{\
41: .ds -- \(bs-
42: .if (\n(.H=4u)&(1m=24u) .ds -- \(bs\h'-12u'\(bs\h'-12u'-\" diablo 10 pitch
43: .if (\n(.H=4u)&(1m=20u) .ds -- \(bs\h'-12u'\(bs\h'-8u'-\" diablo 12 pitch
44: .ds L" ""
45: .ds R" ""
46: .ds L' '
47: .ds R' '
48: 'br\}
49: .el\{\
50: .ds -- \(em\|
51: .tr \*(Tr
52: .ds L" ``
53: .ds R" ''
54: .ds L' `
55: .ds R' '
56: 'br\}
57: .TH RN 1 LOCAL
58: .SH NAME
59: rn - new read news program
60: .SH SYNOPSIS
61: .B rn [options] [newsgroups]
62: .SH DESCRIPTION
63: .I Rn
64: is a replacement for the readnews(1) program that was written to be as
65: efficient as possible, particularly in human interaction.
66: .I Rn
67: attempts to minimize the amount of \*(L"dead\*(R" time spent reading
68: news\*(--it tries to get things done while the user is reading or deciding
69: whether to read, and attempts to get useful information onto the screen as
70: soon as possible, highlighting spots that the eye makes frequent reference
71: to, like subjects and previously read lines.
72: Whether or not it's faster, it SEEMS faster.
73: .PP
74: If no newsgroups are specified, all the newsgroups which have unread news
75: are displayed, and then the user is asked for each one whether he wants to
76: read it, in the order in which the newsgroups occur in the
77: .I .newsrc
78: file.
79: With a list of newsgroups,
80: .I rn
81: will start up in \*(L"add\*(R" mode, using the list as a set of patterns to
82: add new newsgroups and restrict which newsgroups are displayed.
83: See the discussion of the \*(L'a\*(R' command on the newsgroup selection
84: level.
85: .PP
86: .I Rn
87: operates on three levels: the newsgroup selection level, the article
88: selection level, and the paging level.
89: Each level has its own set of commands, and its own help menu.
90: At the paging level (the bottom level),
91: .I rn
92: behaves much like the
93: .IR more (1)
94: program.
95: At the article selection level, you may specify which article you want
96: next, or read them in the default order, which is either in order of
97: arrival on your system, or by subject threads.
98: At the newsgroup selection level (the top level), you may specify which
99: newsgroup you want next, or read them in the default order, which is the
100: order that the newsgroups occur in your
101: .I .newsrc
102: file.
103: (You will therefore want to rearrange your
104: .I .newsrc
105: file to put the most interesting newsgroups first.
106: This can be done with the \*(L'm\*(R' command on the Newsgroup Selection level.
107: WARNING: invoking readnews/vnews (the old user interface) in any way (including
108: as a news checker in your login sequence!) will cause your
109: .I .newsrc
110: to be disarranged again.)
111: .PP
112: On any level, at ANY prompt, an \*(L'h\*(R' may be typed for a list of
113: available commands.
114: This is probably the most important command to remember, so don't you
115: forget it.
116: Typing space to any question means to do the normal thing.
117: You will know what that is because
118: every prompt has a list of several plausible commands enclosed in
119: square brackets.
120: The first command in the list is the one which will be done if you type
121: a space.
122: (All input is done in cbreak mode, so carriage returns should not be typed
123: to terminate anything except certain multi-character commands.
124: Those commands will be obvious in the discussion below because they take an
125: argument.)
126: .PP
127: Upon startup,
128: .I rn
129: will do several things:
130: .Ip 1. 4
131: It will look for your
132: .I .newsrc
133: file, which is your list of subscribed-to
134: newsgroups.
135: If
136: .I rn
137: doesn't find a
138: .IR .newsrc ,
139: it will create one.
140: If it does find one, it will back it up under the name \*(L".oldnewsrc\*(R".
141: .Ip 2. 4
142: It will input your
143: .I .newsrc
144: file, listing out the first several newsgroups
145: with unread news.
146: .Ip 3. 4
147: It will perform certain consistency checks on your
148: .IR .newsrc .
149: If your
150: .I .newsrc
151: is out of date in any of several ways,
152: .I rn
153: will warn you and patch it up for you, but you may have to wait a little
154: longer for it to start up.
155: .Ip 4. 4
156: .I Rn
157: will next check to see if any new newsgroups have been created, and give
158: you the opportunity to add them to your
159: .IR .newsrc .
160: .Ip 5. 4
161: .I Rn
162: goes into the top prompt level\*(--the newsgroup selection level.
163: .Sh "Newsgroup Selection Level"
164: In this section the words \*(L"next\*(R" and \*(L"previous\*(R" refer to
165: the ordering of the newsgroups in your
166: .I .newsrc
167: file.
168: On the newsgroup selection level, the prompt looks like this:
169: .Sp
170: ******** 17 unread articles in net.blurfl\*(--read now? [ynq]
171: .Sp
172: and the following commands may be given at this level:
173: .Ip y,SP 8
174: Do this newsgroup now.
175: .Ip .command 8
176: Do this newsgroup now, but execute
177: .I command
178: before displaying anything.
179: The command will be interpreted as if given on the article selection level.
180: .Ip = 8
181: Do this newsgroup now, but list subjects before displaying articles.
182: .Ip n 8
183: Go to the next newsgroup with unread news.
184: .Ip N 8
185: Go to the next newsgroup.
186: .Ip p 8
187: Go to the previous newsgroup with unread news.
188: If there is none, stay at the current newsgroup.
189: .Ip P 8
190: Go to the previous newsgroup.
191: .Ip \- 8
192: Go to the previously displayed newsgroup (regardless of whether it is
193: before or after the current one in the list).
194: .Ip 1 8
195: Go to the first newsgroup.
196: .Ip ^ 8
197: Go to the first newsgroup with unread news.
198: .Ip $ 8
199: Go to the end of the newsgroups list.
200: .Ip "g newsgroup" 8
201: Go to
202: .IR newsgroup .
203: If it isn't currently subscribed to, you will be asked if you want to
204: subscribe.
205: .Ip "/pattern" 8
206: Scan forward for a newsgroup matching
207: .IR pattern .
208: Patterns do globbing like filenames, i.e., use ? to match a single
209: character, * to match any sequence of characters, and [] to specify a list
210: of characters to match.
211: (\*(L"all\*(R" may be used as a synonym for \*(L"*\*(R".)
212: Unlike normal filename globbing, newsgroup searching is not anchored to
213: the front and back of the filename, i.e. \*(L"/jok\*(R" will find
214: net.jokes.
215: You may use ^ or $ to anchor the front or back of the search:
216: \*(L"/^test$\*(R" will find newsgroup test and nothing else
217: If you want to include newsgroups with 0 unread articles, append /r.
218: If the newsgroup is not found between the current newsgroup and the last
219: newsgroup, the search will wrap around to the beginning.
220: .Ip "?pattern" 8
221: Same as /, but search backwards.
222: .Ip u 8
223: Unsubscribe from current newsgroup.
224: .Ip "l string" 8
225: List newsgroups not subscribed to which contain the string specified.
226: .Ip L 8 13v
227: Lists the current state of the
228: .IR .newsrc ,
229: along with status information.
230: .Sp
231: .nf
232: \h'|0.5i'Status \h'|2i'Meaning
233: \h'|0.5i'<number> \h'|2i'Count of unread articles in newsgroup.
234: \h'|0.5i'READ \h'|2i'No unread articles in newsgroup.
235: \h'|0.5i'UNSUB \h'|2i'Unsubscribed newsgroup.
236: \h'|0.5i'BOGUS \h'|2i'Bogus newsgroup.
237: \h'|0.5i'JUNK \h'|2i'Ignored line in .newsrc
238: \h'|2i'(e.g. readnews \*(L"options\*(R" line).
239: .fi
240: .Sp
241: (A bogus newsgroup is one that is not in the list of active newsgroups
242: in the active file, which on most systems is /usr/lib/news/active.)
243: .Ip "m name" 8
244: Move the named newsgroup somewhere else in the
245: .IR .newsrc .
246: If no name is given, the current newsgroup is moved.
247: There are a number of ways to specify where you want the newsgroup\*(--type
248: h for help when it asks where you want to put it.
249: .Ip c 8
250: Catch up\*(--mark all unread articles in this newsgroup as read.
251: .Ip "o pattern" 8
252: Only display those newsgroups whose name matches
253: .IR pattern .
254: Patterns are the same as for the \*(L'/\*(R' command.
255: Multiple patterns may be separated by spaces, just as on the
256: command line.
257: The restriction will remain in effect either until there are no articles
258: left in the restricted set of newsgroups, or another restriction command
259: is given.
260: Since
261: .I pattern
262: is optional, \*(L'o\*(R' by itself will remove the
263: restriction.
264: .Ip "a pattern" 8
265: Add new newsgroups matching
266: .IR pattern .
267: Newsgroups which are already in your
268: .I .newsrc
269: file, whether subscribed to or
270: not, will not be listed.
271: If any new newsgroups are found, you will be asked for each one whether
272: you would like to add it.
273: After any new newsgroups have been added, the \*(L'a\*(R' command also
274: restricts the current set of newsgroups just like the \*(L'o\*(R' command
275: does.
276: .Ip & 8
277: Print out the current status of command line switches and any newsgroup
278: restrictions.
279: .Ip "&switch {switch}" 8
280: Set additional command line switches.
281: .Ip && 8
282: Print out the current macro definitions.
283: .Ip "&&keys commands" 8
284: Define additional macros.
285: .Ip !command 8
286: Escape to a subshell.
287: One exclamation mark (!) leaves you in your own news directory.
288: A double exclamation mark (!!) leaves you in the spool
289: directory for news, which on most systems is /usr/spool/news.
290: The environment variable SHELL will be used if defined.
291: If
292: .I command
293: is null, an interactive shell is started.
294: .Ip q 8
295: Quit.
296: .Ip x 8
297: Quit, restoring .newsrc to its state at startup of
298: .IR rn .
299: The .newsrc you would have had if you had exited with \*(L'q\*(R' will be
300: called .newnewsrc, in case you didn't really want to type \*(L'x\*(R'.
301: .Ip ^K 8
302: Edit the global KILL file.
303: This is a file which contains /pattern/j commands (one per line) to be
304: applied to every newsgroup as it is started up, that is, when it is
305: selected on the newsgroup selection level.
306: The purpose of a KILL file is to mark articles as read on the basis of some
307: set of patterns.
308: This saves considerable wear and tear on your \*(L'n\*(R' key.
309: There is also a local KILL file for each newsgroup.
310: Because of the overhead involved in searching for articles to kill, it is
311: better if possible to use a local KILL file.
312: Local KILL files are edited with a \*(L'^K\*(R' on the article selection level.
313: There are also automatic ways of adding search commands to the local KILL
314: file\*(--see the \*(L'K\*(R' command and the K search modifier on the
315: article selection level.
316: .Sp
317: If either of the environment variables VISUAL or EDITOR is set, the
318: specified editor will be invoked; otherwise a default editor (normally vi(1))
319: is invoked on the KILL file.
320: .Sh "Article Selection Level"
321: On the article selection level,
322: .I rn
323: selects (by default) unread articles in numerical order (the order in which
324: articles have arrived at your site).
325: If you do a subject search (^N), the default order is modified to be
326: numerical order within each subject thread.
327: You may switch back and forth between numerical order and subject thread
328: order at will.
329: The
330: .B \-S
331: switch can be used to make subject search mode the default.
332: .Sp
333: On the article selection level you are
334: .I not
335: asked whether you want to read an article before the article is displayed;
336: rather,
337: .I rn
338: simply displays the first page (or portion of a page, at low baud rates) of the
339: article and asks if you want to continue.
340: The normal article selection prompt comes at the END of the article
341: (though article selection commands can be given from within the middle
342: of the article (the pager level) also).
343: The prompt at the end of an article looks like this:
344: .Sp
345: End of article 248 (of 257)\*(--what next? [npq]
346: .Sp
347: The following are the options at this point:
348: .Ip n,SP 8
349: Scan forward for next unread article.
350: (Note: the \*(L'n\*(R' (next) command when typed at the end of an article
351: does not mark the article as read, since an article is automaticaly marked
352: as read after the last line of it is printed.
353: It is therefore possible to type a sequence such as \*(L'mn\*(R' and leave
354: the article marked as unread.
355: The fact that an article is marked as read by typing \*(L'n\*(R',
356: \&\*(L'N\*(R', \*(L'^N\*(R', \*(L's\*(R', or \*(L'S\*(R' within the MIDDLE of
357: the article is in fact a special case.)
358: .Ip N 8
359: Go to the next article.
360: .Ip ^N 8
361: Scan forward for the next article with the same subject, and make ^N default
362: (subject search mode).
363: .Ip p 8
364: Scan backward for previous unread article.
365: If there is none, stay at the current article.
366: .Ip P 8
367: Go to the previous article.
368: .Ip \- 8
369: Go to the previously displayed article (regardless of whether that article
370: is before or after this article in the normal sequence).
371: .Ip ^P 8
372: Scan backward for the previous article with the same subject, and make
373: ^N default (subject search mode).
374: .Ip ^R 8
375: Restart the current article.
376: .Ip v 8
377: Restart the current article verbosely, displaying the entire header.
378: .Ip ^L 8
379: Refresh the screen.
380: .Ip ^X 8
381: Restart the current article, and decrypt as a rot13 message.
382: .Ip X 8
383: Refresh the screen, and decrypt as a rot13 message.
384: .Ip b 8
385: Back up one page.
386: .Ip q 8
387: Quit this newsgroup and go back to the newsgroup selection level.
388: .Ip ^ 8
389: Go to the first unread article.
390: .Ip $ 8
391: Go to the last article (actually, one past the last article).
392: .Ip "number" 8
393: Go to the numbered article.
394: .Ip "range{,range} command{:command}" 8
395: Apply a set of commands to a set of articles.
396: A range consists of either <article number> or
397: <article\ number>\-<article\ number>.
398: A dot \*(L'.\*(R' represents the current article, and a dollar
399: sign \*(L'$\*(R' represents the last article.
400: .Sp
401: Applicable commands include \*(L'm\*(R' (mark as unread), \*(L'M\*(R'
402: (delayed mark as unread), \*(L'j\*(R' (mark as read), \*(L"s dest\*(R"
403: (save to a destination), \*(L"!command\*(R" (shell escape), \*(L"=\*(R"
404: (print the subject) and \*(L"C\*(R" (cancel).
405: .Ip j 8
406: Junk the current article\*(--mark it as read.
407: If this command is used from within an article, you are left at the end of
408: the article, unlike \*(L'n\*(R', which looks for the next article.
409: .Ip m 8
410: Mark the current article as still unread.
411: (If you are in subject search mode you probably want to use M instead of m.
412: Otherwise the current article may be selected as the beginning of the next
413: subject thread.)
414: .Ip M 8
415: Mark the current article as still unread, but not until the newsgroup
416: is exited.
417: Until then, the current article will be marked as read.
418: This is useful for returning to an article in another session, or in another
419: newsgroup.
420: .Ip /pattern 8
421: Scan forward for article containing
422: .I pattern
423: in the subject.
424: See the section on Regular Expressions.
425: Together with the escape substitution facility described later, it becomes
426: easy to search for various attributes of the current article, such as
427: subject, article ID, author name, etc.
428: The previous pattern can be recalled with \*(L"<esc>/\*(R".
429: If
430: .I pattern
431: is omitted, the previous pattern is assumed.
432: .Ip /pattern/h 8
433: Scan forward for article containing
434: .I pattern
435: in the header.
436: .Ip /pattern/a 8
437: Scan forward for article containing
438: .I pattern
439: anywhere in article.
440: .Ip /pattern/r 8
441: Scan read articles also.
442: .Ip /pattern/c 8
443: Make search case sensitive.
444: Ordinarily upper and lower case are considered the same.
445: .Ip "/pattern/modifiers:command{:command}" 8
446: Apply the commands listed to articles matching the search command (possibly
447: with h, a, or r modifiers).
448: Applicable commands include \*(L'm\*(R' (mark as unread), \*(L'M\*(R'
449: (delayed mark as unread), \*(L'j\*(R' (mark as read), \*(L"s dest\*(R"
450: (save to a destination), \*(L"!command\*(R" (shell escape), \*(L"=\*(R"
451: (print the subject) and \*(L"C\*(R" (cancel).
452: If the first command is \*(L'm\*(R' or \*(L'M\*(R', modifier r is assumed.
453: A K may be included in the modifiers (not the commands) to cause the
454: entire command (sans K) to be saved to the local KILL file, where it will
455: be applied to every article that shows up in the newsgroup.
456: .Sp
457: For example, to save all articles in a given newsgroup to the line printer
458: and mark them read, use \*(L"/^/\||\|lpr:j\*(R".
459: If you say \*(L"/^/K\||\|lpr:j\*(R", this will happen every time you enter the
460: newsgroup.
461: .Ip ?pattern 8
462: Scan backward for article containing
463: .I pattern
464: in the subject.
465: May be modified as the forward search is: ?pattern?modifiers[:commands].
466: It is likely that you will want an r modifier when scanning backward.
467: .Ip k 8
468: Mark as read all articles with the same subject as the current article.
469: (Note: there is no single character command to temporarily mark as read (M
470: command) articles matching the current subject.
471: That can be done with \*(L"/<esc>s/M\*(R", however.)
472: .Ip K 8
473: Do the same as the k command, but also add a line to the local KILL file for
474: this newsgroup to kill this subject every time the newsgroup is started up.
475: For a discussion of KILL files, see the \*(L'^K\*(R' command below.
476: See also the K modifier on searches above.
477: .Ip ^K 8
478: Edit the local KILL file for this newsgroup.
479: Each line of the KILL file should be a command of the form /pattern/j.
480: (With the exception that
481: .I rn
482: will insert a line at the beginning of the form \*(L"THRU <number>\*(R",
483: which tells
484: .I rn
485: the maximum article number that the KILL file has been applied to. You
486: may delete the THRU line to force a rescan of current articles.)
487: You may also have reason to use the m, h, or a modifiers.
488: Be careful with the M modifier in a kill file\*(--there are more efficient
489: ways to never read an article.
490: You might have reason to use it if a particular series of articles is posted
491: to multiple newsgroups.
492: In this case, M would force you to view the article in a different newsgroup.
493: .Sp
494: To see only newgroup articles in the control newsgroup, for instance, you
495: might put
496: .Sp
497: /^/j
498: .br
499: /newgroup/m
500: .Sp
501: which kills all subjects not containing \*(L"newgroup\*(R".
502: You can add lines automatically via the K command and K search modifiers,
503: but editing is the only way to remove lines.
504: If either of the environment variables VISUAL or EDITOR is set, the
505: specified editor will be invoked; otherwise a default editor (normally vi)
506: is invoked on the KILL file.
507: .Sp
508: The KILL file may also contain switch setting lines beginning with \*(L'&\*(R'.
509: Additionally, any line beginning with \*(L'X\*(R' is executed on exit
510: from the newsgroup rather than on entrance.
511: This can be used to set switches back to a default value.
512: .Ip r 8
513: Reply through net mail.
514: The environment variables MAILPOSTER and MAILHEADER may be used to modify
515: the mailing behavior of
516: .I rn
517: (see environment section).
518: If on a nonexistent article such as the "End of newsgroup" pseudo-article
519: (which you can get to with a \*(L'$\*(R' command), invokes the mailer to
520: nobody in particular.
521: .Ip R 8
522: Reply, including the current article in the header file generated.
523: (See \*(L'F\*(R' command below).
524: The YOUSAID environment variable controls the format of the attribution line.
525: .Ip f 8
526: Submit a followup article.
527: If on a nonexistent article such as the "End of newsgroup" pseudo-article
528: (which you can get to with a \*(L'$\*(R' command), posts an original
529: article (basenote).
530: .Ip F 8
531: Submit a followup article, and include the old article, with lines prefixed
532: either by \*(L">\*(R" or by the argument to a
533: .B \-F
534: switch.
535: .I Rn
536: will attempt to provide an attribution line in front of the quoted article,
537: generated from the From: line of the article.
538: Unfortunately, the From: line doesn't always contain the right name; you
539: should double check it against the signature and change it if necessary,
540: or you may have to apologize for quoting the wrong person.
541: The environment variables NEWSPOSTER, NEWSHEADER and ATTRIBUTION may be
542: used to modify the posting behavior of
543: .I rn
544: (see environment section).
545: .Ip C 8
546: Cancel the current article, but only if you are the contributor or superuser.
547: .Ip c 8
548: Catch up in this newsgroup; i.e., mark all articles as read.
549: .Ip u 8
550: Unsubscribe to this newsgroup.
551: .Ip "s destination" 8
552: Save to a filename or pipe using sh.
553: If the first character of the destination is a vertical bar, the rest of
554: the command is considered a shell command to which the article is passed
555: through standard input.
556: The command is subject to filename expansion.
557: (See also the environment variable PIPESAVER.)
558: If the destination does not begin with a vertical bar, the rest of the
559: command is assumed to be a filename of some sort.
560: An initial tilde \*(L'~\*(R' will be translated to the name of the home
561: directory, and an initial environment variable substitution is also allowed.
562: If only a directory name is specified, the environment variable SAVENAME
563: is used to generate the actual name.
564: If only a filename is specified (i.e. no directory), the environment variable
565: SAVEDIR will be used to generate the actual directory.
566: If nothing is specified, then obviously both variables will be used.
567: Since the current directory for rn while doing a save command is your
568: private news directory, saying \*(L"s ./filename\*(R" will force the file
569: to your news directory.
570: Save commands are also run through % interpretation, so that you can
571: say \*(L"s %O/filename\*(R" to save to the directory you were in when you ran
572: .IR rn ,
573: and \*(L"s %t\*(R" to save to a filename consisting of the Internet address
574: of the sender.
575: .Sp
576: After generating the full pathname of the file to save to,
577: .I rn
578: determines if the file exists already, and if so, appends to it.
579: .I Rn
580: will attempt to determine if an existing file is a mailbox or a normal file,
581: and save the article in the same format.
582: If the output file does not yet exist,
583: .I rn
584: will by default ask you which format you want, or you can make it skip the
585: question with either the
586: .B \-M
587: or
588: .B \-N
589: switch.
590: If the article is to be saved in mailbox format, the command to do so is
591: generated from the environment variable MBOXSAVER.
592: Otherwise, NORMSAVER is used.
593: .Ip "S destination" 8
594: Save to a filename or pipe using a preferred shell, such as csh.
595: Which shell is used depends first on what you have the environment variable
596: SHELL set to, and in the absence of that, on what your news administrator
597: set for the preferred shell when he or she installed
598: .IR rn .
599: .Ip "| command" 8
600: Shorthand for \*(L"s | command\*(R".
601: .Ip "w destination" 8
602: The same as \*(L"s destination\*(R", but saves without the header.
603: .Ip "W destination" 8
604: The same as \*(L"S destination\*(R", but saves without the header.
605: .Ip & 8
606: Print out the current status of command line switches.
607: .Ip "&switch {switch}" 8
608: Set additional command line switches.
609: .Ip && 8
610: Print out current macro definitions.
611: .Ip "&&keys commands" 8
612: Define an additional macro.
613: .Ip !command 8
614: Escape to a subshell.
615: One exclamation mark (!) leaves you in your own news directory.
616: A double exclamation mark (!!) leaves you in the spool
617: directory of the current newsgroup.
618: The environment variable SHELL will be used if defined.
619: If
620: .I command
621: is null, an interactive shell is started.
622: .Sp
623: You can use escape key substitutions described later to get to many
624: run-time values.
625: The command is also run through % interpretation, in case it is being called
626: from a range or search command.
627: .Ip = 8
628: List subjects of unread articles.
629: .Ip # 8
630: Print last article number.
631: .Sh "Pager Level"
632: At the pager level (within an article), the prompt looks like this:
633: .Sp
634: \*(--MORE\*(--(17%)
635: .Sp
636: and a number of commands may be given:
637: .Ip SP 8
638: Display next page.
639: .Ip x 8
640: Display next page and decrypt as a rot13 message.
641: .Ip d,^D 8
642: Display half a page more.
643: .Ip CR 8
644: Display one more line.
645: .Ip q 8
646: Go to the end of the current article (don't mark it either read or unread).
647: Leaves you at the \*(L"What next?\*(R" prompt.
648: .Ip j 8
649: Junk the current article.
650: Mark it read and go to the end of the article.
651: .Ip ^L 8
652: Refresh the screen.
653: .Ip X 8
654: Refresh the screen and decrypt as a rot13 message.
655: .Ip b,^B 8
656: Back up one page.
657: .Ip gpattern 8
658: Goto (search forward for)
659: .I pattern
660: within current article.
661: Note that there is no space between the command and the pattern.
662: If the pattern is found, the page containing the pattern will be displayed.
663: Where on the page the line matching the pattern goes depends on the value
664: of the
665: .B \-g
666: switch.
667: By default the matched line goes at the top of the screen.
668: .Ip G 8
669: Search for g pattern again.
670: .Ip ^G 8
671: This is a special version of the \*(L'g\*(R' command that is for skipping
672: articles in a digest.
673: It is equivalent to setting \*(L"\-g4\*(R" and then executing the command
674: \*(L"g^Subject:\*(R".
675: .Ip TAB 8
676: This is another special version of the \*(L'g\*(R' command that is for
677: skipping inclusions of older articles.
678: It is equivalent to setting \*(L"\-g4\*(R" and then executing the command
679: \*(L"g^[^c]\*(R", where \fIc\fR is the first character of the last line
680: on the screen.
681: It searches for the first line that doesn't begin with the same character
682: as the last line on the screen.
683: .Ip !command 8
684: Escape to a subshell.
685: .PP
686: The following commands skip the rest of the current article, then behave just
687: as if typed to the \*(L"What next?\*(R" prompt at the end of the article.
688: See the documentation at the article selection level for these commands.
689: .Sp
690: # $ & / = ? c C f F k K ^K m M r R ^R u v Y ^
691: .br
692: number
693: .br
694: range{,range} command{:command}
695: .Sp
696: The following commands also skip to the end of the article, but have the
697: additional effect of marking the current article as read:
698: .Sp
699: n N ^N s S | w W
700: .Sp
701: .Sh "Miscellaneous facts about commands"
702: An \*(L'n\*(R' typed at either the \*(L"Last newsgroup\*(R" prompt or a
703: \*(L"Last article\*(R" prompt will cycle back to the top of the newsgroup
704: or article list, whereas a \*(L'q\*(R' will quit the level.
705: (Note that \*(L'n\*(R' does not mean \*(L"no\*(R", but rather
706: \*(L"next\*(R".)
707: A space will of course do whatever is shown as the
708: default, which will vary depending on whether rn thinks you have more
709: articles or newsgroups to read.
710: .PP
711: The \*(L'b\*(R' (backup page) command may be repeated until the beginning of
712: the article is reached.
713: If
714: .I rn
715: is suspended (via a ^Z), then when the job is resumed, a refresh (^L) will
716: automatically be done (Berkeley-type systems only).
717: If you type a command such as \*(L'!\*(R' or \*(L's\*(R' which takes you
718: from the middle of the article to the end, you can always get back into the
719: middle by typing \*(L'^L\*(R'.
720: .PP
721: In multi-character commands such as \*(L'!\*(R', \*(L's\*(R', \*(L'/\*(R',
722: etc, you can interpolate various run-time values by typing escape and a
723: character.
724: To find out what you can interpolate, type escape and \*(L'h\*(R', or check
725: out the single character % substitutions for environment variables in the
726: Interpretation and Interpolation section, which are the same.
727: Additionally, typing a double escape will cause any % substitutions in the
728: string already typed in to be expanded.
729: .Sh "Options"
730: .I Rn
731: has a nice set of options to allow you to tailor the interaction
732: to your liking.
733: (You might like to know that the author swears by \*(L"\-e \-m \-S \-/\*(R".)
734: These options may be set on the command line, via the RNINIT
735: environment variable, via a file pointed to by the RNINIT variable, or
736: from within rn via the & command.
737: Options may generally be unset by saying \*(L"+switch\*(R".
738: Options include:
739: .TP 5
740: .B \-c
741: checks for news without reading news.
742: If a list of newsgroups is given on the command line, only those newsgroups
743: will be checked; otherwise all subscribed-to newsgroups are checked.
744: Whenever the
745: .B \-c
746: switch is specified, a non-zero exit status from
747: .I rn
748: means that there is unread news in one of the checked newsgroups.
749: The
750: .B \-c
751: switch does not disable the printing of newsgroups with unread news;
752: this is controlled by the
753: .B \-s
754: switch.
755: (The
756: .B \-c
757: switch is not meaningful when given via the & command.)
758: .TP 5
759: .B \-C<number>
760: tells
761: .I rn
762: how often to checkpoint the
763: .IR .newsrc ,
764: in articles read.
765: Actually, this number says when to start thinking about doing a checkpoint
766: if the situation is right.
767: If a reasonable checkpointing situation doesn't arise within 10 more
768: articles, the
769: .I .newsrc
770: is checkpointed willy-nilly.
771: .TP 5
772: .B \-d<directory name>
773: sets the default save directory to something other than ~/News.
774: The directory name will be globbed (via csh) if necessary (and if possible).
775: Articles saved by
776: .I rn
777: may be placed in the save directory or in a subdirectory thereof depending
778: on the command that you give and the state of the environment variables
779: SAVEDIR and SAVENAME.
780: Any KILL files (see the K command in the Article Selection section)
781: also reside in this directory and its subdirectories, by default.
782: In addition, shell escapes leave you in this directory.
783: .TP 5
784: .B \-D<flags>
785: enables debugging output.
786: See common.h for flag values.
787: Warning: normally
788: .I rn
789: attempts to restore your
790: .I .newsrc
791: when an unexpected signal or internal error occurs.
792: This is disabled when any debugging flags are set.
793: .TP 5
794: .B \-e
795: causes each page within an article to be started at the top of the screen,
796: not just the first page.
797: (It is similar to the
798: .B \-c
799: switch of
800: .IR more (1).)
801: You never have to read scrolling text with this switch.
802: This is helpful especially at certain baud rates because you can start reading
803: the top of the next page without waiting for the whole page to be printed.
804: It works nicely in conjuction with the
805: .B \-m
806: switch, especially if you use half-intensity for your highlight mode.
807: See also the
808: .B \-L
809: switch.
810: .TP 5
811: .B \-E<name>=<val>
812: sets the environment variable <name> to the value specified.
813: Within
814: .IR rn ,
815: \*(L"&\-ESAVENAME=%t\*(R" is similar to \*(L"setenv SAVENAME '%t'\*(R" in
816: .IR csh ,
817: or \*(L"SAVENAME='%t'; export SAVENAME\*(R" in
818: .IR sh .
819: Any environment variables set with
820: .B \-E
821: will be inherited by subprocesses of
822: .IR rn .
823: .TP 5
824: .B \-F<string>
825: sets the prefix string for the \*(L'F\*(R' followup command to use in
826: prefixing each line of the quoted article.
827: For example, \*(L"\-F<tab>\*(R" inserts a tab on the front of each line
828: (which will cause long lines to wrap around, unfortunately),
829: \*(L"\-F>>>>\*(R" inserts \*(L">>>>\*(R" on every line, and
830: \*(L"\-F\*(R" by itself causes nothing to be inserted, in case you want to
831: reformat the text, for instance.
832: The initial default prefix is \*(L">\*(R".
833: .TP 5
834: .B \-g<line>
835: tells
836: .I rn
837: which line of the screen you want searched-for strings to show up on when
838: you search with the \*(L'g\*(R' command within an article.
839: The lines are numbered starting with 1.
840: The initial default is \*(L"\-g1\*(R", meaning the first line of the screen.
841: Setting the line to less than 1 or more than the number of lines on the screen
842: will set it to the last line of the screen.
843: .TP 5
844: .B \-h<string>
845: hides (disables the printing of) all header lines beginning with
846: .I string.
847: For instance, \-hexp will disable the printing of the \*(L"Expires:\*(R" line.
848: Case is insignificant.
849: If <string> is null, all header lines except Subject are hidden, and you
850: may then use
851: .B +h
852: to select those lines you want to see.
853: You may wish to use the baud-rate switch modifier below to hide more lines
854: at lower baud rates.
855: .TP 5
856: .B \-H<string>
857: works just like
858: .B \-h
859: except that instead of setting the hiding flag for a header line, it sets
860: the magic flag for that header line.
861: Certain header lines have magic behavior that can be controlled this way.
862: At present, the following actions are caused by the flag for the particular
863: line:
864: the Newsgroups line will only print when there are multiple newsgroups,
865: the Subject line will be underlined, and the Expires line will always be
866: suppressed if there is nothing on it.
867: In fact, all of these actions are the default, and you must use
868: .B +H
869: to undo them.
870: .TP 5
871: .B \-i=<number>
872: specifies how long (in lines) to consider the initial page of an
873: article\*(--normally this is determined automatically depending on baud rate.
874: (Note that an entire article header will always be printed regardless of the
875: specified initial page length.
876: If you are working at low baud rate and wish to reduce the size of the
877: headers, you may hide certain header lines with the
878: .B \(bsh
879: switch.)
880: .TP 5
881: .B \-l
882: disables the clearing of the screen at the beginning of each
883: article, in case you have a bizarre terminal.
884: .TP 5
885: .B \-L
886: tells
887: .I rn
888: to leave information on the screen as long as possible by not blanking
889: the screen between pages, and by using clear to end-of-line.
890: (The
891: .IR more (1)
892: program does this.)
893: This feature works only if you have the requisite termcap
894: capabilities.
895: The switch has no effect unless the
896: .B \-e
897: switch is set.
898: .TP 5
899: .B \-m=<mode>
900: enables the marking of the last line of the previous page
901: printed, to help the user see where to continue reading.
902: This is most helpful when less than a full page is going to be displayed.
903: It may also be used in conjunction with the
904: .B \-e
905: switch, in which case the page is erased, and the first line (which is
906: the last line of the previous page) is highlighted.
907: If
908: .B \-m=s
909: is specified, the standout mode will be used, but if
910: .B \-m=u
911: is specified, underlining will be used.
912: If neither
913: .B =s
914: or
915: .B =u
916: is specified, standout is the default.
917: Use
918: .B +m
919: to disable highlighting.
920: .TP 5
921: .B \-M
922: forces mailbox format in creating new save files.
923: Ordinarily you are asked which format you want.
924: .TP 5
925: .B \-N
926: forces normal (non-mailbox) format in creating new save files.
927: Ordinarily you are asked which format you want.
928: .TP 5
929: .B \-r
930: causes
931: .I rn
932: to restart in the last newsgroup read during a previous session with
933: .I rn.
934: It is equivalent to starting up normally and then getting to the newsgroup
935: with a g command.
936: .TP 5
937: .B \-s
938: with no argument suppresses the initial listing of newsgroups with unread
939: news, whether
940: .B \-c
941: is specified or not.
942: Thus
943: .B \-c
944: and
945: .B \-s
946: can be used together to test \*(L"silently\*(R" the status of news from
947: within your
948: .I .login
949: file.
950: If
951: .B \-s
952: is followed by a number, the initial listing is suppressed after that many
953: lines have been listed.
954: Presuming that you have your
955: .I .newsrc
956: sorted into order of interest,
957: .B \-s5
958: will tell you the 5 most interesting newsgroups that have unread news.
959: This is also a nice feature to use in your
960: .I .login
961: file, since it not only tells you whether there is unread news, but also how
962: important the unread news is, without having to wade through the entire
963: list of unread newsgroups.
964: If no
965: .B \-s
966: switch is given
967: .B \-s5
968: is assumed, so just putting \*(L"rn \-c\*(R"
969: into your
970: \&.login file is fine.
971: .TP 5
972: .B \-S<number>
973: causes
974: .I rn
975: to enter subject search mode (^N) automatically whenever a newsgroup is
976: started up with <number> unread articles or more.
977: Additionally, it causes any \*(L'n\*(R' typed while in subject search mode
978: to be interpreted as \*(L'^N\*(R' instead.
979: (To get back out of subject search mode, the best command is probably
980: \&\*(L'^\*(R'.)
981: If <number> is omitted, 3 is assumed.
982: .TP 5
983: .B \-t
984: puts
985: .I rn
986: into terse mode.
987: This is more cryptic but useful for low baud rates.
988: (Note that your system administrator may have compiled
989: .I rn
990: with either verbose or terse messages only to save memory.)
991: You may wish to use the baud-rate switch modifier below to enable terse mode
992: only at lower baud rates.
993: .TP 5
994: .B \-T
995: allows you to type ahead of rn.
996: Ordinarily rn will eat typeahead to prevent your autorepeating space bar from
997: doing a very frustrating thing when you accidentally hold it down.
998: If you don't have a repeating space bar, or you are working at low baud
999: rate, you can set this switch to prevent this behavior.
1000: You may wish to use the baud-rate switch modifier below to disable typeahead
1001: only at lower baud rates.
1002: .TP 5
1003: .B \-v
1004: sets verification mode for commands.
1005: When set, the command being executed is displayed to give some feedback that
1006: the key has actually been typed.
1007: Useful when the system is heavily loaded and you give a command that takes
1008: a while to start up.
1009: .TP 5
1010: .B \-/
1011: sets SAVEDIR to \*(L"%p/%c\*(R" and SAVENAME to \*(L"%a\*(R", which means
1012: that by default articles are saved in a subdirectory of your private news
1013: directory corresponding to the name of the the current newsgroup, with the
1014: filename being the article number.
1015: .B +/
1016: sets SAVEDIR to \*(L"%p\*(R" and SAVENAME to \*(L"%^C\*(R", which by
1017: default saves articles directly to your private news directory, with the
1018: filename being the name of the current newsgroup, first letter capitalized.
1019: (Either
1020: .B +/
1021: or
1022: .B \-/
1023: may be default on your system, depending on the feelings of your news
1024: administrator when he, she or it installed
1025: .IR rn .)
1026: You may, of course, explicitly set SAVEDIR and SAVENAME to other values\*(--see
1027: discussion in the environment section.
1028: .PP
1029: Any switch may be selectively applied according to the current baud-rate.
1030: Simply prefix the switch with +speed to apply the switch at that speed or
1031: greater, and \%\-speed to apply the switch at that speed or less.
1032: Examples: \%\-1200\-hposted suppresses the Posted line at 1200 baud or less;
1033: \%+9600\-m enables marking at 9600 baud or more.
1034: You can apply the modifier recursively to itself also: \%+300\-1200\-t sets
1035: terse mode from 300 to 1200 baud.
1036: .PP
1037: Similarly, switches may be selected based on terminal type:
1038: .Sp
1039: \-=vt100+T set +T on vt100
1040: .br
1041: \-=tvi920\-ETERM=mytvi get a special termcap entry
1042: .br
1043: \-=tvi920\-ERNMACRO=%./.rnmac.tvi
1044: .br
1045: set up special keymappings
1046: .br
1047: +=paper\-v set verify mode if not hardcopy
1048: .PP
1049: Some switch arguments, such as environment variable values, may require
1050: spaces in them.
1051: Such spaces should be quoted via ", ', or \e in the conventional fashion,
1052: even when passed via RNINIT or the & command.
1053: .Sh "Regular Expressions"
1054: The patterns used in article searching are regular expressions such as
1055: those used by
1056: .IR ed (1).
1057: In addition, \ew matches an alphanumeric character and \eW a nonalphanumeric.
1058: Word boundaries may be matched by \eb, and non-boundaries by \eB.
1059: The bracketing construct \e(\ ...\ \e) may also be used, and \edigit matches
1060: the digit'th substring, where digit can range from 1 to 9.
1061: \e0 matches whatever the last bracket match matched.
1062: Up to 10 alternatives may given in a pattern, separated by \e|, with the
1063: caveat that \e(\ ...\ \e|\ ...\ \e) is illegal.
1064: .Sh "Interpretation and Interpolation"
1065: Many of the strings that
1066: .I rn
1067: handles are subject to interpretations of several types.
1068: Under filename expansion, an initial \*(L"~/\*(R" is translated to the name
1069: of your home directory, and \*(L"~name\*(R" is translated to the login
1070: directory for the user specified.
1071: Filename expansion will also expand an initial environment variable, and
1072: also does the backslash, uparrow and percent expansion mentioned below.
1073: .PP
1074: All interpreted strings go through backslash, uparrow and percent
1075: interpretation.
1076: The backslash escapes are the normal ones (such as \en, \et, \ennn, etc.).
1077: The uparrow escapes indicate control codes in the normal fashion.
1078: Backslashes or uparrows to be passed through should be escaped with backslash.
1079: The special percent escapes are similar to printf percent escapes.
1080: These cause the substitution of various run-time values into the string.
1081: The following are currently recognized:
1082: .Ip %a 8
1083: Current article number.
1084: .Ip %A 8
1085: Full name of current article (%P/%c/%a).
1086: (On a Eunice system with the LINKART option, %P/%c/%a returns the name of
1087: the article in the current newsgroup, while %A returns the real name of
1088: the article, which may be different if the current article was posted to
1089: multiple newsgroups.)
1090: .Ip %b 8
1091: Destination of last save command, often a mailbox.
1092: .Ip %B 8
1093: The byte offset to the beginning of the part of the article to be saved,
1094: set by the save command.
1095: The \*(L's\*(R' and \*(L'S\*(R' commands set it to 0, and the \*(L'w\*(R'
1096: and \*(L'W\*(R' commands set it to the byte offset of the body of the article.
1097: .Ip %c 8
1098: Current newsgroup, directory form.
1099: .Ip %C 8
1100: Current newsgroup, dot form.
1101: .Ip %d 8
1102: Full name of newsgroup directory (%P/%c).
1103: .Ip %D 8
1104: \*(L"Distribution:\*(R" line from the current article.
1105: .Ip %f 8
1106: \*(L"From:\*(R" line from the current article, or the \*(L"Reply-To:\*(R"
1107: line if there is one.
1108: This differs from %t in that comments (such as the full name) are not
1109: stripped out with %f.
1110: .Ip %F 8
1111: \*(L"Newsgroups:\*(R" line for a new article, constructed from
1112: \*(L"Newsgroups:\*(R" and \*(L"Followup-To:\*(R" lines of current article.
1113: .Ip %h 8
1114: Name of the header file to pass to the mail or news poster,
1115: containing all the information that the poster program needs in the
1116: form of a message header.
1117: It may also contain a copy of the current article.
1118: The format of the header file is controlled by the MAILHEADER and NEWSHEADER
1119: environment variables.
1120: .Ip %H 8
1121: Host name (your machine's name).
1122: .Ip %i 8
1123: \*(L"Message-I.D.:\*(R" line from the current article, with <> guaranteed.
1124: .Ip %I 8
1125: The reference indication mark (see the
1126: .B \-F
1127: switch.)
1128: .Ip %l 8
1129: The news administrator's login name, if any.
1130: .Ip %L 8
1131: Login name (yours).
1132: .Ip %m 8
1133: The current mode of rn, for use in conditional macros.
1134: .Sp
1135: .nf
1136: i Initializing.
1137: n Newsgroup selection level.
1138: a Article selection level.
1139: p Pager level.
1140: m Miscellaneous questions.
1141: .fi
1142: .Ip %M 8
1143: The number of articles marked to return via the \*(L'M\*(R' command.
1144: If the same article is Marked multiple times, \*(L"%M\*(R" counts it
1145: multiple times in the current implementation.
1146: .Ip %n 8
1147: \*(L"Newsgroups:\*(R" line from the current article.
1148: .Ip %N 8
1149: Full name (yours).
1150: .Ip %o 8
1151: Organization (yours).
1152: .Ip %O 8
1153: Original working directory (where you ran rn from).
1154: .Ip %p 8
1155: Your private news directory, normally ~/News.
1156: .Ip %P 8
1157: Public news spool directory, normally /usr/spool/news.
1158: .Ip %r 8
1159: Last reference on references line of current article (parent article id).
1160: .Ip %R 8
1161: References list for a new article, constructed from the references and article
1162: ID of the current article.
1163: .Ip %s 8
1164: Subject, with all Re's and (nf)'s stripped off.
1165: .Ip %S 8
1166: Subject, with one \*(L"Re:\*(R" stripped off.
1167: .Ip %t 8
1168: \*(L"To:\*(R" line derived from the \*(L"From:\*(R" and \*(L"Reply-To:\*(R"
1169: lines of the current article.
1170: This always returns an Internet format address.
1171: .Ip %T 8
1172: \*(L"To:\*(R" line derived from the \*(L"Path:\*(R" line of the
1173: current article to produce a uucp path.
1174: .Ip %u 8
1175: The number of unread articles in the current newsgroup.
1176: .Ip %U 8
1177: The number of unread articles in the current newsgroup, not counting the
1178: current article.
1179: .Ip %x 8
1180: The news library directory.
1181: .Ip %X 8
1182: The rn library directory.
1183: .Ip %z 8
1184: The length of the current article in bytes.
1185: .Ip %~ 8
1186: Your home directory.
1187: .Ip %. 8
1188: The directory containing your dot files, which is your home directory unless
1189: the environment variable DOTDIR is defined when rn is invoked.
1190: .Ip %$ 8
1191: Current process number.
1192: .Ip %/ 8
1193: Last search string.
1194: .Ip %% 8
1195: A percent sign.
1196: .Ip "%{name} or %{name\-default}" 8
1197: The environment variable \*(L"name\*(R".
1198: .Ip %[name] 8
1199: The value of header line \*(L"Name:\*(R" from the current article.
1200: The \*(L"Name:\ \*(R" is not included.
1201: For example \*(L"%D\*(R" and \*(L"%[distribution]\*(R" are equivalent.
1202: The name must be spelled out in full.
1203: .Ip %`command` 8
1204: Inserts the output of the command, with any embedded newlines translated
1205: to space.
1206: .Ip %""prompt"" 8
1207: Prints prompt on the terminal, then inputs one string, and inserts it.
1208: .Ip "%(test_text=pattern?then_text:else_text)" 8
1209: If
1210: .I test_text
1211: matches
1212: .IR pattern ,
1213: has the value
1214: .IR then_text ,
1215: otherwise
1216: .IR else_text .
1217: The \*(L":else_text\*(R" is optional, and if absent, interpolates the null string.
1218: The = may be replaced with != to negate the test.
1219: To quote any of the metacharacters
1220: (\*(L'=\*(R', \*(L'?\*(R', \*(L':\*(R', or \*(L')\*(R'),
1221: precede with a backslash.
1222: .Ip %digit 8
1223: The digits 1 through 9 interpolate the string matched by the nth bracket
1224: in the last pattern match that had brackets.
1225: If the last pattern had alternatives, you may not know the number of the
1226: bracket you want\*(--%0 will give you the last bracket matched.
1227: .PP
1228: Modifiers: to capitalize the first letter, insert \*(L'^\*(R':
1229: \*(L"%^C\*(R" produces something like \*(L"Net.jokes\*(R".
1230: Inserting \*(L'_\*(R' causes the first letter following the last
1231: \&\*(L'/\*(R' to be capitalized: \*(L"%_c\*(R" produces \*(L"net/Jokes\*(R".
1232: .SH ENVIRONMENT
1233: The following environment variables are paid attention to by
1234: .IR rn .
1235: In general the default values assumed for these variables by
1236: .I rn
1237: are reasonable, so if you are using
1238: .I rn
1239: for the first time, you can safely ignore this section.
1240: Note that the defaults below may not correspond precisely to the defaults
1241: on your system.
1242: To find the actual defaults you would need to look in config.h and common.h
1243: in the rn source directory, and the file INIT in the rn library.
1244: .PP
1245: Those variables marked (%) are subject to % interpolation, and those marked
1246: (~) are subject to both % interpolation and ~ interpretation.
1247: .Ip "ATTRIBUTION (%)" 8
1248: Gives the format of the attribution line in front of the quoted article
1249: included by an F command.
1250: .Sp
1251: Default: In article %i %f writes:
1252: .Ip "CANCEL (~)" 8
1253: The shell command used to cancel an article.
1254: .Sp
1255: Default: inews \-h < %h
1256: .Ip "CANCELHEADER (%)" 8 13v
1257: The format of the file to pass to the CANCEL command in order to cancel
1258: an article.
1259: .Sp
1260: Default:
1261: .br
1262: Newsgroups: %n
1263: .br
1264: Subject: cmsg cancel %i
1265: .br
1266: References: %R
1267: .br
1268: Reply-To: %L@%H.UUCP (%N)
1269: .br
1270: Distribution: %D
1271: .br
1272: Organization: %o
1273: .sp 1
1274: %i cancelled from rn.
1275: .Ip DOTDIR 8
1276: Where to find your dot files, if they aren't in your home directory.
1277: Can be interpolated using \*(L"%.\*(R".
1278: .Sp
1279: Default: $HOME
1280: .Ip "EDITOR (~)" 8
1281: The name of your editor, if VISUAL is undefined.
1282: .Sp
1283: Default: whatever your news administrator compiled in, usually vi.
1284: .Ip "FIRSTLINE (%)" 8
1285: Controls the format of the line displayed at the top of an article.
1286: Warning: this may go away.
1287: .Sp
1288: Default: Article %a %(%U%M!=^00$?(%U more%(%M!=^0$? + %M Marked to return)\e) )in %C:, more or less.
1289: .Ip HIDELINE 8
1290: If defined, contains a regular expression which matches article lines to
1291: be hidden, in order, for instance, to suppress quoted material.
1292: A recommended string for this purpose is \*(L"^>...\*(R", which \fIdoesn't\fR
1293: hide lines with only \*(L'>\*(R', to give some indication that quoted
1294: material is being skipped.
1295: If you want to hide more than one pattern, you can use \*(L"\|\*(R" to
1296: separate the alternatives.
1297: You can view the hidden lines by restarting the article with the \*(L'v\*(R'
1298: command.
1299: .Sp
1300: There is some overhead involved in matching each line of the article against
1301: a regular expression.
1302: You might wish to use a baud-rate modifier to enable this feature only at
1303: low baud rates.
1304: .Sp
1305: Default: undefined
1306: .Ip HOME 8
1307: Your home directory.
1308: Affects ~ interpretation, and the location of your
1309: dot files if DOTDIR is not defined.
1310: .Sp
1311: Default: $LOGDIR
1312: .Ip "KILLGLOBAL (~)" 8
1313: Where to find the KILL file to apply to every newsgroup.
1314: See the \*(L'^K\*(R' command at the newsgroup selection level.
1315: .Sp
1316: Default: %p/KILL
1317: .Ip "KILLLOCAL (~)" 8
1318: Where to find the KILL file for the current newsgroup.
1319: See the commands \*(L'K\*(R' and \*(L'^K\*(R' at the article selection level,
1320: and the search modifier \*(L'K\*(R'.
1321: .Sp
1322: Default: %p/%c/KILL
1323: .Ip LOGDIR 8
1324: Your home directory if HOME is undefined.
1325: Affects ~ interpretation, and the location of your
1326: dot files if DOTDIR is not defined.
1327: .Sp
1328: Default: none.
1329: .Sp
1330: Explanation: you must have either $HOME or $LOGDIR.
1331: .Ip LOGNAME 8
1332: Your login name, if USER is undefined.
1333: May be interpolated using \*(L"%L\*(R".
1334: .Sp
1335: Default: value of getlogin().
1336: .Ip "MAILFILE (~)" 8
1337: Where to check for mail.
1338: .Sp
1339: Default: /usr/spool/mail/%L
1340: .Ip "MAILHEADER (%)" 8
1341: The format of the header file for replies.
1342: See also MAILPOSTER.
1343: .Sp
1344: Default:
1345: .Sp
1346: To: %T
1347: .br
1348: Subject: %(%i=^$?:Re: %S
1349: .br
1350: Newsgroups: %n
1351: .br
1352: In-Reply-To: %i)
1353: .br
1354: %(%[references]!=^$?References\\: %[references]
1355: .br
1356: )Organization: %o
1357: .br
1358: Cc:
1359: .br
1360: Bcc: \en\en
1361: .Ip "MAILPOSTER (~)" 8
1362: The shell command to be used by the reply commands (r and R)
1363: in order to allow you to enter and deliver the response.
1364: .I Rn
1365: will not itself call upon an editor for replies\*(--this
1366: is a function of the program called by
1367: .IR rn .
1368: See also MAILHEADER.
1369: .Sp
1370: Default: Rnmail \-h %h
1371: .Ip "MBOXSAVER (~)" 8
1372: The shell command to save an article in mailbox format.
1373: .Sp
1374: Default: %X/mbox.saver %A %P %c %a %B %C "%b" \e
1375: .br
1376: "From: %T %`date`"
1377: .Sp
1378: Explanation: the first seven arguments are the same as for NORMSAVER.
1379: The eighth argument to the shell script is the new From: line
1380: for the article, including the posting date,
1381: derived either directly from the Posted: line, or not-so-directly from
1382: the Date: line.
1383: Header munging at its finest.
1384: .Ip NAME 8
1385: Your full name.
1386: May be interpolated using \*(L"%N\*(R".
1387: .Sp
1388: Default: name from /etc/passwd, or ~/.fullname.
1389: .Ip "NEWSHEADER (%)" 8 16v
1390: The format of the header file for followups.
1391: See also NEWSPOSTER.
1392: .Sp
1393: Default:
1394: .Sp
1395: Newsgroups: %(%F=^$?%C:%F)
1396: .br
1397: Subject: %(%S=^$?%"\n\nSubject: ":Re: %S)
1398: .br
1399: Summary:
1400: .br
1401: Expires:
1402: .br
1403: %(%R=^$?:References: %R
1404: .br
1405: )Sender:
1406: .br
1407: Reply-To: %L@%H.UUCP (%N)
1408: .br
1409: Followup-To:
1410: .br
1411: Distribution: %(%i=^$?%"\nDistribution: ":%D)
1412: .br
1413: Organization: %o
1414: .br
1415: Keywords: \en\en
1416: .Ip "NEWSPOSTER (~)" 8
1417: The shell command to be used by the followup commands (f and F)
1418: in order to allow you to enter and post a followup news article.
1419: .I Rn
1420: will not itself call upon an editor for followups\*(--this
1421: is a function of the program called by
1422: .IR rn .
1423: See also NEWSHEADER.
1424: .Sp
1425: Default: Pnews \-h %h
1426: .Ip "NORMSAVER (~)" 8
1427: The shell command to save an article in the normal (non-mailbox) format.
1428: .Sp
1429: Default: %X/norm.saver %A %P %c %a %B %C "%b"
1430: .Ip ORGANIZATION 8
1431: Either the name of your organization, or the name of a file containing the
1432: name of your organization.
1433: May be interpolated using \*(L"%o\*(R".
1434: .Sp
1435: Default: whatever your news administrator compiled in.
1436: .Ip PAGESTOP 8
1437: If defined, contains a regular expression which matches article lines to
1438: be treated as form-feeds.
1439: There are at least two things you might want to do with this.
1440: To cause page breaks between articles in a digest, you might define it
1441: as \*(L"^--------\*(R".
1442: To force a page break before a signature, you could define it
1443: as \*(L"^-- $\*(R".
1444: (Then, when you see \*(L"--\*(R" at the bottom of the page, you can skip
1445: the signature if you so desire by typing \*(L'n\*(R' instead of space.)
1446: To do both, you could use \*(L"^--\*(R".
1447: If you want to break on more than one pattern, you can use \*(L"\|\*(R" to
1448: separate the alternatives.
1449: .Sp
1450: There is some overhead involved in matching each line of the article against
1451: a regular expression.
1452: You might wish to use a baud-rate modifier to enable this feature only at
1453: low baud rates.
1454: .Sp
1455: Default: undefined
1456: .Ip "PIPESAVER (%)" 8
1457: The shell command to execute in order to accomplish a save to a pipe
1458: (\*(L"s\ |\ command\*(R" or \*(L"w\ |\ command\*(R").
1459: The command typed by the user is substituted in as %b.
1460: .Sp
1461: Default: %(%B=^0$?<%A:tail +%Bc %A |) %b
1462: .Sp
1463: Explanation: if %B is 0, the command is \*(L"<%A %b\*(R", otherwise
1464: the command is \*(L"tail +%Bc %A | %b\*(R".
1465: .Ip RNINIT 8
1466: Default values for switches may be passed to
1467: .I rn
1468: by placing them in RNINIT.
1469: Any switch that is set in RNINIT may be overruled
1470: on the command line, or via the \*(L'&\*(R' command from within
1471: .IR rn .
1472: Binary-valued switches that are set with \*(L"\-switch\*(R" may be unset
1473: using \*(L"+switch\*(R".
1474: .Sp
1475: If RNINIT begins with a \*(L'/\*(R' it is assumed to be the name of a file
1476: containing switches.
1477: If you want to set many environment variables but don't want to keep
1478: them all in your environment, or if the use of any of these variables
1479: conflicts with other programs, you can use this feature along with the
1480: .B \-E
1481: switch to set the environment variables upon startup.
1482: .Sp
1483: Default: \*(L" \*(R".
1484: .Ip "RNMACRO (~)" 8
1485: The name of the file containing macros and key mappings.
1486: See the MACROS section.
1487: .Sp
1488: Default: %./.rnmac
1489: .Ip "SAVEDIR (~)" 8
1490: The name of the directory to save to, if the save command does not specify
1491: a directory name.
1492: .Sp
1493: Default:
1494: .br
1495: If
1496: .B \-/
1497: is set: %p/%c
1498: .br
1499: If
1500: .B +/
1501: is set: %p
1502: .Ip "SAVENAME (%)" 8
1503: The name of the file to save to, if the save command contains only a
1504: directory name.
1505: .Sp
1506: Default:
1507: .br
1508: If
1509: .B \-/
1510: is set: %a
1511: .br
1512: If
1513: .B +/
1514: is set: %^C
1515: .Ip SHELL 8
1516: The name of your preferred shell.
1517: It will be used by the \*(L'!\*(R', \*(L'S\*(R' and \*(L'W\*(R' commands.
1518: .Sp
1519: Default: whatever your news administrator compiled in.
1520: .Ip "SUBJLINE (%)" 8
1521: Controls the format of the lines displayed by the \*(L'=\*(R' command at
1522: the article selection level.
1523: .Sp
1524: Default: %s
1525: .Ip TERM 8
1526: Determines which termcap entry to use, unless TERMCAP contains the entry.
1527: .Ip TERMCAP 8
1528: Holds either the name of your termcap file, or a termcap entry.
1529: .Sp
1530: Default: /etc/termcap, normally.
1531: .Ip USER 8
1532: Your login name.
1533: May be interpolated using \*(L"%L\*(R".
1534: .Sp
1535: Default: $LOGNAME
1536: .Ip "VISUAL (~)" 8
1537: The name of your editor.
1538: .Sp
1539: Default: $EDITOR
1540: .Ip "YOUSAID (%)" 8
1541: Gives the format of the attribution line in front of the quoted article
1542: included by an R command.
1543: .Sp
1544: Default: In article %i you write:
1545: .SH MACROS
1546: When
1547: .I rn
1548: starts up, it looks for a file containing macro definitions (see environment
1549: variable RNMACRO).
1550: Any sequence of commands may be bound to any sequence of keys, so you
1551: could remap your entire keyboard if you desire.
1552: Blank lines or lines beginning with # in the macro file are considered
1553: comments; otherwise
1554: .I rn
1555: looks for two fields separated by white space.
1556: The first field gives the sequence of keystrokes that trigger the macro,
1557: and the second field gives the sequence of commands to execute.
1558: Both fields are subject to % interpolation, which will also translate
1559: backslash and uparrow sequences.
1560: (The keystroke field is interpreted at startup time, but the command field
1561: is interpreted at macro execution time so that you may refer to % values
1562: in a macro.)
1563: For example, if you want to reverse the roles of carriage return and
1564: space in rn
1565: .Sp
1566: ^J \e040
1567: .br
1568: ^M \e040
1569: .br
1570: \e040 ^J
1571: .Sp
1572: will do just that.
1573: By default, all characters in the command field are interpreted as the
1574: canonical
1575: .I rn
1576: characters, i.e. no macro expansion is done.
1577: Otherwise the above pair of macros would cause an infinite loop.
1578: To force macro expansion in the command field, enclose the
1579: macro call with ^( ... ^) thusly:
1580: .Sp
1581: @s |mysavescript
1582: .br
1583: @w w^(@s^)
1584: .Sp
1585: You can use the %() conditional construct to construct macros that work
1586: differently under different circumstances.
1587: In particular, the current mode (%m) of
1588: .I rn
1589: could be used to make a command that only works at a particular level.
1590: For example,
1591: .Sp
1592: ^[[O %(%m=p?\e040)
1593: .Sp
1594: will only allow the macro to work at the pager level.
1595: .Sp
1596: %(%{TERM}=vt100?^[[O) /^J
1597: .Sp
1598: will do the binding only if the terminal type is vt100,
1599: though if you have many of these it would be better to have separate
1600: files for each terminal.
1601: .Sp
1602: If you want to bind a macro to a function key that puts a common garbage character
1603: after the sequence (such as the carriage return on the end of Televideo 920
1604: function sequences), DO NOT put the carriage return
1605: into all the sequences or you will waste a CONSIDERABLE amount of internal
1606: storage.
1607: Instead of \*(L"^AF^M\*(R", put \*(L"^AF+1\*(R", which indicates to
1608: .I rn
1609: that it should gobble up one character after the F.
1610: .SH AUTHOR
1611: Larry Wall <[email protected]>
1612: .br
1613: Regular expression routines are borrowed from emacs, by James Gosling.
1614: .SH FILES
1615: .Ip "%./.newsrc" 1.25i
1616: status of your news reading
1617: .Ip "%./.oldnewsrc" 1.25i
1618: backup copy of your
1619: .I .newsrc
1620: from start of session
1621: .Ip "%./.rnlock" 1.25i
1622: lock file so you don't screw up your
1623: .I .newsrc
1624: .Ip "%./.rnlast" 1.25i
1625: info from last run of rn
1626: .Ip "%./.rnsoft" 1.25i
1627: soft pointers into /usr/lib/active to speed startup, synchronous with
1628: .I .newsrc
1629: .Ip "%./.rnhead" 1.25i
1630: temporary header file to pass to a mailer or news poster
1631: .Ip "%./.rnmac" 1.25i
1632: macro and keymap definitions
1633: .Ip "%p" 1.25i
1634: your news save directory, usually ~/News
1635: .Ip "%x/active" 1.25i
1636: the list of active newsgroups, usually /usr/lib/news/active
1637: .Ip "%P" 1.25i
1638: the public news spool directory, usually /usr/spool/news
1639: .Ip "%X/INIT" 1.25i
1640: system-wide default switches
1641: .SH SEE ALSO
1642: newsrc(5), more(1), readnews(1), Pnews(1), Rnmail(1)
1643: .SH DIAGNOSTICS
1644: Generally self-documenting, as they say.
1645: .SH BUGS
1646: The
1647: .B \-h
1648: switch can only hide header lines that
1649: .I rn
1650: knows about.
1651: .PP
1652: The \*(L'\-\*(R' command doesn't cross newsgroup boundaries, and only undoes
1653: the last article selection.
1654: .PP
1655: If you edit your
1656: .I .newsrc
1657: while
1658: .I rn
1659: is running,
1660: .I rn
1661: will happily wipe out your changes when it decides to
1662: write out the
1663: .I .newsrc
1664: file.
1665: .PP
1666: .I Rn
1667: doesn't do certain things (like ordering articles on posting date) that
1668: the author feels should be handled by inews.
1669: .PP
1670: Marking of duplicate articles as read in cross-referenced newsgroups will
1671: not work unless the Xref patch is installed in inews.
1672: .PP
1673: If you get carried away with % or escape substitutions, you can overflow
1674: buffers.
1675: .PP
1676: There should be no fixed limit on the number of newsgroups.
1677: .PP
1678: Some of the more esoteric features may be missing on machines with limited
1679: address space.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.