TIP: Click on subject to list as thread! ANSI
echo: power_bas
to: GEORGE BLECK
from: CHRIS ADAMS
date: 1995-03-21 18:45:00
subject: Message Base Formats

On (19 Mar 95) George Bleck wrote to All...
 GB> Does anyone have the record structures for the more popular BBS message
 GB> base formats (Fido , JAM, Huson ).  I can't seem to find them
 GB> anywhere...
Squish:
 ' *.SQ? BASIC .BI Structure
 '-------------------------------------------------------------------------
 'Ok, now for the explanations: the two main files are .SQD and
 '.SQI.  The first structure is for the .SQI file (you can open
 'that one as RANDOM with a length of 12); the others are for the .SQD
 ' file (which you open as BINARY).
 '
 'There is a one-to-one correspondence between records in .SQI and the
 '(non deleted) messages.  You want message #25: just read the 25th
 'record from the .SQI file into the SQIDX-dimensioned variable.  Then,
 'use the offset SQI.OFFST + 1 to read the SQHDR-dimensioned variable
 '(the SQI offsets start at 0 but QB treats the first byte in a BINARY
 'file as byte 1).  This SQHDR is 28-bytes long, and it is immediately
 'followed by the 238 bytes of the SQMSG-defined variable (the message
 'header), and SQD.MSGLEN bytes of message text.
 '
  TYPE SQIDX                '.SQI file: one of these (12 bytes) per message.
    Offst  AS LONG          'Offset to message header start
    UmsgID AS LONG          'MSG number
    Hash   AS LONG          'Message Hash information
  END TYPE
  TYPE SQBASE               '.SQD database header (256 bytes): 1 per .SQD 
ile
    SLEN    AS INTEGER      'Signed INT with a min of -32767, max of 32767
    RSVD1   AS INTEGER      'Reserved
    NUMMSG  AS LONG         'No of msgs in area
    HiMsg   AS LONG         'Highest msg number (same as NUMMSG)
    SKIPMSG AS LONG         'Number of msgs to protect from autoKill
    HiWater AS LONG         'Highwater mark
    UID     AS LONG         'Number of next UMSGID to use
    BaseId  AS STRING * 80  'Name (incl path) of this message base
    FBEGIN  AS LONG         'Offset to 1st frame
    FLAST   AS LONG         'Offset to last frame
    FFBEGIN AS LONG         'Offset to 1st free frame
    FFLAST  AS LONG         'Offset to last free frame
    FEND    AS LONG         'Offset to end of file
    MAXMSGS AS LONG         'Number of msgs to keep
    MAXDAYS AS INTEGER      'Number of days to keep msgs for
    SZSQHDR AS INTEGER      'Size of SQHDR (Always 28 bytes)
  END TYPE
  TYPE SQHDR
          ID     AS LONG    'Squish signature - Always 0xAFAE4453
          Nextf  AS LONG    'Offset to next frame or 0 if last frame
          Prevf  AS LONG    'Offset to prior frame or 0 if first frame
          FLEN   AS LONG    'Frame length for this frame not including SqdHdr
          MsgLen AS LONG    'Message length - same as FLEN
          CLEN   AS LONG    'Lenth of Control Information
          FTYP   AS INTEGER 'File type - Always 0 (normal) if new message,
                            '            1 (delated msg) if available frame.
          RSVD   AS INTEGER 'Reserved
  END TYPE
  TYPE SQMESSAGE        ' The message Header, as it appears in a Squish area
       ATTRIB      AS STRING * 4  'Message Attribute Flag
       From        AS STRING * 36 'From Name with trailing nulls
       Dest        AS STRING * 36 'To Name with trailing nulls
       Subj        AS STRING * 72 'Message subject with trailing nulls
       OrigZone    AS INTEGER     'Origination Zone
       OrigNet     AS INTEGER     'Origination Net
       OrigNode    AS INTEGER     'Origination Node
       OrigPoint   AS INTEGER     'Origination Point
       DestZone    AS INTEGER     'Destination Zone
       DestNet     AS INTEGER     'Destination Net
       DestNode    AS INTEGER     'Destination Node
       DestPoint   AS INTEGER     'Destination Point
       DateWritten AS LONG        'DOS-ST date/time STAMP
       DateArrived AS LONG        'DOS-ST date/time STAMP
       UTCofs      AS INTEGER     'Not Used
       ReplyTo     AS LONG        'UMSGID of message this replies to
       Replies     AS STRING * 36 '36 bytes for reply array
       UmsgID      AS LONG        'UMSGID is only used if the MSGUID Bit is
                                  '       set in the ATTRIBUTE Field
       DateMsg     AS STRING * 20 'ASCII Z Date
  END TYPE
... Cat HAIR all over the keyboard...Don't blame me for spelling errors.
--- PPoint 1.88
---------------
* Origin: The Point of Obfuscation! (1:212/2001.5)

SOURCE: echomail via exec-pc

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.