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