home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 31
/
CDASC_31_1996_juillet_aout.iso
/
internet
/
rnr214.zip
/
RNR.DOC
< prev
next >
Wrap
Text File
|
1996-04-09
|
59KB
|
1,495 lines
[ NOTE: trademarks may be used in this document. use of trademarks does not
indicate any endorsement of products or corporations, any disprespect for
trademark law, any contesting of the validity of the trademarks, etc. etc. ]
rnr: (formerly `rusnews')
threaded newsreader for ms-dos waffle, uupc, and uufree. kill/antikill
files, crosspost filtering, console/modem use.
NON-BACKWARDS-COMPATIBLE NOTE:
v1.28 has changed the meaning of the -p/--port parameter, so that
it is 1-based instead of 0-based. this means that externs and
batch files will have to be changed for modem use, and also that
waffle's `%d' can be used to indicate the device.
NON-BACKWARDS-COMPATIBLE NOTE:
v1.28 handles --trusted before --port correctly, whereas before using
--port after --trusted would not work. if you were depending on this
broken behavior, you will need to modify your batch files.
Primary Author
-=------------
Russell_Schulz@locutus.ofB.ORG (960409)
Credits
-=-----
Kim Storm - author of `nn' - a much more powerful Unix newsreader
Bill Fenner - documenter of waffle 1.65's password file
Rhys Weatherley - suggester of hashing to improve threading in limited memory
Henrik Storner - charset and all of the UUPC work and finder of various errors
Thomas Wagner - author of EXEC.PAS and giver of memory
Version for This Document
-=-----------------------
2.14 (this information can be found in the start of rnrglob.pas, and
rnr will spit it out upon running)
Companion Software
-=----------------
trived.exe - trivial editor. tiny vi-subset, somewhat minimal screen
updating, can be used on the console without ANSI.SYS present, takes
about 20k
if anyone has an editor which has these properties:
- small memory requirements (no longer essential with --swap !)
- runs on console (without ANSI.SYS) and through a fossil driver
- secure (no accessing unallowed files)
please let me know.
vspell.exe - visual speller. not like unix vspell at all yet. sorry.
(not released -- it's got some quite silly limitations)
makenews.exe - makes a newsgroup out of whatever you've got laying
around, including exploded MMDF mailboxes or waf164 mail.
makenov.exe - makes News OVerview databases for greatly increased
speed when reading news.
Limitations
-=---------
quite a few, compared to the real nn--listed in start of rnr.pas
Where to Find New Versions
-=------------------------
minor updates end up in ftp.halcyon.com:/pub/waffle/news, thanks to
the generosity of Ralph Sims. updates no longer go on simtel20 due
to their policy refusing it (because I will not put my home address
or phone number in the documentation -- they call this `anonymous').
Intended Users
-=------------
people who run ms-dos waffle, uupc, or uufree at the console (not
through a dialup line) who have total control to the computer anyway.
rnr has the capability to allow editing of postings in place,
unlimited (but slightly checked) modification of headers, and shelling
to a command line (for trusted users).
as of v2.00 rnr can be run over the phone lines. when run over the
phone lines, it defaults to a non-trusted mode (which can be overridden
by the command line (using different extern entries)) which does not
allow users to do some of the above things.
source code (compilable with Borland's Turbo Pascal 4) should have been
included, since that's the way I sent it out -- unless you got it is
part of the uufree package, which has a binary-only distribution due to
size constraints. in that case, source should still be available from
the full package.
How To Set It Up for Use With Waffle
-=----------------------------------
possibly, you may not have to do a thing other than copying the rnr.exe
file to a directory listed in your PATH environment variable (or even in
the current directory, due to a bad design decision in ms-dos and
compatibles). if you want, you can set the environment variables
NET_NAME or USER or LOGNAME or USERNAME to be the waffle user id, or
just pass it in on the command line. if your editor is not vi, set the
environment variable EDITOR (or VISUAL). if your vspeller is not
vspell, set the environment variable SPELL (or VSPELL).
example: waffle id chris, editor is emacs, vspeller is spellchk:
set USER=chris
set EDITOR=c:\tools\emacs
set VSPELL=c:\tools\spellchk
in both cases above, an extension (either `.com' or `.exe') could have
been supplied, but was not required.
also, if c:\tools is on the PATH, those last lines could have been
set EDITOR=emacs
set VSPELL=spellchk
as rnr will search the path for these programs.
for waffle 1.65 users, set the WAFFLEVERSION environment variable (or
set the version: static file entry to `version: 1.65', or use
-v/--interface-version %V in your extern file, or hard-code the waffle
version in the batch file which calls rnr).
if you use a version higher than 1.65, rnr will use the same
password-file-access functions as it would for 1.65.
example: waffle version is 1.65:
set WAFFLEVERSION=1.65
NET_NAME or USER or LOGNAME or USERNAME, EDITOR, SPELL, FULLNAME, and
WAFFLEVERSION can be passed in as command-line paramaters.
WAFFLEVERSION can also be replaced by a version: entry in your static
file. FULLNAME should no longer be required with any 1.64 or 1.65 (or
higher, if the password file format doesn't change again) system--rnr
should be able to find the full name from the password file.
if you use waffle 1.65 and the RUN.BAT file, you might want to utilize
the Chrome feature (hit `C' at `waiting for call' line)--just have that
part of the batch file (the errorcode 120 part) run `rnr' with your
favorite options.
you may also want to create /waffle/menus/rnr (or whatever you call
your extern entry) with a quick introduction to the keystrokes--see the
waffle documentation about how to do this.
Minimal Instructions on How To Read News With It (Console)
-=--------------------------------------------------------
run it.
C:\>rnr <-' (where <-' is the Enter key)
if you haven't set any of the NET_NAME or USER or LOGNAME or USERNAME
environment variables, it will need a command-line parameter--your
waffle user id
C:\>rnr -u chris <-' or C:\>rnr --user chris <-'
if you haven't set the version: entry in your static file, and you're not
running Waffle 1.64, you might need to indicate to rnr that its default
version assumption won't work:
C:\>rnr -u chris -v 1.65 <-' or
C:\>rnr --user chris --interface-version 1.65 <-'
it will then back up your join file (to join.bak) and kill file (to
kill.bak) and antikill file (to antikill.bak) if they exist. then, for
each group in your join file it will find the postings you have not yet
read and sort them into threads (based on the Subject: header) and then
sort the threads as best it can (based on the References: header). for
each group with unread postings, a listing of From: and Subject: line
data will be displayed. hit ? for help at this point. usually, you
just hit unshifted letter keys or number keys to select articles, and
space to go to the next selection screen. after the last selection
screen, each selected article is brought up for browsing. hit ? for
help at this point, too--different functions are available.
while it is reading in unread postings, it will continually list the
article numbers followed by a space. (if an article is killed, the
article number will be immediately followed by a `k'; if malformed or
empty, an `e'; and if it was seeable from a group (other than *.answers
or news.announce.*) located before the current one in your join file, an
`s'. if an article was antikilled, it will be followed by an `a'.
if you are searching, and an article did not have the string you
specified, it will be followed by an `n', unless --highlight-search-hits
was selected.)
while this is going on, you can hit `Q' to quit immediately, `N' to
start on the next group immediately, or `O' to read only the articles
which have already been searched. Note that you cannot accidentally
catch up on a group by hitting `X' here, and that hitting `P' here to go
to the previous group doesn't work until all the files are searched in
(unless you jump to the selection screen with `O'). you can also hit
`!' to escape to a shell (if so allowed). the article numbers (and
letters) will overwrite each other on the same line unless you set the
wandering-numbers option (which is probably only useful for testing
kill files).
The Selection Screen
-=------------------
,------------------------ selection letter (hit this to select for reading)
| ,---------------------- name and/or address of person who posted
| | ,---- size in kilobytes (roughly)
| | | ,-- subject
| | | |
v v v v
a Alpha Centauri 12 Nectar of the Dogs
b Beta Tester 3 >
c Gamma Rays 8 >>
d Delta Changes 15 >Who is Spiderman's Landlord?
e Epsilon Squared 2 >>
f Zeta Noah 4 >>
g Eta Pizza 3 -
h Theta Know 22 >>>>>>>
Alpha Centauri posted about Nectar -- this was a new thread, with no
references to earlier posts (unless Alpha's software is broken). Beta
followed up, and Gamma followed up to Beta's comments.
someone (we don't know who) posted about Spiderman. Delta followed
up, and both Epsilon and Zeta commented on Delta's post (or possibly
someone else who commented on the original Spiderman comment itself).
Eta seems to have broken software, because there was no References:
header at all. it's where it is, and not at the beginning, because of
its Date: header -- it was late. (this might be due to time zones,
which rnr doesn't really pay any attention to yet). and Theta
either doesn't know how to trim quotes, or likes to type a _lot_. and
the Spiderman discussion seems to have been going on a long time,
because the References: chain is quite long.
The Browsing Screen
-=-----------------
these functions are available from the browsing screen:
? help (F1 on console)
n next article
p previous article
a ahead an article, selected or not
b back an article, selected or not
u up a half-page
< up a half-page (PgUp on console)
^B up a half-page
^ top of article (Home on console)
$ bottom of article (End on console)
CR down a line
space down a page
> down a page (PgDn on console)
^F down a page
d down a half-page
w write to disk (all headers, will be only some headers someday)
s save to disk (all headers)
r reply to article in private mail
m mail article in private mail
C copy article to folder
M move article to folder (only in mail pseudo-groups)
f followup to article in public news
k kill article's subject or author for later filtering
K antikill article's subject or author for later automatic selecting
e edit article on disk
D decode rot13 encoding
c compress multiple spaces into one
h toggle display of absolutely all headers
^L refresh screen
^R reread kill/antikill files from disk
Q quit (no update)
N next group (no update)
! shell
= back to selection screen
TAB skip this subject
/ search
. repeat search
: enter command--`:mail', `:post', `:follow', `:cancel', `:quit', etc.
A add alias for author
^G in a digest, go to the next sub-article
v run command from --view-command
x run command from --extract-command
Where to Type in a Message
-=------------------------
rnr allows you to edit all your headers. the headers _need_ to be
separated from the text by an empty line. (this line must be _empty_.
it must _not_ have a space. it must _not_ have a tab. _empty_.) to
prevent people from accidentally merging their body text in with their
header text, rnr inserts the empty line and adds a line like this:
(begin your PUBLIC post at this line, but no sooner)
(begin your PRIVATE mail at this line, but no sooner)
overwrite that line -- it must become the first line of your message
past the headers and past _the empty line_.
rnr will not delete the line for you. rnr also might not warn
you that something is wrong if you delete the empty line -- so be
careful not to do it, if you want your message to propogate.
if you have a signature file, rnr will have include it at the bottom
of your message after a line consisting of `dash dash space' (an
unfortunate delimiter to which we are bound by ancient tradition).
do not type your message below that line, otherwise it is more likely
to be ignored.
Mail Address Alias Expansion
-=--------------------------
rnr looks at user/*/forward files, waffle/system/aliases, and the
aliases file in the user's home directory to expand mail which might
be an alias (without a `@' or `!' char in it).
Configuration Options (Command Line/Rc Files)
-=-------------------------------------------
any option's value which is just `-' is changed to an empty string
many of these can now be handle via --set or :set
-u --user set the username -u %A
if not present, it will use NET_NAME or USER or LOGNAME or USERNAME
environment variables
-n --newsgroup jump directly to a newsgroup -n comp.os.msdos.mail-news
if not present, or invalid, it will just go through the join file. the
newsgroup can be abbreviated just as for the G key (eg. `c.o.m.ma', `waf')
(see discussion at end of --goto section)
-g --goto goto a newsgroup (parameter optional if last on line)
allows you to goto a group like -n/--newsgroup, but prompts for how
to start reading--j to jump in where you were last time, a for all,
or {1}-{9} to for the last 1 through 9 pages (although if some of
the articles are killed, or you hadn't been caught up in the group,
you might not get exactly that number of pages).
additionally, you can select toggles -- {+} to search the articles
without filtering (no `k', `s', or `e'), {h} to search headers, {b}
to search bodies, {w} to search whole articles, {s} to search subjects
only, {n} to search names only, {e} to search either subjects or names.
{-} will only remember articles which were antikilled.
if you select {f}, for frequently asked questions, any article
crossposted to news.answers, or which has 'FAQ' or 'Frequently
Asked Q' in the Subject: line will be presented. right now, there
is no way to restrict this to a recent set -- if you want to look
at all news.answers crossposts in the past 4 pages, use `+h4' and
for a search text use `news.answers'.
for -n and -g, as of v1.28 you can also select a directory (if trusted)
for reading. this directory must have filenames of positive integers,
just like any newsgroup directory. with waffle 1.66's new
`outform: hierarchy' static parameter, this means you can scan your
outgoing mail archives just like you can any newsgroup -- on my
machine, I do a {G}oto `j:/outbox/halcyon' to read some or all mail
I have sent to halcyon (the same filtering options are available).
-p --port specify a fossil port -p 1 (1=com1, 2=com2)
if not present, will use the console (except in rnr0)
(NOTE: before v1.28, these were 0=com1, 1=com2)
--console use console i/o, not fossil --console
necessary to use small-memory version (rnr0) on console
(NOTE: this option is obsolete and will likely disappear altogether)
-l --lines indicate number of lines to use -l 50
defaults to 25 on the console, 24 otherwise (see --detect-video)
-c --columns indicate number of columns -c 132
defaults to 80. quoted postings will still be wrapped shorter than
80 columns for posting followups and replies (see --detect-video)
-f --fullname set the full name -f Chris_Doe
underscores will be changed to spaces; should not be necessary for
waffle 1.64 or 1.65
-s --forum-set-list specify the forum set -s local,usenet,mail
underscores and commas will change to spaces; if not present, will use
all sets in the forums: static entry
-t --trusted allow a remote user to edit articles, change From: lines, etc.
a console user will be allowed to do anything. a dialin user will only be
allowed to do everything if this parameter is given.
-i --interface interface standard for other files -i waffle
supported values: `waffle', `uupc', `uufree'
-v --interface-version specify interface version in use -v %V
if not present, will use WAFFLEVERSION; if still not present, will use
version: static entry; if still not present, will use 1.64
-m --minutes specify number of minutes to run -m %O
if not present, will run a long, long time for console/trusted users, and
sixty minutes otherwise. this is done only to prevent a bbs from being
locked up due to one user's terminal hanging. if your editor does not
support timeouts, you may want to run rnr under a shell that will
watch for timeouts for both rnr and the editor (and vspeller).
-r --rcfile filename for further options -r w:/waffle/lib/rnr.rc
will read the named file, and use each line (except those that begin with
`#') as if it were on the command line. this option does not nest (to
avoid infinite loops). these options override any given previously
(which should probably be changed somehow)
eg.
set shadow 1
set editor w:/waffle/bin/trived.exe
set vspeller w:/waffle/bin/misspell.exe
set vspeller-options -dict_w:/waffle/lib/local.dic
my personal rc file recommendations (once everything is working) include:
set make-space-like-x
set hide-these-headers :Path:Sender:NNTP-Posting-Host:Originator:
set highlight-these-headers :From:Subject:X-Newsreader:Date:
set antikill-references
set auto-antikill
set warn-auto-antikill
set edit-after-vspell
set substring-subject-kill
set substring-from-kill
set substring-subject-antikill
set substring-from-antikill
set case-insensitive-antikill
set quiet
set find-quote-char
all of these listed in this very last example could, instead, be put
in a user's rnr.rc in their home directory if they so wished, so
you might want to leave it up to the user.
a non-trusted user's rnr.rc can not use any restricted options, for
security's sake. the file used with -r/--rcfile _can_ use any and
all options, since it is under the system administrator's control.
any restricted option read in a user's rnr.rc file will be ignored.
--ignore-environment to not use environment variables (EDITOR, VISUAL,
SPELL, VSPELL, NET_NAME, USER, LOGNAME, USERNAME, FULLNAME,
WAFFLEVERSION, TZ)
--mail-prefix private.mail -- would treat all groups beginning with
private.mail.{userid} as mail--no kill `k', antikill `a', seen `s',
or empty `e' modifiers. to use a group (mail folder) of the form
private.mail.{userid}.{folder}, it does not have to be in your
forum definitions file. you can also specify this as `={folder}'
(or just `=' for private.mail.{userid})
mail is private. news is not. if users can edit their own JOIN
files, do _not_ use this feature yet. (user chris could subscribe
to the group private.mail.pat, for instance!) if this is a big
concern for anyone (ie. if people are using this specific feature
on non-trusted sites) I may well fix it. if not, I may well not.
you might want to just leave `mail' as a separate forums definition
file (with, say, `local' and `usenet') and avoid running with
`--forum-set mail' for non-trusted users, so they can't get to _any_
of the mail groups. this also keeps rnews from allowing anyone to
flood your mailbox through news this way.
--ignore-mouse even if it looks like it's there, ignore it. this
may be necessary with older hardware and/or software.
--map {where} {old} {new} see the next section for full details
--set name=value replaces many of the individual options
(e.g., --set find-quote-char, --set quote-color=11)
--unset name undoes the effect of a `set'
--netware get userid from Novell Netware(TM)
some old options are now handle via `set'
for -e, see --editor
for -o, see --editor-options
for -d, see --shadow
detect-video editor vspeller editor-options
vspeller-options shadow make-space-like-x
subjects-case-insensitive subject-length squash-spaces
equate-truncated hide-these-headers
show-only-these-headers highlight-these-headers
no-mail-from no-mail-headers no-news-headers
wandering-numbers antikill-references
show-subject-kills show-from-kills
show-subject-antikills show-from-antikills show-kills
show-antikills auto-antikill warn-auto-antikill
edit-after-vspell case-insensitive-kill
case-insensitive-antikill substring-subject-kill
substring-from-kill substring-subject-antikill
substring-from-antikill quiet confirm-quit
confirm-next-group confirm-next-article
missing-subject-is-ok tilde-home
clear-screen-between-groups antikill-even-killed
use-bios-for-screen hide-form-feeds path-userid
from-userid custom-static halt-on-unknown-groups
mouse-chars-header just-dots no-filemode
quit-message output-separator news-cmd-line
mail-cmd-line mail-agent outgoing-mail outgoing-news
highlight-search-hits colors quote-color
local-charset rmail-single idle swap
article-filename-pattern overview-base-name from-width
size-width enter-group-command dots-on-reset
view-command extract-command encode-command crlf
find-quote-char truncate-id-length layout
alternate-color date-color mail-from news-from
reply-to mail-marker-line news-marker-line debug
mail-date-format news-date-format regex
quote-with-space find-existing-file-command
find-file-command indicate-posted-mail-in-body
Set Configuration Options
-=-----------------------
many of these can be affected via `--option', but `set option' is
now the preferred method
editor set the editor set editor d:/path/editor[.exe]
if not present, will use environment variables VISUAL then EDITOR; if
none present, vi is used. full drive and path information not
required if it will be found in one of the directories listed in the
PATH environment variable.
vspeller set the vspeller set vspeller spellchk[.exe]
used for {v}spell spell-checking articles and mail. if not present,
will use environment variables VSPELL then SPELL; if none present,
vspell is used. full drive and path information not required if
it will be found in one of the directories listed in the PATH
environment variable
editor-options editor options set editor-options !_w:\user\%A
underscores will change to spaces; do not include filename, which
will be put at the end of the argument list
vspeller-options vspeller options set vspeller-options -u %A
underscores will change to spaces; do not include filename, which
will be put at the end of the argument list
shadow shadow all comm output to screen -d 1
if present, will write all comm output to the screen as well--and it
won't be pretty. used for testing when I can't be there to coax it.
the integer is how many milliseconds to delay (based on Turbo Pascal's
delay() routine) every once in a while and must be >0 to take effect
subjects-case-insensitive for subject sorting
subject-length for subject sorting (default 50)
squash-spaces for ignoring spaces when grouping threads
(NOTE: there are known problems with this code at this time, sorry)
equate-truncated min-length for treating truncated subjects as equal
(min-length is probably most useful at 20, or lower with squash-spaces)
(NOTE: there are known problems with this code at this time, sorry)
make-space-like-x makes space act like X when you've got at least one
article selected, which acts a lot more like nn does (because nn doesn't
use the join file format). this could NOT easily be implemented with
the --map construct, since it only happens when there's at least one
selected article -- if you hit space without having selected anything,
it doesn't mark the whole group as read on you.
hide-these-headers to hide headers (except with v)
(see later HEADER-LIST-SYNTAX-NOTE)
show-only-these-headers to show only certain headers (except with v)
(see later HEADER-LIST-SYNTAX-NOTE)
highlight-these-headers to highlight certain headers if they're there
(default `:From:Subject:') (see later HEADER-LIST-SYNTAX-NOTE)
no-mail-from avoid generating From_ line for some mailers
no-mail-headers to avoid generating certain headers for some mailers
(uupc users may want to use `:Message-ID:Received:'). this will not
affect news sent as mail (with CC: poster, or moderated groups)
(see later HEADER-LIST-SYNTAX-NOTE)
no-news-headers to avoid generating certain headers for some posters
(uupc users may want to use `:Message-ID:Path:')
(see later HEADER-LIST-SYNTAX-NOTE)
HEADER-LIST-SYNTAX-NOTE: for these last five options that name headers,
the format is always :Header1:Header2:...:HeaderN:--no spaces, and
a leading colon. see the examples given under `my personal rc file
recommendations'
wandering-numbers to have the article numbers wander everywhere
this is probably useful only for testing or people who are intimately
knowledgeable and curious about their news setup
antikill-references to antikill anything that has your node in the
References: line
show-subject-kills to show what's killed on entering a group
show-from-kills to show what's killed on entering a group
show-subject-antikills to show what's antikilled on entering a group
show-from-antikills to show what's antikilled on entering a group
show-kills to show what's killed on entering a group
show-antikills to show what's antikilled on entering a group
auto-antikill to automatically antikill on entering a group
warn-auto-antikill to warn if any articles were antikilled
edit-after-vspell to automatically edit after every vspell (which is handy
for non-editing piece-of-junk vspellers like the one I threw together)
case-insensitive-kill to ignore case when killing
case-insensitive-antikill to ignore case when antikilling
substring-subject-kill to not require exact matches on killing
substring-from-kill to not require exact matches on killing
substring-subject-antikill to not require exact matches on antikilling
substring-from-antikill to not require exact matches on antikilling
quiet to cut down on the informational messages
confirm-quit to ask for confirmation before using Q (while browsing or
selecting articles) since these don't update the join file (and it can
be a pain to quit out in the middle of selecting 20 pages of articles)
confirm-next-group to ask for confirmation before using N (while browsing)
since this doesn't update the join file (formerly called confirm-next)
confirm-next-article to ask for confirmation before scrolling to the
next message when browsing
missing-subject-is-ok to not trash nonconformant articles with no Subject:
line (in the case of mailing list gateways, say). rnr will fake
a Subject: line by itself if there's a From: line and a Newsgroups:
line in any case -- and will always fake a Subject: line (if required)
in a mail group, since Subject: is not a required mail header.
tilde-home to change ~/ to the user's home directory when writing files
(only available to trusted users anyway -- non-trusted users can _only_
write to files in their home directory) (defaults to true)
clear-screen-between-groups for slow scrolling systems
antikill-even-killed to make antikill take precedence over kill
detect-video to auto-detect number of lines and columns (console only)
(defaults to true)
use-bios-for-screen instead of direct video memory manipulation
hide-form-feeds useful for dialin users, where showing the ^L would
clear the screen (it will still be used as a page break)
path-userid id the id to show in the Path: header--defaults to
current user id (used to default to `news')
from-userid id the id to show in the From_ header--defaults to
current user id
custom-static filename a filename that is consulted before the
system-wide static file. this is only to be used in very weird
setups--do NOT give this to any user unless that user is _very_
trusted, or the file is not editable by them, as anything in the
main static file can be overridden with this file. you may want
to use something like `w:/waffle/statics/%A'. with the new
--mail-from, --news-from, and --reply-to, this option is needed
much less than before.
halt-on-unknown-groups now defaults to just skipping over them
(this is one way to have rnr only bring up very important
groups when you're in a hurry--run it with something like
`--forum-set-list imp' where imp is a copy of your usenet file,
but with non-important groups deleted.)
mouse-chars-header {chars} probably only usable from the rc file,
since you can't escape < or > with command.com to use it on the
command line. defaults to "< > ^ $ * - + Q N @ ~ Z G '" but you
can get rid of < and > if you wish, or include X if you want to live
dangerously.
just-dots just prints a `.' for every article header searched,
not the whole article number (saves time over slow links)
no-filemode prevents changes to filemode variable which can cause
problems on ancient versions of dos. it is automatically selected
if the integer part of the dos version is below 3. (i.e., DOS v2.*)
quit-message message_with_no_spaces prints this message just
before exiting -- you may want to use `Returning_to_waffle...'
so that no one hangs up waiting for waffle to re-load.
output-separator MessageBreak writes this line between articles
written to the same file. defaults to `---cut-here---'.
news-cmd-line command a command to post news, or `(standard)' to
use whatever is in the waffle/extern/_system file if it exists.
the program will have the file redirected on stdin unless this has
a `%f' (which waffle doesn't use), in which case the filename of an
LF-terminated message will be used in place of the `%f'.
mail-cmd-line command a command to deliver mail, or `(standard)'
to use whatever is in the waffle/extern/_system file if it exists.
use `(builtin)' to use the builtin low-memory-requirements routine.
the program will have the file redirected on stdin unless this has
a `%f' (which waffle doesn't use), in which case the filename of an
LF-terminated message will be used in place of the `%f'.
mail-agent tries to be nicer with mail. if there is no new mail,
the last screen of previously read mail is shown.
outgoing-mail folder stores sent mail in this folder
outgoing-news group stores posted news in this group (default: monitor)
highlight-search-hits when searching, articles found are written
highlighted, making it easy to see when the first hit has been found
colors low,high low and high must be in range 0-15
quote-color integer tries to write quoted text in this color
local-charset filename defines the local character set for MIME
rmail-single when each address (To and CC) requires its own
invocation of the mail program
idle minutes after this many idle minutes, rnr will time out
swap tag `no', to prevent swapping when running external
programs, `disk', to swap to disk only, and `ems', to allow
swapping to EMS (expanded memory), or disk if EMS is not
available. the default is `ems' (or `disk' for low versions
of DOS), since rnr now no longer works without swapping (unless
you recompile)
article-filename-pattern filepattern defaults to `*', but used
to default to `*.*'
overview-base-name filename defaults to `overview', but some might
have other random things, like `overview.dat' (ick -- overview.nov
I could see, but there's already too many `.dat' files in the world)
from-width integer width of From: field information on selection
screens -- defaults to 20, minimum 5
size-width integer width of size field information on selection
screens -- defaults to 3, minimum 1, maximum 4
enter-group-command command runs this command upon entering any
group other than a mail pseudo-group. one argument (the directory)
is passed
dots-on-reset shows three dots in the top-left corner whenever
trying to open an article file -- handy when you have 4000 articles
in one directory and opening each one takes a while
view-command command runs this command, passing the filename,
when `v' is hit on the browsing screen (default: viewart)
extract-command command runs this command, passing the filename,
when `x' is hit on the browsing screen (default: munpack)
encode-command command runs this command, passing the filename,
for use with :mailfile and :postfile (default: encode)
I use ``--encode-command command /c uuencbat'' with a uuencbat.bat
in my PATH which reads
uuencode %1 >%2
standard uuencodes will probably need ``uuencode %1 %1 >%2''
crlf uses old news article reading code, which may be noticeably
faster but doesn't handle LF-only files (which waffle.exe creates!)
(this defaults to on, and can be changed with `--unset crlf')
find-quote-char looks ahead in articles for a quoting character
instead of assuming `>' is always the quoting character
truncate-id-length length (defaults to 8) truncates IDs to this many
characters
layout {1,2,normal,squashed} sets the layout of the selection screen
alternate-color integer alternates between this color and the
first from --colors on selection screen (by line) and browsing
screen (by paragraph) -- defaults to same as first from --colors
(which means it looks exactly like it always used to)
date-color integer displays date in this color on selection screen
defaults to first --colors or alternate-color as appropriate
mail-from address overrides the netmail: entries in the static
and custom-static files -- if none, defaults to `%A@%n (%W)'
news-from address overrides the netnews: entries in the static
and custom-static files -- if none, defaults to --mail-from address
reply-to address overrides the replyto: entries in the static
and custom-static files -- if none, no Reply-To: headers are generated
mail-marker-line string the line rnr puts in your outgoing mail right
after the empty line which comes right after the headers to try to make it
hard to accidentally make your mail into one big mass of illegal headers.
defaults to `(begin your PRIVATE mail at this line, but no sooner)'
news-marker-line string the line rnr puts in your outgoing news right
after the empty line which comes right after the headers to try to make it
hard to accidentally make your news into one big mass of illegal headers.
defaults to `(begin your PUBLIC post at this line, but no sooner)'
debug string list of things to give detail about to troubleshoot problems
this is a colon-separated list of areas where rnr will be verbose about
exactly what it's doing. the list can be any number of:
exec -- display command and arguments when running other programs
userid -- show how the userid is found
slowkill -- indicate what headers are being read from disk when killing
all -- all of the above
--set debug=xxx should be the first command-line option to be of fullest use
date-format=format format for current group date (see Date Formats section)
mail-date-format format format for mail date (see Date Formats section)
news-date-format format format for news date (see Date Formats section)
regex enables regular-expression (limited now) capability when searching
regular expression items supported:
char role examples
---- ---- -------
\ escape `a\\b' => `a\b', `a\|b' => `a|b'
| or `a|b' => `a' or `b'
quote-with-space always quotes with `> ' instead of `>'-or-`> ', even
if the quoted line begins with `>'
find-existing-file-command command a command to find an existing
file, or `(builtin)' to just ask. output must be written to a file
passed in at the end of the command.
I use `getfname -v -n -e -o'
find-file-command command a command to find a file (existing or not)
file, or `(builtin)' to just ask. output must be written to a file
passed in at the end of the command.
I will use `getfname -v -w -o' when it supports all of those options.
indicate-posted-mail-in-body a posted article which is also CC:'d to
an address will have a `Comments:' header added to it. if this option
is set, it will also have a line in the body of the text, as an ugly
offering to those who can't read their headers.
Date Formats
-=----------
the default mail-date-format is "www, mmm dd". the default news-date-format
is "mmm dd". on entry to any mail pseudogroup, date-format is set to
mail-date-format, and on entry to any other source, to news-date-format.
the formatting is fairly standard:
yyyy 1995 four-digit year
yy 95 two-digit year
mmm Jun three-letter month
mm 06 two-digit month
dd 22 two-digit month
www Thu three-letter day of week
ww Th two-letter day of week
w R one-letter day of week (S=Sun, T=Tue, R=Thu, A=Sat)
s space
all other characters (e.g., "-", "/", ",") are simply copied.
Set Configuration Options
-=-----------------------
the following names are recognized in addition to the numeric
equivalents:
black
blue
green
cyan
red
magenta
brown
lightgray lightgrey light-gray light-grey
darkgray darkgrey dark-gray dark-grey
lightblue light-blue
lightgreen light-green
lightcyan light-cyan
lightred light-red
lightmagenta light-magenta
yellow
white
Translation of IDs
-=----------------
Novell NetWare(TM) allows user ids longer than 8 characters, so rnr
looks in the {waffle-directory}/etc/idtrans file to translate them
if need be. for instance, if a user's NetWare(TM) login id was
Persephone but her waffle identity was `seph', you would have something
like this in the waffle/etc/idtrans file:
# former-long {whitespace} new-short
persephone seph
Faking Long IDs
-=-------------
(I am using the new-with-waffle 1.66 %_ to indicate the Full Name with
underscores, e.g., Chris_Doe)
if you put this in the standard rnr.rc file
--mail-from %_@%n (%W)
--news-from %_@%n (%W)
--reply-to %_@%n (%W)
--path-userid %_
--from-userid %_
then all mail and news headers will consistently use the full name with
underscores (e.g., Chris_Doe) instead of the login id (e.g., chris).
this looks quite snazzy (imho), instead of like a 10-user DOS LAN.
if you can't use %_, you can still spell out the names explicitly
(e.g., `--mail-from Chris_Doe@%n (%W)' and put these in each user's
custom static file (netmail:, netnews:, replyto: only) or in their
rnr.rc file in their home directories (if trusted).
of course, if you do this you'll need to add aliases in your
/waffle/system/aliases file for mail to be delivered! this is
probably only useful in a place where everyone uses their real
names (e.g., at a business or other private node).
Keyboard Mapping
-=--------------
as of v1.05, you can do simple keyboard remapping.
--map only works from within the rc file.
--map {where} {old} {new} keyboard mapping. where is one of `browse',
`select', `both' (for both browse and select) or `main', which affects
everything in rnr. old and new are either a normal key (not space,
backslash, or equals), or a backslash followed by any key, or an equals
sign followed by the ASCII number for that key. examples:
``--map browse b u'' maps `b' (back article) to `u' (up page)
``--map main \\ \='' always maps `\' to `='
``--map select =13 *'' allows you to use Enter to select threads
(this last used to be its own option --make-return-like-asterisk)
as the map is only evaluated once, doing this:
--map main x y
--map main y x
will simply switch the meanings of x and y, not cause an infinite loop
or force you to live without one of them altogether.
rnr displays ' chars on the screen if you're using the mouse, so
if you have the line
--map main ' =13
in your rc file, you'll have an easy to send an Enter with the mouse.
however, as this may make your life difficult if you frequently use
:post to send articles that have ' in the Subject: line, it is not
mapped this way by default.
you could get around this with --map select ' *
I personally advise against mapping `Q' to anything other than itself,
even though with :quit this is less of a problem than it used to be.
keep in mind when mapping that even though the key you map is not
currently used by rnr, it may be used by a later version. while
you have the key mapped, you won't be able to access the new functions.
Phone In Usage (Old)
-=------------------
the methods listed in this section are no longer supported or even
recommended -- please skim it and read the next section instead.
if you use it for phone-in usage, make SURE you do NOT run it from the
user's home directory--rnr uses the first rnews.exe and rmail.exe
in the PATH (with `.' in front like ms-dog does it, argh!), so running
it from a user's directory would be a SECURITY HOLE.
I know of no other security holes--if you find one, please inform me.
- requires a fossil driver
- if you want to run it from under waffle, you will need to recompile
rnr to use much less memory, and set up extern entries. if you
don't care if waffle is physically in memory while rnr is running,
you can use the full version, with much larger limits -- see the next
section on how to do this.
on my waffle 1.64, the extern entries are cut quite short (it seems) and
not passed to command.com--the last few options were always cut off (if
you had any nontrivial number). so I have to use an additional batch
file (in my PATH) which I call rnr-.bat--this is a pain, since it
was much nicer to have it all in one extern entry. oh well.
rnr-.bat: (split for clarity)
@echo off
w:
cd \
w:\waffle\bin\rnr0 -p %1 -u %2 -m %3 -o %4
-v %5 -e w:/waffle/bin/trived.exe
rnrt.bat: (split for clarity)--for trusted users
@echo off
w:
cd \
w:\waffle\bin\rnr0 -p %1 -u %2 -m %3 -o %4
-v %5 -e w:/waffle/bin/trived.exe -t
for com1:
waffle/extern/rnr:
/command="rnr- 0 %A %O %O %V"
for com2:
waffle/extern/rnr:
/command="rnr- 1 %A %O -%O %V"
for trusted users on com1:
waffle/extern/trustedn:
/access=9 /command="rnrt 0 %A %O %O %V"
(you may want to leave out the -m %3 and -o %4 in the rnrt.bat file,
but this will lead to problems if their terminal crashes, since waffle
won't answer the phone again)
NOTE: all of these batch files first did a `cd' that was guaranteed
to be OUT OF THE USER'S HOME DIRECTORY.
Extern Files for Running Full-Memory Version over Modem
-=-----------------------------------------------------
this may be a lot more useful.
I've changed my run.bat like so:
(new first line)
if exist d:\temp\extrnr.bat del d:\temp\extrnr.bat
:TOP
@ECHO OFF
d:\WAFFLE\BIN\WAFFLE %1
(new label)
:inwaffle
(new if test)
if errorlevel == 121 goto nn
IF ERRORLEVEL == 80 GOTO END
IF ERRORLEVEL == 60 GOTO POLL
IF ERRORLEVEL == 40 GOTO UU
IF ERRORLEVEL == 20 GOTO CRON
GOTO TOP
(new section--you can lose the echo statements when you're happy it works)
:nn
echo now at the start of the nn section
if not exist d:\temp\extrnr.bat echo no extrnr.bat file...
if not exist d:\temp\extrnr.bat goto top
echo starting rnr...
call d:\temp\extrnr.bat
del d:\temp\extrnr.bat
call d:\temp\extrnr2.bat
if errorlevel 1 goto inwaffle
echo now at the end of the nn section--user has logged out
goto top
:POLL
(from here on to the end no changes were made)
I also have this file (callrnr.bat) in waffle/bin
echo arguments are %1 %2 %3 %4
f:
cd \
if '%2'=='LOCAL' goto local
:dialin
rnr -u %1 -p %4 -m %3 --other-options...
echo waffle online %2 %1>d:\temp\extrnr2.bat
goto towaffle
:local
rnr -u %1 --other-options...
echo waffle online %1>d:\temp\extrnr2.bat
goto towaffle
:towaffle
echo back to waffle...
on lines 7 and 11 (rnr ...) you would put your normal options (-r, etc.)
I have a similar calltrnr (trusted rnr) which has the -t option every
time it calls rnr.
I also have these file (nn, tnn, nn2, and nn3) in waffle/extern
nn:
/shell /command="echo callrnr %A %b %O %d>d:\temp\extrnr.bat" /then="nn2"
tnn: (wrapped)
/access=9 /shell /command="echo caltrnr %A %b %O %d>f:\temp\extrnr.bat"
/then="nn2"
nn2:
/waffle /command="echo please wait a bit after 'logout'..." /then="nn3"
nn3:
/exit=121
this gives access to the large-memory version of rnr--which is a
_lot_ more useful.
the trickery with checking if extrnr.bat exists is to prevent some user
from typing just `nn3' and getting away with extra time, ability to send
mail from someone else's id (due to an old .bat file existing), etc. if
1.64 can do this all in one line, it'd be more elegant (since there would
be less mucking around to stay secure), and less messy, but my playing
around didn't get it to do that. perhaps 1.65 does it easily. from posts
I've seen, it doesn't appear that either version does.
Using rnr without Waffle
-=----------------------
rnr is currently designed to fit into an existing waffle, uupc,
or uufree setup. however, you do not have to install a full, working
system of any of these types to read news, or process mail.
- set an environment variable WAFFLE to the name of a data file
eg. set WAFFLE=w:\system\static
if this environment variable is not there, it will use `./static'
- have in this the following lines (with REAL data, of course, if you
intend to post or send mail. if not, most any old bits will do)
uucpname: foo
node: foo.org
smarthost: bar.org
organ: The House of Foo, Barville, Country
temporary: w:/tmp
timezone: -0600
forums: usenet
user: w:/user
waffle: w:/
- the `waffle' entry is the first portion of the WAFFLE environment
variable, dropping off the `system\static' part
- set environment variables NET_NAME or USER or LOGNAME or USERNAME,
FULLNAME, EDITOR, and SPELL as indicated in earlier sections--or pass
this information in on the command-line in your batch file, or in one
of the rc files.
- create the file w:\system\usenet (change `static' from the WAFFLE
environment variable to the word in the `forums:' static entry).
line 1 or so should be something like
DEFAULT /dir=w:\news
(which would store the 15th news article for, say, comp.os.msdos.mail-news
in something like `w:\news\comp\os\msdos\mail-new\15'). list the
newsgroups available one per line. the DEFAULT can be overridden
with a specific directory name eg.
comp.lang.c++ /dir=w:\news\comp\lang\cpplus
comp.unix.aux /dir=w:\news\comp\unix\ox
(both c++ and aux are not valid msdos filenames, usually)
- create a directory under the `user:' static entry with the same name
as NET_NAME or USER or LOGNAME or USERNAME -- e.g., w:/user/chris
- in this user directory create a file `join' which lists the newsgroups
you wish to read one per line, followed by a space and a `0' eg.
comp.lang.c++ 0
- read news!
Using rnr as a Mail User Agent
-=----------------------------
[
NOTE: do NOT deliver mail to a mail-group with an alias of the form
chris |post private.mail.chris
as a lot of mail nowadays has a Newsgroups: header, and you would
end up posting your private mail to the world!
]
(NOTE: I did not think of this idea -- thanks to Jay Troy)
I use rnr as a mail agent all the time. I just copy new mail files
from my user directory to a newsgroup that isn't in my main
waffle/system/usenet file (it's in waffle/system/mail, and I run rnr
with the --forum-set-list option to access it). since waf165 broke
the useful mail format with an old space-saving hack, you may need to
run EXPLODE2 (available from ftp.halcyon.com) to unpack your mail into
individual files in a directory which you treat as a newsgroup. you
may also want to check makenews (mknews20.zip on simtel).
my waffle/system/mail file reads as so:
DEFAULT /dir=d:\news
private.mail
thus, private.mail.{userid} will be in d:\news\private\mail\{userid}. you
would use your own uucp name instead of private -- you can use anything
you want, instead of your uucp name, as long as you use the --mail-prefix
option.
rnr treats folders as subgroups of your --mail-prefix group.
the main group is referred to as `=', and a folder of `foo' is
referred to as `=foo'. create a folder by using `M'ove or `C'opy
when browsing in a mail group. this will automatically add it to
your join file alphabetically in the list of your mail groups. then
you can use `G'oto to read it.
folders can be nested -- a folder of `=foo.bar.baz' will be
associated with a directory of foo\bar\baz under your --mail-prefix
group's directory. thus, folders cannot have the `/' or `\' or
`:' or `..' in them anywhere.
be careful with using `M'ove--to avoid the time-consuming (and
usually unnecessary) process of renumbering the articles in the
`from' group, it is possible to read a mail group, update the
join file, and reread the group, moving every article out, and
entering an inconsistent state. renumbering wouldn't help this
very much, anyway. what I am thinking of doing is checking the
group when you leave (if any `M'oving was done) and making sure
that the join file number does not point to an article number
higher than those currently in the group. for this version, you
may just want to avoid using `M' unless you're careful not to
move your highest-numbered article.
this restriction should be removed eventually.
Colon Commands
-=------------
s=available on selection screen
b=available on browsing screen
sb :help - help (either browsing or selecting)
sb :postfile - post a new article, including an encoded file
sb :post - post a new article in the current group
sb :mailfile - send mail, including an encoded file
sb :mail - send mail
sb :quit - quit rnr
sb :set - same as --set
sb :unset - same as --unset
sb :version - show the version
sb :show - show various things rnr needs to know about
:show aliases - show aliases
:show aliases string - show aliases which contain `string'
s :next - same as hitting `N'
b :follow - post, setting followups to another group or list of groups
b :cancel - cancel an article world-wide
b :next - same as hitting `n' -- halfway compatible with Unix `more'
Using Other Commands to Process Outgoing Messages
-=-----------------------------------------------
with the new set news-cmd-line and set mail-cmd-line, you have full control
over what programs get run to process mail and news that you want to
send out.
when I used waffle, I used
set news-cmd-line rnews
set mail-cmd-line (builtin)
(the defaults) here. I could also have used
set news-cmd-line (standard)
to use the command listed in my waffle/extern/_system file.
unfortunately, the rmail.exe supplied with waf164 is far too large to
work under rnr unless you use swapping, and the (builtin) mail
processor does not handle mail well unless it goes out to the
smarthost -- which is not good for local users, or mail to a
non-smarthost feed. to handle this well without swapping, you may want
to investigate mailq, which takes much less memory when memory is scarce
and only uses it later, when there's lots.
now, with uufree's rmail (and swapping), I use
set news-cmd-line rnews %f
set mail-cmd-line rmail %i %f
at time of writing, mailq is at
ftp.halcyon.com:/pub/waffle/mail/mailq101.zip.
if your rmail or rnews is passed a filename, use a `%f' in its place
in the command line. the `%f' is not used by waffle, and rnr will
replace it with the filename. if `%f' is not used, rnr will run
the program with a `< filename' at the end -- redirecting stdin for it.
this takes more memory.
for rmail, use `%i' as the destination address.
the commands must be able to handle LF-terminated files, as
that is what will be given to them.
suggested values:
Waffle without mailq, all mail goes to smarthost:
set news-cmd-line (standard)
set mail-cmd-line (builtin)
Waffle with mailq, or with --swap enabled:
set news-cmd-line (standard)
set mail-cmd-line (standard)
UUPC:
set news-cmd-line inews
set mail-cmd-line rmail -t -F %f
set no-mail-from
set no-mail-headers :Received:Message-ID:
set no-news-headers :Path:Message-ID:
uufree:
set news-cmd-line rnews %f
set mail-cmd-line rmail %i %f
Signatures
-=--------
rnr will automatically append the signature file (either `sig', for
postings, or `mailsig'). if the first line of the signature file is not
the standard signature delimiter, two dashes and one space on a line by
themselves ( ``-- '' ), then rnr will add one in for you. so, for
best compatibility for both rnr and waffle, I begin my signatures
with this line--waffle will then add it in (because it's part of my
signature) and rnr will not duplicate it, which is as close as I can
get to having identical signatures out of both without modifying waffle.
of course, if your signature file begins with ``--'' or ``-- '' or
``---'' or some other variant, you will not likely be pleased with the
result.
no one using rnr should _ever_ have the infamous `double sig'! yay!
(unless maybe when using `m'ail, but only if they don't even check.)
Swapping
-=------
Changes to exec.pas, from simtel pgmutil/exec33b.zip
removed ^Z at end
removed `or' in const section (see {--version-4-0--})
realized it just wasn't going to work will with tp4 and gave up...
Changes to exec.pas, from simtel pgmutil/exec23b.zip are marked in the
source--grep for `alpha3'.
Troubleshooting
-=-------------
- make sure you haven't selected --quiet anywhere--then you'll see the
full text of what data rnr is thinking it should use
- (dialin) try the --shadow option
- (dialin) see if trived will work--it's a simpler program that uses
very similar fossil i/o routines
- (dialin) the console keyboard can also be used as of v0.99, so see if
hitting `Q' on the local keyboard helps
- if you can extract 10 or 20 lines from what you think might be the
relevant configuration files and send them along with a description
of a problem, I might be able to duplicate the problem (by setting
my system up the same way in that regard temporarily) and fix it all
in one go. not every problem will lend itself to this approach
immediately, and the really relevant files might not be at all obvious,
but if you can find a few such lines, it may be a lot easier for me,
and if I can reply with a solution in the first piece of mail instead
in the third, it'd be easier for you, too. in the case of uufree,
the UUFREE.DF file should have almost everything.
make sure you NEVER send me a file with a password still in it.
- please make sure you've read the docs, the FAQ sheet, the todo sheet,
and the shortcomings section at the top of rnr.pas before you
send me mail with a problem. thanks. it is almost always very
helpful to me to know which version you're running, as I can tell
if what you're talking about was fixed, changed, added, or what-have-you
in the latest available version.
if you send a run-time error, please also send the version of rnr,
otherwise I won't be able to find where it points.
- if you post a message looking for an answer, mail me at the same time
so that you can be sure I see it. with rnr you can simply add a
`CC: Russell_Schulz@locutus.ofB.ORG' header anywhere in
among the generated headers, and it will also send it to me.
Redeeming Features
-=----------------
- compatible with waffle--no separate database or maintenance required,
and at any time you can switch back and forth between waffle's internal
newsreader(s), other waffle-compatible newsreader(s), and rnr
- moderately compatible with uupc (more so all the time)
- compatible with uufree
- uses a subset of nn's keystrokes for efficient newsreader (on console
or over modem) which is still (imho) easy to use
- hit `k' while reading to kill that subject or author, option of either
in that group or in all groups
- hit `K' while reading to antikill--using the same criteria
- automatic filtering of crossposts--any article which is crossposted
will only be shown if the group you're reading is the first one in your
join file to which it was posted (i.e., you only read it once, the way
it was meant to be) -- unless it's in a `special' group, such as a
news.announce.* group
- can be used over a phone line
- will time out eventually if required
- can call external spell checker for mail and postings
- slightly mousified