home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware 1 2 the Maxx
/
sw_1.zip
/
sw_1
/
BBS
/
TG27.ZIP
/
TELEGARD.INC
< prev
next >
Wrap
Text File
|
1991-12-15
|
44KB
|
921 lines
(*****************************************************************************)
(*> <*)
(*> Telegard Bulletin Board System <*)
(*> Copyright 1988-1991 by Martin Pollard. All rights reserved. <*)
(*> <*)
(*> Data Types and File Structures <*)
(*> <*)
(*****************************************************************************)
const
ver:string[15]='2.7'; { current version number }
maxboards=255; { msg bases, 0 - x }
maxuboards=255; { file bases, 0 - x }
maxprotocols=120; { xfer protocols, 1 - x }
maxevents=10; { scheduled events, 0 - x }
{ #0 is Nightly Events (if active) }
maxarcs=8; { archivers, 1 - x }
numvoteqs=20; { voting questions, 1 - x }
numvoteas=9; { voting question answers, 0 - x }
maxmenucmds=50; { menu commands, 1 - x }
(*---------------------------------------------------------------------------*)
type
acstring = string[20]; { Access Control System string }
acrq = '@'..'Z'; { AR flags }
clrs = array[FALSE..TRUE,0..9] of byte; { color records: }
{ [FALSE][x] = mono }
{ [TRUE][x] = color }
secrange = array[0..255] of integer; { security tables }
cpackdatetime = array[1..6] of byte; { packed date/time }
mzscanr = set of 0..maxboards; { msg base scan flags }
fzscanr = set of 0..maxuboards; { file base scan flags }
mhireadr =
array[0..maxboards] of cpackdatetime; { last msg read table }
(*****************************************************************************)
(* *)
(* The format of the packed date/time structure is as follows: *)
(* *)
(* Byte #1 | Byte #2 | Byte #3 *)
(* ===============|===============|=============== *)
(* 7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0 *)
(* `-----------' `-------------' `-----' `-------' *)
(* RESERVED Year Month Day *)
(* (8 bits) (4 bits) (5 bits) *)
(* *)
(* Byte #4 | Byte #5 | Byte #6 *)
(* ===============|===============|=============== *)
(* 7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0 *)
(* `-------' `---------' `---------' `-----------' *)
(* Hour Minute Second 1/100 Seconds *)
(* (5 bits) (6 bits) (6 bits) (7 bits) *)
(* *)
(*****************************************************************************)
uflags = { user AC flags }
(
rlogon, { L - Restricted to one call a day }
rchat, { C - Can't page the SysOp }
rvalidate, { V - Posts marked unvalidated }
ramsg, { A - Can't change the AutoMessage }
rpostan, { * - Can't post anonymously }
rpostpvt, { E - Can't post private }
rpostnet, { N - Can't post NetMail }
rpost, { P - Can't post at all }
rvoting, { K - Can't vote }
rmsg, { M - Force mail deletion }
rreserved, { RESERVED }
onekey, { onekey input mode }
avatar, { user has AVATAR }
pause, { pause }
novice, { user is at novice help level }
ansi, { user has ANSI }
color, { user has color }
alert, { alert SysOp when user logs on }
smw, { short-message waiting for user }
nomail, { user mail-box is closed }
fnodlratio, { 1 - No UL/DL ratio }
fnopostratio, { 2 - No post/call ratio }
fnofilepts, { 3 - No file points checking }
fnodeletion { 4 - Protection from deletion }
);
anontyp = { msg base anonymous types }
(
atno, { No anonymous posts allowed }
atyes, { Anonymous posts are allowed }
atforced, { ALL posts are forced anonymous }
atdearabby, { "Dear Abby" message base }
atanyname { User's can post as ANY name they want }
);
basetyp = { msg base types }
(
mlocal, { local messages }
mnetmail, { NetMail messages }
mechomail, { EchoMail messages }
mgroupmail { GroupMail messages }
);
posttyp = { msg base message types }
(
mpublic, { public messages only }
mprivate { private messages only }
);
(*---------------------------------------------------------------------------*)
msgindexstatr= { *.MIX status flags }
(
deleted, { is message deleted? }
unvalidated, { is message unvalidated? }
permanent { is message permanent? }
);
fidoattrib= { *.MIX Fido message attributes }
(
private, { private }
crash, { crash mail }
received, { received }
sent, { sent }
fattach, { file attached }
intransit, { in-transit }
orphan, { orphaned }
kill, { kill after sending }
local, { local message }
hold, { hold for pickup }
unused, { **UNUSED** }
freq, { file request }
rreq, { return receipt request }
receipt, { return receipt message }
areq, { audit request }
fureq { file update request }
);
fidoxattrib= { *.MIX Fido message attributes (extended) }
(
direct, { direct to recipient }
immediate, { immediate delivery }
delsent { delete when sent }
);
msgindexrec= { *.MIX : Message index records }
record
hdrptr:longint; { message header pointer }
isreplyto:integer; { reply-to message number (-1=none) }
isreplytoid:cpackdatetime; { packed date/time of replied message }
numreplies:integer; { number of replies to THIS message }
msgdate:cpackdatetime; { message date/time (packed) }
msgdowk:byte; { message day of week (0=Sun..6=Sat) }
attrib:set of fidoattrib; { Fido msg attributes (see above) }
xattrib:set of fidoxattrib; { extended Fido attribs (see above) }
flags:set of msgindexstatr; { status flags (see above) }
end;
fromtoinfo= { *.BRD from/to information }
record
anon:byte; { anonymous type (0=no, 1/2=yes, 3="Abby", }
{ 4="Problemed Person", 5=any name }
usernum:word; { user number (0=none) }
zone:word; { zone (0=none) }
net:word; { net (0=none) }
node:word; { node (0=none) }
point:word; { point (0=none) }
name:string[36]; { user name (all caps) if anon=3..5, }
{ otherwise null ('') }
real:string[36]; { user real name (all caps) }
alias:string[36]; { user alias (all caps) }
end;
mheaderrec= { *.BRD : Message header records }
record
msgptr:longint; { pointer to message text }
msglength:word; { length of message text }
cost:word; { cost to send message (NetMail only) }
fromi:fromtoinfo; { from user information }
toi:fromtoinfo; { to user information }
title:string[71]; { title of message }
datetime:string[19]; { Net/Echo/Group original msg date }
end;
(*---------------------------------------------------------------------------*)
filstat= { *.DIR status flags }
(
notval, { if file is not validated }
isrequest, { if file is offline }
resumelater { if file is resume-later }
);
ulfrec= { *.DIR : File records }
record
filename:string[12]; { filename }
description:string[60]; { file description }
filepoints:integer; { file points }
nacc:integer; { number DLs }
res1:byte; { RESERVED }
blocks:integer; { # 128 byte blks }
owner:integer; { ULer of file }
stowner:string[36]; { ULer's name }
date:string[8]; { date ULed }
daten:integer; { numeric date ULed }
{ (# days since 01/01/85) }
vpointer:longint; { pointer to verbose descr (-1=none) }
filestat:set of filstat; { file status }
res2:array[1..10] of byte; { RESERVED }
end;
(*---------------------------------------------------------------------------*)
mnuflags= { *.MNU status flags }
(
clrscrbefore, { C: clear screen before menu display }
dontcenter, { D: don't center the menu titles! }
nomenuprompt, { N: no menu prompt whatsoever? }
forcepause, { P: force a pause before menu display? }
autotime { T: is time displayed automatically? }
);
menurec= { *.MNU : Menu records }
record
menuname:array[1..3] of string[100]; { menu name }
directive:string[12]; { help file displayed }
tutorial:string[12]; { tutorial help file }
menuprompt:string[120]; { menu prompt }
acs:acstring; { access requirements }
password:string[15]; { password required }
fallback:string[8]; { fallback menu }
forcehelplevel:byte; { forced help level for menu }
gencols:byte; { generic menus: # of columns }
gcol:array[1..3] of byte; { generic menus: colors }
menuflags:set of mnuflags; { menu status variables }
end;
cmdflags= { *.MNU command status flags }
(
hidden, { H: is command ALWAYS hidden? }
unhidden { U: is command ALWAYS visible? }
);
commandrec= { *.MNU : Command records }
record
ldesc:string[70]; { long command description }
sdesc:string[35]; { short command description }
ckeys:string[14]; { command-execution keys }
acs:acstring; { access requirements }
cmdkeys:string[2]; { command keys: type of command }
mstring:string[50]; { MString: command data }
commandflags:set of cmdflags; { command status variables }
end;
(*---------------------------------------------------------------------------*)
zlogrec= { ZLOG.DAT : System log }
record
date:string[8]; { entry date }
userbaud:array[0..4] of integer; { new user logon BPS rates }
{ (300,1200,2400,4800,9600+) }
active:integer; { % activity }
calls:integer; { # of calls }
newusers:integer; { # of new users }
pubpost:integer; { # of public posts }
privpost:integer; { # of private posts }
netpost:integer; { # of NetMail posts }
criterr:integer; { # of critical errors }
uploads:integer; { # of uploads }
downloads:integer; { # of downloads }
uk:longint; { amount ULed in K }
dk:longint; { amount DLed in K }
end;
(*---------------------------------------------------------------------------*)
mbflags= { BOARDS.DAT status flags }
(
mbrealname, { real names are forced }
mbvisible, { visible to users w/o access }
mbfilter, { filter ANSI/8-bit ASCII }
mbstrip, { strip center/title codes }
mbaddtear, { add tear/origin lines }
mbtopstar, { Top Star base (GroupMail only) }
mbimmune, { immune to "twitting" }
mbinternet { special Internet (UUCP) handling }
);
boardrec= { BOARDS.DAT : Message base records }
record
name:string[40]; { message base description }
filename:string[8]; { BRD/MIX data filename }
msgpath:string[40]; { messages pathname }
password:string[20]; { base password }
acs:acstring; { access requirement }
postacs:acstring; { post access requirement }
maxmsgs:word; { max message count }
anonymous:anontyp; { anonymous type }
mbstat:set of mbflags; { message base status vars }
mbtype:basetyp; { message base type }
mbpost:posttyp; { message base posting type }
origin:string[50]; { origin line }
kludge_color:byte; { color of kludge line }
quote_color:byte; { color of quoted line }
tear_color:byte; { color of tear line }
origin_color:byte; { color of origin line }
zone:word; { network address }
net:word; { (zone:net/node.point) }
node:word;
point:word;
end;
(*---------------------------------------------------------------------------*)
confrec= { CONFRENC.DAT : Conference data }
record
conference:array['@'..'Z'] of
record
acs:acstring; { access requirement }
name:string[40]; { name of conference }
end;
end;
(*---------------------------------------------------------------------------*)
eventrec= { EVENTS.DAT : Scheduled event records }
record
active:boolean; { whether active }
description:string[30]; { event description (for logs) }
etype:char; { A:CS, C:hat, D:os call, E:xternal }
execdata:string[20]; { errorlevel if "E", commandline if "D" }
busytime:integer; { off-hook time before; 0 if none }
exectime:integer; { time of execution }
busyduring:boolean; { busy phone DURING event? }
duration:integer; { length of time event takes }
execdays:byte; { bitwise execution days, }
{ or day of month if monthly }
monthly:boolean; { monthly event? }
end;
(*---------------------------------------------------------------------------*)
tbflags= { GFILES.DAT status flags }
(
tbunhidden, { whether *VISIBLE* to users w/o access }
tbreserved1, { RESERVED FLAG #1 }
tbreserved2 { RESERVED FLAG #2 }
);
tfilerec= { GFILES.DAT : Text-file records }
record
title:string[40]; { title }
filen:string[12]; { filename }
gdate:string[8]; { date of Tfile / Tfile base }
gdaten:integer; { numeric date for fast calculation }
acs:acstring; { access requirement }
ulacs:acstring; { upload to base access requirement }
tbstat:set of tbflags; { text-file base status vars }
res:array[1..10] of byte; { RESERVED }
end;
(*---------------------------------------------------------------------------*)
lcallers= { LASTON.DAT : Last few callers records }
record
callernum:longint; { system caller number }
name:string[36]; { user name of caller }
number:integer; { user number of caller }
citystate:string[30]; { city/state of caller }
end;
(*---------------------------------------------------------------------------*)
macrorec= { MACROS.LST : Keyboard macro records }
record
macro:array[1..4] of string[240];
end;
(*---------------------------------------------------------------------------*)
modemflags= { MODEM.DAT status flags }
(
lockedport, { COM port locked at constant rate }
xonxoff, { XON/XOFF (software) flow control }
ctsrts { CTS/RTS (hardware) flow control }
);
modemrec= { MODEM.DAT : Modem configuration }
record
waitbaud:word; { wait bps }
comport:byte; { COM port number }
init:string[80]; { initialization string }
answer:string[40]; { answer string }
hangup:string[40]; { hangup string }
offhook:string[40]; { phone off-hook string }
nocallinittime:integer; { reinit modem after x mins of inactivity }
lockedportbaud:word; { bps rate to use when COM port locked }
flags:set of modemflags; { status flags (see above) }
nocarrier:byte; { NO CARRIER result code }
resultcode:array[1..2,0..7] { CONNECT result codes: }
of byte; { 300,1200,2400,4800,7200,9600,12000,14400 }
end;
(*---------------------------------------------------------------------------*)
smalrec= { NAMES.LST : Sorted names listing }
record
name:string[36]; { user name }
number:integer; { user number }
end;
(*---------------------------------------------------------------------------*)
netflags= { NETWORK.DAT status flags }
(
nstrip, { strip message codes? }
naddtear, { add tear/origin lines to Net/Group? }
nholduser, { hold all non-SysOp NetMail? }
nhold, { default NetMail to "hold"? }
ncrash, { default NetMail to "crash"? }
nkill { default NetMail to "kill/sent"? }
);
networkrec= { NETWORK.DAT : Network information }
record
zone:word; { network address }
net:word; { (zone:net/node.point) }
node:word;
point:word;
origin:string[50]; { origin line }
kludge_color:byte; { color of kludge line }
quote_color:byte; { color of quoted text }
tear_color:byte; { color of tear line }
origin_color:byte; { color of origin line }
flags:set of netflags; { status flags }
netpath:string[40]; { NetMail path }
echopath:string[40]; { EchoMail path }
grouppath:string[40]; { GroupMail path }
nodepath:string[40]; { nodelist path }
end;
(*---------------------------------------------------------------------------*)
nodeflags= { NODELIST.DAT status flags }
(
hub, { node is a net hub }
host, { node is a net host }
region, { node is region coord }
zone, { node is a zone coord }
cm, { runs continuous mail }
ores1, { reserved for Opus }
ores2, { reserved for Opus }
ores3, { reserved for Opus }
ores4, { reserved for Opus }
ores5, { reserved for Opus }
nores1, { reserved for non-Opus }
nores2, { reserved for non-Opus }
nores3, { reserved for non-Opus }
nores4, { reserved for non-Opus }
nores5, { reserved for non-Opus }
nores6 { reserved for non-Opus }
);
modemtypes= { NODELIST.DAT modem type flags }
(
hst, { node uses a USRobotics HST modem }
pep, { node uses a Telebit PEP modem }
v32, { node uses a V.32 modem }
v32b, { node uses a V.32bis modem }
h96 { node uses a Hayes Express96 modem }
);
nodedatarec= { NODELIST.DAT : Version 6 nodelist data }
record
net:integer; { net number }
node:integer; { node number }
cost:integer; { cost per minute to call }
name:array[0..33] of byte; { node name }
phone:array[0..39] of byte; { phone number }
city:array[0..29] of byte; { city and state }
password:array[0..7] of byte; { password }
realcost:integer; { phone company's charge }
hubnode:integer; { node # of this node's hub (0=none) }
rate:byte; { actual bps rate divided by 300 }
modem:set of modemtypes; { modem type codes }
flags:set of nodeflags; { set of flags }
res:array[1..2] of byte; { RESERVED }
end;
nodeindexrec= { NODELIST.IDX : Version 6 nodelist index }
record
node:integer; { node number }
net:integer; { net number }
end;
(*---------------------------------------------------------------------------*)
xbflags= { PROTOCOL.DAT status flags }
(
xbactive, { is protocol active? }
xbisbatch, { is batch definition? }
xbisresume, { is resume definition? }
xbxferokcode { does result code = xfer OK? }
);
protrec= { PROTOCOL.DAT : File transfer protocols }
record
xbstat:set of xbflags; { protocol flags }
ckeys:string[14]; { command keys }
descr:string[40]; { description }
acs:acstring; { access string }
templog:string[25]; { temp. log file }
uloadlog:string[25]; { permanent log files }
dloadlog:string[25];
ulcmd:string[78]; { UL/DL command lines }
dlcmd:string[78];
ulcode:array [1..6] of string[6]; { UL/DL codes }
dlcode:array [1..6] of string[6];
envcmd:string[60]; { environment setup cmd (B) }
dlflist:string[25]; { DL file lists (B) }
maxchrs:integer; { max chrs in cmdline }
logpf:integer; { pos in log file for data (B) }
logps:integer;
res:array[1..15] of byte; { RESERVED }
end;
(*---------------------------------------------------------------------------*)
smr= { SHORTMSG.DAT : One-line messages }
record
msg:string[160]; { message }
destin:integer; { destination user # (-1=deleted) }
end;
(*---------------------------------------------------------------------------*)
filearcinforec= { STATUS.DAT archive configuration records }
record
active:boolean; { whether this archive format is active }
ext:string[3]; { 3-char file extension }
listline:string[25]; { view archive cmdline ('' for internal) }
arcline:string[25]; { compression cmdline }
unarcline:string[25]; { de-compression cmdline }
testline:string[25]; { integrity test cmdline ('' for *None*) }
cmtline:string[25]; { comment cmdline ('' for *None*) }
succlevel:integer; { success ERRORLEVEL (-1=ignore results) }
end;
systatrec= { STATUS.DAT : System configuration }
record
gfilepath:string[79]; { GFILES path (data files) }
afilepath:string[79]; { AFILES path (text files) }
menupath:string[79]; { MENUS path (system menu files) }
trappath:string[79]; { LOGS path (trap/chat/log files) }
msgpath:string[79]; { MSGS path (msg base data files) }
tfilepath:string[79]; { TFILES path (Tfiles base files) }
temppath:string[79]; { TEMP path (temporary files) }
bbsname:string[80]; { BBS name }
bbsphone:string[12]; { BBS phone number }
sysopname:string[30]; { SysOp's full name or alias }
maxusers:integer; { max number of users system can have }
lowtime:integer; { SysOp begin minute (in minutes) }
hitime:integer; { SysOp end time }
dllowtime:integer; { normal downloading hours }
dlhitime:integer;
shuttlelog:boolean; { is Shuttle Logon active? }
lock300:boolean; { lock out 300 baud? }
sysoppw:string[20]; { SysOp PW }
newuserpw:string[20]; { newuser PW (or NULL if none) }
shuttlepw:string[20]; { Shuttle PW (if Shuttle active) }
b300lowtime:integer; { 300 baud calling hours }
b300hitime:integer;
b300dllowtime:integer; { 300 baud DL hours }
b300dlhitime:integer;
closedsystem:boolean; { DON'T allow new users? }
swapshell:boolean; { is swap shell function enabled? }
eventwarningtime:integer; { time before event warning }
tfiledate:string[8]; { last date text-files were inserted }
swapshelltype:byte; { swap shell type (0=disk,1=EMS) }
res1:array[1..23] of byte; { RESERVED SPACE #1 }
sop:acstring; { SysOp }
csop:acstring; { Co-SysOp }
msop:acstring; { Message SysOp }
fsop:acstring; { File SysOp }
spw:acstring; { SysOp PW at logon }
seepw:acstring; { see SysOp PWs remotely }
normpubpost:acstring; { post public messages }
normprivpost:acstring; { post private messages }
anonpubread:acstring; { see who posted public anon }
anonprivread:acstring; { see who posted private anon }
anonpubpost:acstring; { post anon public messages }
anonprivpost:acstring; { post anon private messages }
seeunval:acstring; { see unvalidated files }
dlunval:acstring; { DL unvalidated files }
nodlratio:acstring; { no UL/DL ratio }
nopostratio:acstring; { no post/call ratio }
nofilepts:acstring; { no file points checking }
ulvalreq:acstring; { uploads require validation by SysOp }
normnetpost:acstring; { post NetMail messages }
fsecmd:string[40]; { full screen editor command }
res2:array[1..38] of byte; { RESERVED SPACE #2 }
maxprivpost:byte; { max private posts per call }
maxnetpost:byte; { max NetMail posts per call }
maxpubpost:byte; { max public posts per call }
maxchat:byte; { max chat-pages per call }
res3:array[1..4] of byte; { RESERVED SPACE #3 }
maxlogontries:byte; { tries allowed for PW's at logon }
bsdelay:byte; { backspacing delay }
sysopcolor:byte; { SysOp color in chat mode }
usercolor:byte; { user color in chat mode }
minspaceforpost:integer; { minimum K drive space left to post }
minspaceforupload:integer; { minimum K drive space left to upload }
backsysoplogs:byte; { days to keep SYSOP##.LOG }
wfcblanktime:byte; { minutes after which to blank WFC menu }
linelen:byte; { default video line length }
pagelen:byte; { default video page length }
res4:array[1..18] of byte; { RESERVED SPACE #4 }
specialfx:boolean; { WFC menu "special effects" }
logonlogoff:boolean; { enable LOGON.BAT & LOGOFF.BAT? }
allowalias:boolean; { allow alias's? (handles) }
phonepw:boolean; { use phone number password in logon? }
localsec:boolean; { is local security ON? }
localscreensec:boolean; { is local screen-security ON? }
globaltrap:boolean; { trap ALL USER'S activity? }
autochatopen:boolean; { does chat buffer auto-open? }
autominlogon:boolean; { Auto-Message in logon? }
bullinlogon:boolean; { bulletins in logon? }
lcallinlogon:boolean; { "Last Few Callers" list in logon? }
yourinfoinlogon:boolean; { "Your Info" in logon? }
multitask:boolean; { is BBS multitasking? }
offhooklocallogon:boolean; { take phone off-hook for local logons? }
forcevoting:boolean; { is manditory logon voting active? }
compressbases:boolean; { "compress" file/message base numbers? }
searchdup:boolean; { search for dup. filenames when UL? }
slogtype:byte; { SysOp log type: File/Printer/Both }
stripclog:boolean; { strip colors from SysOp log output? }
newapp:integer; { user# to send new user application to }
guestuser:integer; { user# of guest user account }
timeoutbell:integer; { minutes before time-out bell }
timeout:integer; { minutes before timeout (logoff) }
usewfclogo:boolean; { whether to use WFC menu logo }
useems:boolean; { attempt to use EMS for overlay }
usebios:boolean; { use ROM BIOS for local video output }
cgasnow:boolean; { suppress snow on CGA systems }
res5:array[1..16] of byte; { RESERVED SPACE #5 }
filearcinfo:array[1..maxarcs]
of filearcinforec; { archive specs }
filearccomment:array[1..3]
of string[80]; { BBS comments for archives }
uldlratio:boolean; { are UL/DL ratios active? }
fileptratio:boolean; { is auto file-pt compensation active? }
fileptcomp:byte; { file point compensation ratio }
fileptcompbasesize:byte; { file point "base compensation size" }
ulrefund:byte; { percent time refund for ULs }
tosysopdir:byte; { "To SysOp" file base }
validateallfiles:boolean; { validate ALL FILES automatically? }
remdevice:string[10]; { remote output device (GATEx,COMx,etc) }
maxintemp:integer; { max K allowed in TEMP\3\ }
minresume:integer; { min K to allow resume-later }
maxdbatch:byte; { max files in DL batch queue }
maxubatch:byte; { max files in UL batch queue }
unlistfp:byte; { # of file points for unlisted DLs }
res6:array[1..21] of byte; { RESERVED SPACE #6 }
newcredit:longint; { newuser NetMail credit }
autocredit:longint; { auto-validation NetMail credit }
newsl:byte; { newuser SL }
newdsl:byte; { newuser DSL }
newar:set of acrq; { newuser AR }
newac:set of uflags; { newuser AC }
newfp:integer; { newuser file points }
autosl:byte; { auto-validation SL }
autodsl:byte; { auto-validation DSL }
autoar:set of acrq; { auto-validation AR }
autoac:set of uflags; { auto-validation AC }
allstartmenu:string[8]; { logon menu to start ALL users on }
res7:array[1..22] of byte; { RESERVED SPACE #7 }
batchfileext:string[3]; { batch filename extension }
bulletprefix:string[8]; { default bulletins filename prefix }
res8:array[1..15] of byte; { RESERVED SPACE #8 }
timeallow:secrange; { time allowance }
callallow:secrange; { call allowance }
dlratio:secrange; { # ULs/# DLs ratios }
dlkratio:secrange; { DLk/ULk ratios }
postratio:secrange; { post/call ratios }
lastdate:string[8]; { last system date }
curwindow:byte; { type of SysOp window currently in use }
istopwindow:boolean; { is SysOp window on top of screen? }
callernum:longint; { total number of callers }
numusers:integer; { number of users }
todayzlog:zlogrec; { TODAY's ZLOG record }
postcredits:integer; { file points/upload credit }
{ compensation for posts }
rebootforevent:boolean; { reboot before events? }
watchdogdoor:boolean; { WatchDog active in doors? }
windowon:boolean; { is SysOp window on? }
swappath:string[79]; { swap shell path }
arcpath:string[40]; { archive utility path }
protpath:string[40]; { protocol driver path }
res9:array[1..35] of byte; { RESERVED SPACE #9 }
versionid:word; { version (eg $0270 = v2.7) }
end;
(*---------------------------------------------------------------------------*)
fstringrec= { STRING.DAT : User-definable strings }
record
ansiq:string[80]; { "Do you want ANSI? " string }
note:array[1..2] of string[80]; { Logon notes (L #1-2) }
lprompt:string[80]; { Logon prompt (L #3) }
echoc:char; { Echo char for PWs }
sysopin:string[80]; { "SysOp In" (inside SysOp hours)}
sysopout:string[80]; { "SysOp Out" }
engage:string[80]; { "Engage Chat" }
endchat:string[80]; { "End Chat" }
wait:string[80]; { "SysOp Working" }
pause:string[80]; { "Pause" }
entermsg1:string[80]; { "Enter Message" line #1 }
entermsg2:string[80]; { "Enter Message" line #2 }
newscan1:string[80]; { "NewScan begin" }
newscan2:string[80]; { "NewScan done" }
scanmessage:string[80]; { Message scanning prompt }
automsgt:string[80]; { Auto-Message title }
autom:char; { Auto-Message border characters }
shelldos1:string[80]; { " >> SysOp shelling to DOS ..." }
shelldos2:string[80]; { " ... thank you for waiting." }
chatcall1:string[80]; { "Paging SysOp, please wait..." }
chatcall2:string[80]; { ">>><*><<<" }
guestline:string[80]; { "To be a guest ... " }
namenotfound:string[80]; { "Name NOT found in user list." }
bulletinline:string[80]; { Bulletin line }
thanxvote:string[80]; { "Thanks for voting" }
listline:string[80]; { "List files - P to pause" }
newline:string[80]; { "Search for new files -" }
searchline:string[80]; { "Search all dirs for file mask" }
findline1:string[80]; { "Search for descriptions... " }
findline2:string[80]; { "Enter the string to search for.." }
downloadline:string[80]; { "Download - " }
uploadline:string[80]; { "Upload - " }
viewline:string[80]; { "View interior files - " }
nofilepts:string[80]; { "Insufficient file points." }
unbalance:string[80]; { "Your UL/DL ratio is unbalanced" }
pninfo:string[80]; { "P to Pause, N for next dir" }
gfnline1:string[80]; { "[Enter]=All files" }
gfnline2:string[80]; { "File mask: " }
batchadd:string[80]; { "File added to batch queue." }
quotestr1:string[50]; { message quote header #1 }
quotestr2:string[50]; { message quote header #2 }
mtaskline:string[80]; { "System Under Multi-Tasking..." }
end;
(*---------------------------------------------------------------------------*)
fbflags= { UPLOADS.DAT status flags }
(
fbnoratio, { if <No Ratio> active }
fbunhidden, { whether *VISIBLE* to users w/o access }
fbdirdlpath, { if *.DIR file stored in DLPATH }
fbreserved1, { RESERVED FLAG #1 }
fbusegifspecs, { whether to use GifSpecs }
fbreserved2 { RESERVED FLAG #2 }
);
ulrec= { UPLOADS.DAT : File base records }
record
name:string[40]; { area description }
filename:string[12]; { filename + ".DIR" }
dlpath:string[40]; { download path }
ulpath:string[40]; { upload path }
maxfiles:integer; { max files allowed (1-2000) }
password:string[20]; { password required }
arctype:byte; { wanted archive type (1..max,0=inactive) }
cmttype:byte; { wanted comment type (1..3,0=inactive) }
res1:array[1..2] of byte; { RESERVED SPACE #1 }
fbstat:set of fbflags; { file base status vars }
acs:acstring; { access requirements }
ulacs:acstring; { upload requirements }
nameacs:acstring; { see-names requirements }
res2:array[1..10] of byte; { RESERVED SPACE #2 }
end;
(*---------------------------------------------------------------------------*)
userflags= { USER.LST status flags }
(
lockedout, { if locked out }
udeleted, { if deleted }
trapactivity, { if trapping users activity }
trapseperate, { if trap to seperate TRAP file }
chatauto, { if auto chat trapping }
chatseperate, { if seperate chat file to trap to }
slogseperate, { if seperate SysOp log }
clsmsg, { if clear-screen before message }
avadjust { if AVATAR color adjust }
);
userrec= { USER.LST : User account records }
record
{ configuration information }
name:string[36]; { user name }
realname:string[36]; { real name }
street:string[30]; { mailing address }
citystate:string[30]; { city, state }
zipcode:string[10]; { zipcode }
ph:string[12]; { user phone # }
bday:string[8]; { user birthdate }
sex:char; { user sex }
pw:string[20]; { user password }
firston:string[8]; { firston date }
laston:string[8]; { laston date }
computer:string[30]; { type of computer }
occupation:string[40]; { occupation }
wherebbs:string[40]; { BBS reference }
note:string[39]; { SysOp note }
lockedfile:string[8]; { lockout msg to print }
cols:clrs; { user colors }
linelen:byte; { line length (# cols) }
pagelen:byte; { page length (# rows) }
mpointer:longint; { pointer to entry in MACRO.LST }
userstartmenu:string[8]; { menu to start user out on }
flags:set of userflags; { flags (see above) }
{ system access information }
sl:byte; { SL }
dsl:byte; { DSL }
ac:set of uflags; { user flags }
ar:set of acrq; { AR flags }
{ message system information }
lastmsg:byte; { last message base # }
pubpost:integer; { # public posts }
privpost:integer; { # private posts }
netpost:integer; { # NetMail posts }
forusr:integer; { forward mail to user # }
credit:longint; { NetMail points (credit) }
debit:longint; { NetMail points (debit) }
mhiread:mhireadr; { NewScan high message pointers }
mzscan:mzscanr; { NewScan message bases }
boardsysop:array[1..5] of byte; { msg board SysOp }
{ file system information }
lastfil:byte; { last file base # }
uploads:integer; { # of ULs }
downloads:integer; { # of DLs }
uk:longint; { amount ULed (kilobytes) }
dk:longint; { amount DLed (kilobytes) }
filepoints:integer; { # of file points }
flistopt:byte; { type of file list type to use }
fzscan:fzscanr; { NewScan file bases }
{ system usage information }
ttimeon:longint; { total mins spent on }
loggedon:integer; { # times logged on }
tltoday:integer; { # min left today }
ontoday:byte; { # times on today }
illegal:byte; { # illegal logon attempts }
{ miscellaneous information }
vote:array[1..20] of byte; { voting data }
timebank:integer; { # mins in Time Bank }
timebankadd:integer; { time added to timebank TODAY }
end;
(*---------------------------------------------------------------------------*)
verbrec= { VERBOSE.DAT : Verbose descriptions }
record
descr:array[1..4] of string[50];
end;
(*---------------------------------------------------------------------------*)
vdatar= { VOTING.DAT : Voting records }
record
question:string[79]; { voting question }
numa:integer; { number of user's who have answered }
answ:array[0..numvoteas] of
record
ans:string[40]; { answer description }
numres:integer; { # user's who picked this answer }
end;
end;