// This may look like C code, but it is really -*- C++ -*- // ------------------------------------------------------------------ // The Goldware Library // Copyright (C) 1996 Folkert J. Wijnstra // Copyright (C) 1990-1999 Odinn Sorensen // ------------------------------------------------------------------ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Library General Public License for more details. // // You should have received a copy of the GNU Library General Public // License along with this program; if not, write to the Free // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, // MA 02111-1307, USA // ------------------------------------------------------------------ // $Id$ // ------------------------------------------------------------------ // File structures for FMail 1.16 // ------------------------------------------------------------------ #ifndef __gs_fm116_h #define __gs_fm116_h // ------------------------------------------------------------------ #include // ------------------------------------------------------------------ #if defined(GOLD_CANPACK) #pragma pack(1) #endif // ------------------------------------------------------------------ typedef struct { char programName[46]; word memRequired; } archiverInfo; typedef char pathType[48]; typedef struct { ftn_addr nodeNum; word fakeNet; } nodeFakeType; // ------------------------------------------------------------------ // File header structure #define DATATYPE_CF 0x0102 // not used yet #define DATATYPE_NO 0x0202 // node file #define DATATYPE_AD 0x0401 // area file for echo mail defaults #define DATATYPE_AE 0x0402 // area file for echo mail typedef struct { char versionString[32]; // Always starts with 'FMail' word revNumber; // Is now 0x0100 word dataType; // See #defines above word headerSize; int32_t creationDate; int32_t lastModified; word totalRecords; word recordSize; } headerType; // ------------------------------------------------------------------ // The structure below is used by the Areas File and (only partly) // by the Config File typedef struct { word active : 1; /* Bit 0 */ word tinySeenBy : 1; /* Bit 1 */ word security : 1; /* Bit 2 */ word : 1; /* Bit 3 */ word allowPrivate: 1; /* Bit 4 */ word impSeenBy : 1; /* Bit 5 */ word checkSeenBy : 1; /* Bit 6 */ word : 1; /* Bit 7 */ word local : 1; /* Bit 8 */ word disconnected: 1; /* Bit 9 */ word _reserved : 1; /* Bit 10 */ word allowAreafix: 1; /* Bit 11 */ word : 2; /* Bit 12-13 */ word arrivalDate : 1; /* Bit 14 */ word sysopRead : 1; /* Bit 15 */ } areaOptionsType; /* ********** FMAIL.CFG ********** */ #define MAX_AKAS 32 #define MAX_AKAS_F 64 #define MAX_AKAS_OLD 16 #define MAX_NA_OLD 11 #define MAX_NETAKAS 32 #define MAX_NETAKAS_F 64 #define MAX_USERS 16 #define MAX_UPLREQ 32 #define MAX_MATCH 16 // not used yet typedef nodeFakeType _akaListType[MAX_AKAS_OLD]; typedef nodeFakeType akaListType[MAX_AKAS_F]; typedef struct { word useEMS : 1; /* BIT 0 */ word checkBreak : 1; /* BIT 1 */ word swap : 1; /* BIT 2 */ word swapEMS : 1; /* BIT 3 */ word swapXMS : 1; /* BIT 4 */ word : 1; word monochrome : 1; /* BIT 6 */ word commentFFD : 1; /* BIT 7 */ word PTAreasBBS : 1; /* BIT 8 */ word commentFRA : 1; /* BIT 9 */ word : 1; /* BIT 10 */ word incBDRRA : 1; /* BIT 11 */ word : 1; /* BIT 12 */ word : 2; word _RA2 : 1; /* BIT 15 */ } genOptionsType; typedef struct { word removeNetKludges : 1; /* Bit 0 */ word : 1; word checkPktDest : 1; /* Bit 2 */ word : 1; word createSema : 1; /* Bit 4 */ word : 1; word warnNewMail : 1; /* bit 6 */ word killBadFAtt : 1; /* Bit 7 */ word dupDetection : 1; /* Bit 8 */ word ignoreMSGID : 1; /* Bit 9 */ word ARCmail060 : 1; /* Bit 10 */ word extNames : 1; /* Bit 11 */ word persNetmail : 1; /* Bit 12 */ word privateImport : 1; /* Bit 13 */ word keepExpNetmail : 1; /* Bit 14 */ word killEmptyNetmail : 1; /* Bit 15 */ } mailOptionsType; typedef struct { word sortNew : 1; /* bit 0 */ word sortSubject : 1; /* bit 1 */ word updateChains : 1; /* bit 2 */ word reTear : 1; /* bit 3 */ word : 1; /* bit 4 */ word : 1; /* bit 5 */ word removeRe : 1; /* bit 6 */ word removeLfSr : 1; /* bit 7 */ word scanAlways : 1; /* bit 8 */ word scanUpdate : 1; /* bit 9 */ word multiLine : 1; /* bit 10 */ word : 1; /* bit 11 */ word quickToss : 1; /* bit 12 */ word : 1; /* bit 13 */ word : 1; /* bit 14 */ word sysopImport : 1; /* bit 15 */ } mbOptionsType; typedef struct { word keepRequest : 1; /* Bit 0 */ word keepReceipt : 1; /* Bit 1 */ word : 2; /* Bit 2-3 */ word autoDiscArea : 1; /* Bit 4 */ word autoDiscDel : 1; /* Bit 5 has temp. no effect, rec is always deleted */ word : 3; /* Bit 6-8 */ word allowAddAll : 1; /* Bit 9 */ word allowActive : 1; /* Bit 10 */ word : 1; /* Bit 11 */ word allowPassword: 1; /* Bit 12 */ word allowPktPwd : 1; /* Bit 13 */ word allowNotify : 1; /* Bit 14 */ word allowCompr : 1; /* Bit 15 */ } mgrOptionsType; typedef struct { word addPlusPrefix : 1; /* BIT 0 */ word : 3; word unconditional : 1; /* BIT 4 */ word : 11; } uplOptType; typedef struct { char userName[36]; byte reserved[28]; } userType; typedef struct { ftn_addr node; char program[9]; byte password[17]; char fileName[13]; byte fileType; dword groups; byte originAka; uplOptType options; byte reserved[9]; } uplinkReqType; typedef struct { word valid; word zone; word net; word node; } akaMatchNodeType; typedef struct { akaMatchNodeType amNode; word aka; } akaMatchType; typedef struct { byte versionMajor; byte versionMinor; int32_t creationDate; dword key; dword reservedKey; dword relKey1; dword relKey2; byte reserved1[22]; mgrOptionsType mgrOptions; _akaListType _akaList; word _netmailBoard[MAX_NA_OLD]; word _reservedNet[16-MAX_NA_OLD]; genOptionsType genOptions; mbOptionsType mbOptions; mailOptionsType mailOptions; word maxPktSize; word kDupRecs; word mailer; word bbsProgram; word maxBundleSize; word extraHandles; /* 0-235 */ word autoRenumber; word bufSize; word ftBufSize; word allowedNumNetmail; word logInfo; word logStyle; byte reserved2[68]; word colorSet; char sysopName[36]; word defaultArc; word _adiscDaysNode; word _adiscDaysPoint; word _adiscSizeNode; word _adiscSizePoint; byte reserved3[16]; byte tearType; char tearLine[25]; pathType summaryLogName; word recBoard; word badBoard; word dupBoard; byte topic1[16]; byte topic2[16]; pathType bbsPath; pathType netPath; pathType sentPath; pathType rcvdPath; pathType inPath; pathType outPath; pathType securePath; pathType logName; pathType swapPath; pathType semaphorePath; pathType pmailPath; pathType areaMgrLogName; pathType autoRAPath; pathType autoFolderFdPath; pathType autoAreasBBSPath; pathType autoGoldEdAreasPath; archiverInfo unArc; archiverInfo unZip; archiverInfo unLzh; archiverInfo unPak; archiverInfo unZoo; archiverInfo unArj; archiverInfo unSqz; archiverInfo GUS; archiverInfo arc; archiverInfo zip; archiverInfo lzh; archiverInfo pak; archiverInfo zoo; archiverInfo arj; archiverInfo sqz; archiverInfo customArc; pathType autoFMail102Path; byte reserved4[35]; areaOptionsType _optionsAKA[MAX_NA_OLD]; byte _groupsQBBS[MAX_NA_OLD]; word _templateSecQBBS[MAX_NA_OLD]; byte _templateFlagsQBBS[MAX_NA_OLD][4]; byte _attr2RA[MAX_NA_OLD]; byte _aliasesQBBS[MAX_NA_OLD]; word _groupRA[MAX_NA_OLD]; word _altGroupRA[MAX_NA_OLD][3]; byte _qwkName[MAX_NA_OLD][13]; word _minAgeSBBS[MAX_NA_OLD]; word _daysRcvdAKA[MAX_NA_OLD]; byte _replyStatSBBS[MAX_NA_OLD]; word _attrSBBS[MAX_NA_OLD]; byte groupDescr[26][27]; byte reserved5[9]; byte _msgKindsRA[MAX_NA_OLD]; byte _attrRA[MAX_NA_OLD]; word _readSecRA[MAX_NA_OLD]; byte _readFlagsRA[MAX_NA_OLD][4]; word _writeSecRA[MAX_NA_OLD]; byte _writeFlagsRA[MAX_NA_OLD][4]; word _sysopSecRA[MAX_NA_OLD]; byte _sysopFlagsRA[MAX_NA_OLD][4]; word _daysAKA[MAX_NA_OLD]; word _msgsAKA[MAX_NA_OLD]; byte _descrAKA[MAX_NA_OLD][51]; userType users[MAX_USERS]; akaMatchType akaMatch[MAX_MATCH]; // not used yet byte reserved6[1040-10*MAX_MATCH]; pathType sentEchoPath; archiverInfo preUnarc; archiverInfo postUnarc; archiverInfo preArc; archiverInfo postArc; archiverInfo unUc2; archiverInfo unRar; archiverInfo resUnpack[6]; archiverInfo uc2; archiverInfo rar; archiverInfo resPack[6]; uplinkReqType uplinkReq[MAX_UPLREQ+32]; archiverInfo unArc32; archiverInfo unZip32; archiverInfo unLzh32; archiverInfo unPak32; archiverInfo unZoo32; archiverInfo unArj32; archiverInfo unSqz32; archiverInfo unUc232; archiverInfo unRar32; archiverInfo GUS32; archiverInfo resUnpack32[6]; archiverInfo preUnarc32; archiverInfo postUnarc32; archiverInfo arc32; archiverInfo zip32; archiverInfo lzh32; archiverInfo pak32; archiverInfo zoo32; archiverInfo arj32; archiverInfo sqz32; archiverInfo uc232; archiverInfo rar32; archiverInfo customArc32; archiverInfo resPack32[6]; archiverInfo preArc32; archiverInfo postArc32; byte descrAKA[MAX_NETAKAS][51]; byte qwkName[MAX_NETAKAS][13]; areaOptionsType optionsAKA[MAX_NETAKAS]; byte msgKindsRA[MAX_NETAKAS]; word daysAKA[MAX_NETAKAS]; word msgsAKA[MAX_NETAKAS]; byte groupsQBBS[MAX_NETAKAS]; byte attrRA[MAX_NETAKAS]; byte attr2RA[MAX_NETAKAS]; word attrSBBS[MAX_NETAKAS]; byte aliasesQBBS[MAX_NETAKAS]; word groupRA[MAX_NETAKAS]; word altGroupRA[MAX_NETAKAS][3]; word minAgeSBBS[MAX_NETAKAS]; word daysRcvdAKA[MAX_NETAKAS]; byte replyStatSBBS[MAX_NETAKAS]; word readSecRA[MAX_NETAKAS]; byte readFlagsRA[MAX_NETAKAS][8]; word writeSecRA[MAX_NETAKAS]; byte writeFlagsRA[MAX_NETAKAS][8]; word sysopSecRA[MAX_NETAKAS]; byte sysopFlagsRA[MAX_NETAKAS][8]; word templateSecQBBS[MAX_NETAKAS]; byte templateFlagsQBBS[MAX_NETAKAS][8]; byte reserved7[512]; word netmailBoard[MAX_NETAKAS_F]; akaListType akaList; } configType; #define MAX_FORWARD 64 #define MB_PATH_LEN_OLD 19 #define MB_PATH_LEN 61 #define ECHONAME_LEN_090 25 #define ECHONAME_LEN 51 #define COMMENT_LEN 51 #define ORGLINE_LEN 59 typedef char areaNameType[ECHONAME_LEN]; typedef struct { word tossedTo : 1; /* BIT 0 */ word : 15; /* BIT 1-15 */ } areaStatType; typedef struct { word signature; // contains "AE" for echo areas in FMAIL.AR and // "AD" for default settings in FMAIL.ARD word writeLevel; areaNameType areaName; char comment[COMMENT_LEN]; areaOptionsType options; word boardNumRA; byte msgBaseType; char msgBasePath[MB_PATH_LEN]; word board; char originLine[ORGLINE_LEN]; word address; dword group; word _alsoSeenBy; // obsolete: see the 32-bit alsoSeenBy below word msgs; word days; word daysRcvd; ftn_addr exp[MAX_FORWARD]; word readSecRA; byte flagsRdRA[4]; byte flagsRdNotRA[4]; word writeSecRA; byte flagsWrRA[4]; byte flagsWrNotRA[4]; word sysopSecRA; byte flagsSysRA[4]; byte flagsSysNotRA[4]; word templateSecQBBS; byte flagsTemplateQBBS[4]; byte _internalUse; word netReplyBoardRA; byte boardTypeRA; byte attrRA; byte attr2RA; word groupRA; word altGroupRA[3]; byte msgKindsRA; byte qwkName[13]; word minAgeSBBS; word attrSBBS; byte replyStatSBBS; byte groupsQBBS; byte aliasesQBBS; dword lastMsgTossDat; dword lastMsgScanDat; dword alsoSeenBy; areaStatType stat; byte reserved[180]; } rawEchoType116; // ------------------------------------------------------------------ #if defined(GOLD_CANPACK) #pragma pack() #endif // ------------------------------------------------------------------ #endif // ------------------------------------------------------------------