==========================================================================
                     Interne Dokumentation RAFX
==========================================================================

Dies hier ist sozusagen mein Schmierzettel. Dieser ist
ohne Anspruch auf Voll-, Richtig- oder sonstige -keiten.



allgemeine Variablen
====================

dir._prg                Programm-Verzeichnis
dir._act                Aufruf-Verzeichnis
log._file               Logfile
log._written            wenn '', dann wurde (noch) nichts ins Logfile geschrieben
char._up, char._low     fr Translate
char._ctrl              Ctrl-Zeichen h00-h31
char._anum              Verify-Template fr Keys
char._ver               erlaubte Zeichen fr Gruppen- und Areanamen
crlf                    '0d0a'x
cr                      '0d'x
dir._temp               Verzeichnis fr temporre Dateien.

timestamp._base         Basisdatum fr Timestamp '1980/01/01-00:00:00'

def._rxu_installed      0 = RXU nicht installiert
                        1 = RXU ist installiert

def._prio_class_old     ursprngliche Priority class, wenn '', dann erfolgte keine
                        Umstellung
def._prio_delta_old     ursprngliche Priority delta







Kommandozeilen-Argumente
========================

opt._init_ptr           LR-Pointer initialisieren
opt._rescan             LR-Pointer auf Null setzen
opt._scan_msgs          Netmail scannen und MSGs verarbeiten
opt._script             Script-File verarbeiten
opt._scan_bad           Badmail-Area scannen
opt._del_bad            Badmail lschen, wenn von Uplink ohne Erlaubnis
opt._rule_idx           Index fr Rules erstellen
opt._update_dsc         *.DSC-Files updaten
opt._set_area           Area-Desc ersetzten
opt._autokill_list      Autokill nach Listen
opt._autokill_days      Autokill nach Zeit
opt._sort_area          0 = keine Sortierung
                        1 = Sortierung bei nderung
                        2 = Sortierung auf jeden Fall
opt._maximus            0 = Maximus Area Setup nicht erstellen
                        1 = Maximus Area Setup bei nderung erstellen
                        2 = Maximus Area Setup auf jeden Fall erstellen
opt._ext_area           0 = keine zus. Arealiste erstellen
                        1 = zus. Arealisten bei nderung erstellen
                        2 = zus. Arealisten auf jeden Fall erstellen

opt._nop                nichts




Konfigurations-Variablen
========================

prg_cfg._file           eigenes CFG-File
prg_cfg._changed        Flag, ob nderung an CFG anliegt
                          0 = keine nderung
                          1 = nderung wurde vorgenommen
alias._idx              Liste der Alias-Namen
squish._cfg._file       Name Squish-Cfg
squish._idx._file       Name Squish-Idx

squish._pwd._file       Name ext. File fr PKT-Passworte. wenn '', dann werden
                        Passworte in Squish.Cfg verwaltet

squish._cfg._full_addr  Vollstndige Adressen in Squish-Cfg verwenden.
squish._keyword_idx     Liste der Zeilen-Nr. mit Keywords. Wird fr temp.
                        Squish.Cfg beim Rescan bentigt.

squish._logfile         Squish-Logfile
squish._logfile_ident   Kennung fr Logfile-Eintrge von Squish = 'SQSH'





ext_cmd._rescan         Programm fr Rescan
ext_cmd._rescan_dir     Arbeitsverzeichnis fr Programm fr Rescan
ext_cmd._toss_badmail_dir   Arbeitsverzeichnis fr Programm zum Tossen
                        der Badmail

ext_cmd._set_dt         Programm zum Setzen von File-Datum und -Zeit. Wird
                        fr Umpacker bentigt.

msgid._file             Filename fr gespeicherte MSGID
timestamp._file         Filename des Timestamps einer MSG-Base
usernumber              Offset User-Record in Squish-Lastread-Pointern
ignore_msg_attr         0 = MSG-Attribute beim Scannen beachten
                        1 = MSG-Attribute beim Scannen ignorieren
idx._dir                Verzeichnis fr IDX-Files
rsp_file._help.0        Hilfe-Text fr Antwort-MSG bei %HELP
                        fr undefinierte Sprache
rsp_file._help.l        dto. fr Sprache 'l'
rsp_file._info.0        Text fr Antwort-MSG bei %INFO
                        fr undefinierte Sprache
rsp_file._info.l        dto. fr Sprache 'l'

keep._file_sq.1.        Stem der Erweiterungen fr zu erhaltene Files
                        bei Umstellung auf Passthrough (Squish-Format)
keep._file_sdm.1.       Stem der Filenamen fr zu erhaltene Files bei
                        bei Umstellung auf Passthrough (*.MSG-Format)
keep._file_sq.2.        Stem der Erweiterungen fr stndig zu erhaltene
                        Files bei Squish-Areas.
keep._file_sdm.2.       Stem der Filenamen fr stndig zu erhaltene
                        Files bei *.MSG-Areas.


echotoss._file          Filename des Echotoss-Logfiles
echotoss._new           Liste mit Echoarea-Tags, in denen MSGs erstellt wurden



timeout_open_area       Timeout fr das ffnen einer Area in Sekunden.
                        Vorgabe ist 600. negative Werte bedeuten unendlich
                        lange warten.

sem._timeout            Maximale Wartezeit auf die Semaphore
sem._name               Name der Semaphore

def._language           Voreinstellung fr Sprache in MSGs
def._language._idx      Index mit Sprach-Aliasen
def._language.n         Alias einer Sprache, 'n' = Kennung der Sprache


def._rescan_kludge      0 = Beim Rescan keine Rescan-Kludge einfgen
                        1 = Beim Rescan Rescan-Kludge einfgen

def._rescan_max_msgs    Max. Anzahl der MSGs, die in einer Area rescannt werden
                        knnen
                        0 = alle
                        n = Anzahl


Eingangs- und Ausgangs-Netmail
------------------------------

netmail_in.             Stem der Eingangs-Netmail-Areas-Tags

netmail_out._ptr        Zeiger auf NetArea fr Antwort-NetMail
netmail_out._high       Lfd. Nummer der letzten MSG beim ffnen der Area



Vorgaben fr Downlinks
----------------------

def._dnl_level          Level
def._dnl_keys           Keys

def._dnl_flags          4 Byte bit-codierte Zeichenkette

                        Hex          Beschreibung
                        00000001   F Forward Requests mglich
                        00000002   W Request mit Wildcards erlaubt
                        00000004   P neu erstellte Areas aufgrund von
                                     Bestellung werden Passthrough
                        00000008   R Bei Bestellung einer Area werden die
                                     Rules automatisch verschickt.
                        00000010   M Antworten immer an die Haupt-AKA
                                     Downlinks schicken
     #                  00000020   O In Antworten verwendet RAFX immer
     #                               die eigene Haupt-AKA.
                        00000040   C Request nach Verarbeitung lschen
                        00000080   K Antworten nach dem Versand lschen

                        00000100   L Wildcard-Request nur bei lokal
                                     vorhandenen Areas
                        00000200   A Rules per File Attach, sonst per Netmail
                        00000400   N Notify On


def._dnl_notify.1       Settings fr Notify On, String mit 4 Zeichen:
                        1. Zeichen = neue Areas
                        2. Zeichen = gelschte Areas
                        3. Zeichen = umbenannte Areas
                        4. Zeichen = Autokill-Warnungen
                        Zeichen
                           'A' = alle Areas, der Gruppen mit Zugriff
                           'L' = nur linked areas
                        sonst. = keine Areas

def._dnl_notify.0       Settings fr Notify Off, Format siehe DEF._DNL_NOTIFY.1



Vorgaben fr Gruppen
--------------------

def._group_pattern.     Stem mit Masken vordefinierter Gruppen

def._group_path.        dazugehrige Pfade fr neue Areas mit
                        abschliessenden Backslash
def._group_hpfs.        HPFS-Namen fr DEF._GROUP_PATH
                          0 = FAT-Namen verwenden
                          1 = HPFS-Namen verwenden
def._group_zone.        dazugehrige Zonen
def._group_desc.        dazugehrige Beschreibung, auf 48 Zeichen gekrzt


def._group.             Stem der expandierten (kein Wildcards) Gruppen
def._group_ptr.<group>  Zeiger auf die zug. DEF._GROUP._-Vars



Vorgaben fr neue Areas
-----------------------

def._area_desc          Beschreibung
def._area_sflags        Squish-Area-Flags
def._area_path          Area-Pfad mit abschliessenden Backslash
def._area_hpfs          HPFS-Namen fr DEF._AREA_PATH
                          0 = FAT-Namen verwenden
                          1 = HPFS-Namen verwenden
def._area_use_hpfs      HPFS-Namen bei Umbenennungen
                          0 = FAT-Namen verwenden
                          1 = HPFS-Namen verwenden
def._area_level         Vorgabe fr Level
def._area_keys          Vorgabe fr Keys
def._area_group         Vorgabe fr Group
def._area_acs           Vorgabe fr Zugriff auf Area.
                          0   = Read/Write
                          1   = Read Only



Vorgaben fr MSGs
-----------------

def._msg_length         Max. Lnge einer MSG
def._tearline           Tearline
def._origin             Origin


def._str.lng.n          Meldungen in MSG
def._log.str.n          Meldungen in logfile und Bildschirm
error._str.n            Fehlermeldungen, die zum Abbruch fhren



Rules
-----

rules._file.            Stem der Filemasken der Rules-Files ohne Pfad
rules._path.            zugehrige Pfade dazu
rules._file_sub.        zughrige Flags
                          0   = nur betreffendes Verzeichnis durchsuchen
                          1   = auch Unterverzeichnisse durchsuchen

rules._search.          Stem der Suchstrings in Rules
rules._lines            Anzahl der zu durchsuchenden Zeilen von Rules
rules._copy_2_dsc       Flag, ob Rules-Files nach *.DSC kopiert werden sollen
                          0   = Rules nicht kopieren
                          1   = Rules kopieren
                          2   = Rules kopieren, vorhandenes *.DSC-File berschreiben
rules._send_dsc         Flag, ob *.DSC-Files anstatt Rules versendet werden sollen.
                          0   = Rules-Files versenden
                          1   = wenn vorhanden, *.DSC-Files versenden

rules._idx_file         Filename des Index-File fr Rules
rules._idx              Index fr Rules, Format:
                         <Areaname> *<num>\<Filename>
                        num = Index auf Stem der Pfadnamen

rules._path_idx.        Stem der Pfade mit Rules-Files


  Folgende Variablen werden bei der Bearbeitung der Netmail gesetzt.

rules_send._idx         Liste der Areas, deren Rules versenedet werden sollen.
rules_send.             Stem der zu sendenden Rules-Files.


  Vorgaben fr DSC-Files

rules._sdm_dsc          '\DESCRIPT.BBS'
rules._sq_dsc           '.DSC'



Uplink-Daten
------------

upl.0                   Anzahl der Uplinks

upl._addr_idx           Liste aller Addressen der Uplinks

upl._addr.n             Adresse
upl._pw.n               Passwort
upl._name.n             Name


upl._ac_group.n.0       Anzahl der Autocreate-Definitionen

upl._ac_group.n.        Gruppe fr Autocreated Areas, die nicht zugeordnet
                          werden konnten.
upl._ac_level.n.        Level fr Autocreated Areas
upl._ac_acs.n.          Zugriffsrechte auf diese Areas
                          0   = Read/Write
                          1   = Read Only
upl._ac_keys.n.         Keys fr Autocreated Areas
upl._ac_paddr.n.        Primary-AKA fr Autocreated Areas
upl._ac_masks.n.        Liste mit Masken der Areas, die der jeweiligen Gruppe
                          zugeordnet werden.

upl._faddr.n            Absender-Adr. fr diesen Uplink


upl._area.n.0           Anzahl Arealisten
upl._area_file.n.m      Filename der Area-Liste
                        Wenn nicht vorhanden, dann ''

upl._area_group.n.m     Gruppe fr diese Arealiste
upl._area_level.n.m     Level fr diese Arealiste
upl._area_acs.n.m       Zugriffsrechte auf diese Areas
                          0   = Read/Write
                          1   = Read Only
upl._area_keys.n.m      Keys fr diese Arealiste
upl._area_paddr.n.m     Primary-AKA, wenn eine Area neu angelegt wird.
                        Wird verwendet fr '-P'-Flag in Squish-Cfg bei
                        Area-Definition


upl._area_idx.n.m       IDX-File der Area-Liste
upl._area_istr.n.m      Inhalt des IDX-File der Area-Liste



upl._cmd                Flag - Anzeige fr anliegende Forward-Requests
                          0   = keine Forward-Requests zu versenden
                          x   = Es liegen Forward-Requests an.
upl._cmd.n              Liste mit Link- und Unlink-Befehlen. Wird nach
                        Verarbeitung gedropt.

upl._msg_length.n       max. Lnge einer MSG


upl._fwd_killsent       Forward-Request KillSent
                          0   = K/S nicht gesetzt
                          1   = K/S gesetzt


  Folgende Variablen werden in READ_PRG_CFG gesetzt und in CHECK_IDX
  nach UPL._AREA[..] kopiert und dann gedroppt.

upl_area.n.0            Anzahl Arealisten
upl_area._file.n.m      Filename der Area-Liste (Quell-Liste)
                        Wenn nicht vorhanden, dann ''

upl_area._sep.n.m.0     Anzahl zus. separater Arealisten aufgrund Masken
upl_area._add.n.m.0     Anzahl zus. separater Arealisten aufgrund direkter Definition

upl_area._sep_group.n.m.    Gruppe dieser Areas
upl_area._sep_acs.n.m.      Zugriffsrechte auf diese Areas
                              0   = Read/Write
                              1   = Read Only
upl_area._sep_level.n.m.    Level fr diese Arealiste
upl_area._sep_keys.n.m.     Keys fr diese Arealiste
upl_area._sep_paddr.n.m.    Prim-Aka dazu

upl_area._sep_masks.n.m.    Liste mit Area-Masken.


upl_area._sep_file.n.m.     erzeugte Ausgangsliste, '' = nicht vorhanden
upl_area._sep_idx.n.m.      Index-File dazu

upl_area._sep_file_dt.n.m.  Filegre und -datum
upl_area._sep_idx_dt.n.m.   dto.









  upl_area._file_ptr.n.m  Zeiger auf AREA_LST.-Vars in CHECK_IDX

upl_area._sep_mask.m.n  Liste mit Zeiger auf Listen und Area-Masken.
                        Wird nur bei CHECK_IDX zum Vergleich bentigt.


upl_area._sep.n.m.0     Anzahl Settings zur Splittung der Arealisten
upl_area._sep_ptr.n.m.  Zeiger auf die Liste (Zhler UPL_AREA._SEP_LIST.N.M.0)
upl_area._sep_inc.n.m.  Area-Masken dazu. Listen mit Area-Masken in der
                        Reihenfolge, wie in PRG-Cfg aufgefhrt.

upl_area._sep_setting.n.m.  Gruppe Zugriff Level/Keys Prim-Aka dazu







Downlink-Daten
--------------

dnl._addr_idx           Index alles Downlink-Adressen. Format:
                        <Adresse> <Zeiger auf Downlink> ...

dnl.0                   Anzahl der Downlinks
dnl._addr.n             Liste der Adressen des Downlinks (*)

dnl._addr.n.            Stem Adressen des Downlinks (*)
dnl._pw.n               Passwort (*)
dnl._pktpw.n            Pkt-Passwort
dnl._pktpw_lidx.n       Liste mit Zeilen-Nr. der PKT-Passwrter
dnl._name.n             Name (*)
dnl._level.n            Level des Downlinks
dnl._keys.n             Keys des Downlinks
dnl._flags.n            Flags des Donwlinks, Format siehe DEF._DNL_FLAGS (*)

dnl._packer.n           Krzel des eingestellten Packers fr den Downlink.
                        Wenn Leerstring, dann ist der noch nicht ermittelt worden.





dnl._group_exp.n        Flag, zeigt an, ob Downlink-Gruppen schon
                        expandiert wurden
                          0   = noch nicht expandiert
                          1   = schon expandiert

dnl._group.n            Liste der Gruppen des Downlinks
                        Nur gltig, wenn DNL._GROUP_EXP.n = 1

dnl._group_autolink.n   Liste der Autolink-Flags

dnl._group.n.0          Anzahl der Gruppen des Downlinks
dnl._group_acs.n.       zug. Stem der Zugriffsrechte auf die Gruppe
                          0   = Read/Write
                          1   = Read only
dnl._group_addr.n.      zug. Stem der Adressen, mit der der Downlink
                          auf Areas dieser Gruppe aufgeschaltet wird.
                          Vorgabe ist die erste Adresse

  dnl._group.n.           Stem der Gruppen des Downlinks, wie aus Cfg eingelesen
  dnl._group_acs.n.       zug. Stem der Zugriffsrechte auf die Gruppe
                            0   = Read/Write
                            1   = Read only
  dnl._group_addr.n.      zug. Stem der Adressen, mit der der Downlink
                            auf Areas dieser Gruppe aufgeschaltet wird.
                            Vorgabe ist die erste Adresse
  dnl._group_autolink.n.  zug. Stem Autolink-Flags.
                            0   = kein Autolink
                            1   = Autolink fr Areas dieser Gruppe

dnl._msg_length.n       Max. Lnge einer Antwort-MSG (*)
dnl._language.n         Sprache fr MSG an den Downlink (*)

dnl._notify.1.n         Settings fr Notify On, String mit 4 Zeichen:
                        1. Zeichen = neue Areas
                        2. Zeichen = gelschte Areas
                        3. Zeichen = umbenannte Areas
                        4. Zeichen = Autokill-Warnungen
                        Zeichen
                           'A' = alle Areas, der Gruppen mit Zugriff
                           'L' = nur linked areas
                        sonst. = keine Areas

dnl._notify.0.n         Settings fr Notify Off, Format siehe DNL._NOTIFY.1.n


(*) Index n=0 enthlt die Daten des Sysops




dnl._sched.n            flags zur Anzeige, welche Schedules eingetragen sind.
                         Pos.       Kommando
                         1   L      List
                         2   V      Avail
                         3   Q      Query
                         4   H      Help
                         5   I      Info

dnl._sched.m.n          Tag der nchsten Ausfhrung eines Events
                        'm'         Kommando
                         1          List
                         2          Avail
                         3          Query
                         4          Help
                         5          Info

                        Format
                         0          nicht definiert
                         <num>      Tage seit 01.01.1970, keine nderung erfolgt
                         YYYY/MM/DD Datum, neuer Ausfhrungszeitpunkt

dnl._sched._per.m.n     Ausfhrungsintervall.
                         Format <Faktor> <Zeitraum> [<Tag>]
                         Faktor     1...n
                         Zeitraum   'MONTH', 'WEEK' oder 'DAY'
                         Tag        0...6 bei wchentlich
                                    1...31 bei monatlich
                                    entfllt bei tglich

dnl._settings_idx       Index aller Downlinks mit neuen Settings in Prg-Cfg
                        Format <Addr> <Zeiger auf Downlink> ...
                        Auch Sysop ist enthalten.
                        Wird beim Schreiben der Prg-Cfg bentigt.

dnl._settings.n         Zeigt an, welche Einstellungen ind Prg-Cfg
                        gendert werden sollen.
                         1   P      Neues Passwort gesetzt
                         2   L      Neue Sprache gewhlt
                         3   -A     Flag -A
                         3   +A     Flag +A
                         5   -N     Flag -N
                         5   +N     Flag +N
                         7   E      Schedules gendert

dnl._sqsettings_idx     Liste mit Zeigern auf Downlinks, bei denen
                        Einstellungen in der Squish.Cfg gendert werden.

dnl._sqsettings.n       Zeigt an, welche Einstellungen in der Squish.Cfg
                        gendert werden sollen
                         1   C      Neuer Packer gesetzt
                         2   S      Neues PKT-Password



Kommandos
---------

mcmd.0                  Anzahl der Kommando-Blcke nach Einlesen einer
                        MSG.

mcmd._msgid             MSGID der Request-MSG, fr REPLY-Kludge



mcmd._dnl.m             Zeiger auf Downlink, auf den die Kommandos
                        angewendet werden
                          0   = Sysop
                          n   = Downlink

mcmd._dest_dnl.m        Zeiger auf den Downlink, an den die Meldung geht.
                          0   = Sysop
                          n   = Downlink

mcmd._dest_addr.m       Empfnger-AKA an den die Meldung geht = AKA des
                        Downlinks

mcmd._from_addr.m       Absender-AKA fr Meldungen

mcmd._acs.m             Zugriffsrecht fr diesen Kommandoblock
                          0   = normale Zugriffsrechte
                          1   = keine Einschrnkung (z.B. durch Sysop)

mcmd._cmd.m             Flags zum Anzeigen der Kommandos
                        Folgende Flags werden gesetzt:
                        Pos.
                         1   L      Liste verfgbare Areas  %LIST
                         2   V      Liste verfgbare Areas  %AVAIL
                         3   Q      Liste bestellte Areas   %QUERY
                         4   H      Hilfe                   %HELP
                         5   I      Info angefordert        %INFO
                         6   N      neue Einstellungen      %PWD <pwd>
                                                            %LANGUAGE <lng>
                                                            %NOTIFY ON|OFF
                                                            %SCHEDULE ...
                                                            %COMPRESS <Packer>
                                                            %PKTPWD [<pwd>]
                         7   U      Rules anfodern          %RULES <Area>
                         8   M      Area erstellen          &<Area>
                         9   D      Area lschen            ~<Area>
                        10   A      Area-Requests           +|-<Area>
                        11   P      Passiv/Aktiv schalten   %PAUSE
                                                            %RESUME
                        13   C      Umbenennung Areas       #<old> <neu>

                        15   F      Kommando-Fehler
                        16   X      Passwort-Fehler

mcmd._settings.m        Zeigt an, welche Einstellungen gendert werden
                        sollen. Nur gltig, wenn in MCMD._CMD.m 'N'
                        gesetzt ist.
                         1   P      Neues Passwort gesetzt
                         2   L      Neue Sprache gewhlt
                         3   -A     Flag -A
                         3   +A     Flag +A
                         5   -N     Flag -N
                         5   +N     Flag +N
                         7   E      Schedules gendert
                         8   C      Packer gendert
                         9   S      Neues PKT-Pwd


mcmd._pw_new.m          Neues Passwort
mcmd._language.m        Kennung neue Sprache
mcmd._packer.m          Krzel fr den neuen Packer
mcmd._pkdpw_new.m       Neues Pkt-Passwort

mcmd._sched.m.n         Stem genderte Schedules
                        n = 1-5 fr List, Avail, Query, Help Info
                        Format: <faktor> <zeitraum> [<tag>]
                        <faktor>    >1   Anzahl der Zeitrume
                                    0    nicht definiert
                                    -1   abschalten
                        <zeitraum>  'MONTH', 'WEEK' oder 'DAY'
                        <tag>       1...n

mcmd._req.m.            Stem Area-Requests
                        Format: +<Area>    Link
                                -<Area>    Unlink

mcmd._rescan.m.         Flag Area-Rescan, zugehrig zu MCMD._REQ.m.
                          0 = kein Rescan
                          n = Rescan der letzten n MSGs
                         -n = Rescan der letzten n Tage
                        ALL = kompletter Rescan

mcmd._tempreq.m.        Stem Gruppen und Areas aktiv und passive schalten.
                        Format: +@<Gruppe>  alle Areas der Gruppe aktiv
                                -@<Gruppe>  alle Areas der Gruppe passiv
                                +A<Area>    Area(s) aktiv schalten
                                -A<Area>    Area(s) passiv schalten

mcmd._rules.m.          Stem Rules zu Areas anfordern

mcmd._rename.m.         Stem Area-Umbenennungen
                        Format: <alter Name> <neuer Name>

mcmd._delete.m.         Stem Areas lschen

mcmd._create.m.         Stem Areas erstellen
                        Format: <Area> <Gruppe> <level>/[<keys>] "<desc>"

mcmd._error.            Stem ignorierte Zeilen




Variablen aus Squish-Cfg
========================


Squish-Cfg
----------

squish._cfg._changed    Flag nderung der Eintrge
                         0 = keine nderung
                         1 = nderung wurde vorgenommen
squish._idx._changed    Flag nderung Squish-Idx. Nur von Bedeutung, wenn
                        SQUISH._CFG._CHANGED = 1
                         0 = keine nderung
                         1 = nderung wurde vorgenommen

squish._pwd._changed    Flag, ob PktPwd-File gendert wurde
                          0 = keine nderung
                          1 = nderung wurde vorgenommen

squish._kwd_pack        Zeilen-Nr. der ersten Zeile mit Keyword PACK
squish._kwd_compress    Zeilen-Nr. mit Schlsselwort COMPRESS
squish._kwd_password    Zeilen-Nr. der letzten Zeile mit PASSWORD


squish._cfg._mltag      max. Lnge Echoarea-Tags
squish._cfg._mlroot     max. Lnge Echoarea-Roots

squish._cfg.            Stem aller Zeilen der Squish-Cfg
                        RAFX-Zeilen nicht bercksichtigt.
                        Echoarea-Zeilen werden nach Aufschlsseln gedropt
                        nach dem Lschen von Area (s. AREA-Variablen) werden
                        entsprechende Variablen nicht mehr initialisiert.

squish._pwd.            Stem aller Zeilen des PktPwd-Files.
                        Bei Bearbeitung werden ggfl. Zeilen gedropt und nicht
                        mehr initialisiert.


squish._busyflags       0 = BUSYFLAGS nicht vorhanden
                        1 = BUSYFLAGS gesetzt
squish._binkpoint       0 = BINKPOINT nicht vorhanden
                        1 = BINKPOINT gesetzt




address._idx            Liste aller eigenen AKAs
address.                Stem eigene AKAs

def._zone               Zone der ersten Adresse
def._outbound           Outbound-Verzeichnis. Wird zum Umpacken von Mail bentigt.



Packer-Definitionen
-------------------

arc._repack             Flag fr Erlaubnis zum Umpacken von Mail
                          0 = nicht erlaubt
                          1 = erlaubt

arc._cfg_file           Compress.Cfg fr Squish aus Squish.Cfg bei COMPRESS
arc._default            Default-Packer, aus Squish.Cfg bei DEFAULTPACKER

arc.0                   Anzahl der zur Auswahl stehenden Packer fr %COMPRESS
arc.n                   Krzel der Packer

arc._pack.0             Anzahl Adress-Eintrge mit PACK in Squish.Cfg
arc._pack_addr.n        Adress-Angabe
arc._pack_prg.n         Krzel des Packers dazu
arc._pack_lidx.n        Zeilenindex. Enthlt bei Zeilen ohne Wildcards die
                        Zeilennummer. Sonst 0






Announces
---------

ann._dest_name          Empfngername
ann._from_name          Absendername
ann._from_addr          Absender-AKA fr Announces
ann._msg_length         Max. Lnge ener Announce-MSG
ann._language           Sprache fr Announce-MSGs.
ann._header_footer      Header- und Footer-File fr Announces


ann._area.              Stem der Zeiger auf Areas, in denen Announces
                        erstellt werden.
ann._dest_name.n        Empfngername
ann._from_name.n        Absendername
ann._from_addr.n        Absender-AKA fr Announces
ann._msg_length.n       Max. Lnge ener Announce-MSG
ann._language.n         Sprache fr Announce-MSGs.
ann._header_footer.n    Header- und Footer-File fr Announces

ann._group._new.n.      Stem der Gruppen mit neuen Areas
ann._group._del.n.      Stem der Gruppen mit gelschten Areas
ann._group._ren.n.      Stem der Gruppen mit umbenannten Areas
ann._group._warn.n.     Stem der Gruppen mit umbenannten Areas





EchoArea-Daten aus Squish-Cfg
-----------------------------

area_idx.<Tag>          Zeiger auf die Area.-Variablen. <Tag> = Name in
                          Grobuchstaben
area._idx               Index aller EchoArea-Tags
area.                   Stem der EchoArea-Tags. Diese Stem enthlt
                          nach dem Lschen von Areas 'Lcher'. Die
                          entsprechenden AREA.-Variablen mit dem Index
                          'n' werden ebenfalls gedropt.
                          AREA.0 enthlt aber immer den hchsten Index-Wert

area._line.n            Zeiger auf Zeile der EchoArea-Definition
                          in der Squish-Cfg. Wird zum Zurckschreiben
                          bentigt.

area._root.n            Root dieser Area (in Gro-/Kleinschreibung)
area._format.n          Format der Area, '$' = Squish
area._paddr.n           Primary-Aka dieser Area
area._node_l.n          Linked Nodes dieser Area
area._node_x.n          ReadOnly-Nodes dieser Area
area._node_u.n          Nodes mit U-Flag dieser Area
area._sflags.n          Sonstige Squish-Flags dieser Area

area._sqdata.n          Squish-Daten (Flags, AKAs, etc.). Wenn leer, mu
                        neugeschrieben werden. Als Trennzeichen bei
                        mehreren Zeilen wird '|' verwendet.

area._rafx.n            RAFX-Zeile der Area.

area._deadline.n        Zeitpunkt fr's physikalische Lschen der Areas
                          Format: yyyy/mm/dd-hh:mm:ss

area._rflags.n          RAFX-Flags der Area
                          -K  = Nicht automatisch lschen
area._node_p.n          Passiv Nodes (Status Pause)
area._group.n           Group dieser Area, Vorgabe = N_A
area._level.n           Level dieser Area, Vorgabe = 2^16 = 65536
area._acs.n             Zugriffsrechte auf die Area
                          0   = Read/Write
                          1   = Read Only
area._keys.n            Keys dieser Area, Vorabe = ''
area._upl_addr.n        Adresse des Uplinks dieser Area. Wenn leer dann
                          kein Uplink vorhanden (lokales Echo)
area._desc.n            Area-Beschreibung



area._changed           Liste mit Zeigern auf Areas, deren Status sich
                        durch Unlink-Kommandos gendert hat.

area_root_idx.<tag>     Index-Stem fr Root-Namen der Areas. Wenn der
                        Root-Name existiert, so ist die entsprechende
                        Variable mit einem Leerstring '' initialisiert.




Bad-Area
--------

bad_area._tag           Area-Tag
bad_area._root          Area-Root
bad_area._format        Area-Format

Netmail-Area
------------

net_area._idx           Liste aller Netareas
net_area.               Stem alle Netarea-Tags
net_area._root.n        Roots der Netareas
net_area._format.n      Format der Netareas
net_area._zone.n        Zone der Netarea



Index-Verwaltung/-Suche
=======================

idx._data               Datei mit Daten der Area-Listen.
                        Jede Zeile ein Eintrag zu einer Fileliste
                        Format:
                        <Bytes> <Date> <Time> <List>,
                          <Bytes> <Date> <Time> <IDX ohne Pfad>

autokill._list._fwd     Flag, Forward fr Areas aus Kill-Listen erlauben
                          0 = Forward verhindern
                          1 = Forward erlauben

found.                  Stem mit gefundenene Eintrgen der Arealisten
found.0                 Anzahl der gefundenen Eintrge
found.n                 Zeiger auf lokales Echo bei SEARCH_AREA_LOCAL()
                        und QUEURY_AREA_LOCAL().
found.1.n               Area-Tags aus Liste bei SEARCH_AREA_FILE(),
                        QUERY_AREA_FILE() und SEARCH_AREA_RULES().
found.2.n               Area-Desc aus Liste
                        SEARCH_AREA_FILE() und QUERY_AREA_FILE(),
                        Filename der Rules bei SEARCH_AREA_RULES().



Autokill
========

autokill._list.         Stem mit Dateinamen der Kill-Listen. Index .0
                        enthlt Anzahl der Listen.
autokill._list._read    Flag zur Anzeige, ob Listen schon gelesen wurden.
                          0   = noch nicht gelesen
                          1   = Listen wurden schon gelesen
                         -1   = Listen wurden gelesen, aber keine Area-Tags

kill_area_idx.<tag>     Index-Stem fr Areas, die gekillt werden sollen.
                        Fr eine in den Listen aufgefhrte Area ist die
                        Variable mit '' initilisiert, ansonsten ein Literal

autokill._history       Datei mit Auflistung der Area-Tags, fr die bereits
                        ein Hinweis auf anstehende Lschung verschickt wurde.




autokill._days          Anzahl der Tage nach denen eine Area gelscht
                        wird, wenn keine Aktivitten auftraten.
autokill._delay         Anzahl der Tage, die zuvor eine Warnung ber das
                        anstehende Lschen, ausgegeben wird.
autokill._group_inc.    Stem Gruppen, in denen Areas automatisch
                        gelscht werden knnen
autokill._group_exc.    Stem Gruppen, in denen keine Areas automatisch
                        gelscht werden knnen.
autokill._area_inc.     Stem Areas, die automatisch gelscht werden knnen
autokill._area_exc.     Stem Areas, die nicht automatisch gelscht
                        werden knnen.
autokill._level         Max. Zugriffslevel, damit eine Area automatisch
                        gelscht werden kann. Vorgabe = 65536
autokill._keys          Die Keys, die eine Area haben darf, damit sie
                        automatisch gelscht werden kann. Vorgabe ist
                        0-9 und A-Z.


autokill._inhibit       Datei mit Areas und Erstelungsdatum zur Verhinderung
                        von Autokill nach Zeit
autokill._inhibit._changed
                        Flag zur Anzeige einer nderung in AUTOKILL._INHIBIT
                          0   = keine nderung
                          1   = nderung erfolgt
autokill._inhibit._read Flag zur Anzeige, ob AUTOKILL._INHIBIT schon gelesen wurde
                          0   = noch nicht eingelesen
                          1   = schon eingelesen

autokill._inh.0         Anzahl der Areas, die in AUTOKILL._INHIBIT aufgefhrt sind
autokill._inh._area.n   Area-Tags
autokill._inh._date.n   Erstellungsdatum (Tage seit 01.01.1970)
                        0 = ungltig
autokill._inh._idx.<area>
                        Index-Stem mit Zeigern auf AUTOKILL._INH._AREA.n.
                        0 = nicht initialisiert.


Dummy-Areas
===========

dummy._area             Maske fr Dummy-Area-Tag
dummy._dir              Pfad fr Dummy-Areas, Vorgabe ist IDX._DIR
dummy._root             Root-Name fr Dummy-Areaa ohne nummerische Endung
                        auf FAT -> RDMA
                           HPFS -> RAFX_DUMMY_AREA_

dummy._area._idx        Index Dummy-Areas und Zeiger auf Zeile in Squish.Cfg




Verwaltung gelschter Areas
===========================

del_area._idx           Index der gelschten Area-Tags. Hier sind alle Areas
                        der Gruppe DELETED_AREA aufgefhrt.

del_area._wait          Wartezeit in Tagen



nderungen bei Areas
====================

  In den NEW_AREA.-Variblen werden Informationen ber neu erstellte
  Areas fr Meldungen festgehalten.
  Gesetzt in ADD_NEW_AREA_STEM:

new_area._group         Liste aller Gruppen, in denen neue Area erstellt
                        wurden
new_area.0              Anzahl der Gruppen mit neuen Areas
new_area.g.             Stem Zeiger auf Areas
new_area._init.g.       Grund des Anlegens der Area.
                          -1  = Autocreated Area
                           0  = durch Sysop angelegt oder bestellt
                                worden
                           n  = Zeiger auf Downlink, der die
                                Area bestellt hat.


  In den folgenden DEL_AREA.-Variablen werden Informationen zu aktuell
  gelschten Areas gespeichert.
  Gesetzt in UNLINK_AREA:

del_area._group         Liste aller Gruppen, in denen Areas gelscht
                        wurden
del_area.0              Anzahl der Gruppen mit gelschten Areas
del_area.g.             Stem Zeiger auf gelschte Areas
del_area._dnl.g.        Liste Adressen der Downlinks, die Nachricht
                        vom Lschen erhalten sollen.
del_area._init.g.       Grund der Lschung
                           0  = kein Bedarf, keine Downlinks
                           1  = Autokill, Kill-Liste
                           2  = Autokill, low traffic
                           3  = Autokill, Kill-Liste und low traffic
                           4  = durch Sysop


  In den REN_AREA.-Variablen werden Informationen ber umbenannte Areas
  fr Meldungen festgehalten.
  Gesetzt in PROC_AREA_RENAME:

ren_area._group         Liste aller Gruppen, in denen Area umbenannt wurden
ren_area.0              Anzahl der Gruppen mit umbenannten Areas
ren_area.g.             Stem Zeiger auf Areas
ren_area._old.g.        Der ursprngliche Name der Area


  In den WARN_AREA.-Variblen werden Informationen ber Autokill-Warnungen
  zu Areas fr Meldungen festgehalten.

warn_area._group        Liste aller Gruppen, in denen Areas angewarnt wurden
warn_area.0             Anzahl der Gruppen mit angewarnten Areas
warn_area.g.            Stem Zeiger auf Area
warn_area._init.g.      Grund der Warnung vor Autokill.
                           1  = Kill-Liste
                           2  = low traffic
                           3  = Kill-Liste und low traffic
warn_area._kill_date    Datum der Lschung, nur gltig, wenn WARN_AREA.0 > 0
                        Format 'YYYY MM DD'




Sonstige Variablen
==================

group_avail.            Stem aller fr Downlinks verfgbaren Gruppen

  Die folgenden GROUP.-Variablen sind Downlink-spezifisch und werden beim
  Verarbeiten der Request-Mails angelegt.

group._downlink         Zeiger auf den Downlink, fr den die Werte
                        gltig sind.
group._idx              Liste aller Gruppen, auf die der Downlink
                        Zugriff hat und in denen lokal Areas zur
                        Verfgung stehen.
group.0                 Anzahl der aufgefhrten Gruppen.
group.n                 Gruppen-Namen
group._ptr.n            Zeiger auf die AKA des Downlink, mit der er auf die
                        Gruppe Zugriff hat (gilt auch fr Sysop)
group.n.                Stem mit Zeigern auf auf die Areas der jeweiligen
                        Gruppe.

  Die folgenden zwei RESCAN.-Variablen werden beim Bearbeiten von
  Rescan-Kommandos eines Downlinks angelegt.

rescan._dnl_idx         Liste mit Zeigern auf Downlinks und deren AKAs.
                        Fr jeden Eintrag existiert die jeweilige
                        RESCAN.dnl.n-Variable
                        Wenn leer, dann liegt kein Rescan an.
                        Format eines Eintrags:
                          <Zeiger auf Downlink>/<Zeiger auf AKA>

rescan.dnl.n            Liste mit Zeigern auf Areas fr Rescan. Der Index DNL
                        ist dabei der Zeiger auf den Downlink und N der Zeiger
                        auf eine AKA des jeweiligen Downlinks.
                        Format eines Eintrags:
                          <Zeiger auf Area>/<Rescan-Einstellung>
                        Rescan-Einstellungen
                          ALL     kompletter Rescan
                          -n      nur MSGs der letzten n Tage
                          n       nur die letzten n MSGs

EXT_AREA.-Variablen
===================

ext_area.0              Anzahl der zus. Area-Listen
ext_area._file.n        Filenamen der Area-Listen
ext_area._mask.n        Maske fr eine Zeile der Area-Listen
ext_area._pt.n          0 = keine Passthrough-Areas ausgeben
                        1 = auch Passthrough-areas ausgeben
ext_area._format_sq.n   String fr Squish-Format
ext_area._format_sdm.n  String fr *.MSG-Format

ext_area._inc.n.0       Anzahl der Include-Groups
ext_area._inc_n.        Masken fr Gruppen
ext_area._inc_subst.n.  Ersatzstring fr Gruppenname. Wenn Leerstring, wird
                        echter Gruppenname eingesetzt.

ext_area._exc.n.        Stem mit Maske der Exclude-Groups



Maximus
=======

max._work_dir           Startverzeichnis von Maximus
max._main_ctl           MAX.CTL (nur bei MAX._SUPPORT = 2)
max._msgarea_ctl        MSGAREA.CTL
max._msgarea_rafx       File mit den von RAFX exportierten Areas. Zum
                        Einbinden mit INCLUDE in MSGARE.CTL
max._ctl_compiler       SILTP.EXE

max._aka_match.         Stem der AKA-Masken zum Matchen
max._aka_match_new.     Neue AKA dafr

max._access.0           Anzahl der definierten ACS-Strings
max._access.n           RAFX-Level
max._access_str.n       Maximus-ACR-Strings dazu

max._acs_keys           RAFX-Keys, die nach Maximus bernommen werden drfen




max._div                Anzahl der Definitionen

  Index n = 0 = oberste Div (keine)

max._div_name.n           Name der Division
max._div_desc.n           Beschreibung der Division

max._div_group_exc.n.     Stem Exclude-Groups
max._div_group_inc.n.     Stem Include-Groups, keine Angabe = alle
max._div_group_inc_ro.n.  Stem ReadOnly-Flags dazu

max._div_area_exc.n.      Stem Exclude-Areas
max._div_area_inc.n.      Stem Include-Areas, keine Angabe = alle
max._div_area_inc_ro.n.   Stem ReadOnly-Flags dazu

max._div_aka.n.           Stem der Include-Akas, keine Angabe = alle

max._div_setting.n      Zeiger auf Settings, Format '<Origin> <Seen By> <Style>'


max._div_ptr.n.         Stem Zeiger auf Sub-Divs



max._set_origin.        Stem Origin
max._set_seenby.        Stem Seen-By
max._set_style.         stem Style



Statistik
=========

res._badmail            Anzahl der gefundenen Bad-MSGs, die eingetosst
                        werden knnen.
res._netmail            Anzahl der erzeugten Netmails
res._echomail           Anzahl der erzeugten Echomails
* res._netmail_upl        Anzahl der erzeugten Netmails an Uplink

res._repack             Liste der Downlink-AKAs und neuer Packer frs Umpacken



Funktionen und Unterprogramme
---------------------------------------------------------------------

prg_init_1            Erste Programm-Vorgaben setzen

check_arg             Kommandozeilen-Argumente testen

read_prg_cfg          Konfiguration lesen

open_logfile          Logfile ffnen

read_squish_cfg       Squish-Cfg lesen

prg_init_2            Weitere Vorgaben/Einstellungen setzen
                      - Adressen festelegen, unter denen eine Netmail
                        an einen Uplink geschickt wird.
                      - Primary-Akas zu den Area-Listen und deren den
                        Areas daraus festlegen
                      - Max. Lnge der Echoarea-Tags und -Roots feststellen
                      - Echoarea-Lines der Squish-Cfg aufschlsseln

check_idx             Testet Idizes der Arealisten der Uplinks und
                      erstellt/lscht ggfl. die Index-Files

write_squish_cfg      Schreibt die Squish-Cfg neu

proc_sqsettings       Bearbeitet Settings-nderung in Squish.Cfg und
                      erzeugt/lscht die entsprechenden Zeilen.


write_prg_cfg         Schreibt die RAFX-Cfg neu


init_ptr flag         Initialisiert die Lastread-Pointer.
                        flag  0 = zurcksetzen
                              1 = auf aktuelle Zeit setzen

write_timestamp root, ts
                      Setzt den Timestamp einer *.MSG-Area.
                      root =  Root-Verzeichnis der Area
                      ts   =  0  = Timestamp zurcksetzen
                              1  = Timestamp auf akt. Zeit setzen
                              Alles andere wird direkt geschrieben

read_timestamp(root)  liefert des Wert fr den Timestamp einer *.MSG-Area
                      root  = Root-Verzeichnis der Area

read_sql(root)        liefert den Wert des LR-Pointer einer Squish-Area
                      root  = Root-Verzeichnis der Area

write_sql root, uid   Schreibt den Lastread-Pointer einer
                      Squish-Area.
                      root  = Area-Root
                      uid   = MSG-Uid im Dezimalformat

autokill_areas        Automatische Lschung von Areas durchfhren.





read_autokill_list()  Liest die Killarea-Listen
                       -1   = Listen eingelesen, aber keine Area, da wohl
                              ungltig oder leer.
                        0   = Kill-Listen noch nicht eingelesen
                        1   = Area-Tags zum Killen eingelesen

read_rule_idx         Liest den Rule-Index ein.

make_rule_idx         Erstellt Rules-Index

set_area_data         Setzt RAFX-Daten der Areas.

send_announce         Erstellt Announce-mails in EchoAreas.

scan_badmail()        Scannt die BadMail-Area und erstellt ggfl. neue
                      Areas.

scan_msg_base()       Scannt Eingangs-NetAreas und bearbeitet MSGs

proc_msg(h)           Wertet eine geffnete MSG aus und setzt
                      die MCMD.-Variablen.
                        h   = Nummer unter der die Area geffnet wurde
                      Ergebnis:
                        0   = kein Request
                        1   = Request-Mail ausgewertet, nicht lschen
                        2   = Request-Mail ausgewertet und lschen


proc_request m        Bearbeitet die Area-Requests
                        m   = Index der aktuellen MCMD.-Variablen
                      Whrend der Bearbeitung wird die Stem DNL_REQ.
                      angelegt und enthlt Informationen zur Aktion.
                      Inhalt: <Zeiger auf Area> <flag>
                      Flag gibt die Aktion an und wird zur Generierung
                      der Antwort-MSG und Logfile-Eintrages verwendet.
                        Link-Kommandos
                          1   = Area ist schon aktiv geschaltet
                          2   = Area von passiv auf aktiv geschaltet
                          3   = Area geschaltet
                          4   = Area geschaltet, Request weitergeleitet
                          5   = Area ist schon geschaltet
                          6   = Passthrough aufgehoben
                        Unlink-Kommandos
                          7   = Area ist Pflicht-Area
                          8   = Area abgeschaltet
                          9   = Area ist schon Passthrough
                         10   = Area auf Passthrough geschaltet
                      Ist die Stem-Varible leer, so ist keine passende
                      Area verfgbar
                      Zustzlich wird die Variable AREA._CHANGED gesetzt.
                      Diese enthlt eine Liste mit Zeigern auf Areas, deren
                      Einstellungen durch Unlink-Kommandos gedert wurden.


del_area_files a, flag   Lscht Files einer Area.
                          a   = Zeiger auf Area
                         flag = 1    Files aus KEEP_FILE_... behalten
                              = 2    Files aus SAVE_FILE_... behalten
                                     Bei einer *.MSG-Area wird zus.
                                     versucht, das Root-Verzeichnis
                                     zu lschen

check_changed_areas   berprft die Areas, bei denen nderung durch Unlink-
                      Kommandos vorgenommen wurden. Werden Areas gelscht,
                      so wird die entsprechende Area in der Vaiablen
                      UPL._CMD. festgehalten.

unlink_area a, init, flag   Registriert Unlink-Kommando fr Uplink, lscht alte
                      Areas-Files und aktualisiert die DEL_AREA.-Variablen.
                        a   = Zeiger auf Area
                      init  = Grund der Lschung
                      flag  = '' keinen Downlink benachrchtigen
                            <>'' geschaltete Downlinks benachrichtigen

write_xas_dif_temp flag, a, add
                      Schreibt eine Zeile in das File XAS._TEMP_FILE.
                      Wenn File noch nicht vorhanden, wird sie erstellt.
                      flag  = 'd' Area gelscht
                              'n' Area neu
                              'r' Area umbenannt
                        a   = Zeiger auf AREA.-Vars
                      add   = alter Area-Tag, wenn FLAG = 'r'

rescan_areas          Fhrt ensprechend der RESCAN.-Variablen die
                      Area-Rescans durch.

send_sysop_report     Sendet einen Report an den Sysop.

send_downlink_notify  Sendet Mitteilungen ber nderungen Downlinks.

proc_uplink u         Erstellt MSGs mit Forward-Requests an die Uplinks
                        u   = Zeiger auf Uplink

proc_area_rename      Benennt Areas entspechend MCMD.-Variablen um
                        m   = Index der aktuellen MCMD.-Variablen

proc_area_delete m    Lscht Areas entspechend MCMD.-Variablen
                        m   = Index der aktuellen MCMD.-Variablen

proc_area_create m    Erstellt Areas entspechend MCMD.-Variablen
                        m   = Index der aktuellen MCMD.-Variablen

proc_tempreq m        Schaltet Areas fr einen Downlink aktiv oder passiv.
                        m   = Index der aktuellen MCMD.-Variablen

send_rsp_help m       Sendet Hilfe
                        m   = Index der aktuellen MCMD.-Variablen

send_rsp_info m       Sendet Info an einen Downlink
                        m   = Index der aktuellen MCMD.-Variablen

confirm_cmd_err m     Besttigung zu falschen Kommandos senden
                        m   = Index der aktuellen MCMD.-Variablen

confirm_pw_err m      Besttigung falsches Passwort senden
                        m   = Index der aktuellen MCMD.-Variablen

proc_new_settings m   Besttigung neuer Einstelungen senden
                        m   = Index der aktuellen MCMD.-Variablen

send_query_list m     Sendet Liste der bestellten Areas
                        m   = Index der aktuellen MCMD.-Variablen

send_avail_list m     Sendet Liste aller bei Uplinks verfgbaren Areas
                        m   = Index der aktuellen MCMD.-Variablen

send_area_list m      Sendet Liste aller schon vorhandenen Areas
                        m   = Index der aktuellen MCMD.-Variablen

send_rules m          Sendet Rules an Downlink
                        m   = Index der aktuellen MCMD.-Variablen

send_rules_netmail d, da
                      Erstellt Netmails mit Rules oder File Attach. Die
                      Filenamen mssen sich in der Stem RULES_SEND.
                      befinden, RULES_SEND._IDX enthlt die
                      entsprechende Liste der Area-Tags.
                      Argumente:
                        d   = Zeiger auf den Empfnger
                        da  = Empfnger-Adr

proc_req_ins_addr a, addr, flag
                      Fgt eine Adresse in die Liste zu Linked- oder
                      Passive-Nodes ein.
                        a   = Zeiger auf Area
                       addr = Adresse
                       flag = 'P'  fgt in AREA._NODE_P.a ein
                              sonst.  fgt in AREA._NODE_L.a ein


scan_groups_local(d)  Erstellt die GROUP.-Variablen mit Angaben zu Gruppen,
                      in denen lokal Areas fr den Downlink zur Verfgung
                      stehen. Liefert die Anzahl der Gruppen (GROUP.0).
                        d   = Zeiger auf den Downlink

set_rsp_msg_hdr d, fa, da
                      Setzt die Hauptdaten im Header einer Antwort-MSG
                        d   = Zeiger auf den Empfnger, 0 ist der Sysop
                        fa  = Absender-Adr, wenn leer, wird die
                              Haupt-AKA des Sysops verwendet
                        da  = Empfnger-Adr, wenn leer, wird die
                              Haupt-AKA des Downlinks verwendet.

send_rsp_split_msg_part d, fa, da, rep
                      Erstellt bei ausreichender Gre eine Antwort-MSG.
                      Vor dem ersten Aufruf mu die Var M_TEXT._SUBJECT
                      mit dem Betreff der MSG gesetzt werden.
                      Der MSG-Text mu jeweils an die Var M_TEXT._PART
                      angehngt werden. Die Routine ist dann aufzurufen,
                      wenn eine gnstige Stelle zum Splitten erreicht ist.
                        d   = Zeiger auf Empfnger, 0 ist der Sysop
                        fa  = Absender-Adr, wenn leer, wird die
                              Haupt-AKA des Sysops verwendet
                        da  = Empfnger-Adr, wenn leer, wird die
                              Haupt-AKA des Downlinks verwendet.
                        rep = MSGID fr REPLY-Kludge, wenn leer, wird keine
                              REPLY-Kludge eingesetzt

send_rsp_split_msg d, fa, da, rep
                      Sendet den letzten Teil einer Antwort-MSG und setzt
                      die M_TEXT.-Variablen wieder zurck.
                        d   = Zeiger auf Empfnger, 0 ist der Sysop
                        fa  = Absender-Adr, wenn leer, wird die
                              Haupt-AKA des Sysops verwendet
                        da  = Empfnger-Adr, wenn leer, wird die
                              Haupt-AKA des Downlinks verwendet.
                        rep = MSGID fr REPLY-Kludge, wenn leer, wird keine
                              REPLY-Kludge eingesetzt

send_rsp_split_msg_1  Gemeinsam von SEND_RSP_SPLIT_MSG_PART und
                      SEND_RSP_SPLIT_MSG genutzte Unterroutine.

send_echo_split_msg_part fa, fn, dn
                      Erstellt bei ausreichender Gre eine MSG in der unter
                      2 geffneten EchoArea. Vor dem ersten Aufruf mu
                      die Var M_TEXT._SUBJECT mit dem Betreff der MSG
                      gesetzt werden. Der MSG-Text mu jeweils an die
                      Var M_TEXT._PART angehngt werden. Die Routine ist
                      dann aufzurufen, wenn eine gnstige Stelle zum
                      Splitten erreicht ist.
                        fa  = Absender-AKA
                        fn  = Absendername
                        dn  = Empfngername

send_echo_split_msg fa, fn, dn
                      Erstellt den letzen Teil einer MSG in der unter 2
                      geffneten EchoArea und setzt die M_TEXT-Variablen
                      zurck.
                        fa  = Absender-AKA
                        fn  = Absendername
                        dn  = Empfngername

send_echo_split_msg_1 Gemeinsam von SEND_ECHO_SPLIT_MSG_PART und
                      SEND_ECHO_SPLIT_MSG genutzte Unterroutine.


search_area_file(mask, u, j)  Sucht in einem Area-Index und der Area-Liste
                      nach Area-Tags, die auf 'mask' matchen. Diese
                      Funktion liefert die Anzahl der gefundenen Eintrge
                      und setzt die Stem FOUND. entsprechend.
                      Darf nur aufgerufen werden, wenn die zu durchsuchende
                      Arealiste existiert.
                      mask  = Maske mit Wildcards ('*')
                        u   = Zeiger auf den Uplink
                        j   = Zeiger auf die Liste des Uplinks

query_area_file(tag, u, j)  Sucht in einem Area-Index und der Area-Liste
                      nach einem bestimmten Area-Tag. Diese
                      Funktion liefert die Anzahl der gefundenen Eintrge
                      (1 oder 0) und setzt die Stem FOUND. entsprechend.
                      tag   = Area-Tag ohne Wildcards
                        u   = Zeiger auf den Uplink
                        j   = Zeiger auf die Liste des Uplinks

search_area_local(mask)  Sucht in den lokal vorhandenen Echoareas nach
                      Area-Tags, die auf 'mask' matchen. Diese Funktion
                      liefert die Anzahl der gefundenen Eintrge und setzt
                      die Stem FOUND. entsprechend.
                      mask  = Maske mit Wildcards ('*')

query_area_local(tag)  Sucht einen Area-Tag im Area-Index und setzt die
                      Stem FOUND. entsprechend.
                      tag   = Area-Tag ohne Wildcards


search_area_rules(mask)  Sucht nach Rules des angegebenen Area-Tags.
                      mask  = Maske mit Wildcards ('*')



prep_pattern(mask)    Bereitet die Maske fr die Verwendung durch PARSE
                      vor und liefert die umgewandelte Maske zurck. Wird
                      aufgerufen von SEARCH_AREA_FILE() und
                      SEARCH_AREA_LOCAL().

search_root_name(tag, f, flag, str)   Liefert einen Root-Namen fr den
                      bergebenen Area-Tag. Konnte kein Name gefunden
                      werden, wird ein Leerstring Zurckgeliefert.
                       tag  = Area-Tag
                       f    = Format der Area
                              ''  = *.MSG-Format
                              '$' = Squish-Format
                       flag = 0   Den mit STR angegebenen Pfad verwenden
                              1   STR ist der Name der Gruppe. Der Pfad
                                  wird aus DEF._GROUP_PATH ermittelt.
                       str  = Pfad oder Gruppe



query_area_link(d, a) Testet, ob Downlink auf Area geschaltet ist.
                      Liefert zwei Ergebnisse.
                      1. Wort
                        0   = Area nicht geschaltet
                       >0   = aktiv geschaltet
                       <0   = passive geschaltet
                        Der Absolutwert ist der Zeiger auf die Adresse
                      2. Wort
                        n   = Zeiger auf AKA des Downlinks
                      Argumente:
                        d   = Zeiger auf Downlink
                        a   = Zeiger auf Area


set_msg_text_group_hdr gn, lng
                      Setzt in M_TEXT._PART die Gruppenberschrift ein.
                        gn  = Name der Gruppe
                        lng = Sprach-Index

copy_rules_2_dsc a    Kopiert bei Bedarf ein Rules-File nach *.DSC. Bei einer
                      *.MSG-Area wird zus. bei Bedarf das
                      Root-Verzeichnis erstellt.
                        a   = Zeiger auf Area


open_area_nm_out(a)   ffnet die Ausgabe-Netarea unter der Nummer 2 und
                      liefert 0, wenn Aktion OK oder Area schon offen.
                        a   = Zeiger auf die Netarea

open_area(n, root, type, flag)  ffnet eine Area mittels SQ_OPEN_AREA(),
                      und wenn -4 zurckgeliefert wird, wird in Abstnden
                      von 1 Sekunde bis zum Timeout weiterhin versucht, die
                      Area versucht zu ffnen.
                        n   = Nummer, unter der die Area geffnet wird
                        root= Root der Area
                        type= Format der Area
                        flag= Flag zum ffnen

set_msgid_next()      Setzt die Var MSGID._NEXT auf den nchsten zu
                      verwendenden Wert und liefert diesen auch zurck.

save_msgid_next       Sichert den letzten Wert von MSGID._NEXT.

add_new_area_stem g, a, flag   Fgt eine neue Area zur Stem NEW_AREA. hinzu
                        g   = Gruppenname
                        a   = Zeiger auf Area
                        flag= Grund der Erstellung

set_area_sflags a, grp  Setzt die Squish-Area-Flags einer neuen Area in
                      Abhngigkeit von der Gruppe.
                        a   = Zeiger auf Area
                        grp = Name der Gruppe

s_directory(path)     Modifiziertes Directory()

rename_file(src, dest) Benennt das File 'src' nach 'dest' um mittels
                      RENAME um und liefert den RC
                        src = Quelle
                        dest= Ziel, darf vollen Pfad enhhalten

close_logfile         Schliet das Logfile bei Programmende

execute_prg prg       Fhrt eine externes Programm aus. Das Logfile wird zuvor
                      geschlossen und hinterher wieder geffnet.
                        prg = Kommando

set_primary_aka(pattern, group)
                      Liefert die passende Primary-Aka fr die Gruppe, wenn kein
                        pattern = Teil-Aka, '' oder '.'
                        group   = Gruppen-Name
                      Liefert
                        aka     = 4d-Adresse
                        ''      = keine passende Aka

expand_dnl_groups d   Schlsselt die Gruppen des Downlinks auf
                        d       = Zeiger auf Downlink

query_dnl_packer d    Ermittelt den eingestellten Packer des Downlinks und setzt
                      die Variable DNL._PACKER.d entsprechend.
                        Ergebnis = Krzel des Packers
                      Argumente
                        d       = Zeiger auf Downlink

match_orig_aka(aka)   Sucht die zur der angegebenen AKA/Teil-AKA passende eigene
                      AKA. Wenn es keine passende AKA gibt, dann wird
                      die erste eigene AKA zurckgeliefert.
                        Ergebnis = Eigene AKA
                      Argumente
                        aka      = AKA oder Teil-AKA mit Zone beginnend


wrap_area_desc(area, desc)
                      Bricht lange Area-Beschreibung fr Area-Listen um und
                      liefert entsprechneden String zurck
                        area    = Area-Tag
                        desc    = Beschreibung

match(pattern, str)   Liefert 1 wenn Maske PATTERN auf String STR match

unix_date()           Liefert Datum/Zeit im Unix-Format als Dezimalzahl

xd2datetime(u)        Liefert Datum und Zeit im Format
                      YYYY/MM/DD-hh:mm:ss
                        u = Datum und Zeit im Unixformat

xd2date(u)            Liefert Datum im Format YYYY/MM/DD
                        u = Tage seit 01.01.1970

date2xd(date)         Liefert Tage seit 01.01.1970 des bergebenen Datums
                      date = Datum im Format [YY]YY/MM/DD

replace_str(...)      Tauscht in einem String Teilstrings gegen neue aus.

set_full_name(var, opt)  Testet den Inhalt der Variablen 'var', der eine
                      Pfad- und/oder File-Angabe enthlt. Dieser wird
                      versucht zu vervollstndigen. Ist das erfolgreich, so
                      wird 'var' auf diesen Wert gesetzt und der Wert zurck-
                      geliefert. Sonst wird 'var' nicht verndert und
                      ein Leerstring geliefert.
                      opt = 'p'   Pfadnamen vervollstndigen
                            'f'   Filenamen vervollstndigen, File mu
                                  vorhanden sein.
                         sonst.   Pfad eines Filenamen vervollstndigen,
                                  File mu nicht vorhanden sein.







Format der RAFX-Zeile in Squish.Cfg
---------------------------------------------------------------------

; *RAFX* N_A 65536/  ""  .4 .5 231 .6

<Kennung> <Gruppe> <Level>/[Keys] [uplink] "<Desc>" [node [...]]

Kennung = '; *RAFX* '
Gruppe  = Gruppenname, Gruppe N_A wird intern verwendet, um jeglichen
          Zugrif zu sperren
Level   = Zugriffslevel fr diese Area
Keys    = Keys, die fr Zugriff auf diese Area min. gesetzt sein mssen
Uplink  = Uplink fr diese Area. Wenn nicht angegeben, dann lokales Echo
Desc    = Beschreibung
node    = Adressen der Passive-Nodes, Abkrzungen richten sich nach der
          der geltenden Primay-AKA der Area

Enthlt eine EchoArea in der Squish-CFG keine oder eine ungltige
Angabe fr RAFX, so wird automatisch folgende erzeugt:

; *RAFX* N_A 65536/  "no description"

Damit ist zwar eine grundlegende Definition angegeben, aber kein
Downlink hat Zugriff.
Die RAFX-Zeile mu unmittelbar auf die EchoArea-Zeile folgen.
Ungltige RAFX-Zeilen werden nicht automatisch gelscht, sondern bleiben
nach Einfgen obengenannter Zeile erhaalten.




Hinweise zu Squish
---------------------------------------------------------------------

- Die gltige Primary-AKA fr die Area ist die zuletzt angegebene (Path,
  etc.)
- Sind Echoarea in mehreren Zeilen angegeben, so gilt fr jede Zeile die
  in der vorherigen Zeile letzte gltige Primary-AKA.
- Abkrzungen bei -X und -U richten sich immer nach der zuvor angegebenen
  Primary-AKA
- Abkrzungen bei den Links beziehen sich immer auf den zuvor angegebenen
  Link. Beim ersten Link bezieht sich die Abkrzung auf die zuvor
  angegeben Primary-AKA.
- Abkrzungen der Links werden nicht ber mehrere Zeilen hinweg verfolgt.

- Ist in nur einer Zeile das Passthrough-Flag gesetzt, so ist die Area
  passthrough.
- Sind bei einer Area sowohl -$ als auch -F angegeben, so gilt das zuletzt
  angegebene Flag



Sonstiges
---------------------------------------------------------------------

- Area.-Vars werden gedropt in
  - UNLINK_AREA , unbentigte Teile
  - PROC_REQ_CREATE_AREA , nur AREA._DEADLINE falls neu zu erstellende
    Area in DEL_AREA._IDX enthalten ist.
  - READ_SQUISH_CFG , AREA._LINE.n wenn DELETED_AREA und erhalten
    bleibt, oder alle AREA.-Vars, wenn DELETED_AREA entfernt wird.



Format Squish-Index
---------------------------------------------------------------------

- Die 1. Zeile enthlt die Gre des Files und die Version von RAFX,
  durch die es erstellt wurde.

  12 Bytes    Lnge des Files, links bndig mit Leerzeichen aufgefllt
  'RAFX'
  1 Byte      Leerzeichen
  x Bytes     Versions-Nr., Inhalt der Variablen VERSION (siehe RAFX.CMD
              Zeile 2)

- Ab Zeile 2 folgen die Daten der einzelnen Areas.
  Fr jede Area sind mehrere Zeilen notwendig. Als Trennzeichen zwischen
  einzelnen Feldern innerhalb der Zeilen dient '|'

  1. Area-Zeile    <Area-Tag in Groschreibung>'|'<Primary-AKA>

  2. Area-Zeile    <Squish-Area-Flags>'|'<Area-Format>'|'
                   <U-Nodes>'|'<X-Nodes>'|'<Links>

     'Area-Foramt' = ' ' bei *.MSG-Area
                     '$' bei Squish-Area
     Die AKA's sind immer 4D, mehrere AKAs sind durch ein Leerzeichen
     getrennt


  3. Area-Zeile    <Squish-Zeile 1>'|'[<Squish-Zeile 2>'|'[...]]

     Diese Zeile enthlt die Daten der Echoarea, so wie sie in der
     Squish-Cfg enthalten sind, ausser 'ECHOAREA', Area-Tag und
     Rootname. Sind die Daten der Echoarea in der Squish.Cfg auf mehrere
     Zeilen verteilt, so sind diese Daten durch '|' voneinander
     getrennt.
     Diese hier entthaltenen Daten werden beim Einlesen der Squish.Cfg
     mit den dort enthaltenen Daten verglichen. Bei einem Unterschied
     schlsselt RAFX die Daten dann aus der Squish.Cfg auf, ansonsten
     nimmt die Daten aus Area-Zeile 2.


  4. Area-Zeile    <RAFX-Zeile zur Area>

     Die komplette RAFX-Zeile der Area so wie sie in der Squish-Cfg
     steht. Auch diese Daten sind zum Vergleich ntig.


  5. Area-Zeile

     Bei einer aktiven Area:

                   <Gruppe>'|'<Zugriff>'|'<Level>'|'<Keys>'|'
                   <Uplink>'|'<RAFX-Flags>'|'<Passive Links>

          Gruppe        Gruppen-Name in Groschreibung
          Zugriff       0   = Read/Write
                        1   = Read Only
          Level         Zugriffslevel  0 ... n (keine negativen Werte)
          Keys          die Keys der Area
          Uplink        4D-AKA des Uplinks
          RAFX-Flags    in Groschreibung durch eine Leerzeichen
                        voneinander getrennt, z.B. '-K -F'
          Passive Links    eine Liste der passiven Links, 4D-AKAs.
                        Mehrere AKA's sind durch ein Leerzeichen
                        voneinander getrennt.


     Bei einer gelschten Area (Gruppe = DELETED_AREA)

                   <Gruppe>'|'<Deadline>

          Gruppe        'DELETED_AREA'
          Deadline      normalerweise Datum im Format YYYY/MM/DD-hh:mm:ss
                        Dieses Angabe wird von RAFX beim Lschen einer
                        Area in die RAFX-Zeile eingetragen. Da hiermit
                        nur ein Vergleich erfolgt, wird das Format beim
                        Lesen nicht auf Richtigkeit geprft. Es steht
                        hier also das drin, was in der Squish.Cfg drin
                        ist, auch wenn munuell durch Sysop gendert.



ToDo
---------------------------------------------------------------------

- Option zum update der *.DSC-Files

- Netmail-Announce, nur wenn Downlink entsprechenden Level hat

- Maximus-Setup nur, wenn wirklich relevante nderung war.



- %Compress

- (ar) Antworten auf Netmails in die Areas, in der die MSG angekommen sind.

- (hh) PingFix fr FreePoll in Binkley


- Leerzeichen zwichen ~, &, + und - zulassen

- Optional APP-Keyword bei Squish-Cfg verwenden

- SET_FULL_NAME()



---------------------------

source       <File-Daten>|<File>
index        <List-Daten>|<List>|<Index-Daten>|<Index>
setting      <group>|<acs>|<level>|<keys>|<paddr>
sep_masks    <Masken>
sep_index    <List-Daten>|<List>|<Index-Daten>|<Index>
sep_setting  <group>|<acs>|<level>|<keys>|<paddr>

add_index    <List-Daten>|<List>|<Index-Daten>|<Index>
add_setting  <group>|<acs>|<level>|<keys>|<paddr>
















