Madness Mailbox-System Bretter-/Usergroup-Index-Check V2.10
===========================================================

(c) 05.07.1993 by Jrgen Meyer



Update V2.10 (von V2.03):

- BUGIDXCH luft nun auch wieder als External, kann von allen Punkten
  aus gestartet werden (CSH, Zeitexternal, "X" in MENUE.DAT)

- BUGIDXCH schreibt, wenn es als External gestartet wird, eventuelle
  Fehlermeldungen in das Logbuch (aber keine Meldungen, welche Mail
  repariert wurde). Erscheint nur "Rckgabewert von BUGIDXCH.PRG: -33",
  so wurde MB.INF nicht gefunden, wenn "-1", dann ist MB.INF zu alt oder
  defekt.

- Am Ende des Prfvorganges wird angezeigt, wieviele Mails in wieviel
  Brettern repariert wurden oder eben "Keine Fehler gefunden", wenn keine
  defekten Maileintrge gefunden wurden. Beim Start als External wird
  dieses Endergebnis auch in das Logbuch geschrieben.

- Wird BUGIDXCH als External via RS232 gestartet und der Carrier geht
  verloren, so bricht BUGIDXCH nicht ab, sondern gibt weiter auf die
  Console aus. Nach Beenden von BUGIDXCH fhrt die Box dann die gewohnte
  NO CARRIER - Prozedur aus.



V2.00, V2.01 und V2.02 sind unverffentlicht.



Dieses Tool dient dazu, die Integritt der Indexdateien fr Bretter und
Usergroups zu testen und ggf. Fehler, sofern machbar, korrigieren.

Die hier vorliegende Version von BUGIDXCH arbeitet mit den Brett- und
UG-Indexstrukturen ab V4.02.R1 zusammen. ltere Indexstrukturen knnen
nicht bearbeitet werden. Der Versuch wird mit einer Fehlermeldung quittiert.

BUGIDXCH testet _SEHR_ ausfhrlich. Daher sind Laufzeiten von ca. 10 Minuten
fr 1000 Mails durchaus normal. Die Ausfhrungsdauer schwankt stark, je
schneller der Rechner, desto schneller ist auch BUGIDXCH. Wer viele Mails,
aber einen langsamen Rechner hat, sollte fr die Zeit, wo er BUGIDXCH
laufen lt, einen grozgigen Cache installieren. Das beschleunigt
ungemein!

BUGIDXCH bentigt ca. 150 KByte fr sich selbst sowie ca. 650 KByte externen
Speicher (wahlweise TT-RAM/ST-RAM). Daher kann BUGIDXCH bei Rechnern mit
nur 2 MByte evtl. nicht mehr unterhalb des Mad-Sys gestartet werden.


Hinweis fr die erste Benutzung von BUGIDXCH
--------------------------------------------

Bitte nicht wundern: BUGIDXCH wird beim ersten Lauf unheimlich viel
anmeckern und korrigieren. Denke also nicht "Oh Gott, alles breit!".
Das liegt schlicht daran, da es ltere Versionen der Madness nie so
ganz genau nahmen mit der Verwaltung der Brettinhalte. Das neue Verfahren
ist viel genauer und erlaubt keine Toleranzen. Somit ist nun gewhrleistet,
da Externals, die auf die Bretter/UGs zugreifen, endlich "geordnete
Verhltnisse" vorfinden.

Folgendes wird beim ersten Lauf hufig auftreten:

"IllChars" --> Kommt aus den Zeiten, wo das Mad-Sys alle Daten in IBM-
               Umlauten ablegte. BUGIDXCH convertiert automatisch alles
               nach ST-Format (siehe Spezifikation der Indexstrukturen).

"AnzZln"   --> Wer uralten Datenbestand hat, kann diese Meldung haben. Ganz
               frh (vor Mad-Sys Version V3.50) waren einige Bugs beim
               Sichern der Mails vorhanden.

"SavChMail" -> Bedeutet nur: korrigierte Mail wird gesichert


Arbeitsweise von BUGIDXCH
-------------------------

Alle Indexdateien werden im RAM gehalten und in einem Stck geladen bzw.
gesichert. Daher der hohe Speicherverbrauch. BUGIDXCH kann whrend der
Arbeitsphase abgebrochen werden, allerdings nur beim Wechsel der Index-
Dateien, nicht mitten in der Bearbeitung einer einzelnen Indexdatei. Zum
Abbruch mu die ALTERNATE-Taste gedrckt gehalten werden bis Wechsel der
Indexdatei auftritt.

BUGIDXCH liest nur den Pfad auf den Ordner "BRETTER" aus und sammelt dort
alle IDX_*.DAT Dateien ein. Es werden also keine Mad-Sys Installations-
Dateien verwendet, sondern die tatschlich gefundenen Indexdateien!


Ablauf des Prfens
------------------

BUGIDXCH liest zuerst alle Ordner ein und sucht die Indexdateien heraus.
Es wird reihenweise nach den gefundenen Indexdateien abgearbeitet. Es
erfolgt eine Anzeige, welche Indexdatei zur Zeit bearbeitet wird. Sind
keine Mails vorhanden, das zur Indexdatei zugehrige Brett/UG also leer,
erscheint nur "Keine Mails in Brett/UG".

Im anderen Falle wird angezeigt, welche Mail (Mail xxx von xxx) bearbeitet
wird. Gefundene Fehler werden angezeigt und die Ausgabe rutscht eine Zeile
nach unten. War die aktuelle Mail fehlerfrei, so wird nichts angezeigt bzw.
der Cursor verbleibt in der aktuellen Zeile.

Wurde eine Indexdatei vorgefunden, dessen Versionsnummer BUGIDXCH unbekannt
ist, so wird dies angezeigt und die Indexdatei nicht weiter bearbeitet.

Ist die CRC-Summe des Index 0 (Verwaltungsindex) defekt, so wird der Index 0
wieder restauriert. Da nicht gewhrleistet ist, da die Eintrge fr die
Mail-ID's noch stimmen, werden in einem solchen Fall (Index 0 defekt) alle
Mails mit neuen Mail-ID's versehen.
Ebenso wird eine neue Mail-ID Vergabe durchgefhrt, wenn die Mail-ID Eintrge
in Index 0 trotz heilem CRC irrefhrung bzw. fehlerhaft sind.

Whrend der Abarbeitung der einzelnen Mails sowie dessen Indizes wird
folgendes geprft:

1.  CRC des Indizies. Es wird "IDX-CRC-Err" ausgegeben, wenn die CRC-Summe
    nicht bereinstimmt.
2.  Existiert die Mail nicht, so wird "FileNotFound" ausgegeben und der
    entsprechende Eintrag aus der Indexdatei gelscht. Es erfolgt gleich ein
    automatisches Renamen der Mail-Dateinamen sowie damit verbundene Aus-
    sortierungen in der Indexdatei. Es wird also nicht mehr, wie beim alten
    BUGIDXCH, eine Dummy-Mail erzeugt.
3.  Ist die Mail-ID der aktuellen Mail grer als die zuletzt vergebene
    Mail-ID oder kleiner 1 (signed), dann wird die Mail-ID fr ungltig
    erklrt und "Mail-ID" als Fehler ausgegeben. Die Mail erhlt dann
    eine neue Mail-ID (als wre sie neu geschrieben worden).
4.  Die Mail wird in den Speicher gelesen. Stimmt die Lnge der Datei nicht
    mit dem Eintrag in der Indexdatei berein, wird "Len" ausgegeben.
5.  Ist die Mail lnger als 64 KByte, wird ">64k" ausgegeben und die Mail
    auf 65535 Bytes gekrzt.
6.  Stimmt die CRC-Summe ber die Mail nicht mit der in der Indexdatei ein-
    getragenen berein, so wird "Mail-CRC-Err" ausgegeben.
7.  Ist das letzte Zeichen der Mail-Datei ungleich 10 (Linefeed), so werden
    alle dem letzten LF nachfolgenden Zeichen, die keine komplettte Zeile
    mehr bilden knnen, abgeschnitten. Es wird "IllChars" ausgegeben.
8.  Die Mail wird nach illegalen Zeichen durchsucht. Erlaubt sind die
    Bereiche/Zeichen ASCII 10 & 13 (LF & CR), ASCII 32 - ASCII 125 und
    ASCII 128 - 255. Zeichen, die nicht auf diese Grenzen passen, werden
    durch ein "?" ersetzt. Findet die Box ein Zeichen ASCII 225 ( nach
    IBM-Belegung, so wird dies nach ASCII 158 ( nach ST-Belegung) con-
    vertiert.
9.  Es wird geprft, ob die Anzahl der tatschlichen Zeilen mit der in der
    Indexdatei eingetragenen Anzahl bereinstimmt. Wenn nicht, wird "AnzZln"
    als Fehlermeldung ausgegeben.
10. Enthlt die Mail mehr als 800 Zeilen, werden alle Zeilen nach 800 abge-
    schnitten und die Mail entsprechend gekrzt. Es erscheint ">800-Zln" als
    Fehlermeldung.
11. Wurden nderungen an der Mail ntig (siehe obige Punkte), so wird die
    korrigierte Mail geschrieben. Es erscheint "SavChMail". Dies ist also
    keine eigentliche Fehlermeldung, sondern nur ein Hinweis auf das Sichern
    der korrigierten Version der Mail.
12. Die 'Anzahl der verbleibenden Tage im System' wird geprft. Hier ist
    rein technisch nur ein Prfen daraufhin mglich, ob ein Wert grer als
    90 Tage (Maximum) eingetragen ist. Wenn ja, wird "VT" ausgegeben und
    der Wert auf 90 gesetzt.
13. Der Status der Mail wird geprft. Ist dieser durch einen Fehler grer
    als 9, wird er auf 9 gesetzt. Es erscheint "Stat" als Fehlermeldung.
14. Das Datum der Mail wird geprft. Ist das eingetragene Datum ungltig,
    so wird das heutige Datum eingesetzt.
15. Die Zeit der Mail wird geprft. Ist die eingetragene Zeit ungltig,
    so wird die aktuelle Zeit eingesetzt.
16. Die Betrifft-Zeile wird geprft. Ist die Betrifft-Zeile leer, wird
    "*** Kein Betreff! ***" eingesetzt. Ist die Betrifft-Zeile lnger als
    40 Zeichen, werden alle Zeichen ber 40 abgeschnitten.
    Anschlieend wird ein Test auf illegale Zeichen (gleiches Verfahren wie
    Punkt 8.) durchgefhrt. Sind ebensolche vorhanden, werden diese durch
    ein ? (ASCII 63) ersetzt. In allen Fllen erscheint die Fehlermeldung
    "Betr"
17. Der ASCII-Username wird geprft. Gleicher Vorgang wie bei Punkt 16.,
    mit Ausnahme: Im Falle eines leeren Eintrags wird "Ehemaliger User"
    eingesetzt. Bei Fehlern erscheint "UsrName".

Nach Beendigung des Prfens aller Mails der aktuellen Indexdatei wird die
korrigierte Version des Indexdatei zurckgeschrieben.

Das Programm beachtet whrend der Arbeitsphase auer der ALTERNATE-Taste
beim Wechsel der Indexdateien keinerlei Tastatureingaben. Ein 'brutaler'
Abbruch whrend des Prfens hat in 99% aller Flle ein zerstrtes Brett/
UG zur Folge. Ich rate also nur von solchen Manahmen ab.


MfG. Jrgen Meyer

