STRUCT.111

17.3 KB 806e12b9bae1d574…
(* File "STRUCT.111" *)

(* Structures document for RemoteAccess 1.10/1.11/Noncommercial. *)
(* May be freely distributed in unmodified form and used         *)
(* by third-party developers. This document is Copyright         *)
(* (C) 1991 Andrew Milner and Continental Software.              *)


type
  AskType        = (Yes, No, Ask, Only);
  VideoType      = (Auto, Short, Long);
  MsgType        = (LocalMail, NetMail, EchoMail);
  MsgKindsType   = (Both, Private, Public, ROnly);
  OrphanType     = (Ignore, Create, Kill);
  FlagType       = array[1..4] of Byte;
  Time           = String[5];
  Date           = String[8];
  LongDate       = String[9];

  NetAddress     = record
                     Zone,
                     Net,
                     Node,
                     Point          : Word;
                   end;

  LANGUAGErecord = record
                     Name           : String[20];
                     Attribute      : Byte;
                     DefName,
                     MenuPath,
                     TextPath,
                     QuesPath       : String[60];
                     FreeSpace      : Array[1..200] of Byte;
                   end;

  MSGINFOrecord  = record
                     LowMsg,
                     HighMsg,
                     TotalMsgs      : Word;
                     TotalOnBoard   : array[1..200] of Word;
                   end;

  MSGIDXrecord   = record
                     MsgNum         : Integer;
                     Board          : Byte;
                   end;

  MSGTOIDXrecord = String[35];

  MSGHDRrecord   = record
                     MsgNum         : Integer;
                     PrevReply,
                     NextReply,
                     TimesRead      : Word;
                     StartBlock     : Word;
                     NumBlocks,
                     DestNet,
                     DestNode,
                     OrigNet,
                     OrigNode       : Word;
                     DestZone,
                     OrigZone       : Byte;
                     Cost           : Word;
                     MsgAttr,
                     NetAttr,
                     Board          : Byte;
                     PostTime       : Time;
                     PostDate       : Date;
                     WhoTo,
                     WhoFrom        : MSGTOIDXrecord;
                     Subject        : String[72];
                   end;

  MSGTXTrecord   = String[255];

  USERONrecord   = record
                     Name,
                     Handle         : MSGTOIDXrecord;
                     Line           : Byte;
                     Baud           : Word;
                     City           : String[25];
                     DoNotDisturb   : Boolean;
                     Status         : Byte;
                     Attribute      : Byte;
                   end;

                   { Status byte - 0 : Browsing (in a menu)
                                   1 : Uploading/downloading
                                   2 : Reading/posting messages
                                   3 : In a door/external utility
                                   4 : Chatting with sysop
                                   5 : Answering questionnaire 
                                   6 : System ready (0=busy)

                     Attribute   - Bit 0 : Hidden }

  LASTCALLrecord = record
                     Line           : Byte;
                     Name,
                     Handle         : MSGTOIDXrecord;
                     City           : String[25];
                     Baud           : Word;
                     Times          : LongInt;
                     LogOn          : String[5];
                     LogOff         : String[5];
                     Attribute      : Byte;
                   end;

                { Attribute - Bit 0 : Hidden }

  LASTREADrecord = array[1..200] of Word;

  COMBINEDrecord = array[1..25] of Byte;

  USERSIDXrecord = record
                     NameCRC32,
                     HandleCRC32    : LongInt;
                   end;

  USERSXIrecord  = record
                     Handle         : String[35];
                     Comment        : String[80];
                     FirstDate      : Date;
                     CombinedInfo   : COMBINEDrecord;
                     BirthDate,
                     SubDate        : Date;
                     ScreenWidth,
                     MsgArea,
                     FileArea,
                     Language,
                     DateFormat     : Byte;      
                     ForwardTo      : String[35];
                     ExtraSpace     : Array[1..43] of Byte;
                   end;

  USERSrecord    = record
                     Name           : MSGTOIDXrecord;
                     Location       : String[25];
                     Password       : String[15];
                     DataPhone,
                     VoicePhone     : String[12];
                     LastTime       : Time;
                     LastDate       : Date;
                     Attribute      : Byte;

                      { Bit 0 : Deleted
                            1 : Clear screen
                            2 : More prompt
                            3 : ANSI
                            4 : No-kill
                            5 : Xfer priority
                            6 : Full screen msg editor
                            7 : Quiet mode }

                     Flags          : FlagType;
                     Credit,
                     Pending        : Word;
                     MsgsPosted,
                     LastRead,
                     Security,
                     NoCalls,
                     Uploads,
                     Downloads,
                     UploadsK,
                     DownloadsK     : Word;
                     TodayK,
                     Elapsed        : Integer;
                     ScreenLength   : Word;
                     LastPwdChange,
                     Attribute2,

                      { Bit 0 : Hot-keys
                            1 : AVT/0
                            2 : Full screen message viewer
                            3 : Hidden from userlist }


                     Group          : Byte;
                     XIrecord       : Word;
                     ExtraSpace     : array[1..3] of Byte;
                   end;

  SYSINFOrecord  = record
                     TotalCalls     : LongInt;
                     LastCaller     : MSGTOIDXrecord;
                     ExtraSpace     : array[1..128] of Byte;
                   end;

  TIMELOGrecord  = record
                     StartDate      : Date;
                     BusyPerHour    : array[0..23] of Word;
                     BusyPerDay     : array[0..6] of Word;
                   end;

  MNUrecord      = record
                     Typ            : Byte;
                     Security       : Word;
                     Flags          : FlagType;
                     Display        : String[75];
                     HotKey         : Char;
                     MiscData       : String[80];
                     Foreground,
                     Background     : Byte;
                   end;

  EVENTrecord    = record
                     Status         : Byte; { 0=Deleted 1=Enabled 2=Disabled }
                     StartTime      : Time;
                     ErrorLevel     : Byte;
                     Days           : Byte;
                     Forced         : Boolean;
                     LastTimeRun    : Date;
                   end;

  EVENTrecordArray = array[1..20] of EVENTrecord;

  MESSAGErecord  = record
                     Name           : String[40];
                     Typ            : MsgType;
                     MsgKinds       : MsgKindsType;
                     Attribute      : Byte;

                      { Bit 0 : Enable EchoInfo
                            1 : Combined access
                            2 : File attaches
                            3 : Allow aliases
                            4 : Use SoftCRs as characters
                            5 : Force handle     
                            6 : Allow deletes }

                     DaysKill,    { Kill older than 'x' days }
                     RecvKill       : Byte; { Kill recv msgs, recv for more than 'x' days }
                     CountKill      : Word;

                     ReadSecurity   : Word;
                     ReadFlags      : FlagType;

                     WriteSecurity  : Word;
                     WriteFlags     : FlagType;

                     SysopSecurity  : Word;
                     SysopFlags     : FlagType;

                     OriginLine     : String[60];
                     AkaAddress     : Byte;
                   end;

  FILESrecord    = record
                     Name           : String[30];
                     Attrib         : Byte;

                      { Bit 0 : Include in new files scan
                            1 : Include in upload dupe scan
                            2 : Permit long descriptions }

                     FilePath       : String[40];
                     FreeSpace      : Array[1..35] of Byte;
                     UploadSecurity : Word;
                     UploadFlags    : FlagType;
                     Security       : Word;
                     Flags          : FlagType;
                     ListSecurity   : Word;
                     ListFlags      : FlagType;
                   end;

  CONFIGrecord = record
    VersionID           : Word;
    CommPort            : Byte;
    Baud                : LongInt;
    InitTries           : Byte;
    InitStr,
    BusyStr             : String[70];
    InitResp,
    BusyResp,
    Connect300,
    Connect1200,
    Connect2400,
    Connect4800,
    Connect9600,
    Connect19k,
    Connect38k          : String[40];
    AnswerPhone         : Boolean;
    Ring,
    AnswerStr           : String[20];
    FlushBuffer         : Boolean;
    ModemDelay          : Integer;

    MinimumBaud,
    GraphicsBaud,
    TransferBaud        : Integer;
    SlowBaudTimeStart,
    SlowBaudTimeEnd,
    DownloadTimeStart,
    DownloadTimeEnd     : Time;

    PageStart           : Array[0..6] of Time;
    PageEnd             : Array[0..6] of Time;

{}  FreeSpace1          : Array[1..70] of Byte;
    PwdExpiry           : Word;

    MenuPath,
    TextPath,
    AttachPath,
    NodelistPath,
    MsgBasePath,
    SysPath,
    ExternalEdCmd       : String[60];

    Address             : Array[0..9] of NetAddress;
    SystemName          : String[30];

    NewSecurity         : Word;
    NewCredit           : Word;
    NewFlags            : FlagType;

    OriginLine          : String[60];
    QuoteString         : String[15];
    Sysop               : String[35];
    LogFileName         : String[60];
    FastLogon,
    AllowSysRem,
    MonoMode,
    StrictPwdChecking,
    DirectWrite,
    SnowCheck           : Boolean;
    CreditFactor        : Integer;

    UserTimeOut,
    LogonTime,
    PasswordTries,
    MaxPage,
    PageLength          : Word;
    CheckForMultiLogon,
    ExcludeSysopFromList,
    OneWordNames        : Boolean;
    CheckMail           : AskType;
    AskVoicePhone,
    AskDataPhone,
    DoFullMailCheck,
    AllowFileShells,
    FixUploadDates,
    FreezeChat          : Boolean;
    ANSI,                       { ANSI: Yes, no, or ask new users     }
    ClearScreen,                { Clear:        "                     }
    MorePrompt          : AskType;    { More:         "                     }
    UploadMsgs          : Boolean;
    KillSent            : AskType;    { Kill/Sent     "                     }

    CrashAskSec         : Word;       { Min sec# to ask 'Crash Mail ?'      }
    CrashAskFlags       : FlagType;
    CrashSec            : Word;       { Min sec# to always send crash mail. }
    CrashFlags          : FlagType;
    FAttachSec          : Word;       {        "    ask 'File Attach ?'     }
    FAttachFlags        : FlagType;

    NormFore,
    NormBack,
    StatFore,
    StatBack,
    HiBack,
    HiFore,
    WindFore,
    WindBack,
    ExitLocal,
    Exit300,
    Exit1200,
    Exit2400,
    Exit4800,
    Exit9600,
    Exit19k,
    Exit38k             : Byte;

    MultiLine           : Boolean;
    MinPwdLen           : Byte;
    MinUpSpace          : Word;
    HotKeys             : AskType;
    BorderFore,
    BorderBack,
    BarFore,
    BarBack,
    LogStyle,
    MultiTasker,
    PwdBoard            : Byte;
    BufferSize          : Word;
    FKeys               : Array[1..10] of String[60];

    WhyPage             : Boolean;
    LeaveMsg            : Byte;
    ShowMissingFiles    : Boolean;
{}  FreeSpace2          : Array[1..11] of Byte;
    AllowNetmailReplies : Boolean;
    LogonPrompt         : String[40];
    CheckNewFiles       : AskType;
    ReplyHeader         : String[60];
    BlankSecs           : byte;
    ProtocolAttrib      : Array[1..6] of Byte;
    ErrorFreeString     : String[15];
    DefaultCombined     : COMBINEDrecord;
    RenumThreshold      : Word;
    LeftBracket,
    RightBracket        : Char;
    AskForHandle        : Boolean;
    AskForBirthDate     : Boolean;

    GroupMailSec        : Word;

    ConfirmMsgDeletes   : Boolean;
    FreeSpace3          : Array[1..163] of Byte;
    NewUserGroup        : Byte;
    AVATAR              : AskType;
    BadPwdArea          : Byte;
    Location            : String[40];
    DoAfterAction       : Byte; {0 = wait for CR, > 0 = wait for x seconds}
    FileLine            : String[40];
    CRfore,
    CRback              : Byte;
    LangHdr             : String[40];
    SendBreak           : Boolean;
    ListPath            : String[60];
    FullMsgView         : AskType;
    EMSI_Enable         : AskType;
    EMSI_NewUser        : Boolean;

    EchoChar            : String[1];
    Connect7200,
    Connect12000,
    Connect14400        : String[40];
    Exit7200,
    Exit12000,
    Exit14400           : Byte;
    ChatCommand         : String[60];
    ExtEd               : AskType;
    NewuserLanguage     : Byte;
    LanguagePrompt      : String[40];
    VideoMode           : VideoType;
    AutoDetectANSI      : Boolean;
    OffHook             : Boolean;
    NewUserDateFormat   : Byte;
    KeyboardPwd         : String[15];
    CapLocation         : Boolean;
    NewuserSub          : Byte;
    PrinterName         : String[4];
    HilitePromptFore,
    HiLitePromptBack    : Byte;
    InitStr2            : String[70];
    AltJSwap            : Boolean;
    SemPath             : String[60];
    AutoChatCapture     : Boolean;

    FutureExpansion : Array[1..97] of Byte;
  end;

  EXITINFOrecord = record
                     Baud             : Word;
                     SysInfo          : SYSINFOrecord;
                     TimeLogInfo      : TIMELOGrecord;
                     UserInfo         : USERSrecord;
                     EventInfo        : EVENTrecord;
                     NetMailEntered,
                     EchoMailEntered  : Boolean;
                     LoginTime        : Time;
                     LoginDate        : Date;
                     TimeLimit        : Word;
                     LoginSec,
                     Credit           : LongInt;
                     UserRecord       : Integer;
                     ReadThru,
                     NumberPages,
                     DownloadLimit    : Word;
                     TimeOfCreation   : Time;
                     LogonPassword    : String[15];
                     WantChat         : Boolean;

                     DeductedTime     : Integer;
                     MenuStack        : Array[1..50] of String[8];
                     MenuStackPointer : Byte;
                     UserXIinfo       : USERSXIrecord;
                     ErrorFreeConnect,
                     SysopNext        : Boolean;

                     EMSI_Session     : Boolean;        { These fields hold  }
                     EMSI_Crtdef,                       { data related to an }
                     EMSI_Protocols,                    { EMSI session       }
                     EMSI_Capabilities,
                     EMSI_Requests,
                     EMSI_Software    : String[40];
                     Hold_Attr1,
                     Hold_Attr2,
                     Hold_Len         : Byte;

                     ExtraSpace       : Array[1..100] of Byte;
                 end;

  PROTOCOLrecord = record
                     Name           : String[15];
                     ActiveKey      : Char;
                     OpusTypeCtlFile,
                     BatchAvailable : Boolean;
                     Attribute      : Byte; { 0=Disabled, 1=Enabled }
                     LogFileName,
                     CtlFileName,
                     DnCmdString,
                     DnCtlString,
                     UpCmdString,
                     UpCtlString    : String[80];
                     UpLogKeyword,
                     DnLogKeyword   : String[20];
                     XferDescWordNum,
                     XferNameWordNum : Byte;
                   end;

(* End of file "STRUCT.111" *)