home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / FMAIL102.LZH / FMSTRUCT.LZH / FMSTRUCT.H < prev   
C/C++ Source or Header  |  1995-06-26  |  17KB  |  557 lines

  1.  
  2. /*
  3.    FMSTRUCT.H
  4.  
  5.    File structures for FMail 1.02
  6.    Copyright (C) 1994 Folkert J. Wijnstra. All rights reserved.
  7.  
  8.    All information in this document is subject to change at any time
  9.    without prior notice!
  10.  
  11.    Strings are NUL terminated arrays of char type.
  12.    Path names always end on a \ character (followed by NUL).
  13. */
  14.  
  15.  
  16. /**** Modify the type definitions below if necessary for your compiler ****/
  17.  
  18. #define fhandle int
  19. #define uchar unsigned char
  20. #define schar char
  21. #ifndef __OS2__
  22. #define u16 unsigned int
  23. #define s16 signed int
  24. #else
  25. #define u16 short unsigned int
  26. #define s16 short signed int
  27. #endif
  28. #define u32 long unsigned int
  29. #define s32 long signed int
  30.  
  31.  
  32. /* ********** General structures ********** */
  33.  
  34. typedef struct
  35. {  uchar programName[46];
  36.    u16   memRequired;      } archiverInfo;
  37.  
  38. typedef uchar pathType[48];
  39.  
  40. typedef struct
  41. {  u16   zone;
  42.    u16   net;
  43.    u16   node;
  44.    u16   point; } nodeNumType;
  45.  
  46. typedef struct
  47. {  nodeNumType nodeNum;
  48.    u16         fakeNet; } nodeFakeType;
  49.  
  50.  
  51. /* ********** File header structure ********** */
  52.  
  53. #define DATATYPE_CF    0x0102
  54. #define DATATYPE_NO    0x0202
  55. #define DATATYPE_AD    0x0401
  56. #define DATATYPE_AE    0x0402
  57.  
  58. typedef struct
  59. {  uchar versionString[32]; /* Always starts with 'FMail' */
  60.    u16   revNumber;         /* Is now 0x0100 */
  61.    u16   dataType;          /* See #defines above */
  62.    u16   headerSize;
  63.    s32   creationDate;
  64.    s32   lastModified;
  65.    u16   totalRecords;
  66.    u16   recordSize;
  67. } headerType;
  68.  
  69.  
  70. /* The structure below is used by the Areas File and (only partly)
  71.    by the Config File */
  72.  
  73. typedef struct
  74. {  unsigned active      : 1; /* Bit  0 */
  75.    unsigned tinySeenBy  : 1; /* Bit  1 */
  76.    unsigned security    : 1; /* Bit  2 */
  77.    unsigned             : 1; /* Bit  3 */
  78.    unsigned allowPrivate: 1; /* Bit  4 */
  79.    unsigned impSeenBy   : 1; /* Bit  5 */
  80.    unsigned checkSeenBy : 1; /* Bit  6 */
  81.    unsigned             : 1; /* Bit  7 */
  82.    unsigned local       : 1; /* Bit  8 */
  83.    unsigned disconnected: 1; /* Bit  9 */
  84.    unsigned _reserved   : 1; /* Bit 10 */
  85.    unsigned allowAreafix: 1; /* Bit 11 */
  86.    unsigned             : 2; /* Bit 12-13 */
  87.    unsigned arrivalDate : 1; /* Bit 14 */
  88.    unsigned sysopRead   : 1; /* Bit 15 */   } areaOptionsType;
  89.  
  90.  
  91. /* ********** FMAIL.CFG ********** */
  92.  
  93. #define MAX_AKAS      16
  94. #define MAX_NETAKAS   11
  95. #define MAX_USERS     16
  96. #define MAX_UPLREQ    16
  97. #define MAX_MATCH     16
  98.  
  99. #define LOG_NEVER     0x0000
  100. #define LOG_INBOUND   0x0001
  101. #define LOG_OUTBOUND  0x0002
  102. #define LOG_PKTINFO   0x0004
  103. #define LOG_XPKTINFO  0x0008
  104. #define LOG_UNEXPPWD  0x0010
  105. #define LOG_SENTRCVD  0x0020
  106. #define LOG_STATS     0x0040
  107. #define LOG_PACK      0x0080
  108. #define LOG_MSGBASE   0x0100
  109. #define LOG_ECHOEXP   0x0200
  110. #define LOG_NETIMP    0x0400
  111. #define LOG_NETEXP    0x0800
  112. #define LOG_EXEC      0x2000
  113. #define LOG_NOSCRN    0x4000
  114. #define LOG_ALWAYS    0x8000
  115. #define LOG_DEBUG     0x8000
  116.  
  117. typedef nodeFakeType akaListType[MAX_AKAS];
  118.  
  119. typedef struct
  120. {
  121.    unsigned useEMS       : 1; /* BIT 0 */
  122.    unsigned checkBreak   : 1; /* BIT 1 */
  123.    unsigned swap         : 1; /* BIT 2 */
  124.    unsigned swapEMS      : 1; /* BIT 3 */
  125.    unsigned swapXMS      : 1; /* BIT 4 */
  126.    unsigned              : 1;
  127.    unsigned monochrome   : 1; /* BIT 6 */
  128.    unsigned commentFFD   : 1; /* BIT 7 */
  129.    unsigned PTAreasBBS   : 1; /* BIT 8 */
  130.    unsigned commentFRA   : 1; /* BIT 9 */
  131.    unsigned              : 1; /* BIT 10 */
  132.    unsigned incBDRRA     : 1; /* BIT 11 */
  133.    unsigned              : 1; /* BIT 12 */
  134.    unsigned              : 2;
  135.    unsigned _RA2         : 1; /* BIT 15 */  } genOptionsType;
  136.  
  137. typedef struct
  138. {
  139.    unsigned removeNetKludges : 1; /* Bit 0 */
  140.    unsigned                  : 1;
  141.    unsigned checkPktDest     : 1; /* Bit 2 */
  142.    unsigned                  : 1;
  143.    unsigned createSema       : 1; /* Bit 4 */
  144.    unsigned                  : 1;
  145.    unsigned warnNewMail      : 1; /* bit 6 */
  146.    unsigned killBadFAtt      : 1; /* Bit 7 */
  147.    unsigned dupDetection     : 1; /* Bit 8 */
  148.    unsigned ignoreMSGID      : 1; /* Bit 9 */
  149.    unsigned ARCmail060       : 1; /* Bit 10 */
  150.    unsigned extNames         : 1; /* Bit 11 */
  151.    unsigned persNetmail      : 1; /* Bit 12 */
  152.    unsigned privateImport    : 1; /* Bit 13 */
  153.    unsigned keepExpNetmail   : 1; /* Bit 14 */
  154.    unsigned killEmptyNetmail : 1; /* Bit 15 */  } mailOptionsType;
  155.  
  156. typedef struct
  157. {
  158.    unsigned sortNew      : 1; /* bit  0   */
  159.    unsigned sortSubject  : 1; /* bit  1   */
  160.    unsigned updateChains : 1; /* bit  2   */
  161.    unsigned reTear       : 1; /* bit  3   */
  162.    unsigned              : 1; /* bit  4   */
  163.    unsigned              : 1; /* bit  5   */
  164.    unsigned removeRe     : 1; /* bit  6   */
  165.    unsigned removeLfSr   : 1; /* bit  7   */
  166.    unsigned scanAlways   : 1; /* bit  8   */
  167.    unsigned scanUpdate   : 1; /* bit  9   */
  168.    unsigned multiLine    : 1; /* bit 10   */
  169.    unsigned              : 1; /* bit 11   */
  170.    unsigned quickToss    : 1; /* bit 12   */
  171.    unsigned              : 1; /* bit 13   */
  172.    unsigned              : 1; /* bit 14   */
  173.    unsigned sysopImport  : 1; /* bit 15   */ } mbOptionsType;
  174.  
  175. typedef struct
  176. {
  177.    unsigned keepRequest  : 1; /* Bit  0 */
  178.    unsigned keepReceipt  : 1; /* Bit  1 */
  179.    unsigned              : 2; /* Bit 2-3 */
  180.    unsigned autoDiscArea : 1; /* Bit  4 */
  181.    unsigned autoDiscDel  : 1; /* Bit  5 has temp. no effect, rec is always deleted */
  182.    unsigned              : 3; /* Bit 6-8 */
  183.    unsigned allowAddAll  : 1; /* Bit  9 */
  184.    unsigned allowActive  : 1; /* Bit 10 */
  185.    unsigned              : 1; /* Bit 11 */
  186.    unsigned allowPassword: 1; /* Bit 12 */
  187.    unsigned allowPktPwd  : 1; /* Bit 13 */
  188.    unsigned allowNotify  : 1; /* Bit 14 */
  189.    unsigned allowCompr   : 1; /* Bit 15 */  } mgrOptionsType;
  190. /*
  191. typedef struct
  192. {
  193.    unsigned active      : 1; /* Bit  0 */
  194.    unsigned tinySeenBy  : 1; /* Bit  1 */
  195.    unsigned security    : 1; /* Bit  2 */
  196.    unsigned             : 1; /* Bit  3 */
  197.    unsigned allowPrivate: 1; /* Bit  4 */
  198.    unsigned impSeenBy   : 1; /* Bit  5 */
  199.    unsigned checkSeenBy : 1; /* Bit  6 */
  200.    unsigned             : 1; /* Bit  7 */
  201.    unsigned local       : 1; /* Bit  8 */
  202.    unsigned             : 1; /* Bit  9 */
  203.    unsigned passThrough : 1; /* Bit 10 */
  204.    unsigned             : 3; /* Bit 11-13 */
  205.    unsigned arrivalDate : 1; /* Bit 14 */
  206.    unsigned sysopRead   : 1; /* Bit 15 */     } defaultOptionsType;
  207. */
  208. typedef struct
  209. {
  210.    unsigned addPlusPrefix :  1; /* BIT 0 */
  211.    unsigned               :  3;
  212.    unsigned unconditional :  1; /* BIT 4 */
  213.    unsigned               : 11;    } uplOptType;
  214.  
  215. typedef struct
  216. {
  217.    uchar userName[36];
  218.    uchar reserved[28];
  219. } userType;
  220.  
  221. typedef struct
  222. {
  223.    nodeNumType node;
  224.    uchar       program[9];
  225.    uchar       password[17];
  226.    uchar       fileName[13];
  227.    uchar       fileType;
  228.    u32         groups;
  229.    uchar       originAka;
  230.    uplOptType  options;
  231.    uchar       reserved[9];  } uplinkReqType;
  232.  
  233. typedef struct
  234. {  u16   valid;
  235.    u16   zone;
  236.    u16   net;
  237.    u16   node;    } akaMatchNodeType;
  238.  
  239. typedef struct
  240. {
  241.    akaMatchNodeType amNode;
  242.    u16              aka;    } akaMatchType;
  243.  
  244. /* ATTENTION: FMAIL.CFG does NOT use the new config file type yet (no header) !!! */
  245.  
  246. typedef struct
  247. {
  248.    uchar           versionMajor;
  249.    uchar           versionMinor;
  250.    s32             creationDate;
  251.    u32             key;
  252.    u32             reservedKey;
  253.    u32             relKey1;
  254.    u32             relKey2;
  255.    uchar           reserved1[22];
  256.    mgrOptionsType  mgrOptions;
  257.    akaListType     akaList;
  258. /* nodeFakeType    reservedAka[16-MAX_AKAS]; */
  259.    u16             netmailBoard[MAX_NETAKAS];
  260.    u16             reservedNet[16-MAX_NETAKAS];
  261.    genOptionsType  genOptions;
  262.    mbOptionsType   mbOptions;
  263.    mailOptionsType mailOptions;
  264.    u16             maxPktSize;
  265.    u16             kDupRecs;
  266.    u16             mailer;
  267.    u16             bbsProgram;
  268.    u16             maxBundleSize;
  269.    u16             extraHandles; /* 0-235 */
  270.    u16             autoRenumber;
  271.    u16             bufSize;
  272.    u16             ftBufSize;
  273.    u16             allowedNumNetmail;
  274.    u16             logInfo;
  275.    u16             logStyle;
  276.    uchar           reserved3[68];
  277.    u16             colorSet;
  278.    uchar           sysopName[36];
  279.    u16             defaultArc;
  280.    uchar           reserved4[24];
  281.    uchar           tearType;
  282.    uchar           tearLine[25];
  283.    pathType        summaryLogName;
  284.    u16             recBoard;
  285.    u16             badBoard;
  286.    u16             dupBoard;
  287.    uchar           topic1[16];
  288.    uchar           topic2[16];
  289.    pathType        bbsPath;
  290.    pathType        netPath;
  291.    pathType        sentPath;
  292.    pathType        rcvdPath;
  293.    pathType        inPath;
  294.    pathType        outPath;
  295.    pathType        securePath;
  296.    pathType        logName;
  297.    pathType        swapPath;
  298.    pathType        semaphorePath;
  299.    pathType        pmailPath;
  300.    pathType        areaMgrLogName;
  301.    pathType        autoRAPath;
  302.    pathType        autoFolderFdPath;
  303.    pathType        autoAreasBBSPath;
  304.    pathType        autoGoldEdAreasPath;
  305.    archiverInfo    unArc;
  306.    archiverInfo    unZip;
  307.    archiverInfo    unLzh;
  308.    archiverInfo    unPak;
  309.    archiverInfo    unZoo;
  310.    archiverInfo    unArj;
  311.    archiverInfo    unSqz;
  312.    archiverInfo    GUS;
  313.    archiverInfo    arc;
  314.    archiverInfo    zip;
  315.    archiverInfo    lzh;
  316.    archiverInfo    pak;
  317.    archiverInfo    zoo;
  318.    archiverInfo    arj;
  319.    archiverInfo    sqz;
  320.    archiverInfo    customArc;
  321.    uchar           reserved5[83];
  322.    areaOptionsType optionsAKA[MAX_NETAKAS]; /* 'areaOptionsType' below */
  323.    uchar           groupsQBBS[MAX_NETAKAS];
  324.    u16             templateSecQBBS[MAX_NETAKAS];
  325.    uchar           templateFlagsQBBS[MAX_NETAKAS][4];
  326.    uchar           attr2RA[MAX_NETAKAS];
  327.    uchar           aliasesQBBS[MAX_NETAKAS];
  328.    u16             groupRA[MAX_NETAKAS];
  329.    u16             altGroupRA[MAX_NETAKAS][3];
  330.    uchar           qwkNameSBBS[MAX_NETAKAS][13];
  331.    u16             minAgeSBBS[MAX_NETAKAS];
  332.    u16             daysRcvdAKA[MAX_NETAKAS];
  333.    uchar           replyStatSBBS[MAX_NETAKAS];
  334.    u16             attrSBBS[MAX_NETAKAS];
  335.    uchar           groupDescr[26][27];
  336.    uchar           reserved6[9];
  337.    uchar           msgKindsRA[MAX_NETAKAS];
  338.    uchar           attrRA[MAX_NETAKAS];
  339.    u16             readSecRA[MAX_NETAKAS];
  340.    uchar           readFlagsRA[MAX_NETAKAS][4];
  341.    u16             writeSecRA[MAX_NETAKAS];
  342.    uchar           writeFlagsRA[MAX_NETAKAS][4];
  343.    u16             sysopSecRA[MAX_NETAKAS];
  344.    uchar           sysopFlagsRA[MAX_NETAKAS][4];
  345.    u16             daysAKA[MAX_NETAKAS];
  346.    u16             msgsAKA[MAX_NETAKAS];
  347.    uchar           descrAKA[MAX_NETAKAS][51];
  348.    userType        users[MAX_USERS];
  349.    akaMatchType    akaMatch[MAX_MATCH];
  350.    uchar           reserved7[1040-10*MAX_MATCH];
  351.    pathType        sentEchoPath;
  352.    archiverInfo    preUnarc;
  353.    archiverInfo    postUnarc;
  354.    archiverInfo    preArc;
  355.    archiverInfo    postArc;
  356.    archiverInfo    unUc2;
  357.    archiverInfo    unRar;
  358.    archiverInfo    resUnpack[6];
  359.    archiverInfo    uc2;
  360.    archiverInfo    rar;
  361.    archiverInfo    resPack[6];
  362.    uplinkReqType   uplinkReq[MAX_UPLREQ];   } configType;
  363.  
  364.  
  365.  
  366. /* ********** FMAIL.AR ********** */
  367.  
  368. #if defined(__FMAILX__) || defined(__OS2__)
  369. #define MAX_AREAS   4096
  370. #else
  371. #define MAX_AREAS    512
  372. #endif
  373. #define MAX_FORWARD   64
  374.  
  375. #define MB_PATH_LEN_OLD   19
  376. #define MB_PATH_LEN       61
  377. #define ECHONAME_LEN_090  25
  378. #define ECHONAME_LEN      51
  379. #define COMMENT_LEN       51
  380. #define ORGLINE_LEN       59
  381.  
  382. typedef uchar areaNameType[ECHONAME_LEN];
  383.  
  384. typedef struct      /* OLD !!! */
  385. {
  386.    uchar           zero; /* Should always be zero */
  387.    uchar           msgBasePath[MB_PATH_LEN_OLD];
  388.    uchar           groupsQBBS;
  389.    uchar           flagsTemplateQBBS[4];
  390.    uchar           comment[COMMENT_LEN];
  391.    u32             group;
  392.    u16             board;
  393.    u16             address;
  394.    u16             alsoSeenBy;
  395.    u16             groupRA;
  396.    u16             altGroupRA[3];
  397.    areaOptionsType options;
  398.    u16             outStatus;
  399.    u16             days;
  400.    u16             msgs;
  401.    u16             daysRcvd;
  402.    u16             templateSecQBBS;
  403.    u16             readSecRA;
  404.    uchar           flagsRdRA[4];
  405.    u16             writeSecRA;
  406.    uchar           flagsWrRA[4];
  407.    u16             sysopSecRA;
  408.    uchar           flagsSysRA[4];
  409.    uchar           attrRA;
  410.    uchar           msgKindsRA;
  411.    u16             attrSBBS;
  412.    uchar           replyStatSBBS;
  413.    areaNameType    areaName;
  414.    uchar           qwkName[13];
  415.    u16             minAgeSBBS;
  416.    uchar           attr2RA;
  417.    uchar           aliasesQBBS;
  418.    uchar           originLine[ORGLINE_LEN];
  419.    nodeNumType     export[MAX_FORWARD];  } rawEchoTypeOld;
  420.  
  421. /* See Area File for file header structure !!! */
  422.  
  423. typedef struct
  424. {
  425.    u16             signature; /* contains "AE" for echo areas in FMAIL.AR and */
  426.                               /* "AD" for default settings in FMAIL.ARD       */
  427.    u16             writeLevel;
  428.    areaNameType    areaName;
  429.    uchar           comment[COMMENT_LEN];
  430.    areaOptionsType options;
  431.    u16             boardNumRA;
  432.    uchar           msgBaseType;
  433.    uchar           msgBasePath[MB_PATH_LEN];
  434.    u16             board;
  435.    uchar           originLine[ORGLINE_LEN];
  436.    u16             address;
  437.    u32             group;
  438.    u16             alsoSeenBy;
  439.    u16             msgs;
  440.    u16             days;
  441.    u16             daysRcvd;
  442.  
  443.    nodeNumType     export[MAX_FORWARD];
  444.  
  445.    u16             readSecRA;
  446.    uchar           flagsRdNotRA[4];
  447.    uchar           flagsRdRA[4];
  448.    u16             writeSecRA;
  449.    uchar           flagsWrNotRA[4];
  450.    uchar           flagsWrRA[4];
  451.    u16             sysopSecRA;
  452.    uchar           flagsSysRA[4];
  453.    uchar           flagsSysNotRA[4];
  454.    u16             templateSecQBBS;
  455.    uchar           flagsTemplateQBBS[4];
  456.    uchar           reserved2;
  457.    u16             netReplyBoardRA;
  458.    uchar           boardTypeRA;
  459.    uchar           attrRA;
  460.    uchar           attr2RA;
  461.    u16             groupRA;
  462.    u16             altGroupRA[3];
  463.    uchar           msgKindsRA;
  464.    uchar           qwkName[13];
  465.    u16             minAgeSBBS;
  466.    u16             attrSBBS;
  467.    uchar           replyStatSBBS;
  468.    uchar           groupsQBBS;
  469.    uchar           aliasesQBBS;  } rawEchoType;
  470.  
  471.  
  472.  
  473. /* ********** FMAIL.NOD ********** */
  474.  
  475. #if defined(__FMAILX__) || defined(__OS2__)
  476. #define MAX_NODEMGR      512
  477. #else
  478. #define MAX_NODEMGR      256
  479. #endif
  480.  
  481. #define PKT_TYPE_2PLUS   1
  482. #define CAPABILITY       PKT_TYPE_2PLUS
  483.  
  484. typedef struct
  485. {
  486.    unsigned fixDate     : 1; /* Bit 0 */
  487.    unsigned tinySeenBy  : 1; /* Bit 1 */
  488.    unsigned             : 1; /* Bit 2 */
  489.    unsigned ignorePwd   : 1; /* Bit 3 */
  490.    unsigned active      : 1; /* Bit 4 */
  491.    unsigned             : 1;
  492.    unsigned routeToPoint: 1; /* Bit 6 */
  493.    unsigned packNetmail : 1; /* Bit 7 */
  494.    unsigned             : 1; /* Bit 8 */
  495.    unsigned             : 3;
  496.    unsigned forwardReq  : 1; /* Bit 12 */
  497.    unsigned remMaint    : 1; /* Bit 13 */
  498.    unsigned allowRescan : 1; /* Bit 14 */
  499.    unsigned notify      : 1;   } nodeOptionsType;
  500.  
  501. typedef struct /* OLD !!! */
  502. {
  503.    nodeNumType     node;
  504.    uchar           reserved1[2];
  505.    u16             capability;
  506.    u16             archiver;
  507.    nodeOptionsType options;
  508.    u32             groups;
  509.    u16             outStatus;
  510.    uchar           reserved2[32];
  511.    uchar           password[18];
  512.    uchar           packetPwd[10];
  513.    uchar           reserved[2];
  514.    nodeNumType     viaNode;
  515.    uchar           sysopName[36];   } nodeInfoTypeOld;
  516.  
  517. /* See Area File for file header structure !!! */
  518.  
  519. typedef struct
  520. {
  521.    u16             signature; /* contains "ND" */
  522.    u16             writeLevel;
  523.    nodeNumType     node;
  524.    nodeNumType     viaNode;
  525.    u16             capability;
  526.    nodeOptionsType options;
  527.    u16             archiver;
  528.    u32             groups;
  529.    u16             outStatus;
  530.    uchar           sysopName[36];
  531.    uchar           password[18];
  532.    uchar           packetPwd[9];
  533.    uchar           useAka;        } nodeInfoType;
  534.  
  535.  
  536.  
  537. /* ********** FMAIL.PCK ********** */
  538.  
  539. #define PACK_STR_SIZE 64
  540. #define MAX_PACK      128
  541.  
  542. typedef uchar packEntryType[PACK_STR_SIZE];
  543. typedef packEntryType packType[MAX_PACK];
  544.  
  545.  
  546.  
  547. /* ********** FMAIL.BDE ********** */
  548.  
  549. #define MAX_BAD_ECHOS 50
  550.  
  551. typedef struct
  552. {
  553.    areaNameType badEchoName;
  554.    nodeNumType  srcNode;
  555.    s16          destAka;      } badEchoType;
  556.  
  557.