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