1 // This may look like C code, but it is really -*- C++ -*- 2 3 // ------------------------------------------------------------------ 4 // The Goldware Library 5 // Copyright (C) 1994 Folkert J. Wijnstra 6 // Copyright (C) 1990-1999 Odinn Sorensen 7 // ------------------------------------------------------------------ 8 // This library is free software; you can redistribute it and/or 9 // modify it under the terms of the GNU Library General Public 10 // License as published by the Free Software Foundation; either 11 // version 2 of the License, or (at your option) any later version. 12 // 13 // This library is distributed in the hope that it will be useful, 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 // Library General Public License for more details. 17 // 18 // You should have received a copy of the GNU Library General Public 19 // License along with this program; if not, write to the Free 20 // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21 // MA 02111-1307, USA 22 // ------------------------------------------------------------------ 23 // $Id: gs_fm10g.h,v 1.2 2005/10/20 18:13:24 ssianky Exp $ 24 // ------------------------------------------------------------------ 25 // File structures for FMail 1.0g 26 // ------------------------------------------------------------------ 27 28 #ifndef __gs_fm10g_h 29 #define __gs_fm10g_h 30 31 32 // ------------------------------------------------------------------ 33 34 #include <gftnall.h> 35 36 37 // ------------------------------------------------------------------ 38 39 #if defined(GOLD_CANPACK) 40 #pragma pack(1) 41 #endif 42 43 44 // ------------------------------------------------------------------ 45 46 typedef struct { 47 char programName[46]; 48 word memRequired; 49 } archiverInfo; 50 51 typedef char pathType[48]; 52 53 typedef struct { 54 ftn_addr nodeNum; 55 word fakeNet; 56 } nodeFakeType; 57 58 59 // ------------------------------------------------------------------ 60 61 #define DATATYPE_CF 0x0102 62 #define DATATYPE_NO 0x0202 63 #define DATATYPE_AD 0x0401 64 #define DATATYPE_AE 0x0402 65 66 typedef struct { 67 char versionString[32]; // Always starts with 'FMail' 68 word revNumber; // Is now 0x0100 69 word dataType; // See #defines above 70 word headerSize; 71 int32_t creationDate; 72 int32_t lastModified; 73 word totalRecords; 74 word recordSize; 75 } headerType; 76 77 78 // ------------------------------------------------------------------ 79 // The structure below is used by the Areas File and (only partly) 80 // by the Config File 81 82 typedef struct { 83 word active : 1; /* Bit 0 */ 84 word tinySeenBy : 1; /* Bit 1 */ 85 word security : 1; /* Bit 2 */ 86 word : 1; /* Bit 3 */ 87 word allowPrivate: 1; /* Bit 4 */ 88 word impSeenBy : 1; /* Bit 5 */ 89 word checkSeenBy : 1; /* Bit 6 */ 90 word : 1; /* Bit 7 */ 91 word local : 1; /* Bit 8 */ 92 word disconnected: 1; /* Bit 9 */ 93 word reserved : 1; /* Bit 10 */ 94 word allowAreafix: 1; /* Bit 11 */ 95 word : 1; /* Bit 12-13 */ 96 word : 1; /* Bit 12-13 */ 97 word arrivalDate : 1; /* Bit 14 */ 98 word sysopRead : 1; /* Bit 15 */ 99 } areaOptionsType; 100 101 #define MAX_AKAS 16 102 #define MAX_NETAKAS 11 103 #define MAX_USERS 16 104 #define MAX_UPLREQ 16 105 #define MAX_MATCH 16 106 107 typedef nodeFakeType akaListType[MAX_AKAS]; 108 109 typedef struct { 110 word useEMS : 1; /* BIT 0 */ 111 word checkBreak : 1; /* BIT 1 */ 112 word swap : 1; /* BIT 2 */ 113 word swapEMS : 1; /* BIT 3 */ 114 word swapXMS : 1; /* BIT 4 */ 115 word : 1; 116 word monochrome : 1; /* BIT 6 */ 117 word commentFFD : 1; /* BIT 7 */ 118 word PTAreasBBS : 1; /* BIT 8 */ 119 word commentFRA : 1; /* BIT 9 */ 120 word : 1; /* BIT 10 */ 121 word incBDRRA : 1; /* BIT 11 */ 122 word : 1; /* BIT 12 */ 123 word : 1; 124 word : 1; 125 word _RA2 : 1; /* BIT 15 */ 126 } genOptionsType; 127 128 typedef struct { 129 word removeNetKludges : 1; /* Bit 0 */ 130 word : 1; 131 word checkPktDest : 1; /* Bit 2 */ 132 word : 1; 133 word createSema : 1; /* Bit 4 */ 134 word : 1; 135 word warnNewMail : 1; /* bit 6 */ 136 word killBadFAtt : 1; /* Bit 7 */ 137 word dupDetection : 1; /* Bit 8 */ 138 word ignoreMSGID : 1; /* Bit 9 */ 139 word ARCmail060 : 1; /* Bit 10 */ 140 word extNames : 1; /* Bit 11 */ 141 word persNetmail : 1; /* Bit 12 */ 142 word privateImport : 1; /* Bit 13 */ 143 word keepExpNetmail : 1; /* Bit 14 */ 144 word killEmptyNetmail : 1; /* Bit 15 */ 145 } mailOptionsType; 146 147 typedef struct { 148 word sortNew : 1; /* bit 0 */ 149 word sortSubject : 1; /* bit 1 */ 150 word updateChains : 1; /* bit 2 */ 151 word reTear : 1; /* bit 3 */ 152 word : 1; /* bit 4 */ 153 word : 1; /* bit 5 */ 154 word removeRe : 1; /* bit 6 */ 155 word removeLfSr : 1; /* bit 7 */ 156 word scanAlways : 1; /* bit 8 */ 157 word scanUpdate : 1; /* bit 9 */ 158 word multiLine : 1; /* bit 10 */ 159 word : 1; /* bit 11 */ 160 word quickToss : 1; /* bit 12 */ 161 word : 1; /* bit 13 */ 162 word : 1; /* bit 14 */ 163 word sysopImport : 1; /* bit 15 */ 164 } mbOptionsType; 165 166 typedef struct { 167 word keepRequest : 1; /* Bit 0 */ 168 word keepReceipt : 1; /* Bit 1 */ 169 word : 1; /* Bit 2 */ 170 word : 1; /* Bit 3 */ 171 word autoDiscArea : 1; /* Bit 4 */ 172 word autoDiscDel : 1; /* Bit 5 has temp. no effect, rec is always deleted */ 173 word : 1; /* Bit 6 */ 174 word : 1; /* Bit 7 */ 175 word : 1; /* Bit 8 */ 176 word allowAddAll : 1; /* Bit 9 */ 177 word allowActive : 1; /* Bit 10 */ 178 word : 1; /* Bit 11 */ 179 word allowPassword: 1; /* Bit 12 */ 180 word allowPktPwd : 1; /* Bit 13 */ 181 word allowNotify : 1; /* Bit 14 */ 182 word allowCompr : 1; /* Bit 15 */ 183 } mgrOptionsType; 184 185 typedef struct { 186 word addPlusPrefix : 1; /* BIT 0 */ 187 word : 1; 188 word : 1; 189 word : 1; 190 word unconditional : 1; /* BIT 4 */ 191 word : 11; 192 } uplOptType; 193 194 typedef struct { 195 char userName[36]; 196 char reserved[28]; 197 } userType; 198 199 typedef struct { 200 ftn_addr node; 201 char program[9]; 202 char password[17]; 203 char fileName[13]; 204 char fileType; 205 dword groups; 206 char originAka; 207 uplOptType options; 208 char reserved[9]; 209 } uplinkReqType; 210 211 typedef struct { 212 word valid; 213 word zone; 214 word net; 215 word node; 216 } akaMatchNodeType; 217 218 typedef struct { 219 akaMatchNodeType amNode; 220 word aka; 221 } akaMatchType; 222 223 typedef struct { 224 char versionMajor; 225 char versionMinor; 226 int32_t creationDate; 227 dword key; 228 dword reservedKey; 229 dword relKey1; 230 dword relKey2; 231 char reserved1[22]; 232 mgrOptionsType mgrOptions; 233 akaListType akaList; 234 word netmailBoard[MAX_NETAKAS]; 235 word reservedNet[16-MAX_NETAKAS]; 236 genOptionsType genOptions; 237 mbOptionsType mbOptions; 238 mailOptionsType mailOptions; 239 word maxPktSize; 240 word reserved2; 241 word mailer; 242 word bbsProgram; 243 word maxBundleSize; 244 word extraHandles; /* 0-235 */ 245 word autoRenumber; 246 word bufSize; 247 word ftBufSize; 248 word allowedNumNetmail; 249 word logInfo; 250 word logStyle; 251 char reserved3[68]; 252 word colorSet; 253 char sysopName[36]; 254 word defaultArc; 255 char reserved4[24]; 256 char tearType; 257 char tearLine[25]; 258 pathType summaryLogName; 259 word recBoard; 260 word badBoard; 261 word dupBoard; 262 char topic1[16]; 263 char topic2[16]; 264 pathType bbsPath; 265 pathType netPath; 266 pathType sentPath; 267 pathType rcvdPath; 268 pathType inPath; 269 pathType outPath; 270 pathType securePath; 271 pathType logName; 272 pathType swapPath; 273 pathType semaphorePath; 274 pathType pmailPath; 275 pathType areaMgrLogName; 276 pathType autoRAPath; 277 pathType autoFolderFdPath; 278 pathType autoAreasBBSPath; 279 pathType autoGoldEdAreasPath; 280 archiverInfo unArc; 281 archiverInfo unZip; 282 archiverInfo unLzh; 283 archiverInfo unPak; 284 archiverInfo unZoo; 285 archiverInfo unArj; 286 archiverInfo unSqz; 287 archiverInfo GUS; 288 archiverInfo arc; 289 archiverInfo zip; 290 archiverInfo lzh; 291 archiverInfo pak; 292 archiverInfo zoo; 293 archiverInfo arj; 294 archiverInfo sqz; 295 archiverInfo customArc; 296 char reserved5[83]; 297 areaOptionsType optionsAKA[MAX_NETAKAS]; /* 'areaOptionsType' below */ 298 char groupsQBBS[MAX_NETAKAS]; 299 word templateSecQBBS[MAX_NETAKAS]; 300 char templateFlagsQBBS[MAX_NETAKAS][4]; 301 char attr2RA[MAX_NETAKAS]; 302 char aliasesQBBS[MAX_NETAKAS]; 303 word groupRA[MAX_NETAKAS]; 304 word altGroupRA[MAX_NETAKAS][3]; 305 char qwkNameSBBS[MAX_NETAKAS][13]; 306 word minAgeSBBS[MAX_NETAKAS]; 307 word daysRcvdAKA[MAX_NETAKAS]; 308 char replyStatSBBS[MAX_NETAKAS]; 309 word attrSBBS[MAX_NETAKAS]; 310 char groupDescr[26][27]; 311 char reserved6[9]; 312 char msgKindsRA[MAX_NETAKAS]; 313 char attrRA[MAX_NETAKAS]; 314 word readSecRA[MAX_NETAKAS]; 315 char readFlagsRA[MAX_NETAKAS][4]; 316 word writeSecRA[MAX_NETAKAS]; 317 char writeFlagsRA[MAX_NETAKAS][4]; 318 word sysopSecRA[MAX_NETAKAS]; 319 char sysopFlagsRA[MAX_NETAKAS][4]; 320 word daysAKA[MAX_NETAKAS]; 321 word msgsAKA[MAX_NETAKAS]; 322 char descrAKA[MAX_NETAKAS][51]; 323 userType users[MAX_USERS]; 324 akaMatchType akaMatch[MAX_MATCH]; 325 char reserved7[2048-10*MAX_MATCH]; 326 uplinkReqType uplinkReq[MAX_UPLREQ]; 327 } configType; 328 329 #define MAX_FORWARD 64 330 331 #define MB_PATH_LEN_OLD 19 332 #define MB_PATH_LEN 61 333 #define ECHONAME_LEN_090 25 334 #define ECHONAME_LEN 51 335 #define COMMENT_LEN 51 336 #define ORGLINE_LEN 59 337 338 typedef char areaNameType[ECHONAME_LEN]; 339 340 typedef struct { 341 word signature; 342 word writeLevel; 343 areaNameType areaName; 344 char comment[COMMENT_LEN]; 345 areaOptionsType options; 346 word boardNumRA; 347 char msgBaseType; 348 char msgBasePath[MB_PATH_LEN]; 349 word board; 350 char originLine[ORGLINE_LEN]; 351 word address; 352 dword group; 353 word alsoSeenBy; 354 word msgs; 355 word days; 356 word daysRcvd; 357 358 ftn_addr exp[MAX_FORWARD]; 359 360 word readSecRA; 361 char flagsRdNotRA[4]; 362 char flagsRdRA[4]; 363 word writeSecRA; 364 char flagsWrNotRA[4]; 365 char flagsWrRA[4]; 366 word sysopSecRA; 367 char flagsSysRA[4]; 368 char flagsSysNotRA[4]; 369 word templateSecQBBS; 370 char flagsTemplateQBBS[4]; 371 char reserved2; 372 word netReplyBoardRA; 373 char boardTypeRA; 374 char attrRA; 375 char attr2RA; 376 word groupRA; 377 word altGroupRA[3]; 378 char msgKindsRA; 379 char qwkName[13]; 380 word minAgeSBBS; 381 word attrSBBS; 382 char replyStatSBBS; 383 char groupsQBBS; 384 char aliasesQBBS; 385 } rawEchoType; 386 387 388 // ------------------------------------------------------------------ 389 390 #if defined(GOLD_CANPACK) 391 #pragma pack() 392 #endif 393 394 395 // ------------------------------------------------------------------ 396 397 #endif 398 399 // ------------------------------------------------------------------ 400