[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
type
  _fido_fromtype = string[35];
  _fido_totype   = string[35];
  _fido_subtype  = string[71];
  _fido_datetype = string[19];


  _fidomsgtype = record
    from         : _fido_fromtype; (* 0 *)
    towhom       : _fido_totype;   (* 35 *)
    subject      : _fido_subtype;  (* 71 *)
    azdate       : _fido_datetype; (* 142 obsolete/unused ascii date information        *)
    timesread    : word;           (* 162 fido<tm>: number of times read                *)
    dest_node    : word;           (* 164 destination node                              *)
    orig_node    : word;           (* 166 origination node number                       *)
    cost         : word;           (* 168 unit cost charged to send the message         *)
    orig_net     : word;           (* 170 origination network number                    *)
    dest_net     : word;           (* 172 destination network number                    *)

    date_written : longint;        (* 176 when user wrote the msg              *)
    date_arrived : longint;        (* 180 when msg arrived on-line             *)
    reply        : word;           (* 184 current msg is a reply to this msg number     *)
    attr         : word;           (* 186 attribute (behavior) of the message           *)
    up           : word;           (* 188 Next message in the thread              *)
  end;




const
  msgprivate  = $0001; (* for addressee *only*    * 0000 0000 0000 0001 *)
  msgcrash    = $0002; (* high priority           * 0000 0000 0000 0010 *)
  msgread     = $0004; (* was read by addressee   * 0000 0000 0000 0100 *)
  msgsent     = $0008; (* was sent by fidomail      0000 0000 0000 1000 *)
  msgfile     = $0010; (* subj=file(s) to send    * 0000 0000 0001 0000 *)
  msgfwd      = $0020; (* msg from & to elsewhere   0000 0000 0010 0000 *)
  msgorphan   = $0040; (* msg destination unknown   0000 0000 0100 0000 *)
  msgkill     = $0080; (* delete after sending    * 0000 0000 1000 0000 *)
  msglocal    = $0100; (* msg is local, not net     0000 0001 0000 0000 *)
  msghold     = $0200; (* hold msg for pickup     * 0000 0010 0000 0000 *)
  msgcrap     = $0400; (* ---------------------- x  0000 0100 0000 0000 *)
  msgfrq      = $0800; (* subj=file(s) to get     * 0000 1000 0000 0000 *)
  msgrrq      = $1000; (* msg receipt requested  x* 0001 0000 0000 0000 *)
  msgcpt      = $2000; (* msg is a msg receipt   x* 0010 0000 0000 0000 *)
  msgarq      = $4000; (* audit trail requested  x* 0100 0000 0000 0000 *)
  msgurq      = $8000; (* subj=files(s) to upd   x* 1000 0000 0000 0000 *)
                                                 (*------------------------*)
                                                 (* ^                     *)
                                                 (* ||                     *)
                                                 (* ||* = preserved by     *)
                                                 (* ||    the network      *)
                                                 (* ||? = stripped by the  *)
                                                 (* |     net (ftsc spec)  *)
                                                 (* |     but preserved    *)
                                                 (* |     by seadog<tm>    *)
                                                 (* |x  = not used by opus *)
                                                 (*------------------------*)


const
  sysmail      = $0001; (* is a mail area                                *)
  p_rep        = $0002; (* opus: net mail private echomail back          *)
  nopublic     = $0004; (* opus: disallow public messages                *)
  noprivate    = $0008; (* opus: disallow private messages               *)
  anon_ok      = $0010; (* opus: enable anonymous messages               *)
  echomail     = $0020; (* opus: set=echomail clear=not echomail         *)
  opus_ualias  = $0040; (* opus170: use user's alias in this area        *)
  highbit      = $0040; (* max:  allow high-bit chars in this area       *)
  passthrough  = $0080; (* opus170: passthough area only                 *)
  inbound      = $0100; (* opus170: inbound only area                    *)
  nrealname    = $0200; (* max:  don't use ALNAME for this area      *)
  userealname  = $0400; (* max:  use usr.name instead of alias           *)
  conf         = $0800; (* max:  conference-type area (no origin/sb's)   *)
  max_ualias   = $1000; (* max:  use usr.alias instead of usr.name       *)



type
  umsgid_type     = longint;
  recpos_type     = longint;
  _address        = record zone,net,node,point : word end;
  msgbuftype      = array[0..0] of char;
  msgbufptrtype   = msgbuftype;


const
  sqhdrid         = $afae4453;  (* squish headers must have this number *)
  linknext        = 0;
  linkprev        = 1;
  nullframe       = 0;
  frame_msg       = 0;          (* it's a live message *)
  frame_free      = 1;          (* the message is dead, avail for new msg *)
  frame_rle       = 2;          (* type of compression, not implemented *)
  frame_lzw       = 3;          (* type of compression, not implemented *)
  sqmsg_from_size = 36;
  sqmsg_to_size   = 36;
  sqmsg_subj_size = 72;
  max_reply       = 10;         (* max number of stored replies to one msg  *)

(* this is the first record in the *.sqd file *)

type
  _sqbasetype = record
    len     : word;           (* length of this structure!   0   2 *)
    rsvd1   : word;           (* reserved word   2   4 *)
    num_msg,                  (* number of msgs   4   8 *)
    high_msg,                 (* highest msg -  always equal to num_msg   8  12 *)
    skip_msg: longint;        (* # of msgs to keep in beginning of area  12  16 *)
    high_water : umsgid_type; (* high water marker (umsgid)  16  20 *)
    uid        : umsgid_type; (* last usmgid  20  24 *)
    base       : string[79];  (* base name for squishfile  24 104 *)
    begin_frame,              (* offset of first frame in file 104 108 *)
    last_frame,               (* offset to last frame in file 108 112 *)
    first_free,               (* offset of first free frame in file 112 116 *)
    last_free,                (* ofs of the last free frame 116 120 *)
    end_frame  : recpos_type; (* pointer to end of file 120 124 *)
    max_msg    : longint;     (* maximum number of messages 124 128 *)
    keep_days  : word;        (* max age of messages 128 130 *)
    sz_sqhdr   : word;        (* size of fram header 130 132 *)
    rsvd2      : array[1..124] of byte       (* reserved area 132 256 *)
   end;


(*
 After thge BASE record, follows a frame record for EACH message. The
 begin_frame in the base should point to the first frame header, and
 the next_frame in the frame header should point to the next one, etc.
*)

  _sqfhdrtype = record
    id          : longint;        (* sqhdr.id must always equal sqhdrid *)
    next_frame,                   (* pointer to next msg in base *)
    prev_frame  : recpos_type;    (* pointer to prior msg in base *)
    frame_length,                 (* length of this frame (not counting header) *)
    msg_length,                   (* length of msg in frame. may be less than
                                     frame_length if this frame has been recycled. *)
    clen        : longint;        (* length of the control information. *)
    frame_type  : word;           (* Either FRAME_MESSAGE or FRAME_FREE. The API
                                     has been designed to allow things such
                                     as FRAME_LZSS or FRAME_LZH to be hacked on
                                     later, without changing the application. *)
    rsvd        : word;           (* reserved *)
  end;


(*

But right after each frame header, follows the squish message header,
then the control info, then the text.

*)

  _sqmhdrtype = record
      attr      : longint;
      fromwhom  : string[sqmsg_from_size-1];
      towhom    : string[sqmsg_to_size-1];
      subj      : string[sqmsg_subj_size-1];
      orig,
      dest      : _address;                   (* origination and destination addresses *)
      date_written,                       (* when user wrote the msg (utc) *)
      date_arrived  : longint;            (* when msg arrived on-line (utc) *)
      utc_ofs   : word;                   (* minutes offset from utc of message writer *)
      replyto   : umsgid_type;
      replies   : array[1..max_reply] of umsgid_type;
      azdate    : string[19];             (* ascii date *)
    end;


(*
  Each SQD file has a SQI FILES.  The message number YOU see (the user)
  in MAX is really the counter starting from 1 of each record in SQI.
  But the TRUE UNIQUE Message ID is in umsgid. The ofs value will
  point to the frame header in SQD.  These files are small and you
  may read them into a array SqiPtrArrayType using the functions
  below.

*)

  _sqidxtype = record
    ofs    : recpos_type;           (* offset of frame header *)
    umsgid : umsgid_type;           (* unique message identifier *)
    hash   : longint;               (* 'To' name hash value *)
  end;

  sqiptrarraytype = array[1..1] of _sqidxtype;
  sqiptrtype      = sqiptrarraytype;


(*

Sizes of various structures.  WARNING, alot of the routines use these
variables. You should be more dynamic and reading the true sizes SCOTT
puts in the squish structures (if any).

*)


const
  _sqbsize : word = sizeof(_sqbasetype);
  _sqfsize : word = sizeof(_sqfhdrtype);
  _sqmsize : word = sizeof(_sqmhdrtype);
  _sqisize : word = sizeof(_sqidxtype);
  _sdmsize : word = sizeof(_fidomsgtype);


(*

Function Prototypes in this unit.

*)

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson