/*
 *  MBMAIL.H - 6/12/87
 */

#define mb_version 7
extern char *mbfile, *mbbfile, *msgdir;
extern int mfl, mflb;
extern char *ufwd, *bfwd;
extern short ufwdm, ufwdn, bfwdm, bfwdn;
extern char wpcall[ln_call];

/*
 *  Prompts associated with message commands.
 */

#define num_mm 19
extern	char *mm[num_mm];

/*
 *  Message header record.
 */

#define m_read	 0x01  /* Message has been read by recipient	*/
#define m_fwd	 0x02  /* Message has been forwarded		*/
#define m_chk	 0x04  /* Forwarding has tried this message	*/
#define m_known  0x08  /* Message destination known locally	*/
#define m_unk	 0x10  /* Message destination not known by wp	*/
#define mhtitl 80      /* Length of title. */

typedef struct msg_hdr_s
{
  word next;	      /* Next message header record			 */
  word prev;	      /* Previous message header record 		 */
  word ext;	      /* Header extension record, or zero		 */
  word number;	      /* Message number 				 */
  word size;	      /* Size in bytes					 */
  char type;	      /* Message type					 */
  byte stat;	      /* Message status, see bit definitions above	 */
  char to  [ln_call]; /* Destination call				 */
  char from[ln_call]; /* Originator call				 */
  char date[ln_date]; /* Entry date					 */
  char time[ln_time]; /* Entry time					 */
  word rn;	      /* Record number of this record			 */
  word read;	      /* # times the message has been read		 */
  word unu3;	      /* Available					 */
  char bbs [ln_call]; /* Destination BBS, or distribution list		 */
  word unu2;	      /* Available					 */
  char title[mhtitl];
} MSG_HDR;

/*
 *  Message header extension item.
 */

#define mmesn 17             /* Max calls in distribution list */

typedef struct msg_ext_s
{
  word next;		     /* Next extension item, or free item   */
  char call[mmesn][ln_call]; /* Calls to send it to		    */
  byte flag[mmesn];	     /* TRUE if need to send, FALSE if sent */
  byte count;		     /* Number of calls in list 	    */
  word unu1;
  word unu2;
  word unu3;
} MSG_EXT;

/*
 *  Mail file header record.
 */

typedef struct mail_hdr_s
{
  word next;	      /* Next record to allocate	 */
  word first;	      /* First message header record	 */
  word last;	      /* Last message header record	 */
  word ffree;	      /* First record in free chain	 */
  word lfree;	      /* Last record in free chain	 */
  word next_msg;      /* Next message number		 */
  byte version;       /* File format version number	 */
  word free;	      /* Number of records in free chain */
  word count;	      /* Number of messages		 */
  char date[ln_date]; /* Date of last untangle		 */
  char time[ln_time]; /* Time of last untangle		 */
  word unt_msg;       /* next_msg at last untangle	 */
  char unused[99];
} MAIL_HDR;

extern MAIL_HDR *mfhs;
extern MSG_HDR	*tmmhs;
extern MSG_EXT	*mmes;
