home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR4 / STRUCTS1.ZIP / RECORDS.PAS
Pascal/Delphi Source File  |  1993-12-25  |  41KB  |  870 lines

  1. const
  2.   ver='12-25 Exp';
  3.   maxprotocols=120;
  4.   maxevents=10;
  5.   maxarcs=8;
  6.   maxbatchfiles=50;
  7.   maxmenucmds=100;
  8.   maxresultcodes=13;
  9.  
  10. TYPE
  11.   astr=string[160];
  12.   str8=string[8];
  13.  
  14.   acstring=string[20];            { Access Condition String }
  15.   acrq='@'..'Z';                  { Access Restriction flags }
  16.  
  17.   uflags =
  18.    (rlogon,                       { L - Limited to one call a day }
  19.     rchat,                        { C - No SysOp paging }
  20.     rvalidate,                    { V - Posts are unvalidated }
  21.     ruserlist,                    { U - Can't list users }
  22.     ramsg,                        { A - Can't post an auto message }
  23.     rpostan,                      { * - Can't post anonymously }
  24.     rpost,                        { P - Can't post }
  25.     remail,                       { E - Can't send email }
  26.     rvoting,                      { K - Can't use voting booth }
  27.     rmsg,                         { M - Force email deletion }
  28.     vt100,                        { Supports VT100 }
  29.     hotkey,                       { hotkey input mode }
  30.     avatar,                       { Supports Avatar }
  31.     pause,                        { screen pausing }
  32.     novice,                       { user requires novice help }
  33.     ansi,                         { Supports ANSI }
  34.     color,                        { Supports color }
  35.     alert,                        { Alert SysOp upon login }
  36.     smw,                          { Short message(s) waiting }
  37.     nomail,                       { Mailbox is closed }
  38.     fnodlratio,                   { 1 - No UL/DL ratio }
  39.     fnopostratio,                 { 2 - No post/call ratio }
  40.     fnocredits,                   { 3 - No credits checking }
  41.     fnodeletion);                 { 4 - Protected from deletion }
  42.  
  43.   suflags =
  44.     (lockedout,                   { if locked out }
  45.     deleted,                      { if deleted }
  46.     trapactivity,                 { if trapping users activity }
  47.     trapseparate,                 { if trap to seperate TRAP file }
  48.     chatauto,                     { if auto chat trapping }
  49.     chatseparate,                 { if separate chat file to trap to }
  50.     slogseparate,                 { if separate SysOp log }
  51.     clsmsg,                       { if clear-screens }
  52.     RIP,                          { if RIP graphics can be used }
  53.     fseditor,                     { if Full Screen Editor }
  54.     AutoDetect                    { Use auto-detected emulation }
  55.   );
  56.  
  57.   anontyp =
  58.    (atno,                         { Anonymous posts not allowed }
  59.     atyes,                        { Anonymous posts are allowed }
  60.     atforced,                     { Force anonymous }
  61.     atdearabby,                   { "Dear Abby" base }
  62.     atanyname);                   { Post under any name }
  63.  
  64.   netattr=
  65.     (Private,
  66.      Crash,
  67.      Recd,
  68.      NSent,
  69.      FileAttach,
  70.      Intransit,
  71.      Orphan,
  72.      KillSent,
  73.      Local,
  74.      Hold,
  75.      Unused,
  76.      FileRequest,
  77.      ReturnReceiptRequest,
  78.      IsReturnReceipt,
  79.      AuditRequest,
  80.      FileUpdateRequest);
  81.  
  82.   NetAttribs = set of netattr;
  83.  
  84.   colors   = array[FALSE..TRUE,0..9] of byte; { Color tables }
  85.   secrange = array[0..255] of integer;        { Access tables }
  86.  
  87.   mzscanr  = set of 1..250;              { Which message bases to scan }
  88.   fzscanr  = set of 1..250;             { Which file bases to scan }
  89.   mhireadr = array[1..250] of longint;   { Lastread pointers }
  90.  
  91.   useridxrec=                         { USERS.IDX : Sorted names listing }
  92.   record
  93.     Name:string[36];                  { CRC-32 of the user's name }
  94.     Number,                           { user number          }
  95.     Left,
  96.     Right:integer;
  97.     RealName,                         { User's real name?    }
  98.     Deleted:boolean;                  { deleted or not       }
  99.   end;
  100.  
  101.   userrec=                            { USERS.DAT : User records }
  102.   record
  103.     name:string[36];                  { system name      }
  104.     realname:string[36];              { real name        }
  105.     pw:string[20];                    { password         }
  106.     ph:string[12];                    { phone #          }
  107.     bday:string[8];                   { birthdate        }
  108.     firston:string[8];                { first on date    }
  109.     laston:string[8];                 { last on date     }
  110.     street:string[30];                { street address   }
  111.     citystate:string[30];             { city, state      }
  112.     zipcode:string[10];               { zipcode          }
  113.     usrdefstr:array[1..3] of string[35]; { type of computer }
  114.                                       { occupation       }
  115.                                       { BBS reference    }
  116.     note:string[35];                  { SysOp note       }
  117.     userstartmenu:string[8];          { menu to start at }
  118.     lockedfile:string[8];             { print lockout msg}
  119.     flags:set of uflags;              { flags            }
  120.     sflags:set of suflags;            { status flags     }
  121.     ar:set of acrq;                   { AR flags         }
  122.     vote:array[1..25] of byte;        { voting data      }
  123.  
  124.     sex:char;                         { gender           }
  125.     ttimeon,                          { total time on    }
  126.     uk,                               { UL k             }
  127.     dk:longint;                       { DL k             }
  128.     tltoday,                          { # min left today }
  129.     forusr,                           { forward mail to  }
  130.     junkfp:integer;               { # of file points }
  131.  
  132.     uploads,downloads,                { # of ULs/# of DLs}
  133.     loggedon,                         { # times on       }
  134.     msgpost,                          { # message posts  }
  135.     emailsent,                        { # email sent     }
  136.     feedback,                         { # feedback sent  }
  137.     timebank,                         { # mins in bank   }
  138.     timebankadd,                      { # added today    }
  139.     dlktoday,                         { # kbytes dl today}
  140.     dltoday:word;                     { # files dl today }
  141.  
  142.     waiting,                          { mail waiting     }
  143.     linelen,                          { line length      }
  144.     pagelen,                          { page length      }
  145.     ontoday,                          { # times on today }
  146.     illegal,                          { # illegal logons }
  147.     barf,
  148.     lastmbase,                        { # last msg base  }
  149.     lastfbase,                        { # last file base }
  150.     sl,dsl:byte;                      { SL / DSL         }
  151.  
  152.     mhiread:mhireadr;                 { Message last read date ptrs}
  153.     mzscan:mzscanr;                   { Which message bases to scan}
  154.     fzscan:fzscanr;                   { Which file bases to scan}
  155.  
  156.     cols:colors;                      { user colors }
  157.  
  158.     garbage:byte;
  159.     timebankwith:word;                { amount of time withdrawn today}
  160.     passwordchanged:word;             { last day password changed }
  161.     defarctype:byte;                  { default QWK archive type }
  162.     lastconf:char;                    { last conference they were in }
  163.     lastqwk:longint;                  { date/time of last qwk packet }
  164.     getownqwk,                        { add own messages to qwk packet? }
  165.     scanfilesqwk,                     { scan file bases for qwk packets? }
  166.     privateqwk:boolean;               { get private mail in qwk packets? }
  167.  
  168.     credit,                           { Amount of credit a user has }
  169.     debit:longint;                    { Amount of debit a user has }
  170.     expiration:longint;               { Expiration date of this user }
  171.     expireto:char;                    { Subscription level to expire to }
  172.     ColorScheme:byte;                 { User's color scheme # }
  173.     TeleConfEcho,                     { echo Teleconf lines? }
  174.     TeleConfInt:boolean;              { interrupt during typing? }
  175.   end;
  176.  
  177.   msgstatusr=
  178.     (mdeleted,
  179.      sent,
  180.      unvalidated,
  181.      permanent,
  182.      allowmci,
  183.      netmail,
  184.      prvt,
  185.      forwarded);
  186.  
  187.   mhireadrec=
  188.   record
  189.     NewScan:boolean;           { New scan this base? }
  190.     LastRead:longint;          { Last message date read }
  191.   end;
  192.  
  193.   fromtoinfo=                  { from/to information for mheaderrec }
  194.   record
  195.     anon:byte;
  196.     usernum:word;              { user number   }
  197.     as:string[36];             { posted as     }
  198.     real:string[36];           { real name     }
  199.     name:string[36];           { system name   }
  200.     zone,
  201.     net,
  202.     node,
  203.     point:word;
  204.   end;
  205.  
  206.   mheaderrec=
  207.   record
  208.      from,mto:fromtoinfo;            { message from/to info    }
  209.      pointer:longint;                { starting record of text }
  210.      textsize:word;                  { size of text            }
  211.      replyto:word;                   { ORIGINAL + REPLYTO = CURRENT }
  212.      date:longint;                   { date/time packed string }
  213.      dayofweek:byte;                 { message day of week     }
  214.      status:set of msgstatusr;       { message status flags    }
  215.      replies:word;                   { times replied to        }
  216.      subject:string[40];             { subject of message      }
  217.      origindate:string[19];          { date of echo/group msgs }
  218.      fileattached:byte;              { 0=No, 1=Yes&Del, 2=Yes&Save }
  219.      netattribute:NetAttribs;        { Netmail attributes }
  220.      res:array[1..2] of byte;        { reserved }
  221.   end;
  222.  
  223.  
  224.   historyrec=                     { HISTORY.DAT : Summary logs }
  225.   record
  226.     date:string[8];
  227.     userbaud:array[0..4] of word;
  228.     active,callers,newusers,posts,email,feedback,
  229.     errors,uploads,downloads:word;
  230.     uk,dk:longint;
  231.   end;
  232.  
  233.   filearcinforec=                 { Archive configuration records }
  234.   record
  235.     active:boolean;               { active or not  }
  236.     ext:string[3];                { file extension }
  237.     listline,                     { /x for internal;
  238.                                      x: 1=ZIP, 2=ARC/PAK, 3=ZOO, 4=LZH }
  239.     arcline,                      { compression cmdline    }
  240.     unarcline,                    { de-compression cmdline }
  241.     testline,                     { integrity test cmdline }
  242.     cmtline:string[25];           { comment cmdline        }
  243.     succlevel:integer;            { success ERRORLEVEL, -1=ignore results }
  244.   end;
  245.  
  246.   fstringrec=                     { STRING.DAT }
  247.   record
  248.     anonymous:string[80];             { "[Anonymous]" string }
  249.     note:array[1..2] of string[80];   { Logon notes (L #1-2) }
  250.     lprompt:string[80];               { Logon prompt (L #3) }
  251.     echoc:char;                       { Echo char for PWs }
  252.     sysopin,                          { "SysOp In" (inside SysOp hours)}
  253.     sysopout,                         { "SysOp Out" }
  254.     engage,                           { "Engage Chat" }
  255.     endchat,                          { "End Chat" }
  256.     wait,                             { "SysOp Working" }
  257.     pause,                            { "Pause" }
  258.     entermsg1,                        { "Enter Message" line #1 }
  259.     entermsg2,                        { "Enter Message" line #2 }
  260.     newscan1,                         { "NewScan begin" }
  261.     newscan2,                         { "NewScan done" }
  262.     scanmessage,                      { Message scanning prompt }
  263.     automsgt:string[80];              { Auto-Message title }
  264.     autom:char;                       { Auto-Message border characters }
  265.  
  266.     shelldos1,                        { " >> SysOp shelling to DOS ..." }
  267.     shelldos2,                        { " ... thank you for waiting." }
  268.     chatcall1,                        { "Paging SysOp, please wait..." }
  269.     chatcall2,                        { ">>><*><<<" }
  270.     contscanq,                        { "Continue, Read msgs, Quit? " }
  271.     namenotfound,                     { "Name NOT found in user list." }
  272.     bulletinline,                     { Bulletin line }
  273.     protocolp,                        { "Protocol (?=List) :" }
  274.  
  275.     listline,                         { "List files - P to pause" }
  276.     newline,                          { "Search for new files -" }
  277.     searchline,                       { "Search all dirs for file mask" }
  278.     findline1,                        { "Search for descriptions... " }
  279.     findline2,                        { "Enter the string to search for.." }
  280.     downloadline,                     { "Download - " }
  281.     uploadline,                       { "Upload - " }
  282.     viewline,                         { "View interior files - " }
  283.     nofilepts,                        { "Insufficient file points." }
  284.     unbalance,                        { "Your UL/DL ratio is unbalanced" }
  285.  
  286.     pninfo,                           { "P to Pause, N for next dir" }
  287.     gfnline1,                         { "[Enter]=All files" }
  288.     gfnline2,                         { "File mask: " }
  289.     batchadd,                         { "File added to batch queue." }
  290.     addbatch,                         { "Batch download flagging - " }
  291.     readq,                            { "Begin reading at [1-54] (Q=Quit): " }
  292.     scanq,                            { "Begin scanning at [1-54] (Q=Quit): " }
  293.     default,                          { "Press [Enter] to use defaults" }
  294.     newscanall,                       { ")[ Newscan All ](" }
  295.     newscandone,                      { ")[ Newscan Done ](" }
  296.     chatreason:string[80];            { 'Give me a good reason to chat' }
  297.     quote_line:array[1..2] of string[80]; { Quoting so and so to so and so }
  298.     userdefques:array[1..3] of string[80];{ user defined question 1...3}
  299.     userdefed:array[1..3] of string[10];  { user def'd q, user editor strings}
  300.     continue:string[80];              { Continue? }
  301.   end;
  302.  
  303.   modemflags=         { MODEM.DAT status flags }
  304.   (
  305.     lockedport,       { COM port locked at constant rate }
  306.     xonxoff,          { XON/XOFF (software) flow control }
  307.     ctsrts,           { CTS/RTS (hardware) flow control }
  308.     DigiBoard         { This line uses a Digiboard }
  309.   );
  310.  
  311. linerec=
  312.   record
  313.     waitbaud:word;                    { initialization baud }
  314.     comport:byte;                     { COM port number }
  315.     init:string[50];                  { init string }
  316.     answer:string[40];                { answer string }
  317.     hangup:string[40];                { hangup string }
  318.     offhook:string[40];               { phone off-hook string }
  319.     nocallinittime:word;              { reinit modem after x mins of inactivity }
  320.     lockedportbaud:word;              { locked baud rate }
  321.     mflags:set of modemflags;         { status flags }
  322.     nocarrier:byte;                   { NO CARRIER result code }
  323.     resultcode:array[1..2,0..14]      { CONNECT result codes }
  324.                  of byte;             { 300,1200,2400,4800,7200,9600,12000,
  325.                                         14400,16800,19200,21600,24000,26600,28800,
  326.                                         one extra}
  327.     logonacs:acstring;                { acs string to logon this node }
  328.     doorpath:string[40];              { path to write door info files to }
  329.     TeleConfNormal,
  330.     TeleConfAnon,                     { You figure it out! }
  331.     TeleConfGlobal,
  332.     TeleConfPrivate:string[60];
  333.     IRQ,
  334.     Address:string[10];               { used only for functional MCI codes
  335.                                         %C = Comport address
  336.                                         %E = IRQ
  337.                                       }
  338.   end;
  339.  
  340.   validationrec = record
  341.     description:string[25];           { description }
  342.     newsl,                            { new SL }
  343.     newdsl:byte;                      { new DSL }
  344.     newar:set of acrq;                { new AR }
  345.     newac:set of uflags;              { new AC }
  346.     newfp:integer;                    { file points to add }
  347.     newcredit:longint;                { new credit (added) }
  348.     expiration:word;                  { days until expiration }
  349.     expireto:char;                    { validation level to expire to }
  350.     softar:boolean;                   { TRUE=AR added to current, else replaces }
  351.     softac:boolean;                   { TRUE=AC    "   "   "       "      "  }
  352.     newmenu:string[8];                { User start out menu }
  353.   end;
  354.  
  355. generalrec=
  356.   record
  357.     datapath:string[40];              { DATA path }
  358.     miscpath:string[40];              { MISC path }
  359.     menupath:string[40];              { MENU path }
  360.     logspath:string[40];              { LOGS path }
  361.     msgpath:string[40];               { MSGS path }
  362.     nodepath:string[40];              { NODE list path }
  363.     temppath:string[40];              { TEMP path }
  364.     protpath:string[40];              { PROT path }
  365.     arcspath:string[40];              { ARCS path }
  366.  
  367.     bbsname:string[40];               { BBS name }
  368.     bbsphone:string[12];              { BBS phone number }
  369.     sysopname:string[30];             { SysOp's name }
  370.  
  371.     lowtime,                          { SysOp begin minute (in minutes) }
  372.     hitime,                           { SysOp end time }
  373.     dllowtime,                        { normal downloading hours begin.. }
  374.     dlhitime,                         { ..and end }
  375.     minbaudlowtime,                   { minimum baud calling hours begin.. }
  376.     minbaudhitime,                    { ..and end }
  377.     minbauddllowtime,                 { minimum baud downloading hours begin.. }
  378.     minbauddlhitime:integer;          { ..and end }
  379.  
  380.     minimumbaud,                      { minimum baud rate to logon }
  381.     minimumdlbaud:longint;            { minimum baud rate to download }
  382.  
  383.     shuttlelog,                       { Use Shuttle Logon? }
  384.     closedsystem,                     { Allow new users? }
  385.     swapshell:boolean;                { Swap on shell? }
  386.  
  387.     sysoppw,                          { SysOp password }
  388.     newuserpw,                        { newuser password }
  389.     minbaudoverride,                  { override minimum baud rate }
  390.     qwknetworkacs:acstring;           { QWK network REP acs }
  391.  
  392.     crapola2:string[8];               { }
  393.  
  394.     sop,                              { SysOp }
  395.     csop,                             { Co-SysOp }
  396.     msop,                             { Message SysOp }
  397.     fsop,                             { File SysOp }
  398.     spw,                              { SysOp PW at logon }
  399.     seepw,                            { see SysOp PWs remotely  }
  400.     normpubpost,                      { make normal public posts }
  401.     normprivpost,                     { send normal e-mail }
  402.     anonpubread,                      { see who posted public anon }
  403.     anonprivread,                     { see who sent anon e-mail }
  404.     anonpubpost,                      { make anon posts }
  405.     anonprivpost,                     { send anon e-mail }
  406.     seeunval,                         { see unvalidated files }
  407.     dlunval,                          { DL unvalidated files }
  408.     nodlratio,                        { no UL/DL ratio }
  409.     nopostratio,                      { no post/call ratio }
  410.     nofilepts,                        { no file points checking }
  411.     ulvalreq,                         { uploads require validation }
  412.     TeleConfMCI,                      { ACS access for MCI codes while teleconfin' }
  413.     overridechat:acstring;            { override chat hours }
  414.  
  415.     maxprivpost,                      { max email can send per call }
  416.     maxfback,                         { max feedback per call }
  417.     maxpubpost,                       { max posts per call }
  418.     maxchat,                          { max sysop pages per call }
  419.     maxwaiting,                       { max mail waiting }
  420.     csmaxwaiting,                     { max mail waiting for Co-SysOp + }
  421.     junk1,                            { ------------------------------- }
  422.     junk2,                            { ------------------------------- }
  423.     maxlogontries,                    { tries allowed for PW's at logon }
  424.     sysopcolor,                       { SysOp color in chat mode }
  425.     usercolor:byte;                   { user color in chat mode }
  426.     minspaceforpost,                  { minimum drive space left to post }
  427.     minspaceforupload:integer;        { minimum drive space left to upload }
  428.  
  429.     backsysoplogs,                    { days to keep SYSOP##.LOG }
  430.     eventwarningtime,                 { minutes before event to warn user }
  431.     wfcblanktime:byte;                { minutes before blanking WFC menu }
  432.  
  433.     allowalias,                       { allow handles? }
  434.     phonepw,                          { phone number password in logon? }
  435.     localsec,                         { use local security? }
  436.     globaltrap,                       { trap everyone's activity? }
  437.     autochatopen,                     { automatically open chat buffer? }
  438.     autominlogon,                     { Auto-Message at logon? }
  439.     bullinlogon,                      { bulletins at logon? }
  440.     lcallinlogon,                     { "Last Few Callers" list at logon? }
  441.     yourinfoinlogon,                  { "Your Info" at logon? }
  442.     offhooklocallogon,                { phone off-hook for local logons? }
  443.     forcevoting,                      { manditory voting? }
  444.     compressbases,                    { "compress" file/msg base numbers? }
  445.     searchdup:boolean;                { search for dupes files when UL? }
  446.     slogtype:byte;                    { log type: File/Printer/Both }
  447.     stripclog:boolean;                { strip colors from SysOp log? }
  448.     newapp,                           { send new user application to # }
  449.     timeoutbell,                      { minutes before timeout beep }
  450.     timeout:integer;                  { minutes before timeout }
  451.     useems:boolean;                   { use EMS for overlay }
  452.     usebios:boolean;                  { use BIOS for video output }
  453.     cgasnow:boolean;                  { snow supression on }
  454.     alertbeep:integer;                { time between alert beeps }
  455.  
  456.     filearcinfo:
  457.         array[1..maxarcs] of filearcinforec;           { archive specs }
  458.     filearccomment:
  459.         array[1..3] of string[40];    { BBS comment files for archives }
  460.     uldlratio,                        { use UL/DL ratios? }
  461.     fileptratio:boolean;              { use auto file-pt compensation? }
  462.     fileptcomp,                       { file point compensation ratio }
  463.     fileptcompbasesize,               { file point base compensation size }
  464.     ulrefund,                         { percent of time to refund on ULs }
  465.     tosysopdir:byte;                  { SysOp file base }
  466.     validateallfiles:boolean;         { validate files automatically? }
  467.     maxintemp,                        { max K allowed in TEMP }
  468.     minresume:integer;                { min K to allow resume-later }
  469.  
  470.     filediz:boolean;                  { Search/Import file_id.diz }
  471.  
  472.     maxqwktotal,                      { max msgs in a packet, period }
  473.     maxqwkbase:word;                  { max msgs in a base }
  474.  
  475.     CreditMinute,                     { Credits per minute }
  476.     CreditPost,                       { Credits per post }
  477.     CreditEmail:integer;              { Credits per Email sent }
  478.  
  479.     sysoppword:boolean;               { check for sysop password? }
  480.  
  481.     CreditFreeTime:integer;           { Amount of "Free" time given to user at logon }
  482.  
  483.     RES98:array[1..7] of byte;
  484.  
  485.     allstartmenu:string[8];           { logon menu to start users on }
  486.     bulletprefix:string[8];           { default bulletins filename }
  487.  
  488.     timeallow,                        { time allowance }
  489.     callallow,                        { call allowance }
  490.     dlratio,                          { # ULs/# DLs ratios }
  491.     dlkratio,                         { DLk/ULk ratios }
  492.     postratio,                        { posts per call ratio }
  493.     dloneday,                         { Max number of dload files in one day}
  494.     dlkoneday:secrange;               { Max k downloaded in one day}
  495.  
  496.     lastdate:string[8];               { last system date }
  497.     curwindow:byte;                   { type of SysOp window in use }
  498.     istopwindow:boolean;              { is window at top of screen? }
  499.     callernum:longint;                { system caller number }
  500.     numusers:integer;                 { number of users }
  501.  
  502.     multpath:string[40];              { MULT path }
  503.  
  504.     junkola:array[1..3] of byte;     { -= NOT USED =- }
  505.  
  506.     recompress:boolean;               { recompress like archives? }
  507.  
  508.     rewardsystem:boolean;             { use file rewarding system? }
  509.  
  510.     passwordchange:word;              { change password at least every x days }
  511.  
  512.     netmailpath:string[40];           { path to netmail }
  513.     netmailacs:acstring;              { do they have access to netmail? }
  514.  
  515.     rewardratio:integer;              { % of file points to reward back }
  516.  
  517.     birthdatecheck:byte;              { check user's birthdate every xx logons }
  518.  
  519.     Invisible:acstring;                 { Invisible mode? }
  520.  
  521.     fileattachpath:string[40];        { directory for file attaches }
  522.  
  523.     fileattachacs:acstring;           { acs to attach files to messages }
  524.     changevote:acstring;              { acs to change their vote }
  525.  
  526.     trapgroup:boolean;                { record group chats? }
  527.  
  528.     qwktimeignore:boolean;            { ignore time remaining for qwk download? }
  529.  
  530.     networkmode:boolean;              { Network mode ? }
  531.  
  532.     SwapTo:byte;                      { Swap where?    }
  533.  
  534.     res:array[1..23] of byte;         { bleah }
  535.  
  536.     windowon:boolean;                 { is the sysop window on? }
  537.     regnumber:longint;                { registration number }
  538.  
  539.     chatcall:boolean;                 { Whether system keeps beeping after chat}
  540.  
  541.     packetname:string[8];             { QWK packet name }
  542.     qwkwelcome:string[50];            { QWK welcome file name }
  543.     qwknews:string[50];               { QWK news file name }
  544.     qwkgoodbye:string[50];            { QWK goodbye file name }
  545.     qwklocalpath:string[40];          { QWK path for local usage }
  546.  
  547.     dailylimits:boolean;              { Daily file limits on/off }
  548.     multinode:boolean;                { enable multinode support }
  549.     daysonline:word;                  { days online }
  550.     totalcalls:longint;               { incase different from callernum }
  551.     totalusage:longint;               { total usage in minutes }
  552.     totalposts:longint;               { total number of posts }
  553.     totaldloads:longint;              { total number of dloads }
  554.     totaluloads:longint;              { total number of uloads }
  555.  
  556.     percall:boolean;                  { time limits are per call or per day?}
  557.     testuploads:boolean;              { perform integrity tests on uploads? }
  558.     crap5:array[1..4] of string[160]; { sysop macros }
  559.  
  560.     validation:array['A'..'Z'] of
  561.                validationrec;         { Validation records A - Z }
  562.  
  563.     macro:array[0..9] of string[100]; { sysop macros }
  564.   end;
  565.  
  566.   smr=                            { SHORTMSG.DAT : One-line messages }
  567.   record
  568.     msg:astr;
  569.     destin:integer;
  570.   end;
  571.  
  572.   votingr=                        { VOTING.DAT : Voting records }
  573.   record
  574.     description:string[65];       { voting question }
  575.     acs:acstring;                 { acs required to vote on this }
  576.     choicenumber:word;            { number of choices }
  577.     numvoted:word;                { number of votes on it }
  578.     madeby:string[35];            { who created it }
  579.     addchoicesacs:acstring;       { acs required to add choices }
  580.     choices:array[1..25] of
  581.     record
  582.       description:string[65];     { answer description }
  583.       description2:string[65];    { answer description #2 }
  584.       numvoted:integer;           { # user's who picked this answer }
  585.     end;
  586.   end;
  587.  
  588.   mbflags=
  589.    (mbunhidden,                   { whether *VISIBLE* to users w/o access }
  590.     mbrealname,                   { whether real names are forced }
  591.     mbcrap,                       { }
  592.     mbinternet,                   { if internet message base }
  593.     mbfilter,                     { whether to filter ANSI/8-bit ASCII }
  594.     mbskludge,                    { strip IFNA kludge lines }
  595.     mbsseenby,                    { strip SEEN-BY lines }
  596.     mbsorigin,                    { strip origin lines }
  597.     mbprivate,                    { allow private messages }
  598.     mbforceread,                  { force the reading of this base }
  599.     mbScanOut,                    { Needs to be scanned out by renemail }
  600.     mbaddtear,                    { add tear/origin lines }
  601.     mbtopstar);                   { whether Top Star for GroupMail base }
  602.  
  603.   boardrec=                       { MBASES.DAT : Message base records }
  604.   record
  605.     name:string[40];              { message base description }
  606.     filename:string[8];           { HDR/DAT data filename }
  607.     msgpath:string[40];           { messages pathname   }
  608.     acs,                          { access requirement }
  609.     postacs,                      { post access requirement }
  610.     mciacs,                       { MCI usage requirement }
  611.     sysopacs:acstring;            { Message base sysop requirement }
  612.     maxmsgs:word;                 { max message count }
  613.     anonymous:anontyp;            { anonymous type }
  614.     password:string[20];          { base password }
  615.     mbstat:set of mbflags;        { message base status vars }
  616.     mbtype:integer;               { base type (0=Local,1=Echo,2=Group) }
  617.     origin:string[50];            { origin line }
  618.     text_color,                   { color of standard text }
  619.     quote_color,                  { color of quoted text }
  620.     tear_color,                   { color of tear line }
  621.     origin_color:byte;            { color of origin line }
  622.     aka:byte;                     { alternate address }
  623.     QWKIndex:word;                { QWK indexing number }
  624.     res:array[1..11] of byte;      { RESERVED }
  625.   end;
  626.  
  627.   fbflags=
  628.    (fbnoratio,                    { if <No Ratio> active }
  629.     fbunhidden,                   { whether *VISIBLE* to users w/o access }
  630.     fbdirdlpath,                  { if *.DIR file stored in DLPATH }
  631.     fbshowname,                   { show uploaders in listings }
  632.     fbusegifspecs,                { whether to use GifSpecs }
  633.     fbcdrom,                      { base is read only, no sorting or ul scanning }
  634.     fbshowdate);                  { show date uploaded in listings }
  635.  
  636.   ulrec=                          { FBASES.DAT  : File base records }
  637.   record
  638.     name:string[40];              { area description  }
  639.     filename:string[12];          { filename + ".DIR" }
  640.     dlpath,                       { download path     }
  641.     ulpath:string[40];            { upload path       }
  642.     maxfiles:word;                { max files allowed }
  643.     password:string[20];          { password required }
  644.     arctype,                      { wanted archive type (1..max,0=inactive) }
  645.     cmttype:byte;                 { wanted comment type (1..3,0=inactive) }
  646.     res1:integer;                 { not used }
  647.     fbstat:set of fbflags;        { file base status vars }
  648.     acs,                          { access requirements }
  649.     ulacs,                        { upload requirements }
  650.     dlacs:acstring;               { download requirements }
  651.     res:array[1..10] of byte;     { RESERVED }
  652.   end;
  653.  
  654.   filstat=
  655.    (notval,                       { if file is NOT validated }
  656.     isrequest,                    { if file is REQUEST }
  657.     resumelater,                  { if file is RESUME-LATER }
  658.     hatched);                     { has file been hatched? }
  659.  
  660.   ulfrec=                         { *.DIR : File records }
  661.   record
  662.     filename:string[12];          { Filename }
  663.     description:string[60];       { File description }
  664.     credits:integer;              { File points }
  665.     downloaded:word;              { Number DLs }
  666.     sizemod:byte;                 { # chars over last 128 byte block }
  667.     blocks:word;                  { # 128 byte blks }
  668.     owner:word;                   { ULer of file }
  669.     stowner:string[36];           { ULer's name }
  670.     date:string[8];               { Date ULed }
  671.     daten:word;                   { Numeric date ULed }
  672.     vpointer:longint;             { Pointer to verbose descr, -1 if none }
  673.     filestat:set of filstat;      { File status }
  674.     res:array[1..10] of byte;     { RESERVED }
  675.   end;
  676.  
  677.   verbrec=                        { EXTENDED.DAT: Extendeddescriptions }
  678.   record
  679.     descr:array[1..4] of string[50];
  680.   end;
  681.  
  682.   lcallers=                       { LASTON.DAT : Last few callers records }
  683.   record
  684.     callernum:longint;            { system caller number }
  685.     name:string[36];              { user name of caller }
  686.     number:word;                  { user number of caller }
  687.     citystate:string[30];         { city/state of caller }
  688.     baud:string[5];               { baud of caller }
  689.     timeon:string[8];             { time logged on }
  690.     daynum:word;                  { day num logged on }
  691.     wasnew:boolean;               { was it a new user? }
  692.   end;
  693.  
  694.   eventrec=                       { EVENTS.DAT : Event records }
  695.   record
  696.     active:boolean;               { whether active }
  697.     description:string[30];       { event description }
  698.     etype:char;                   { ACS,Chat,Dos,External,Pack Msgs,Sort Files }
  699.     execdata:string[20];          { errorlevel if "E", commandline if "D" }
  700.     softevent,                    { event runs whenever "convenient" }
  701.     missed,                       { run even even if missed }
  702.     monthly,                      { monthly event? }
  703.     busyduring:boolean;           { busy phone DURING event? }
  704.     exectime,                     { time of execution }
  705.     durationorlastday:integer;    { length of time event takes }
  706.     offhooktime,                  { off-hook time before; 0 if none }
  707.     Enode,                        { node number to execute on (0 = all) }
  708.     execdays:byte;                { bitwise execution days or day of month if monthly }
  709.   end;
  710.  
  711.   mnuflags=
  712.    (clrscrbefore,                 { C: clear screen before menu display }
  713.     dontcenter,                   { D: don't center the menu titles! }
  714.     nomenuprompt,                 { N: no menu prompt whatsoever? }
  715.     forcepause,                   { P: force a pause before menu display? }
  716.     autotime,                     { T: is time displayed automatically? }
  717.     forceline,                    { F: Force full line input }
  718.     NoGenericAnsi,                { 1: DO NOT generate generic prompt if ANSI }
  719.     NoGenericAvatar,              { 2: DO NOT generate generic prompt if AVT  }
  720.     NoGenericRIP,                 { 3: DO NOT generate generic prompt if RIP  }
  721.     NoGlobalDisplayed);           { 4: DO NOT display the global commands!    }
  722.  
  723.   menurec=                        { *.MNU : Menu records }
  724.   record
  725.     menuname:array[1..3] of string[100]; { menu name }
  726.     directive,                           { help file displayed }
  727.     longmenu:string[12];                 { displayed in place of long menu }
  728.     menuprompt:string[120];              { menu prompt }
  729.     acs:acstring;                        { access requirements }
  730.     password:string[15];                 { password required }
  731.     fallback:string[8];                  { fallback menu }
  732.     forcehelplevel:byte;                 { forced help level for menu }
  733.     gencols:byte;                        { generic menus: # of columns }
  734.     gcol:array[1..3] of byte;            { generic menus: colors }
  735.     menuflags:set of mnuflags;           { menu status variables }
  736.   end;
  737.  
  738.   cmdflags=
  739.    (hidden,                       { H: is command ALWAYS hidden? }
  740.     unhidden);                    { U: is command ALWAYS visible? }
  741.  
  742.   commandrec=                       { *.MNU : Command records }
  743.   record
  744.     ldesc:string[70];               { long command description }
  745.     sdesc:string[35];               { short command description }
  746.     ckeys:string[14];               { command-execution keys }
  747.     acs:acstring;                   { access requirements }
  748.     cmdkeys:string[2];              { command keys: type of command }
  749.     options:string[50];             { MString: command data }
  750.     commandflags:set of cmdflags;   { command status variables }
  751.   end;
  752.  
  753.   xbflags=
  754.    (xbactive,
  755.     xbisbatch,
  756.     xbisresume,
  757.     xbxferokcode,
  758.     xbbidirectional);
  759.  
  760.   protrec=                          { PROTOCOL.DAT records }
  761.   record
  762.     xbstat:set of xbflags;                       { protocol flags }
  763.     ckeys:string[14];                            { command keys }
  764.     descr:string[40];                            { description }
  765.     acs:acstring;                                { access string }
  766.     templog:string[25];                          { temp. log file }
  767.     uloadlog,dloadlog:string[25];                { permanent log files }
  768.     ulcmd,dlcmd:string[78];                      { UL/DL commandlines }
  769.     ulcode,dlcode:array [1..6] of string[6];     { UL/DL codes }
  770.     envcmd:string[60];                           { environment setup cmd }
  771.     dlflist:string[25];                          { DL file lists }
  772.     maxchrs:integer;                             { max chrs in cmdline }
  773.     logpf,logps:integer;                         { pos in log file for data }
  774.     res:array[1..15] of byte;                    { RESERVED }
  775.   end;
  776.  
  777.  
  778.   networkrec=                          { NETWORK.DAT : Net Iformation }
  779.   record
  780.     nres:array[1..8] of byte;
  781.     origin:string[50];              { origin line }
  782.     text_color:byte;                { color of standard text }
  783.     quote_color:byte;               { color of quoted text }
  784.     tear_color:byte;                { color of tear line }
  785.     origin_color:byte;              { color of origin line }
  786.     skludge:boolean;                { strip kludge lines? }
  787.     sseenby:boolean;                { strip SEEN-BY lines? }
  788.     sorigin:boolean;                { strip origin line? }
  789.     netattribute:NetAttribs;        { default netmail attribute }
  790.     res:byte;
  791.     addtear:boolean;                { add tear/origin lines? }
  792.     defechopath:string[40];         { default echomail path }
  793.     defgrouppath:string[40];        { default groupmail path }
  794.     aka:array[0..9] of record     { 10 akas }
  795.       zone,
  796.       net,
  797.       node,
  798.       point:word;
  799.     end;
  800.   end;
  801.  
  802.   confrec=            { CONFRENC.DAT : Conference data }
  803.   record
  804.     conference:array['@'..'Z'] of
  805.     record
  806.       acs:acstring;       { access requirement }
  807.       name:string[40];    { name of conference }
  808.     end;
  809.   end;
  810.  
  811.   nodeflags=
  812.     (NActive,                 { Is this node active?               }
  813.      NAvail,                  { Is this node's user available?     }
  814.      NUpdate,                 { This node should re-read it's user }
  815.      NHangup,                 { Hangup on this node                }
  816.      NRecycle,                { Recycle this node to the OS        }
  817.      NInvisible);             { This node is Invisible             }
  818.  
  819.   noderec=                         { MULTNODE.DAT }
  820.     record
  821.       User:word;                                 { What user number     }
  822.       UserName:string[36];                       { User's name }
  823.       CityState:string[30];                      { User's location }
  824.       Sex:char;                                  { User's sex }
  825.       Age:byte;                                  { User's age }
  826.       LogonTime:longint;                         { What time they logged on }
  827.       Activity:byte;                             { What are they doing? }
  828.       Description:string[20];                    { Optional string }
  829.       Status:set of nodeflags;
  830.       Room:byte;                                 { What room are they in?      }
  831.       Channel:word;                              { What channel are they in?   }
  832.       Invited:array[0..31] of set of 0..7;       { Have they been invited ?    }
  833.       Booted:array[0..31] of set of 0..7;        { Have they been kicked off ? }
  834.       Forget:array[0..31] of set of 0..7;        { Who are they forgetting?    }
  835.     end;
  836.  
  837.   RoomRec=                         { ROOM.DAT }
  838.     record
  839.       Topic:string[40];            { Set by a /T or something    }
  840.       Anonymous:boolean;           { Is Room anonymous ?         }
  841.       Private:boolean;             { Is Room private ?           }
  842.       Moderator:word;              { Who's the moderator?        }
  843.       People:byte;                 { Number of people in Room    }
  844.     end;
  845.  
  846.   scanrec=                         { *.SCN files }
  847.     record
  848.       NewScan:boolean;             { Scan this base? }
  849.       LastRead:longint;            { Last date read  }
  850.     end;
  851.  
  852.   SchemeRec=                       { Scheme.dat }
  853.     record
  854.       Description:string[30];       { Description of the color scheme }
  855.       Color:array[1..200] of byte;  { Colors in scheme }
  856.     end;
  857.  
  858.   { 1 - 10 system colors
  859.     11 -   file list colors
  860.     28 -   msg list colors
  861.     45 -   file area list colors
  862.     55 -   msg area list colors
  863.     65 -   user list colors
  864.     80 -   who's online colors
  865.     100-   last on colors
  866.     115-   qwk colors
  867.     135-   email colors
  868.    }
  869.  
  870.