home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / w / wmail230.zip / WMSTRUCT.230 < prev    next >
Text File  |  1992-12-28  |  13KB  |  286 lines

  1. WMAIL 2.3 - Copyright 1990-92 by Silvan Calarco -
  2.  
  3.     ────────────────────────────────────────
  4.     Structures of files managed by WMAIL 2.3
  5.     ────────────────────────────────────────
  6.  
  7. The following structures are created in Turbo Pascal; look at following
  8. table for type compatibility.
  9.  
  10. Turbo Pascal  C language    Length
  11. ────────────  ────────────  ───────
  12. Byte          Char          1 byte
  13. Char          Char          1 byte
  14. Integer       Int           2 bytes
  15. Word          Unsigned Int  2 bytes
  16. Longint       Long          4 bytes
  17. ────────────  ────────────  ───────
  18.  
  19. String[] format uses a byte more than the number specified in brackets, as
  20. the first one (String[0]) contains string length.
  21.  
  22. ───────────────────────────────────────────────────────────────────────────
  23.  
  24.  
  25. { ***** Configuration file structures *********************************** }
  26.  
  27.  
  28.    SetRec=Record       { >>>>> file WMAIL.PRM <<<<< }
  29.              Version:Word;      { 4: WMail 2.0
  30.                                   5: WMail 2.1
  31.                                   9: WMail 2.2
  32.                                  10: WMail 2.3 }
  33.              Sysop:String[30];
  34.              Key:String[16];
  35.              Aka:Array[0..10] of  { Aka 0 is primary address }
  36.                  Record
  37.                     Zone,Net,Node,Point:Integer;
  38.                     Domain:String[20];
  39.                  end;
  40.              FakeNet:Word;
  41.              ZoneGate:Array[1..10] of
  42.                       Record
  43.                          Net,Node:Integer;
  44.                       end;
  45.              Active_Options:Byte; { Bit mapped:
  46.                                         0: Import dupes
  47.                                         1: Import bad messages
  48.                                         2: Do statistics
  49.                                         3: Use log file
  50.                                         4: Use nodelist files
  51.                                         5: Create new Fido area
  52.                                         6: Create new QBBS area
  53.                                         7: Binkley mode on }
  54.              Swap:Byte;           { 0: No swap; 1: Disk swap; 2: EMS swap }
  55.              MinSpace:Word;
  56.              Dir:Record
  57.                     Mail,Files,Out,ArcMail,MsgBase,Dupes,
  58.                     BadEcho,Packer,Stats,NewAreas,Nodelist:String[60];
  59.                  end;
  60.              Origin:Array[1..10] of String[65];
  61.              AreaListFile:String[60];
  62.              LogFile:String[60];
  63.              LogLevel:Byte;        { 0: Important messages
  64.                                      1: Important+normal messages
  65.                                      2: Important+normal+detailed messages
  66.                                      3: Debug mode (all sort of messages) }
  67.              LogStyle:Byte;        { 0: Binkley Term; 1: FrontDoor }
  68.              Active_Options2:Byte; { Bit mapped:
  69.                                        0: Kill rcvd messages
  70.                                        1: Sort nodes
  71.                                        2: Write nodes in short form
  72.                                        3: Allow user rescan
  73.                                        5: Combine 2 tear lines
  74.                                        6: Honour RRQs
  75.                                        7: Kill packed messages }
  76.              C_WindowBorder,       { Video attributes }
  77.              C_WindowTitle,
  78.              C_WindowNorm,
  79.              C_WindowHi,
  80.              C_SelBar,
  81.              C_ShowField,
  82.              C_EditField,
  83.              C_MenuDeny,
  84.              C_MessageNorm,
  85.              C_Griglia,
  86.              C_TopBar,
  87.              C_BottomBar,
  88.              C_InfoBar,
  89.              C_WMailText:Byte;
  90.              Filler1:Array [1..2736] of Byte;
  91.              RouteFile:String[60];
  92.              Packer:Array[1..7] of { See DefPacker for packers and unpackers
  93.                                      correspondence. }
  94.                     Record
  95.                        Name:String[12];
  96.                        Parms:String[20];
  97.                     end;
  98.              UnPacker:Array[1..7] of
  99.                       Record
  100.                          Name:String[12];
  101.                          Parms:String[20];
  102.                       end;
  103.              DefPacker:Byte;        {1:ARC 2:ARJ 3:LZH 4:PAK 5:ZIP 6:ZOO 7:SQZ}
  104.              Def_Misc:Byte;         { Bit mapped:
  105.                                          0: Put origin
  106.                                          1: Put tear line
  107.                                          2: Hide SEEN-BY
  108.                                          3: Strip 4d address
  109.                                          4: Add AKA's
  110.                                          5: Put domain
  111.                                          6: Force Public
  112.                                          7: Force Private  }
  113.              Rescan_File:String[60];
  114.              LinkNodes:String[60];
  115.              CreatingNodes:String[60];
  116.              AlertNodes:String[60];
  117.              AfFlags:Byte;          { Bit mapped: (for areafix)
  118.                                          0: Kill processed messages
  119.                                          1: Sort nodes
  120.                                          2: Write nodes in short form
  121.                                          3: Allow rescan
  122.                                          4: Set Crash bit on  (in answer msgs.)
  123.                                          5: Set Hold bit on
  124.                                          6: Set Killsent bit on  }
  125.              Def_Misc2:Byte;        { Bit mapped:
  126.                                          0: 4d point infos }
  127.              Unused:Array[1..754] of Byte;
  128.           end;
  129.  
  130.  
  131.    AreasRecord=Record { >>>>> File AREAS.PRM <<<<< }
  132.                   Titolo   : String[40];
  133.                   Path     : String[80];
  134.                   Tipo     : Byte; {Local=1  EchoMail=2  NetMail=3
  135.                                    Passthru=4}
  136.                   WEdOrigin: Byte; { Used by WEdit }
  137.                   Tag      : String[40];
  138.                   Def_Attr : Byte;        {Bit Mapped (used by WEdit):
  139.                                                      Bit 0 : Pvt
  140.                                                      Bit 1 : Crash
  141.                                                      Bit 4 : F/A
  142.                                                      Bit 7 : Kill/Sent}
  143.                   ForwardTo: Array[1..3] Of String[60];
  144.                   Aka      : Byte;
  145.                   Misc     : Byte;  { Bits: see SetRec.Def_Misc }
  146.                   Level    : Byte;
  147.                   WMOrigin : Byte;
  148.                   WEd_Aka  : Byte;  { Used by WEdit }
  149.                   General  : Byte   { Bit mapped:
  150.                                          0: Inactive area  }
  151.                   Misc2    : Byte;  { Bits: see SetRec.Def_Misc2 }
  152.                   Fill     : Char;
  153.                   CWExtRec : Word;  { Must be equal to ExtendRec; if not so
  154.                                       assume ExtendRec:=0 }
  155.                   ExtendRec: Word;  { Used for compatiblity with different
  156.                                       versions of WMail & WEdit; it contains
  157.                                       the number of bytes to skip to find next
  158.                                       record (0 in this version)   }
  159.                end;
  160.  
  161.  
  162.    NodesRecord=Record  { >>>>> file NODES.PRM <<<<< }
  163.                   Zona,Net,Nodo,Point:Integer;
  164.                   Packer:Byte;        { Like in SetRec.Def_Packer }
  165.                   PktPw:String[8];
  166.                   Filler:Array[1..12] of Byte;
  167.                   AfPw:String[20];
  168.                   Level:Byte;         { The level assigned to the node
  169.                                         for areafix operations }
  170.                   Misc:Integer;       { Bit mapped:
  171.                                           0: Daily packets  }
  172.                   Aka:Byte;
  173.                   Filler1:Array[1..20] of Byte;
  174.                end;
  175.  
  176. { ***** Statistics files structures ************************************* }
  177.  
  178.    Stat1=Record         { >>>>> file WMSTAT1.DAT <<<<< }
  179.             TagArea:String[30];
  180.             F:Array[1..3] of
  181.               Record
  182.                  ImpMsg,ExpMsg:Word;
  183.               end;
  184.          end;
  185.  
  186. { TagArea contains the name of the area to which statistics refer.
  187.   Record F contains number of imported (ImpMsg) and exported (ExpMsg) messages.
  188.   F[1] contains yearly informations, F[2] monthly ones and F[3] weekly ones.
  189.   From first record it is possible to obtain informations about the period
  190.   for which statistics refer.
  191.   F[1].ImpMsg contains a 4 digit number indicating the concerned year
  192.   F[2].ImpMsg contains a number in {1,2,...12} indicating the concerned month
  193.   F[3].ImpMsg contains number of days between 1970 and concerned period.
  194.   Weekly statistics are made after first Monday import. }
  195.  
  196.    Stat2=Record         { >>>>> file WMSTAT2.DAT <<<<< }
  197.             Net,Node,Point:Integer;
  198.             F:Array[1..3] of
  199.               Record
  200.                  NumPktImp:Integer;
  201.                  NumMsgImp,NumBytesImp:Longint;
  202.                  NumPktExp:Integer;
  203.                  NumMsgExp,NumBytesExp:Longint;
  204.               end;
  205.          end;
  206.  
  207. { Net,Node,Point contain the address of node to which statistics refer.
  208.   Record F contains informations about number of imported packets (NumPktImp),
  209.   number of imported messages (NumMsgImp) and total dimension in bytes of
  210.   imported packets (NumBytesImp). The same informations are also present in
  211.   export (NumPktExp, NumMsgExp,NumBytesExp). F[1] contains yearly informations
  212.   F[2] the monthly ones and F[3] the weekly ones.
  213.   First record contains reserved informations and must be therefore skipped. }
  214.  
  215.  
  216.  
  217. { ***** W-Nodelist files structures **************************************** }
  218.  
  219. Files created by WNode are 4, and are used for indexing text nodelist in
  220. order to speed up seeks;
  221.  
  222. *AltNode.WNL contains a queue of nodelist files used other than NodeList.*,
  223.              so private nodelists, pointlists or alternate net nodelists.
  224.  
  225. *NodeLoc.WNL contains position of concerned field, and nodelist file in
  226.              which are contained the informations about node every record
  227.              refers to.
  228.  
  229. *SysList.WNL contains names of all Sysops alphabetically sorted and location
  230.              of relative node in NodeLoc.WNL.
  231.  
  232. *NodeRec.WNL contains indexes to obtain a quick search inside NodeLoc.WNL and
  233.              SysList.WNL. All starting positions of zones and nets, and of
  234.              sorted sysop are put in it.
  235.  
  236.  
  237.    NodeLocRec=Record             { Record of NodeLoc.WNL }
  238.                  NodeType:Byte;  { 1:Zone coordinator
  239.                                    2:Region coordinator
  240.                                    4:Host
  241.                                    8:Hub
  242.                                   16:Pvt
  243.                                   32:Hold
  244.                                   64:Down
  245.                                  128:Boss [from pointlist] }
  246.                  Zone,Net,Node,Point:Integer;
  247.                  FileNum:Byte;   { 1: Nodelist.* [newest file];
  248.                                    2: AltNode.WNL [created by WNode] }
  249.                  FilePos:Longint; { Contains absolute node position in one
  250.                                     of two files pointed by FileNum }
  251.               end;
  252.  
  253.  
  254.    SysopRec=Record               { Record of SysList.WNL }
  255.                Name:String[20];
  256.                BBSRecord:Longint;{ Position of node record in NodeLoc.WNL }
  257.             end;
  258.  
  259.  
  260.    NodeRec=Record                { Record of NodeIdx.WNL }
  261.               NodeType:Byte;     { For mapping, see NodeLocRec.NodeType.
  262.                                    Nodes reported in this field are only of
  263.                                    the following types:
  264.                                    Zone coordinator
  265.                                    Region coordinator
  266.                                    Host
  267.                                    Boss }
  268.               Number:Integer;    { The significative part of address:
  269.                                    Zone coordinator: zone number
  270.                                    Region coordinator, Host: net number
  271.                                    Boss: node number }
  272.               BBSRecord:Longint; { Position of node record in NodeLoc.WNL }
  273.               Match:Array[1..4] of Char;
  274.                                  { The first 4 character of some of the
  275.                                    sorted sysop names. One out of about 30
  276.                                    names is taken. }
  277.               SysopRecord:Longint;
  278.                                  { Position of sysop record in SysList.WNL }
  279.            end;
  280.  
  281. ───────────────────────────────────────────────────────────────────────────
  282. Note: The author reserves for himself right to change this document without
  283. advice.
  284. ───────────────────────────────────────────────────────────────────────────
  285. End of file.
  286.