home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / mailers / im140g.zip / IM_STRUC.PAS < prev    next >
Pascal/Delphi Source File  |  1993-05-29  |  30KB  |  575 lines

  1.  
  2. {* *
  3.  * *
  4.  * *   I M A I L   D E F I N I T I O N S   A N D   S T R U C T U R E S
  5.  * *
  6.  * *}
  7.  
  8. {*
  9.  *  Definitions and structures for IMAIL 1.40 Gamma
  10.  *
  11.  *  Copyright (C) 1992/1993 by IMAIL INC. All rights reserved.
  12.  *
  13.  *  The contents of this file are subject to change without notice!
  14.  *  Fields marked reserved may NOT be used.
  15.  *
  16.  *  It is an ERROR to write to any of the configuration files
  17.  *  while IMAIL (or any of its companion programs) is running.
  18.  * 
  19.  *}
  20.  
  21.  
  22. {=========================================================================}
  23. {  CONSTANT DEFINITIONS                                                   }
  24. {=========================================================================}
  25.  
  26. const IM_MAJ_VERSION     = 1;
  27.       IM_MIN_VERSION     = 40;
  28.       IM_PRD_CODE        = $4B;
  29.       STRUCT_MAJ_VERSION = 1;
  30.       STRUCT_MIN_VERSION = 00;
  31.  
  32. {-------------------------------------------------------------------------}
  33. {  Internal limits                                                        }
  34. {-------------------------------------------------------------------------}
  35.  
  36. const  MAXAKAS     = 16;                   { Max # of addresses           }
  37.        MAXPACKERS  = 11;                   { Max # of packer def          }
  38.        MAXEXPORT   = 60;                   { Max export defs              }
  39.        MAXVIA      = 40;                   { max nodes packed via         }
  40.        MAXPACK     = 32;                   { max default pack cmd         }
  41.        MAXEXCEPT   = 10;                   { max EXCEPT nodes             }
  42.        MAXFWDLINK  = 10;                   { max fwd link structs         }
  43.        MAXNOIMPT   = 20;                   { max # of names               }
  44.        ZONESDOM    = 10;                   { zones per domain entry       }
  45.        MAXTAG      = 51;                   { Max length of an areatag     }
  46.        MAXNAME     = 37;                   { Max length of a namefield    }
  47.        MAXPACKNAME = 50;                   { Max length of a packer entry }
  48.        MAXORIGIN   = 64;                   { Max length of an origin      }
  49.  
  50.        MAXPATH     = 80;                   { Max length of path           }
  51.        MAXFILE     = 11;                   { Max length of file           }
  52.        MAXEXT      = 3;                    { Max length of extension      }
  53.        MAXFNAME    = MAXFILE+MAXEXT;       { Max length of a filename     }
  54.        MAXDOMAIN   = 21;                   { Max length of a domainname   }
  55.        MAXPWD      = 21;                   { Max length of a password     }
  56.  
  57. {-------------------------------------------------------------------------}
  58. {  Log Style Definitions                                                  }
  59. {-------------------------------------------------------------------------}
  60.  
  61. const  LOG_NORMAL  = 0;                    { normal log level             }
  62.        LOG_VERBOSE = 1;                    { verbose log level            }
  63.  
  64. {-------------------------------------------------------------------------}
  65. {  Environment Type  (FroDo or Bink)                                      }
  66. {-------------------------------------------------------------------------}
  67.  
  68. const  ENV_FRODO   = 0;                    { FrontDoor/D'Bridge           }
  69.        ENV_BINK    = 1;                    { Binkley                      }
  70.  
  71. {-------------------------------------------------------------------------}
  72. { Sort Method (used in IMTHINGS SORT)                                     }
  73. {-------------------------------------------------------------------------}
  74.  
  75. const  A_SORT_NAME  = 1;
  76.        A_SORT_BOARD = 2;
  77.        A_SORT_GROUP = 3;
  78.  
  79. {-------------------------------------------------------------------------}
  80. {  File Attach Message Status (used in IMAIL.ND)                          }
  81. {-------------------------------------------------------------------------}
  82.  
  83. const  S_NORMAL            = 0;
  84.        S_HOLD              = 1;
  85.        S_CRASH             = 2;
  86.        S_IMMEDIATE         = 3;
  87.        S_DIRECT            = 4;
  88.        S_NORMAL_DIR        = 4;
  89.        S_HOLD_DIR          = 5;
  90.        S_CRASH_DIR         = 6;
  91.        S_IMMEDIATE_DIR     = 7;
  92.  
  93. {-------------------------------------------------------------------------}
  94. {  Message Base Types                                                     }
  95. {-------------------------------------------------------------------------}
  96.  
  97. const  MSGTYPE_SDM    = $01;
  98.        MSGTYPE_SQUISH = $02;
  99.        MSGTYPE_HUDSON = $03;
  100.        MSGTYPE_QBBS   = $03;
  101.        MSGTYPE_PASSTH = $0F;
  102.        MSGTYPE_ECHO   = $80;
  103.        MSGTYPE_LOCAL  = $90;
  104.        MSGTYPE_NET    = $A0;
  105.  
  106. {-------------------------------------------------------------------------}
  107. {  Via Line Switches                                                      }
  108. {-------------------------------------------------------------------------}
  109.  
  110. const VIA_NONE        =   1;
  111.       VIA_EXP         =   2;
  112.       VIA_IMP         =   3;
  113.       VIA_BOTH        =   4;
  114.  
  115. {-------------------------------------------------------------------------}
  116. {  Dupe ring check switches                                               }
  117. {-------------------------------------------------------------------------}
  118.  
  119. const DUPE_NONE       =   0;
  120.       DUPE_WARN       =   1;
  121.       DUPE_ZONE       =   2;
  122.       DUPE_KILL       =   3;
  123.  
  124. {-------------------------------------------------------------------------}
  125. { Circular path detection switches                                        }
  126. {-------------------------------------------------------------------------}
  127.  
  128. const CPD_NONE        =   0;
  129.       CPD_WARN        =   1;
  130.       CPD_KILL        =   2;
  131.  
  132. {-------------------------------------------------------------------------}
  133. {  Unlink Switches                                                        }
  134. {-------------------------------------------------------------------------}
  135.  
  136. const ULNK_NONE       =   0;
  137.       ULNK_PASSTH     =   1;
  138.       ULNK_ALL        =   2;
  139.  
  140. {-------------------------------------------------------------------------}
  141. {  Personal Mail handling                                                 }
  142. {-------------------------------------------------------------------------}
  143.  
  144. const PERSM_NONE      =   0;
  145.       PERSM_LOG       =   1;
  146.       PERSM_MSG       =   2;
  147.       PERSM_COPY      =   3;
  148.  
  149. {-------------------------------------------------------------------------}
  150. {  AreaLink Request Handling                                              }
  151. {-------------------------------------------------------------------------}
  152.  
  153. const KEEP_NONE       =   0;
  154.       KEEP_MSG        =   1;
  155.       KEEP_ALL        =   2;
  156.  
  157. {-------------------------------------------------------------------------}
  158. {  Macros to make life easier                                             }
  159. {-------------------------------------------------------------------------}
  160.  
  161. const BASEMASK          = $0F;
  162.       TYPEMASK          = $F0;
  163.  
  164. {-------------------------------------------------------------------------}
  165. {  Exit Errorlevels & Error Messages                                      }
  166. {-------------------------------------------------------------------------}
  167.  
  168. const  E_NOERR        =   0;               { no error                     }
  169.        E_CRDIR        = 238;               { Error creating directory     }
  170.        E_ELOCK        = 239;               { File locking error           }
  171.        E_AOPEN        = 240;               { Error opening IMAIL.AX       }
  172.        E_BOPEN        = 241;               { Error opening IMAIL.BX       }
  173.        E_NOIDX        = 242;               { Index file missing/corrupt   }
  174.        E_NOCFG        = 243;               { IMAIL.CF not found           }
  175.        E_NOARE        = 244;               { IMAIL.AR not found           }
  176.        E_NONOD        = 245;               { IMAIL.ND not found           }
  177.        E_BADCF        = 246;               { Error in IMAIL.CF            }
  178.        E_BADVR        = 247;               { Bad version of IMAIL.CF      }
  179.        E_EOPEN        = 248;               { Error opening file           }
  180.        E_EREAD        = 249;               { Error reading file           }
  181.        E_EWRIT        = 250;               { Error writing file           }
  182.        E_CMDPR        = 251;               { Command Line Parameter error }
  183.        E_FILNF        = 252;               { File not found               }
  184.        E_MEMRY        = 253;               { Memory Allocation error      }
  185.        E_DISKF        = 254;               { Insufficient disk space      }
  186.        E_UNKWN        = 255;               { Unknown error                }
  187.  
  188.        { === ERRORLEVELs returned by TOSS and/or SCAN === }
  189.  
  190.        T_NOMAIL       = $00;               { no mail processed            }
  191.        T_NET          = $01;               { Net mail                     }
  192.        T_ECHO         = $02;               { Echo mail                    }
  193.        T_BAD          = $04;               { Bad and/or dupe mail         }
  194.        T_QBBS         = $08;               { Qbbs message base changed    }
  195.        T_MSG          = $10;               {.MSG message base changed     }
  196.        T_SQUISH       = $20;               { Squish message base changed  }
  197.        T_PERS         = $40;               { Mail to Sysop received       }
  198.  
  199. {-------------------------------------------------------------------------}
  200. {  Special values for 'ALL'                                               }
  201. {-------------------------------------------------------------------------}
  202.  
  203. const  ZONE_ALL       = 56685;             { Pack for all zones           }
  204.        NET_ALL        = 56685;             { Pack for all nets            }
  205.        NODE_ALL       = 56685;             { Pack for all nodes           }
  206.        POINT_ALL      = 56685;             { Pack for all points          }
  207.  
  208. {-------------------------------------------------------------------------}
  209. {  Capability defintions                                                  }
  210. {-------------------------------------------------------------------------}
  211.  
  212. const  CAP_TYPE2      = $01;               { Can make Type 2 bundles      }
  213.        CAP_STONAGE    = $00;               { No capabalities              }
  214.  
  215.  
  216. {=========================================================================}
  217. {  STRUCTURE DEFINITIONS                                                  }
  218. {=========================================================================}
  219.  
  220. {-------------------------------------------------------------------------}
  221. {  Structs used in IMAIL Configuration files                              }
  222. {-------------------------------------------------------------------------}
  223.  
  224. TYPE
  225.  
  226.    areatag    = array [1..MAXTAG] of char;
  227.  
  228.    origin_typ = array [1..MAXORIGIN] of char;
  229.  
  230.    path_typ   = array [1..MAXPATH] of char;
  231.  
  232.    packer_typ = array [1..MAXPACKNAME] of char;
  233.  
  234.    naddress = record                       { std node number ...          }
  235.      zone  : word;                         { Zone Number                  }
  236.      net   : word;                         { Net Number                   }
  237.      node  : word;                         { Node Number                  }
  238.      point : word;                         { Point Number                 }
  239.    end;
  240.  
  241.    expt = record
  242.      dest   : naddress;
  243.      doexpt : boolean;
  244.    end;
  245.  
  246.    pack_struct = record                       { used in pack routing      }
  247.      dst    : naddress;                       { pack via this node        }
  248.      nodes  : array [1..MAXVIA] of naddress;  { nodes to pack             }
  249.      except : array[1..MAXEXCEPT] of naddress;{ exceptions                }
  250.    end;
  251.  
  252.    eaddress = record
  253.      dstn      : naddress;                 { destination-address          }
  254.      bitfield1 : byte;
  255.    { exp_only  : bit_0;                      export only to this address  }
  256.    { imp_only  : bit_1;                      import only from this address}
  257.    { paused    : bit_2;                      echomail paused              }
  258.    { reserved  : bit_3-7;                    reserved                     }
  259.    end;
  260.  
  261.    fwd_link = record                          { used for forward requests }
  262.      areasfile : array [1..MAXFNAME] of char;  { name of areas file        }
  263.      toprogram : array [1..10] of char;       { name of area manager      }
  264.      password  : array [1..MAXPWD] of char;   { area manager password     }
  265.      uplink    : naddress;                    { address of uplink         }
  266.    end;
  267.  
  268.    dom      = record
  269.      domain    : array [1..MAXDOMAIN] of char;{ name of domain            }
  270.      outbound  : array [1..MAXPATH] of char;  { root outbound path        }
  271.      zones     : array [1..ZONESDOM] of word; { zones in this domain      }
  272.      akas      : array [1..MAXAKAS] of byte;  { =my= akas in this domain  }
  273.    end;
  274.  
  275.    im_stats = record                          { Used mainly by IUTIL      }
  276.      th_day   : word;                         { this day                  }
  277.      la_day   : word;                         { last day                  }
  278.      th_week  : word;                         { this week                 }
  279.      la_week  : word;                         { last week                 }
  280.      th_month : word;                         { this month                }
  281.      la_month : word;                         { last month                }
  282.      th_year  : word;                         { this year                 }
  283.      la_year  : word;                         { last year                 }
  284.    end;
  285.  
  286. {-------------------------------------------------------------------------}
  287. {  IMAIL.CF Structure                                                     }
  288. {-------------------------------------------------------------------------}
  289.  
  290. TYPE
  291.  
  292. im_config_type = record
  293.   im_ver_maj   : byte;                        { Major Version             }
  294.   im_ver_min   : byte;                        { Minor Version             }
  295.   struct_maj   : byte;                        { Major struct version      }
  296.   struct_min   : byte;                        { Minor struct version      }
  297.   sysop        : array [1..MAXNAME] of char;  { name of sysop             }
  298.   aka          : array [1..MAXAKAS] of naddress; { the AKAs               }
  299.   domains      : array [1..MAXAKAS] of dom;   { domain names & zones      }
  300.   prod         : array [1..10] of byte;       { Type 2+ product codes     }
  301.   netmail      : path_typ;                    { net mail subdirectory     }
  302.   netfile      : path_typ;                    { inbound files directory   }
  303.   in_pkt       : path_typ;                    { Dir for inbound PKTs      }
  304.   out_pkt      : path_typ;                    { Dir for outbound PKTs     }
  305.   outbound     : path_typ;                    { outbound directory        }
  306.   quickbbs     : path_typ;                    { QuickBBS system directory }
  307.   rsvd1        : path_typ;                    { reserved                  }
  308.   rsvd2        : path_typ;                    { reserved                  }
  309.   rsvd3        : path_typ;                    { reserved                  }
  310.   semaphor     : path_typ;                    { Semaphor directory        }
  311.   logfilename  : path_typ;                    { Log file name             }
  312.   before_toss  : path_typ;                    { call before proc. PKTs    }
  313.   semaphor_net : array [1..MAXFNAME] of char; { Netmail rescan semaphor file}
  314.   alnk_help    : array [1..MAXFNAME] of char; { AreaLink help text        }
  315.   maint_help   : array [1..MAXFNAME] of char; { Alnk Remote Maint. Helpfile}
  316.   new_areas    : array [1..MAXFNAME] of char; { name of file for new areas}
  317.   dflt_origin  : origin_typ;                  { default origin line       }
  318.   bitfield1    : byte;                        { has been changed from 1.10}
  319. {  rtnrecpt     : bit_0;                        True if to send rtn recpt }
  320. {  del_empty_msg: bit_1;                        delete empty netmails     }
  321. {  ARCmail06    : bit_2;                        ARCmail 0.6 compatibility }
  322. {  environment  : bit_3;                        FroDo or Binkley          }
  323. {  auto_add     : bit_4;                        Auto-add unknown areas    }
  324. {  multi_task   : bit_5;                        TRUE if multi-tasking     }
  325. {  forward_for  : bit_6;                        forward PKTs not for us   }
  326. {  singleextract: bit_7;                        extract 1 bundle at a time}
  327.   bitfield2    : byte;
  328. {  trunc_sent   : bit_0;                        1 = Trunc 0 = Delete      }
  329. {  keep_alnk_ans: bit_1;                        keep areafix message      }
  330. {  prodnames    : bit_2;                        use product names         }
  331. {  swap_ems     : bit_3;                        swap to EMS               }
  332. {  swap_ext     : bit_4;                        swap to extended memory   }
  333. {  forward_every: bit_5;                        forward req. not in lists }
  334. {  direct_video : bit_6;                        use direct screen i/o     }
  335. {  forward_req  : bit_7;                        Execute forward link req. }
  336.   bitfield3    : byte;
  337.   last_run     : longint;                     { last run of IUTIL STAT    }
  338.   rsvd5        : byte;                        { reserved                  }
  339.   rsvd6        : byte;                        { reserved                  }
  340.   rsvd7        : word;                        { reserved                  }
  341.   max_arcmail_size : word;                    { max size of arcmail bundles}
  342.   pwd_exp_days : word;                        { days before pwd expired   }
  343.   max_pkt_size : word;                        { max size of pkt to create }
  344.   rsvd8        : word;                        {                           }
  345.   kill_dead    : byte;                        { kill echos without traffic}
  346.   max_msg_size : byte;                        { max size of netmail (split)}
  347.   via_line     : byte;                        { add Via Line to netmails  }
  348.   dupe_ring    : byte;                        { Check for possible d-rings}
  349.   cpd_check    : byte;                        { Check for circular paths  }
  350.   pers_mail    : byte;                        { use personal mail feature }
  351.   unlink_req   : byte;                        { Unlink areas without dlink}
  352.   keep_alnk_req: byte;                        { keep arealink request     }
  353.   log_level    : byte;                        { logging level             }
  354.   no_import    : array [1..MAXNOIMPT] of array [1..38] of char;
  355.                                               { ignore when importing     }
  356.   fwd          : array [1..MAXFWDLINK] of fwd_link;
  357.                                               { forward link requests     }
  358.   max_dupes    : longint;                     { max dupes kept in database}
  359.   false_dupes  : longint;                     { false dupes found         }
  360.   filler       : array [1..242] of char;      { reserved                  }
  361. end;
  362.  
  363.  
  364. {-------------------------------------------------------------------------}
  365. {  IMAIL.AR Structure                                                     }
  366. {-------------------------------------------------------------------------}
  367.  
  368. TYPE
  369.  
  370. areas_record_type = record
  371.   aname         : areatag;                      { area name               }
  372.   comment       : array [1..61] of char;        { area comment            }
  373.   origin        : origin_typ;                   { origin line to use      }
  374.   group         : char;                         { area group              }
  375.   o_addr        : byte;                         { address for origin      }
  376.   use_akas      : array [1..MAXAKAS] of char;   { addresses for seen-bys  }
  377.   msg_base_type : byte;                         { message base type       }
  378.   brd           : byte;                         { board number            }
  379.   msg_path      : path_typ;                     { MSG directory           }
  380.   bitfield1     : byte;
  381. {  active        : bit_0;                         flag area active        }
  382. {  zone_gate     : bit_1;                         Zone-gate stripping     }
  383. {  tiny_seen     : bit_2;                         tiny seen-by flag       }
  384. {  secure        : bit_3;                         secure flag             }
  385. {  keep_seen     : bit_4;                         keep seen-by flag       }
  386. {  deleted       : bit_5;                         flag deleted area       }
  387. {  auto_added    : bit_6;                         flag auto-added record  }
  388. {  mandatory     : bit_7;                         area is mandatory       }
  389.   bitfield2     : byte;                         {                         }
  390. {  read_only     : bit_0;                         area is read only       }
  391. {  unlinked      : bit_1;                         area has been unlinked  }
  392. {  ulnk_req      : bit_2;                         perform unlinked requests?}
  393. {  hidden        : bit_3;                         area ist hidden         }
  394. {  to_link       : bit_4;                         should by processed by LINK}
  395.   iutil_bits    : byte;                         { bits for IUTIL          }
  396.   user_bits     : byte;                         { 8-bit useravailable bits}
  397.   days          : byte;                         { days to keep messages   }
  398.   msgs          : word;                         { num messages to keep    }
  399.   t_stats       : im_stats;                     { TOSS stats              }
  400.   s_stats       : im_stats;                     { SCAN stats              }
  401.   d_stats       : im_stats;                     { dupe statistics         }
  402.   creation      : longint;                      { date/time of creation   }
  403.   update        : longint;                      { last update by STAT     }
  404.   marked        : longint;                      { used by IUTIL           }
  405.   filler        : array [1..10] of char;
  406.   export        : array [1..MAXEXPORT] of eaddress; { export list             }
  407. end;
  408.  
  409.     { --- Notes ---------------------------------------------------
  410.  
  411.     1) The entries in 'o_addr' and 'use_akas' are indexes into the
  412.        list of AKAs in IMAIL.CF, minus 1. eg:
  413.             im_config.aka[o_addr-1]
  414.        A value of 0 means 'no address'.
  415.  
  416.     2) the 'user_bits' entry allows third-part software to store
  417.        extra information in IMAIL.AR. Their meaning is program-
  418.        specific, so be careful when making use of them!
  419.  
  420.     3) IMAIL.AR knows three predefined areatags:
  421.  
  422.          BADMAIL       for the IMAIL badmail area,
  423.          DUPES         for the IMAIL dupe area and
  424.          PERSMAIL      for the IMAIL personal mail area.
  425.  
  426.        All three boards are treated as local areas and
  427.        the BADMAIL area must be present and non-passthru
  428.        otherwise IMAIL will not run.
  429.     --------------------------------------------------------------- }
  430.  
  431. {-----------------------------------------------------------------------}
  432. {  IMAIL.AX & IMAIL.BX Structures                                       }
  433. {-----------------------------------------------------------------------}
  434.  
  435.     { --- Notes ---------------------------------------------------
  436.  
  437.     1) These are "true" index files, created by BTree routines;
  438.        they cannot be used unless you have the BTree source
  439.        code as implemented in IMAIL.
  440.  
  441.     --------------------------------------------------------------- }
  442.  
  443. {-----------------------------------------------------------------------}
  444. {  IMAIL.ND Structure                                                   }
  445. {-----------------------------------------------------------------------}
  446.  
  447. TYPE
  448.  
  449. node_record_type = record
  450.   dstn          : naddress;                 { Node to pack for            }
  451.   sysop         : array [1..MAXNAME] of char;{ name of sysop               }
  452.   domain        : char;                     { index to domain             }
  453.   pwd           : array [1..MAXPWD] of char;{ AreaFix/Bndl password       }
  454.   att_status    : char;                     { Status of file attach msg   }
  455. { Packprogram was originally named "program" ! }
  456.   Packprogram   : char;                     { packer to use ("packers")   }
  457.   groups        : array [1..27] of char;    { groups node can request     }
  458.   capability    : word;                     { capability word for node    }
  459.   bitfield1     : byte;
  460. {  allow_remote  : bit_0;                     allow remote maint.         }
  461. {  rsvd1         : bit_1;                     reserved                    }
  462. {  auto_cap      : bit_2;                     auto-detect capability      }
  463. {  auto_added    : bit_3;                     record added by IMAIL       }
  464. {  newarea_add   : bit_4;                     auto add to new areas       }
  465. {  newarea_create: bit_5;                     create new areas            }
  466. {  Rescan_ok     : bit_6;                     allow node to rescan        }
  467. {  Notify        : bit_7;                     send notify messages        }
  468.   bitfield2     : byte;
  469. {  rsvd2         : bit_0;                                                 }
  470. {  rsvd3         : bit_1;                                                 }
  471. {  forward_req   : bit_2;                     send forward requests?      }
  472. {  uplink        : bit_3;                     Is this system an uplink?   }
  473. {  fsc_comp      : bit_4;                     Is a FSC-0057 arealink used?}
  474. {  change_packer : bit_5;                     system may change packer    }
  475.   user_bits     : word;                     { 16 user-available bits      }
  476.   newarea_group : char;                     { group for autoadded area    }
  477.   pkt_password  : array [1..9] of char;     { password to include in PKTs }
  478.   last_pwd_change: longint;                 { time ALNK pwd last changed  }
  479.   toprogram     : array [1..11] of char;    { name of area manager        }
  480.   msg_status    : char;                     { Status of Alnk messages     }
  481.   filler        : array [1..8] of char;
  482. end;
  483.  
  484.     { --- Notes ---------------------------------------------------
  485.  
  486.     1) the 'user_bits' entry allows third-part software to store
  487.        extra information in IMAIL.ND. Their meaning is program-
  488.        specific, so be careful when making use of them!
  489.  
  490.     --------------------------------------------------------------- }
  491.  
  492. {-----------------------------------------------------------------------}
  493. {  IMAIL.GR Structure                                                   }
  494. {-----------------------------------------------------------------------}
  495.  
  496. TYPE
  497.  
  498. group_record_type  = record
  499.   grp_desc      : array[1..27] of char;     { Group description           }
  500.   msg_base_type : byte;                     { message base type           }
  501.   msg_path      : path_typ;                 { MSG/Squish path             }
  502.   bitfield1     : byte;
  503. {  active       : bit_0;                      flag area active            }
  504. {  zone_gate    : bit_1;                      Zone-gate stripping         }
  505. {  tiny_seen    : bit_2;                      tiny seen-by flag           }
  506. {  secure       : bit_3;                      secure flag                 }
  507. {  keep_seen    : bit_4;                      keep seen-by flag           }
  508. {  mandatory    : bit_5;                      area is mandatory           }
  509. {  read_only    : bit_6;                      area is read only           }
  510. {  ulnk_req     : bit_7;                      perform unlinked requests?  }
  511.   bitfield2     : byte;
  512. {  hidden       : bit_0;                      area is hidden              }
  513.    days         : byte;                     { days to keep messages       }
  514.    msgs         : word;                     { num messages to keep        }
  515.    filler       : array[1..20] of char;     { reserved                    }
  516. end;
  517.  
  518. {-----------------------------------------------------------------------}
  519. {  IMAIL.PR Structure                                                   }
  520. {-----------------------------------------------------------------------}
  521.  
  522. pack_routing_type = record                  { used in pack routing        }
  523.   dst    : naddress;                        { pack via this node          }
  524.   nodes  : array[1..MAXVIA] of naddress;    { nodes to pack               }
  525.   except : array[1..MAXEXCEPT] of naddress; { exceptions                  }
  526. end;
  527.  
  528.   { Note: In the current implementation, the pack routing has
  529.           as much records as defined in MAXPACK.              }
  530.  
  531. {-----------------------------------------------------------------------}
  532. {  IMAIL.PP Structure                                                   }
  533. {-----------------------------------------------------------------------}
  534.  
  535. TYPE
  536.  
  537. packers = record
  538.   packname   : array[1..5] of char;
  539.   packer     : array[1..MAXPACKNAME] of char;
  540. end;
  541.  
  542. compression_type = record
  543.   prg        : array[1..MAXPACKERS] of packers;{ Packer defintions        }
  544.   arcunpak   : array[1..MAXPACKNAME] of char;  { cmd to de-arc .ARC files }
  545.   arjunpak   : array[1..MAXPACKNAME] of char;  { cmd to de-arc .ARJ files }
  546.   pkpakunpak : array[1..MAXPACKNAME] of char;  { cmd to de-arc .PKA files }
  547.   pkzipunpak : array[1..MAXPACKNAME] of char;  { cmd to de-arc .ZIP files }
  548.   lharcunpak : array[1..MAXPACKNAME] of char;  { cmd to de-arc .LZH files }
  549.   zoounpak   : array[1..MAXPACKNAME] of char;  { cmd to de-arc .ZOO files }
  550.   pakunpak   : array[1..MAXPACKNAME] of char;  { cmd to de-arc .PAK files }
  551.   sqzunpak   : array[1..MAXPACKNAME] of char;  { cmd to de-arc .SQZ files }
  552.   unkunpak   : array[1..MAXPACKNAME] of char;  { cmd to de-arc unknown files}
  553. end;
  554.  
  555.  
  556. {-----------------------------------------------------------------------}
  557. {  IMAIL.DP/IMAIL.DP1/IMAIL.DP2 Structure                               }
  558. {-----------------------------------------------------------------------}
  559.  
  560.     { --- Notes ---------------------------------------------------------
  561.  
  562.     1) The dupe database consists simply of a series of word-sized values,
  563.        which are a 32-bit CRC of (in order) the following data:
  564.           Addressee's name
  565.           Sender's name
  566.           Date
  567.           Subject
  568.           Address and MSGID (if any)
  569.  
  570.     --------------------------------------------------------------------- }
  571.  
  572. { end of IMAIL-structures }
  573. {-----------------------------------------------------------------------}
  574.  
  575.