/* not completely translated! */

RNEWS
-----

Usage:
	RNEWS

RNEWS is the centerpiece of the news system. It unpacks the news batches
in the mail queue and distributes the news articles both to the local
news tree and to remote sites. For the latter purpose, *.B files are
created in the spool directories (see batch(1)).

RNEWS supports a history feature that enables to reject articles that
have already appeared (so-called "duplicates", or "dupes" for short).
Other improvements on to the Mercury RNEWS program include:

	- Extended SYS file format (resembling CNEWS)
	- Clearly defined rules to determine what news articles are
	  spooled to which sites (also resembling CNEWS)
	- No more choking on articles >64KB (as long as they fit into
	  memory)
	- Only those articles that cannot be places elsewhere are put
	  into the junk pseudo-newsgroup.
	- The full name of the local site (with the domain name) is
	  written to the Path: line.
	- Compressed, frozen and gzipped news are accepted both in internal 
	  ("#! [cfg]unbatch") and external ("r[cfg]news", "[cfg]rnews") format.
	  'z' works like 'g' in all these cases (guess what that means :-) )
	- RNEWS recognize compressed batches (any method) and act accordingly,
	  even if they are just sent to "rnews" rather than "r[cfg]news".

The NEWS.DEF file remains unchanged, so for the switch from Mercury RNEWS
to Hermes RNEWS only the SYS and ACTIVE files must be adapted (not even
that in same cases), and off you go! (see nhm(1)).

/* out of time translating, switch to German */

Bevor ich das Format des ACTIVE- und SYS-Files beschreiben kann, muá ich
kurz auf den 

Newsgroup-Pattern-Matcher 
-------------------------

eingehen. Er vergleicht einen Newsgroupnamen (instance), der z. B. aus der 
Newsgroups:-Zeile stammt, mit einem Newsgroupnamenmuser (pattern), das aus 
dem ACTIVE- oder SYS-File stammt. Distribution-Namen aus der Distribution:-
Zeile werden ebenfalls mit Newsgroupnamenmustern verglichen (doch dazu
sp„ter).

Verglichen werden immer W”rter, das heiát Teile zwischen Punkten, 
nacheinander vom Anfang zum Ende. Ein Wort aus der instance paát auf ein 
Wort aus dem pattern, wenn bei W”rter gleich sind oder wenn das Wort aus
dem pattern "all" oder "*" ist. 

Der Patternmatcher bewertet die šbereinstimmung von pattern und instance
mit einer Zahl: 0 bedeutet keine šbereinstimmung, 1 oder h”her bedeutet
šbereinstimmung. Dabei wird der Wert von 1 an jeweils fuer jedes ueberein-
stimmende Wort, das im pattern nicht "*" oder "all", um 1 erh”ht. (Keine
Panik, es kommt noch ein Beispiel, und wozu das gut ist, wird auch noch
erkl„rt.)

Grunds„tzlich darf das pattern nicht l„nger sein als die instance, sonst
wird grunds„tzlich 0 (keine šbereinstimmung) zurueckgeliefert. Wenn die
instance nach Ende des pattern noch weitere W”rter enth„lt, so „ndert das
den šbereinstimmungswert nicht. Ausnahme: Wenn pattern mit einem Punkt
endet (gewissermaáen mit einem leeren Wort), dann darf instance an dieser
Stelle kein Wort mehr haben, muá also (in Worten) genausolang sein wie
pattern vor dem abschlieáenden Punkt. Dabei wird der šbereinstimmungswert
um eins erh”ht.

Beispiele:

pattern                         |instance                        |Wert
--------------------------------+--------------------------------+----
all                             |comp.sources.atari.st           |   1
comp                            |comp.sources.atari.st           |   2
comp.*.atari.st                 |comp.sources.atari.st           |   4
                                |                                |
alt.romance                     |alt.romance                     |   3
alt.romance                     |alt.romance.chat                |   3
alt.romance.                    |alt.romance                     |   4
alt.romance.                    |alt.romance.chat                |   0 
                                |                                |
sub                             |sub.jokes                       |   2
sub                             |sub.jokes.d                     |   2
sub.*                           |sub.jokes                       |   2
sub.*                           |sub.jokes.d                     |   2
sub.*.                          |sub.jokes                       |   3
sub.*.                          |sub.jokes.d                     |   0
sub.*.*                         |sub.jokes                       |   0
sub.*.*                         |sub.jokes.d                     |   2

So. Nun k”nnen wir zum Format fuer das

ACTIVE-File
-----------

uebergehen. Das ACTIVE enth„lt Newsgroupmuster, die angeben, welche Gruppen
lokal erlaubt sind. Damit eine Newsgroup angelegt werden kann (automatisch
mit RNEWS oder manuell mit NHM newgroup=<grp>), muá ihr Name auf irgendeine
Zeile im ACTIVE-File passen, also mit einer Zeile einen šbereinstimmungswert
ueber 0 haben.

Das

SYS-File
--------

sieht schon viel interessanter aus. Jede Zeile hat drei durch Doppel-
punkte getrennte Felder. Wenn ein Feld mehr als einen String enhalten
kann (das betrifft die ersten beiden Felder), dann k”nnen diese Strings
mit Tabulatorzeichen, Leerzeichen, Schr„gstrich, Komma oder Semikolon
getrennt werden.

Reicht die L„nge einer Zeile nicht aus, so kann sie durch einen '\'
am Ende fortgesetzt werden. Eventueller Whitespace am Anfang der n„chsten
Zeile wird dann entfernt. Die Gesamtl„nge (inklusiver aller Fortsetzungs-
zeilen) sollte aber nicht ueber 2040 Byte oder so liegen.

Das erste Feld bezeichnet die Site, fuer die Zeile gelten soll. Es kann
hinter dem "Hauptnamen", der mit dem ersten Namen der entsprechenden
Zeile des XHOSTS-Files uebereinstimmen muá, noch "Nebennamen" enthalten.
Ein Artikel wird auf keinen Fall an diese Site gespoolt, wenn irgendeiner
der Namen im ersten Feld in der Path:-Zeile des Arikels vorkommt. Beispiels-
weise kann hier als Nebenname der Name der Site mit Domain eingetragen
werden.

Das zweite Feld enth„lt die Newsgroupmuster, die bestimmen, ob ein Artikel
an die betreffende Site gespoolt wird oder nicht. Steht unmittelbar vor
dem Muster ein "!", so BEHINDERT das Muster das Spoolen, sonst BEGšNSTIGT
es das Spoolen. Steht unmittelbar vor einem Muster ein "%", so BEGšNSTIGT
das Muster das Spoolen dann, wenn der Artikel auf dieser Site erzeugt wurde,
sonst wird es ignoriert.

Die Bestimmung, ob gespoolt wird oder nicht, l„uft folgendermaáen ab:

Zuerst wird jeder Newsgroupname aus der Newsgroups:-Zeile mit jedem Muster
aus der SYS-File-Zeile verglichen. Je der h”chste šbereinstimmungswert 
der BEHINDERNDEN und der BEGšNSTIGENDEN Muster wird festgestellt. Nur wenn
der BEGšNSTIGENDE Wert h”her ist als der BEHINDERNDE, kann gespoolt werden,
sonst nicht. Wenn kein Name auf irgendein Muster paát, wird konsequenter-
weise auch nicht gespoolt.

Wenn der Artikel eine Distribution:-Zeile hat, wird jede Distribution
mit allen Mustern verglichen, die keinen Punkt enthalten. Sind solche
Muster nicht vorhanden, oder hat der Artikel keine Distribution:-Zeile,
so geht RNEWS davon aus, daá die Distribution das Spoolen BEGšNSTIGT.
Sonst l„uft der Vergleich genauso ab wie bei den Newsgroups, nur mit dem
Unterschied, daá es ausreicht, wenn der BEGšNSTIGENDE Wert der Distribution
mindestens so groá ist wie der BEHINDERNDE.

Also: 

Das am besten zu einem Newsgroupnamen passende BEGšNSTIGENDE Muster muá 
einen H™HEREN šbereinstimmungswert als das am besten zu einem Newsgroup-
namen passende BEHINDERNDE Muster

	UND
	
Das am besten zu einer Distribution passende BEGšNSTIGENDE Muster darf
KEINEN NIEDRIGEREN šbereinstimmungswert haben als das am besten zu einer
Distribution passende BEHINDERNDE Muster,

sonst wird nicht gespoolt.

Dieses Verhalten ist im wesentlichen CNEWS-kompatibel.

Nun noch das dritte Feld: Es enth„lt die Anzahl der Bits, mit denen die
Batches komprimiert werden sollen. Ein 'c' davor ist optional. Statt dieser
Zahl kann auch ein 'f' eingetragen werden. Dann werden die Batches mit
FREEZE statt mit COMPRESS behandelt. Das Verfahren ist genau analog, das
heiát (wer nicht weiá, wie ein komprimierter Newsbatch aussieht, bitte
weglesen), daá der Batch dann nicht mit "#! cunbatch", sondern mit
"#! funbatch" anf„ngt. Es ist noch ein anderes Verfahren, Newsbatches mit 
FREEZE zu behandeln, im Umlauf: siehe unten.

Genau analog zu den beiden M”glichkeiten, Newsbatches mit FREEZE zu
komprimieren, gibt es auch zwei, sie mit GZIP zu behandeln. In diesem
Fall tritt an die Stelle des 'f' immer ein 'g' (entsprechend steht
dann auch "#! gunbatch" drin).

Wahlweise kann hinter der Bitanzahl bzw. dem 'f' noch, durch einen
Schr„gstrich abgeteilt, die Wunschgr”áe der Batches in Kilobyte (vor dem
Komprimieren) stehen, der Standard ist 50 KB.

Wird statt der Kennzeichnung der Komprimierungsart durch "#! cunbatch",
"#! funbatch" oder "#! gunbatch" die Weiterleitung an ein spezielles
Kommando ("rfnews" etc. statt "rnews"), so kann dieses Kommando hinter
einem Gleichheitszeichen (!) an das letzte Feld angeh„ngt werden. Dadurch 
k”nnen auch Sites bedient werden, die "frnews" oder etwas „hnlich Hirntotes 
haben wollen. Der HERMES-RNEWS kann "rnews" (Einzelartikel, "#! rnews", 
"#! cunbatch", "!# funbatch", "!# gunbatch" ["!# zunbatch" als Alias]),
"rfnews" bzw. "frnews" (frozen, sonst wie "rnews"), "rcnews" bzw. "crnews" 
(compressed, sonst wie "rnews") und "rgnews" bzw. "grnews", ebenso "rznews"
und "zrnews" (gzipped, sonst wie "rnews") verstehen. "rnews" erkennt eine
eventuelle Komprimierung (alle Methoden) auch selbst. Damit duerfte alles 
Gebr„uchliche erschlagen sein.
