// This may look like C code, but it is really -*- C++ -*- // ------------------------------------------------------------------ // The Goldware Library // Copyright (C) 1994 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.0g // ------------------------------------------------------------------ #ifndef __gs_fm10g_h #define __gs_fm10g_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; // ------------------------------------------------------------------ #define DATATYPE_CF 0x0102 #define DATATYPE_NO 0x0202 #define DATATYPE_AD 0x0401 #define DATATYPE_AE 0x0402 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 : 1; /* Bit 12-13 */ word : 1; /* Bit 12-13 */ word arrivalDate : 1; /* Bit 14 */ word sysopRead : 1; /* Bit 15 */ } areaOptionsType; #define MAX_AKAS 16 #define MAX_NETAKAS 11 #define MAX_USERS 16 #define MAX_UPLREQ 16 #define MAX_MATCH 16 typedef nodeFakeType akaListType[MAX_AKAS]; 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 : 1; word : 1; 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 : 1; /* Bit 2 */ word : 1; /* Bit 3 */ word autoDiscArea : 1; /* Bit 4 */ word autoDiscDel : 1; /* Bit 5 has temp. no effect, rec is always deleted */ word : 1; /* Bit 6 */ word : 1; /* Bit 7 */ word : 1; /* Bit 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 : 1; word : 1; word : 1; word unconditional : 1; /* BIT 4 */ word : 11; } uplOptType; typedef struct { char userName[36]; char reserved[28]; } userType; typedef struct { ftn_addr node; char program[9]; char password[17]; char fileName[13]; char fileType; dword groups; char originAka; uplOptType options; char reserved[9]; } uplinkReqType; typedef struct { word valid; word zone; word net; word node; } akaMatchNodeType; typedef struct { akaMatchNodeType amNode; word aka; } akaMatchType; typedef struct { char versionMajor; char versionMinor; int32_t creationDate; dword key; dword reservedKey; dword relKey1; dword relKey2; char reserved1[22]; mgrOptionsType mgrOptions; akaListType akaList; word netmailBoard[MAX_NETAKAS]; word reservedNet[16-MAX_NETAKAS]; genOptionsType genOptions; mbOptionsType mbOptions; mailOptionsType mailOptions; word maxPktSize; word reserved2; word mailer; word bbsProgram; word maxBundleSize; word extraHandles; /* 0-235 */ word autoRenumber; word bufSize; word ftBufSize; word allowedNumNetmail; word logInfo; word logStyle; char reserved3[68]; word colorSet; char sysopName[36]; word defaultArc; char reserved4[24]; char tearType; char tearLine[25]; pathType summaryLogName; word recBoard; word badBoard; word dupBoard; char topic1[16]; char 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; char reserved5[83]; areaOptionsType optionsAKA[MAX_NETAKAS]; /* 'areaOptionsType' below */ char groupsQBBS[MAX_NETAKAS]; word templateSecQBBS[MAX_NETAKAS]; char templateFlagsQBBS[MAX_NETAKAS][4]; char attr2RA[MAX_NETAKAS]; char aliasesQBBS[MAX_NETAKAS]; word groupRA[MAX_NETAKAS]; word altGroupRA[MAX_NETAKAS][3]; char qwkNameSBBS[MAX_NETAKAS][13]; word minAgeSBBS[MAX_NETAKAS]; word daysRcvdAKA[MAX_NETAKAS]; char replyStatSBBS[MAX_NETAKAS]; word attrSBBS[MAX_NETAKAS]; char groupDescr[26][27]; char reserved6[9]; char msgKindsRA[MAX_NETAKAS]; char attrRA[MAX_NETAKAS]; word readSecRA[MAX_NETAKAS]; char readFlagsRA[MAX_NETAKAS][4]; word writeSecRA[MAX_NETAKAS]; char writeFlagsRA[MAX_NETAKAS][4]; word sysopSecRA[MAX_NETAKAS]; char sysopFlagsRA[MAX_NETAKAS][4]; word daysAKA[MAX_NETAKAS]; word msgsAKA[MAX_NETAKAS]; char descrAKA[MAX_NETAKAS][51]; userType users[MAX_USERS]; akaMatchType akaMatch[MAX_MATCH]; char reserved7[2048-10*MAX_MATCH]; uplinkReqType uplinkReq[MAX_UPLREQ]; } 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 signature; word writeLevel; areaNameType areaName; char comment[COMMENT_LEN]; areaOptionsType options; word boardNumRA; char msgBaseType; char msgBasePath[MB_PATH_LEN]; word board; char originLine[ORGLINE_LEN]; word address; dword group; word alsoSeenBy; word msgs; word days; word daysRcvd; ftn_addr exp[MAX_FORWARD]; word readSecRA; char flagsRdNotRA[4]; char flagsRdRA[4]; word writeSecRA; char flagsWrNotRA[4]; char flagsWrRA[4]; word sysopSecRA; char flagsSysRA[4]; char flagsSysNotRA[4]; word templateSecQBBS; char flagsTemplateQBBS[4]; char reserved2; word netReplyBoardRA; char boardTypeRA; char attrRA; char attr2RA; word groupRA; word altGroupRA[3]; char msgKindsRA; char qwkName[13]; word minAgeSBBS; word attrSBBS; char replyStatSBBS; char groupsQBBS; char aliasesQBBS; } rawEchoType; // ------------------------------------------------------------------ #if defined(GOLD_CANPACK) #pragma pack() #endif // ------------------------------------------------------------------ #endif // ------------------------------------------------------------------