/*****************************************************************************/
/* T.A.G. Bulletin Board System */
/* Copyright (c) 1986-1994 by The T.A.G. Team */
/* All rights reserved. */
/* */
/* ---------------------------------- */
/* T.A.G. Version 2.7 Data Structures */
/* ---------------------------------- */
/* Converted from Turbo Pascal to C by Martin Pollard */
/* Converted from 'Martin-C' to ANSI C by Daniel Mecklenburg */
/* */
/* All we ask if you use these record structures is to give credit where */
/* credit is due. */
/* */
/* Additional structure information may be given out on an individual */
/* basis depending on the situation. */
/* */
/* RELEASE HISTORY: */
/* */
/* 01/24/93 - Initial release. */
/* 02/17/93 - Corrected errors in definitions for SystatRec, ModemRec, and */
/* MboardType. */
/* 04/27/93 - Re-Released without change for version 2.6e (Paul Williams) */
/* 09/01/93 - Updated for version 2.6f (Victor Capton) */
/* 05/09/94 - Updated for version 2.7 (Victor Capton) */
/* */
/*---------------------------------------------------------------------------*/
/* */
/* NOTES TO PROGRAMMERS: */
/* */
/* Turbo Pascal strings are formatted differently than C strings: */
/* */
/* Turbo Pascal: length byte + string data */
/* C: string data + '\0' (zero) */
/* */
/* You will have to write conversion routines to convert strings back and */
/* forth between TP and C formats if you wish to use strings. */
/* */
/* Also, C has no direct equivalent to Turbo Pascal's "real" type for real */
/* numbers (C's "float" and "double" do not use the same format). If you */
/* wish to use real numbers, you will have to write conversion routines. */
/* */
/* NOTE THAT THERE IS NO ATTEMPT HERE TO TEACH YOU HOW TO ACCESS T.A.G. DATA */
/* FILES USING THE C LANGUAGE. IT IS ASSUMED THAT YOU ALREADY KNOW HOW TO */
/* PROGRAM IN C, AND ARE FAMILIAR WITH THE INS AND OUTS OF ACCESSING FIXED- */
/* LENGTH RECORD DATA FILES (SUCH AS THE ONES T.A.G. USES). */
/* */
/*****************************************************************************/
#ifndef __TAGREC_H
#define __TAGREC_H
/* C has no equivalent for TP "real" type! */
typedef unsigned char Real[6];
/*---------------------------------------------------------------------------*/
/***************************************************************************/
/* The following values are used by the system for user fields */
/* "ask" values will be asked of the user the next time they logon if the */
/* question is part of the new user logon */
/* "none" values are normally for optional fields where the user simply */
/* pressed <enter> */
/***************************************************************************/
#define USER_STRING_ASK " " /* Ask for user string fields */
#define USER_STRING_NONE "" /* None for user string fields */
#define USER_DATE_ASK 0xFE21 /* Ask for user date fields - 1/1/2027 */
#define USER_DATE_NONE 0x0021 /* None for user date fields - 1/1/0 */
#define USER_WORD_ASK 65535U /* Ask for user word fields */
#define USER_WORD_NONE 65534U /* None for user word fields */
#define USER_CHAR_ASK '~' /* Ask for user character fields */
#define USER_CHAR_NONE ' ' /* None for user character fields */
#define USER_PHONE_ASK " " /* Ask for user phone fields */
#define USER_PHONE_NONE "" /* None for user phone fields */
/*---------------------------------------------------------------------------*/
#define DYN_DEFAULT 0 /* Default */
#define DYN_YES 1 /* Yes */
#define DYN_NO 2 /* No */
/* Default/yes/no type */
typedef unsigned char DefaultYesNoType;
/* AR flags (@..Z) */
typedef unsigned char ArFlagType;
/* Set of AR flags */
/* Byte 0 = bits 0..7 = Flags @..G */
/* Byte 1 = bits 0..7 = Flags H..O */
/* Byte 2 = bits 0..7 = Flags P..W */
/* Byte 3 = bits 0..2 = Flags X..Z */
typedef unsigned char ArFlagset[4];
/* flagset flag1 */
#define USF_AutoPrivDel 0x01
#define USF_NoPostCall 0x02
#define USF_ForceULScan 0x04
#define USF_Ranon 0x08
#define USF_RbbsList 0x10
#define USF_Rchat 0x20
#define USF_NoDLlimit 0x40
#define USF_RpubMsg 0x80
/* flagset flag2 */
#define USF_RprivMsg 0x01
#define USF_Rvoting 0x02
#define USF_OneCall 0x04
#define USF_PubNotVal 0x08
#define USF_ProtDel 0x10
#define USF_NoFilePts 0x20
#define USF_RfileVal 0x40
#define USF_Pause 0x80
/* flagset flag3 */
#define USF_Ansi 0x01
#define USF_Color 0x02
#define USF_OneKey 0x04
#define USF_Alert 0x08
#define USF_FlagRecUnused 0x10
#define USF_MboxClosed 0x20
#define USF_Tabs 0x40
#define USF_ClsChar 0x80
typedef struct
{
/* User special flags */
/* 3 bytes used for 24 flags in set */
unsigned char flag1;
unsigned char flag2;
unsigned char flag3;
} FlagSet;
#define ULRF_IsCdRom 0x01
typedef struct
{
unsigned char flag1;
} UlRecFlagSet;
/* configflagset flag1 */
#define CF_UseCustomMenus 0x01
#define CF_ClsMsgRead 0x02
#define CF_DoNotDisturbUser 0x04
#define CF_LogonScanAllMsgSections 0x08
#define CF_QWKNewBulletins 0x10
#define CF_QWKNewFiles 0x20
typedef struct
{
/* User configuration flags */
/* 3 bytes used for 24 flags in set */
unsigned char flag1;
unsigned char flag2;
unsigned char flag3;
} ConfigFlagSet;
/************************************************/
/* ColorRec = Array of B&W / Color Color Bytes */
/************************************************/
/* ColorRec[0][x] = B&W */
/* ColorRec[1][x] = Color */
/* x = 0..9 = Actual Color Codes */
typedef unsigned char ColorRec[2][10];
/*---------------------------------------------------------------------------*/
typedef struct /* User name index - NAMES.LST */
{
unsigned char Name[37]; /* User name */
int Number; /* User number */
} SmalRec;
/*---------------------------------------------------------------------------*/
typedef struct /* User log - USER.LST */
{
unsigned char Uname[37]; /* User name */
unsigned char Rname[37]; /* Real name */
unsigned char ADDR[31]; /* Address */
unsigned char ComType[31]; /* Computer type */
unsigned char CityState[31]; /* City/State */
unsigned char Snote[31]; /* SysOp note */
unsigned int LastDate; /* Last date on - Semi-MS-DOS 1900 based fmt */
unsigned int LastTime; /* Last time on - MS-DOS format */
unsigned char PW[17]; /* Password */
unsigned char Phone[13]; /* Phone number 1 */
unsigned char Zcode[11]; /* Zip code */
unsigned char Phone2[13]; /* Phone number 2 */
unsigned char ExtraStr1[41]; /* Extra string 1 */
unsigned char ExtraStr2[41]; /* Extra string 2 */
unsigned char ExtraStr3[41]; /* Extra string 3 */
unsigned int ExtraDate1; /* Extra date 1 - Semi-MS-DOS 1900 based fmt */
unsigned int ExtraDate2; /* Extra date 2 - Semi-MS-DOS 1900 based fmt */
unsigned int ExtraWord1; /* Extra word 1 */
unsigned int ExtraWord2; /* Extra word 2 */
unsigned int ExtraWord3; /* Extra word 3 */
unsigned int ExtraWord4; /* Extra word 4 */
unsigned char ExtraChar; /* Extra character 1 */
unsigned char ExtraChar2; /* Extra character 2 */
unsigned char ExtraChar3; /* Extra character 3 */
unsigned char ExtraChar4; /* Extra character 4 */
unsigned char ExtraPhone[13]; /* Extra phone */
unsigned char uureserved[3]; /* Reserved */
/*************************************************************/
/* Vote = An array of Voting Answers, One for each question */
/*************************************************************/
unsigned char Vote[20]; /* Voting */
/**********************************************************************/
/* Call spread for last 15 calls - Number of days between each call: */
/* 0 = Called the same day */
/* 1..253 = X number of days between */
/* 254 = 254 or more days between */
/* 255 = Element not used yet */
/**********************************************************************/
unsigned char CallSpr[15]; /* Call spread */
Real Ttimeon; /* Total time on system in minutes */
Real UlK; /* UL K-Bytes */
Real Dlk; /* DL K-Bytes */
/**********************************************************/
/* UserNum = The User number */
/* 0 -----------------------------> Deleted */
/* Same as Record Number ----------> Normal */
/* Different from Record Number ---> Locked Out */
/**********************************************************/
int UserNum; /* User number */
unsigned int PrivPost; /* Private posts */
unsigned int PubPost; /* Public posts */
unsigned int FeedBack; /* Feedback sent to SysOp */
unsigned int NumCalls; /* Total number of calls to system */
unsigned int NumUL; /* Number of uploads */
unsigned int NumDL; /* Number of downloads */
int Fmail; /* Forward mail to which user number */
unsigned int Hbaud; /* Highest baud rate user supports */
unsigned int TimeToday; /* Minutes on system date of last call */
unsigned int Credit; /* Credit for mail in cents */
unsigned int Debit; /* Debit for mail in cents */
unsigned int Points; /* File points */
unsigned int TimeBank; /* Minutes in time bank */
unsigned int Bday; /* Birthdate of user - Semi-MS-DOS format */
unsigned int LastChange; /* Reserved */
unsigned char StrtMenu; /* Reserved */
unsigned char SL; /* Security level - SL */
unsigned char DSL; /* Download security level - DSL */
unsigned char Hlvl; /* Help level */
unsigned char Colms; /* Number of screen columns */
unsigned char Lines; /* Number of screen lines */
unsigned char Callstoday; /* Number of calls to system today */
unsigned char Illegal; /* Illegal logon attempts */
unsigned char Gender; /* User gender M/F/' '=not specified */
unsigned char uulMsgBase; /* Reserved */
unsigned char uuLdlBase; /* Reserved */
unsigned char Cls; /* Reserved */
DefaultYesNoType FullEdit; /* Full screen editor status */
ArFlagset Ar; /* AR flag set */
FlagSet Flags; /* Special flag set */
unsigned int FirstOn; /* Date first on - Semi-MS-DOS format */
unsigned int Expires; /* Date expires - Semi-MS-DOS format */
unsigned char UserRecUnused[29]; /* Reserved */
ColorRec Colors; /* User colors */
unsigned char TBdeposit; /* Time deposited in bank today */
unsigned char TBwithdraw; /* Time withdraw from bank today */
int AdjTime; /* Adjusted time date of last call */
ConfigFlagSet ConfigFlags; /* Configuration Flags */
unsigned int lMbase; /* Last message section */
unsigned int lFbase; /* Last file section */
long LastQWKCRC; /* CRC of last QWK .REP packet uploaded */
unsigned char Unused; /* Reserved */
}
UserRec;
/*---------------------------------------------------------------------------*/
typedef struct
{
/* Short messages - SHORTMSG.DAT */
unsigned char Msg[161]; /* Message text */
int Destin; /* User number of who message is to */
} SmallMessageRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Voting questions - VOTING.DAT */
{
unsigned char Question[75]; /* Question */
unsigned int NumA; /* Number of answers in below array */
struct /* Array of answer data */
{
unsigned char Ans[41]; /* Answer */
unsigned int NumRes; /* Number of users who chose this response */
}
Answ[10];
}
Vdatar;
/*---------------------------------------------------------------------------*/
typedef struct /* File section - FBOARDS.DAT */
{
unsigned char Name[40]; /* Section name 26 Real Len, Rest Colors */
unsigned char Filename[9]; /* Listing filename (does not include ".DIR") */
/* If UL and DL paths are different, */
/* filename for upload section is "FILES" */
/* If first character is "@" then *.DIR file */
/* is found in main data files directory */
unsigned char DlPathname[31]; /* Download pathname */
unsigned char UlPathName[31]; /* Upload pathname */
unsigned char Password[16]; /* Password required */
UlRecFlagSet Flags;
unsigned char DSL; /* DSL required */
unsigned char SeeNames; /* DSL required to see uploader names */
ArFlagType ArLvl; /* AR flag required */
unsigned char NoRatioGroupNum; /* Bit 0 = Ratio disabled */
/* Bits 1-7 = Group number */
} UlRec;
/*---------------------------------------------------------------------------*/
#define FRS_NotValidated 0x01
#define FRS_OwnerRestricted 0x02
typedef struct /* Set of file flags */
{
unsigned char flag1;
} FlagRecSet; /* 1 byte used for 8 flags in set */
typedef struct /* File listing - *.DIR */
{
unsigned char Filename[13]; /* File name */
unsigned char Description[79]; /* Description */
unsigned int Nacc; /* Number of times file downloaded */
unsigned char Unused; /* Reserved */
unsigned int Blocks; /* Number of 128 byte blocks in file */
unsigned char Owner[37]; /* Uploader of file */
unsigned char Date[9]; /* Date file uploaded */
unsigned int DateN; /* Date uploaded in days since Jan 1, 1985 */
FlagRecSet Flag; /* File status */
unsigned char Points; /* File points */
}
UlfRec;
/*---------------------------------------------------------------------------*/
/* # currently defined internal shell files */
#define NUMSHELLFILES 13
#define SFRF_shellshowcall 0x01
#define SFRF_shelllogcall 0x02
typedef struct
{
DefaultYesNoType useswap; /* Swap shell setting */
unsigned char flag1;
} shellfilerec;
typedef shellfilerec /* Array of shell files */
shellfilelist[NUMSHELLFILES];
#define NUMNEWUSERQUESTS 29 /* Number of current new user questions */
typedef struct
{
unsigned char itemnum; /* Item number to ask or 0=inactive */
unsigned char required; /* Required/optional */
}
newuserquestrec;
typedef newuserquestrec /* Array of new */
newuserquestlist[NUMNEWUSERQUESTS]; /* user questions */
typedef unsigned int Range[256]; /* Range of values for all security levels */
/*****************************************************/
/* Provide for full 4D awareness (And point support) */
/*****************************************************/
typedef struct /* Fidonet Style Address (23 Bytes) */
{
unsigned int Zone; /* Zone, 1 = N. America */
unsigned int Net; /* Net, 120 = SE Michigan */
unsigned int Node; /* Node, 116 = CRIMP BBS */
unsigned int Point; /* Point, 99% of the time = 0 */
unsigned char Domain[16]; /* As in FIDONET */
}
AddressType;
/*---------------------------------------------------------------------------*/
typedef struct /* System status - STATUS.DAT */
{
unsigned char AltPath[41]; /* Alternate file path */
unsigned char DictPath[41]; /* Dictionary path */
unsigned char DefReadMsgMenu; /* Wait screen read message menu */
unsigned char dynamicmsg; /* Dynamic message numbering active */
unsigned char dynamicfile; /* Dynamic file numbering active */
unsigned char waitscreendisable; /* Wait screen activity disable */
unsigned char requiredvoting; /* Require voting when user logs on */
unsigned char automsglines; /* Auto message number of lines */
unsigned char uunewuserexpdays; /* Reserved */
unsigned char addwordsl; /* Add word to dictionary SL */
unsigned char expvalkey; /* User expired validation key (#13=None) */
unsigned char expwarning; /* # of days to give warning before expires */
unsigned char modifymailflags; /* Sl when allowed to modify mail flags */
unsigned char netmailfilerequest; /* SL for NetMail file requests */
unsigned char netmailfileattach; /* SL for NetMail file attach */
unsigned char ModemDebug; /* Modem debug information written to log */
unsigned char UseXMS; /* Use XMS memory for swap shell */
unsigned char ShowFilesOpen; /* Show Files Open on Top Screen */
unsigned char LocalSysopWindow; /* SysOp window when on locally */
unsigned char AllowSuperFast; /* Allow SHIFT password override */
unsigned char WaitSend; /* FOSSIL buffer inactive */
unsigned char OverlayEMS; /* Attempt EMS of overlays */
unsigned char EMSOverXMS; /* Use EMS over XMS memory for swap */
unsigned char DirectScreen; /* Direct screen writes */
unsigned char UseEMS; /* Use EMS memory for swap shell */
unsigned char useswap; /* Use swap shell */
unsigned char UseFossil; /* Use FOSSIL driver */
unsigned char SnowCheck; /* Snow checking active */
unsigned char BrowseDSL; /* DSL to have U/D commands on */
/* File Browse Menu */
unsigned char BbsID[9]; /* !2.6f - ID used for Qwk Packets */
unsigned char TempDlPath[41]; /* Temp File Download Path */
unsigned int MinKpost; /* Minimum K-Bytes to post */
unsigned int MinKul; /* Minimum K-Bytes to upload */
unsigned char AutoChatBufOpen; /* Auto chat buffer open */
unsigned char nettype[21]; /* Multi-user network type */
unsigned char uusystatrec2[15]; /* Reserved */
unsigned char LogonPassword; /* SL when SysOp PW #1 needed to logon */
unsigned char ReadTextMsg; /* SL when allowed to use /READ command */
unsigned char AlertChatOnly; /* Alert active only when chat on */
unsigned char genericinfo; /* Generic mode active */
unsigned char LogonPhone; /* Logon requires phone number */
unsigned char DefMsgGroup[21]; /* Default msg section group mask */
unsigned char DefFileGroup[21]; /* Default file section group mask */
unsigned int MaxQWKMsgsSection; /* Maximum QWK messages allowed per section */
unsigned int MaxQWKMsgsTotal; /* Maximum QWK messages allowed total */
unsigned char uusystatrec3[9]; /* Reserved */
unsigned char LastCaller[43]; /* Name and number of last caller */
unsigned char MenuFastKeys[21]; /* Menu fast keys (e.g. "/") */
unsigned char BoardPW[17]; /* New user password (Null=None) */
unsigned char BoardPhone[13]; /* Board phone number */
unsigned char SysopColor; /* Chat SysOp color */
unsigned char UserColor; /* Chat user color */
ArFlagType PostCallFlag; /* Post call ratio AR flag */
unsigned char NoPostCallChk; /* SL when post call ratio ignored */
unsigned char ReinitTime; /* Minutes to re-init modem when no calls */
unsigned char StartMenu; /* Starting menu for users */
unsigned char UseAutoMsg; /* Display auto-message during logon */
unsigned char LogonOffHook; /* Take phone off-hook on local logon */
unsigned char NoPointChk; /* DSL when file points ignored */
unsigned char LastDate[9]; /* Date last user logged on */
AddressType Address; /* Zone/Net/Node/Point/Domain */
unsigned char UserOn11x; /* Use USERON.BBS version 1.1x */
shellfilelist shellfile; /* Shell file information */
unsigned char uushellfile[10]; /* Reserved for shell files */
newuserquestlist newuserquest; /* New user question information */
unsigned char uunewuserquest[270]; /* Reserved */
unsigned char ActiveModemRecNum; /* Active Modem Record Number */
unsigned char MultiUserPath[41]; /* Multi-user path */
unsigned char defusereditlist; /* Default user editor list mode */
/* 0=short, 1=normal, 2=extended, 3=info */
unsigned char uusystatrec5[10]; /* Reserved */
unsigned char GfilesPath[41]; /* Main data files path */
unsigned char StoreBadLogon; /* Store bad logon info in SysOp log */
unsigned char MaxBdNum; /* Maximum number of batch DL files */
unsigned char MaxBuNum; /* Maximum number of batch UL files */
unsigned char BoardName[49]; /* Board name */
unsigned char SysopMenuSL; /* SL required for SysOp Control-Q menu */
ArFlagType SysopMenuAR; /* AR flag required from Control-Q menu */
unsigned char SysopName[37]; /* SysOp name */
unsigned char SwapPath[41]; /* Swap shell path */
unsigned char ChatPW[17]; /* Chat password */
unsigned char LastTAGVersion[21]; /* Last version of TAG to run */
unsigned char nodelistpath[41]; /* Nodelist directory */
unsigned char BoardCityState[33]; /* !2.6f Board City, State for QWK Pkt */
unsigned char QWKPath[41]; /* !2.6f QWK Path */
unsigned char RIPPath[41]; /* RIP Path */
unsigned char uusystatrec6[2193]; /* Reserved */
unsigned char SysopPW[3][17]; /* Array of SysOp passwords */
unsigned char uusystatrec7[120]; /* Reserved */
Real CallerNum; /* Total number of calls to system */
Real UlKtoday; /* K-Bytes uploaded today */
Real DlkToday; /* K-Bytes downloaded today */
Real uur1; /* Reserved */
Real uur2; /* Reserved */
Real uur3; /* Reserved */
unsigned int Users; /* Number of active users */
unsigned int ActiveToday; /* Minutes active today */
unsigned int Callstoday; /* Calls today */
unsigned int MsgPostToday; /* Public messages posted today */
unsigned int EmailToday; /* Private messages posted today */
unsigned int FbackToday; /* Feedback sent to SysOp today */
unsigned int UlToday; /* Number of uploads today */
unsigned int uuw1; /* Reserved */
unsigned int uuw2; /* Reserved */
unsigned int uuw3; /* Reserved */
unsigned int MaxUsers; /* Maximum users allowed to be active */
unsigned int ErrorsToday; /* Number of errors today */
unsigned int NusersToday; /* Number of new users today */
unsigned int DlToday; /* Number of downloads today */
int NewUserMsgTo; /* User number new user message sent to */
int uui1; /* Reserved */
int SysopMailTo; /* User number mail to "SYSOP" is sent to */
int GuestUser;
int FailedLogonMsgTo; /* Guest user number (0=None) */
int uuw5; /* Reserved */
int UsageLogDays; /* Number of days to keep USAGE.LOG */
int WaitMailUser; /* Mail waiting on wait screen (0=none) */
unsigned char UEditJumpSL; /* SL required for SysOp Control-U menu */
ArFlagType UEditJumpAR; /* AR flag required from Control-U menu */
unsigned char NoviceDisplay; /* Number of calls to display novice msg */
unsigned char NodeNumber; /* Multi-user node number */
unsigned char UEditJumpPassword; /* Use System pswd for Quick User Edit */
unsigned char ScanOnUploads; /* System permits forced scan on uploads */
unsigned int MaxTimeInBank; /* Maximum minutes in time bank */
unsigned char ShowGifRes; /* Show GIF resolution */
unsigned char CheckUploadSpace; /* Show upload drive space */
unsigned char SystemSecur; /* Full keyboard security active */
unsigned char MultiUser; /* Board in multi-user mode */
unsigned char TBmaxDeposit; /* Maximum daily time bank deposit */
unsigned char TBmaxWithdraw; /* Maximum daily time bank withdraw */
unsigned char SysopLvl; /* SL for SysOp */
unsigned char CoSysopLvl; /* SL for CoSysOp */
unsigned char uub1; /* Reserved */
unsigned char AddBbsLvl; /* SL for adding boards to bbs listing */
unsigned char EmailLvl; /* SL for sending normal private mail */
unsigned char uub2; /* Reserved */
unsigned char uub3; /* Reserved */
unsigned char SeeUnvalLvl; /* DSL for seeing unvalidated files */
unsigned char DlCoSysopLvl; /* DSL for Download CoSysOp */
unsigned char NoRatioChk; /* DSL for no ratio */
unsigned char ReadAnon; /* SL to know see anonymous real name */
unsigned char ReplyAnon; /* SL to reply to anonymous private mail */
unsigned char PublicAnonAny; /* SL to post anonymous on any public base */
unsigned char PrivateAnonAny; /* SL to send private anonymous mail */
unsigned char MaxPublicCall; /* Maximum public posts per call */
unsigned char MaxPrivCall; /* Maximum private messages per call */
unsigned char MaxFbackCall; /* Maximum feedback to SysOp per call */
unsigned char uub4; /* Reserved */
unsigned char SeePasswords; /* SL to see user passwords remotely */
unsigned char uub5; /* Reserved */
unsigned char uub6; /* Reserved */
unsigned char ComPort; /* Communications port */
unsigned char TimeOut; /* Minutes for inactivity time-out */
unsigned char TimeOutBell; /* Minutes for inactivity bell */
unsigned char Backlogdays; /* Number of days to keep SYSOP.LOG's */
unsigned char PrivilegeSL; /* Privilege SL */
unsigned char PrivilegeDSL; /* Privilege DSL */
unsigned char CDmask; /* Carrier detect mask */
unsigned char MaxLogonTries; /* Maximum logon attempts per call */
unsigned char uub7; /* Reserved */
unsigned char uub8; /* Reserved */
unsigned char UlTimePercent; /* UL time percent refund */
unsigned char MaxChats; /* Maximum chat pages per call */
unsigned char uub9; /* Reserved */
unsigned char TagLineSL; /* SL for tag line command */
unsigned char ClosedSystem; /* System closed */
unsigned char TitlePause; /* Allow [PAUSE] on welcome screen */
unsigned char LogonBulletin; /* Logon to the bulletin section */
unsigned char BlankWait; /* Blank the wait screen if no activity */
unsigned char Handles; /* Allow handles */
unsigned char AutoANSIDetect; /* Logon auto-detect ANSI */
unsigned char SecureSystem; /* Keyboard security active */
unsigned char TimePerDay; /* Time limits represent time per day */
unsigned char Mailer; /* External mailer active */
unsigned char SysopFemale; /* SysOp is female */
unsigned char scantosysoplog; /* File scans are saved in SysOp log */
Range TimeAllowed; /* SL array of time per call/per day */
Range UlDlNumRatio; /* DSL array of number of file UL ratios */
Range UlDlKratio; /* DSL array of K-Byte UL ratios */
Range CallsAllowed; /* SL array of calls allowed per day */
Range PostCall; /* SL array of posts per 1/10 call */
unsigned char AutoRIPDetect; /* Logon auto-detect RIP */
unsigned char uusystatrec8[7]; /* Reserved */
}
SystatRec;
/*---------------------------------------------------------------------------*/
#define MFSF_MenuOrCheck 0x01
#define MFSF_MenuTimeHelpDisplay 0x02
#define MFSF_MenuBoardDisplayOverride 0x04
#define MFSF_MenuNamePrompt 0x08
#define MFSF_AscIIClearBeforeMenu 0x10
#define MFSF_AnsiClearBeforeMenu 0x20
#define MFSF_RipClearBeforeMenu 0x40
typedef struct
{
/* Set of menu flags */
/* 2 bytes used for 16 flags in set */
unsigned char flag1;
unsigned char flag2;
} MenuFlagSet;
/* commandflagset flag1 */
#define CFSF_CmdOrCheck 0x01
#define CFSF_CmdHidden 0x02
#define CFSF_CmdLinkToNext 0x04
#define CFSF_AscIIClearBeforeCmd 0x08
#define CFSF_AscIIPauseAfterCmd 0x10
#define CFSF_AnsiClearBeforeCmd 0x20
#define CFSF_AnsiPauseAfterCmd 0x40
#define CFSF_RipClearBeforeCmd 0x80
/* commandflagset flag2 */
#define CFSF_RipPauseAfterCmd 0x01
#define CFSF_AnsiOnly 0x02
#define CFSF_RipOnly 0x04
typedef struct
{
/* Set of command flags */
/* 2 bytes used for 16 flags in set */
unsigned char flag1;
unsigned char flag2;
} CommandFlagSet;
typedef struct /* Menus - MENUS.LST */
{
unsigned char LongD[81]; /* Menu description (menu) -or- */
/* Long command desc (command) */
unsigned char SL; /* Security level (SL) */
unsigned char DSL; /* Download security level (DSL) */
ArFlagset ArFlags; /* AR flag set */
unsigned char UUMenu[10]; /* Reserved */
union /* Menu or command - Variant section */
{
struct /* Menu information */
{
MenuFlagSet MenuFlags; /* Menu flag set */
unsigned char MenuNum; /* Menu number */
unsigned char mPrompt[49]; /* Menu prompt unless MenuNamePrompt active */
unsigned char Password[17]; /* Menu password */
unsigned char FallBack; /* Fallback menu number */
unsigned char HelpFile[8]; /* Help file ID name */
unsigned char StartHelp; /* Starting help level 0=default */
unsigned char Location; /* Menu location */
/* (0=Main, 1=File, 2=ReadMessage) */
}
vMenu;
struct /* Command information */
{
CommandFlagSet CmdFlags; /* Command flag set */
unsigned char Pkey; /* Command PKey */
unsigned char Pdata[31]; /* Command PData */
unsigned char Shortd[33]; /* Command short description */
unsigned char CmdKey[13]; /* Command execution key */
}
vCommand;
}
Menu;
}
MenuRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Macro list - MACROS.LST */
{
int UserN; /* User number of macro owner */
unsigned char Key[4][161]; /* Text for each of the macros */
}
MacroRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Single protocols - SPROT.DAT */
{
unsigned char Key[13]; /* Execution key */
unsigned char Desc[61]; /* Description */
unsigned int MinBaud; /* Minimum baud rate to use */
unsigned int MaxBaud; /* Maximum baud rate to use */
unsigned char DSL; /* DSL required */
unsigned char TempLog[53]; /* Temp log path and name */
unsigned char UlLog[53]; /* UL log path and name */
unsigned char DlLog[53]; /* DL log path and name */
unsigned char UlString[71]; /* UL string for DOS call */
unsigned char DlString[71]; /* DL string for DOS call */
unsigned char GoodCode; /* Result codes mean good transfer */
unsigned char DlCode[6]; /* DL error level result codes */
unsigned char ULcode[6]; /* DL error level result codes */
}
SprotocolRec;
typedef struct /* Batch protocols - BPROT.DAT */
{
unsigned char Key[13]; /* Execution key */
unsigned char Desc[61]; /* Description */
unsigned int MinBaud; /* Minimum baud rate to use */
unsigned int MaxBaud; /* Maximum baud rate to use */
unsigned char DSL; /* DSL required */
unsigned char UlString[71]; /* UL string for DOS call */
unsigned char DlString[71]; /* DL string for DOS call */
unsigned char UlList[53]; /* UL file list file path and name */
unsigned char DlList[53]; /* DL file list file path and name */
unsigned char TempLog[53]; /* Temp log path and name */
unsigned char UlLog[53]; /* UL log path and name */
unsigned char DlLog[53]; /* DL log path and name */
unsigned char MaxCmdLen; /* Maximum command line length */
unsigned char PosFn; /* Position of filename in log */
unsigned char PosStatus; /* Position of status in log */
unsigned char GoodCode; /* Result codes mean good transfer */
unsigned char DlCode[6][11]; /* DL status result codes */
unsigned char ULcode[6][11]; /* UL status result codes */
}
BprotocolRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Validation information - VALIDATE.DAT */
{
unsigned char Key; /* Execution key */
unsigned char Desc[161]; /* Descrip sent to user after validation */
/* 76 max real length - Rest for color */
unsigned char SL; /* SL to set on validation */
unsigned char DSL; /* DSL to set on validation */
unsigned int Credit; /* Credit in cents to set on validation */
unsigned int Points; /* File points to set on validation */
unsigned int TimeBank; /* Time bank minutes to set on validation */
ArFlagset Ar; /* AR flags to set on validation */
FlagSet Flags; /* Special flags to set on validation */
unsigned int UnusedWord; /* Reserved */
}
ValidationRec;
/*---------------------------------------------------------------------------*/
/* eventtype flag1 */
#define ETF_UnknownEvent 0x01
#define ETF_EventIsExternal 0x02
#define ETF_EventIsActive 0x04
#define ETF_EventIsShell 0x08
#define ETF_EventIsMonthly 0x10
#define ETF_EventIsPermission 0x20
#define ETF_EventIsChat 0x40
#define ETF_EventIsSoft 0x80
/* eventtype flag2 */
#define ETF_BaudIsActive 0x01
#define ETF_SLisActive 0x02
#define ETF_DSLisActive 0x04
#define ETF_ARisActive 0x08
#define ETF_InRatioIsActive 0x10
#define ETF_TimeIsActive 0x20
#define ETF_SetARisActive 0x40
#define ETF_ClearARisActive 0x80
typedef struct
{
/* Event flags */
/* 5 bytes used for 40 flags */
unsigned char flag1;
unsigned char flag2;
unsigned char flag3;
unsigned char flag4;
unsigned char flag5;
} EventType;
typedef unsigned char EventDaysType; /* Set of event days */
/* (bits 0-6 = Sun..Sat) */
/*****************************************/
/* The Record Structure of the EventFile */
/*****************************************/
typedef struct /* Events - EVENTS.DAT */
{
EventType EventFlags; /* Kinds of Events Supported */
unsigned char EventDayOfMonth; /* If monthly, the Day of Month */
EventDaysType EventDays; /* If Daily, the Days Active */
unsigned int EventStartTime; /* Start Time in Min from Mid. */
unsigned int EventFinishTime; /* Finish Time */
unsigned char EventDesc[33]; /* Description of the Event */
unsigned char EventQualMsg[65]; /* Msg/Path if he qualifies */
unsigned char EventNotQualMsg[65]; /* Msg/Path if he doesn't */
unsigned char EventPreTime; /* Min. B4 event to rest. Call */
unsigned char EventOffHook; /* Take phone Offhook ? */
unsigned char EventLastDate[9]; /* Last Date Executed */
unsigned char EventErrorLevel; /* For Ext Event ErrorLevel */
unsigned char EventShellPath[9]; /* File for Ext Event Shell */
unsigned int LoBaud; /* Low baud rate limit */
unsigned int HiBaud; /* High baud rate limit */
unsigned char LoSL; /* Low SL limit */
unsigned char HiSL; /* High SL limit */
unsigned char LoDSL; /* Low DSL limit */
unsigned char HiDSL; /* High DSL limit */
unsigned char ARflagRequired; /* AR flag required */
unsigned int MaxTimeAllowed; /* Max Time per user this event */
unsigned char SetARflag; /* AR Flag to Set */
unsigned char ClearARflag; /* AR Flag to Clear */
unsigned char EventUnused[128]; /* Reserved */
}
EventRecordType;
/*---------------------------------------------------------------------------*/
#define MAXMODEMRESULTCODES 45 /* Maximum number of modem result codes */
typedef unsigned char modemresulttype; /* Modem result type */
#define RESULTERROR 0 /* Command error */
#define RESULTOK 1 /* Command accepted */
#define RESULTRING 2 /* Phone ringing */
#define RESULTNOCARRIER 3 /* Connect attempt failed */
#define RESULTCONNECT 4 /* Connect succcessful */
#define RESULTWAITSCREEN 5 /* Go to wait screen */
#define RESULTLOCALLOGON 6 /* Logcal logon */
#define RESULTSHELLBATCH 7 /* Shell to batch file */
#define RESULTEXITERRORLEVEL 8 /* Exit system with error level */
#define RESULTEXITSYSTEM 9 /* Exit system with error level 255 */
#define RESULTNODIALTONE 10 /* Reserved */
#define RESULTRINGING 11 /* Reserved */
#define RESULTBUSY 12 /* Reserved */
#define RESULTNOANSWER 13 /* Reserved */
#define RESULTVOICE 14 /* Reserved */
typedef struct
{
modemresulttype typeofresult; /* Type of result */
unsigned char result[51]; /* Test of result */
long connectrate; /* Connect rate modem to modem */
long realrate; /* Real rate computer to modem */
long controlcode; /* Error level or startup code */
unsigned char fullduplex; /* Full duplex operation? */
unsigned char errorcorrecting; /* Error correcting modem? */
unsigned char Unused[8]; /* Reserved */
}
resultrec;
/**********************************************************/
/* Modem string mapping codes: */
/* */
/* Char Name Action */
/* ----- --------------- ------------------------------ */
/* ^ Carat Control code of next character */
/* | Pipe, Split Bar Carriage return sent */
/* ` Accent Mark 1/20th second delay */
/* ~ Tilde 1/2 second delay */
/* ^- Carat & Minus Lower DTR line */
/* ^+ Carat & Plus Raise DTR line */
/**********************************************************/
typedef struct /* Modem record - MODEM.DAT */
{
unsigned char uuunused; /* Unused */
unsigned char modemdescription[65]; /* Description on modem */
unsigned char characterdelay; /* Miliseconds */
unsigned char ctsrts; /* Hardware flow control active */
unsigned char samering; /* Reserved */
unsigned char nocollide; /* Reserved */
unsigned char numberresults; /* Number of modem result codes defined */
resultrec result[MAXMODEMRESULTCODES]; /* Array of results */
unsigned char preinitialization[65]; /* Pre-initialization string */
unsigned char initialization[65]; /* Initialization string */
unsigned char answer[65]; /* Answer string */
unsigned char busy[65]; /* Busy string */
unsigned char hangupprimary[65]; /* Hangup primary string */
unsigned char hangupsecondary[65]; /* Hangup secondard string */
unsigned char afterhangup[65]; /* After hangup string */
unsigned char exitsystem[65]; /* Exit system string */
unsigned char predial[65]; /* Reserved */
unsigned char dialprefix[65]; /* Reserved */
unsigned char dialsuffix[65]; /* Reserved */
long waitbaud; /* Init modem speed */
unsigned char lockedbaud; /* Is baud rate locked - Not used by T.A.G. */
unsigned char ecefficiency; /* Error correcting efficiency */
unsigned char ncefficiency; /* Normal connect efficiency */
unsigned char Unused[249]; /* Reserved */
}
modemrec;
/*---------------------------------------------------------------------------*/
#define MAXSUBOPS 10 /* Maximum number of message section SubOps */
typedef unsigned char NoYesForcedType; /* Message section type */
#define NO 0 /* Anonymous messages not allowed */
#define YES 1 /* Anonymous messages allowed */
#define FORCED 2 /* Messages forced anonymous */
#define ATUNUSED 3 /* Reserved */
/************************************/
/* Standard Attributes for Messages */
/************************************/
/* messageattrflagset - flag1 */
#define MAFS_Private 0x01
#define MAFS_Crash 0x02
#define MAFS_Received 0x04
#define MAFS_Sent 0x08
#define MAFS_FileAttached 0x10
#define MAFS_KillSent 0x20
#define MAFS_Local 0x40
#define MAFS_ReturnReceiptRequest 0x80
/* messageattrflagset - flag2 */
#define MAFS_IsReturnReceipt 0x01
#define MAFS_AuditRequest 0x02
#define MAFS_InTransit 0x04
#define MAFS_Orphan 0x08
#define MAFS_HoldForPickup 0x10
#define MAFS_Fido_UnusedBit10 0x20
#define MAFS_FileRequest 0x40
#define MAFS_Fido_FileUpdateRequest 0x80
/* messageattrflagset - flag3 */
#define MAFS_Deleted 0x01
#define MAFS_Ra_NetmailPendingExport 0x02
#define MAFS_NetMailMessage 0x04
#define MAFS_Ra_EchomailPendingExport 0x08
#define MAFS_Ra_UnusedMsgBit7 0x10
#define MAFS_Ra_UnusedNetBit7 0x20
#define MAFS_Jam_ArchiveSent 0x40
#define MAFS_Jam_Immediate 0x80
/* messageattrflagset - flag4 */
#define MAFS_Jam_Direct 0x01
#define MAFS_Jam_Gate 0x02
#define MAFS_Jam_ConfirmRequest 0x04
#define MAFS_Jam_ForcePickUp 0x08
#define MAFS_Jam_TypeLocal 0x10
#define MAFS_Jam_TypeEcho 0x20
#define MAFS_Jam_NoDisplay 0x40
#define MAFS_Jam_Locked 0x80
typedef struct
{
/* 4 bytes used for 32 flags */
unsigned char flag1;
unsigned char flag2;
unsigned char flag3;
unsigned char flag4;
} MessageAttrFlagSet;
typedef unsigned char MBstyle; /* Message section style flags */
#define UUMBBSTYLE 0 /* Was For Private Mail Board */
#define LOCALSTYLE 1 /* Local */
#define ECHOSTYLE 2 /* Echomail */
#define NETMAILSTYLE 3 /* Netmail */
#define GROUPSTYLE 4 /* Groupmail */
typedef unsigned char MBtype; /* Message section type flags */
#define UUMBTYPE 0 /* Was For Netmail Board */
#define FIDOFORMAT 1 /* Fido 1.Msg Format */
#define RAFORMAT 2 /* Remote Access Format */
#define JAMFORMAT 3 /* Jam Format */
typedef struct /* Message boards - MBOARDS.DAT */
{
unsigned char Name[65]; /* Name of the Board */
MBstyle Mstyle; /* Local/Echo/Netmail */
MBtype Mtype; /* Message Board Type */
unsigned char RaBoard; /* Board Number if RA/QBBS type */
unsigned char Path[65]; /* Directory PathName */
unsigned char OriginLine[66]; /* Origin Line */
ArFlagType AccessAR; /* AR flag Required to Access */
ArFlagType PostAR; /* AR flag required to Post */
unsigned char AccessSL; /* Security Level Required to Access */
unsigned char PostSL; /* Security Level Required to Post */
unsigned int MsgCount; /* Count of Msgs on the Board */
unsigned int MaxMsgs; /* Max Number of Messages */
unsigned int uuMaxOld; /* Max Days for Messages */
unsigned char Password[17]; /* Password Required */
NoYesForcedType Anon; /* Anonymous Type */
unsigned char AllowAnsi; /* Should we allow ANSI */
NoYesForcedType AllowHandle; /* Should we allow handles */
/*********************************************************/
/* Message Board SubOpts List - Up to 10 - User Numbers */
/*********************************************************/
int SubOps[MAXSUBOPS+1]; /* SubOps - Item 0 = How many */
unsigned char EchoTag[33]; /* Echo Tag for Writing ECHOMAIL.BBS */
unsigned char UseOtherAddress; /* Use something other than system */
unsigned char JamBoard[9]; /* JAM 8 character file name */
unsigned char AskPrivate; /* Ask if in area private message (echos) */
unsigned char Reserved[13]; /* Unused */
unsigned char MenuNumber; /* Default read message number */
/* (if 0, use system default) */
unsigned char PrePostFile[9]; /* Prepost file name */
unsigned char MinMsgs; /* Minimum number of messages */
unsigned char QuoteStart[71]; /* Override starting quote */
unsigned char QuoteEnd[71]; /* Override ending quote */
unsigned int QwkConf; /* QWK Conference Number */
unsigned char GroupNumber; /* What group the board belongs */
AddressType OtherAddress; /* The Address to use! */
NoYesForcedType RestrictPrivate; /* Private mail status */
MessageAttrFlagSet DefaultAttr; /* Default message flags */
unsigned char QwkName[11]; /* QWK Conference Name */
unsigned char Filter7Bit; /* Only allow 7 bit characters */
}
MboardType;
/*---------------------------------------------------------------------------*/
typedef unsigned char LastOnType[8][161]; /* Last Few Callers - LASTON.DAT */
/*---------------------------------------------------------------------------*/
#define MAXBITS 1024 /* Means a 128 byte bit set, bits 0 to 1023 */
typedef unsigned char bitSetType[MAXBITS / 8]; /* Board Flags - ?ZSCAN.DAT */
/*---------------------------------------------------------------------------*/
typedef struct /* Who's online - $WHO.DAT */
{
unsigned char Active;
unsigned char Node; /* Node number for this rec */
unsigned char Available; /* Is he available for anything */
unsigned char Uname[37]; /* Users Name */
unsigned char CityState[31]; /* City and State */
long Baud; /* Baud Rate */
unsigned char Paging; /* Paging Node Number */
unsigned char InPrivateChat; /* Node in private chat with */
unsigned char InGroupChat; /* Is he in Group Chat */
unsigned char Desc[65]; /* Long Description */
}
WhoRecType;
/*---------------------------------------------------------------------------*/
typedef struct /* USERON.BBS file version 1.00 */
{
unsigned char Name[36]; /* User name */
unsigned char Line; /* Node number */
unsigned int Baud; /* Connect rate */
unsigned char City[26]; /* City/State */
unsigned char DoNotDisturb; /* Do not disturb */
unsigned char Status; /* Status */
}
UserOnType100;
/*---------------------------------------------------------------------------*/
typedef struct /* USERON.BBS file version 1.1x */
{
unsigned char Name[36]; /* Real name */
unsigned char Handle[36]; /* User name */
unsigned char Line; /* Node number */
unsigned int Baud; /* Connect rate */
unsigned char City[26]; /* City/State */
unsigned char DoNotDisturb; /* Do not disturb */
unsigned char Status; /* Status */
unsigned char Attribute; /* Attribute */
}
UserOnType11x;
/*---------------------------------------------------------------------------*/
#endif