//  This may look like C code, but it is really -*- C++ -*-

//  ------------------------------------------------------------------
//  The Goldware Library
//  Copyright (C) 1990-1999 Odinn Sorensen
//  ------------------------------------------------------------------
//  This library is free software; you can redistribute it and/or
//  modify it under the terms of the GNU Library General Public
//  License as published by the Free Software Foundation; either
//  version 2 of the License, or (at your option) any later version.
//
//  This library is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//  Library General Public License for more details.
//
//  You should have received a copy of the GNU Library General Public
//  License along with this program; if not, write to the Free
//  Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
//  MA 02111-1307, USA
//  ------------------------------------------------------------------
//  $Id$
//  ------------------------------------------------------------------

#if defined(GOLD_CANPACK)
#pragma pack(1)
#endif

//  ------------------------------------------------------------------

#ifdef __OS2__
#define INCL_BASE
#include <os2.h>
#else
typedef char     CHAR;
typedef uint8_t  UCHAR;
typedef  int16_t SHORT;
typedef uint16_t USHORT;
#endif


//  ------------------------------------------------------------------

#define SMALLEST_MSG_SIZE_FOR_PACKING   384

#define MAX_MSG_AREAS  10240
#define MAX_FIL_AREAS  10240

/* bbs.attribs */
    #define B_LOGALLHELP      0x00000001
    #define B_PREREGISTERED   0x00000002
    #define B_NOPRETTY        0x00000004
    #define B_INTL            0x00000008
    #define B_NOHAPPY         0x00000010
    #define B_ANSINEWS        0x00000020
    #define B_NODUPENUMS      0x00000040
    #define B_COLOR           0x00000080
    #define B_HIGHASCII       0x00000100
    #define B_PAUSE           0x00000200
    #define B_CLEAR           0x00000400
    #define B_COLD            0x00000800
    #define B_WIDTH           0x00001000
    #define B_LENGTH          0x00002000
    #define B_SHOW            0x00004000
    #define B_PHONE           0x00008000
    #define B_ADDRESS         0x00010000
    #define B_HANDLE          0x00020000
    #define B_PASSWORD        0x00040000
    #define B_INTERESTS       0x00080000
    #define B_COMPUTERS       0x00100000
    #define B_NO_NEW_EDIT     0x00200000
    #define B_LOGONQUOTE      0x00400000
    #define B_COMPRESS        0x00800000
    #define B_LOGOFFQUOTE     0x01000000
    #define B_LOGOFFMSG       0x02000000
    #define B_FIRSTLOGMSG     0x04000000
    #define B_FIRSTLOGCALLBK  0x08000000
    #define B_ALWAYSCALLBACK  0x10000000
    #define B_AUTOPASSWORDS   0x20000000
    #define B_FOLLOWBBS       0x40000000
    #define B_SYSOPIN         0x80000000
    #define BIT_1             0x00000001
    #define BIT_2             0x00000002
    #define BIT_3             0x00000004
    #define BIT_4             0x00000008
    #define BIT_5             0x00000010
    #define BIT_6             0x00000020
    #define BIT_7             0x00000040
    #define BIT_8             0x00000080
    #define BIT_9             0x00000100
    #define BIT_10            0x00000200
    #define BIT_11            0x00000400
    #define BIT_12            0x00000800
    #define BIT_13            0x00001000
    #define BIT_14            0x00002000
    #define BIT_15            0x00004000
    #define BIT_16            0x00008000
    #define BIT_17            0x00010000
    #define BIT_18            0x00020000
    #define BIT_19            0x00040000
    #define BIT_20            0x00080000
    #define BIT_21            0x00100000
    #define BIT_22            0x00200000
    #define BIT_23            0x00400000
    #define BIT_24            0x00800000
    #define BIT_25            0x01000000
    #define BIT_26            0x02000000
    #define BIT_27            0x04000000
    #define BIT_28            0x08000000
    #define BIT_29            0x10000000
    #define BIT_30            0x20000000
    #define BIT_31            0x40000000
    #define BIT_32            0x80000000

/* bbs.attribs2 */
    #define B2_ANSI           0x00000001
    #define B2_USEVER7        0x00000002
    #define B2_AUTOVERIFY     0x00000004
    #define B2_FTNTOALL       0x00000008
    #define B2_MINIMIZEBBS    0x00000010
    #define B2_SMALLFONT      0x00000020
    #define B2_DATAPHONE      0x00000040
    #define B2_FAXPHONE       0x00000080
    #define B2_BUSPHONE       0x00000100
    #define B2_ADDRESS2       0x00000200
    #define B2_ADDRESS3       0x00000400
    #define B2_CITY           0x00000800
    #define B2_STATE          0x00001000
    #define B2_ZIPCODE        0x00002000
    #define B2_USEHANDLE      0x00004000
    #define B2_NOVIDWHENMIN   0x00008000
    #define B2_ABORTREXX      0x00010000
    #define B2_NOBBSSCREEN    0x00020000
    #define B2_CANFASTLOGIN   0x00040000
    #define B2_ADDRESS1REQ    0x00080000
    #define B2_ADDRESS2REQ    0x00100000
    #define B2_ADDRESS3REQ    0x00200000
    #define B2_CITYREQ        0x00400000
    #define B2_STATEREQ       0x00800000
    #define B2_ZIPREQ         0x01000000
    #define B2_HOMEREQ        0x02000000
    #define B2_DATAREQ        0x04000000
    #define B2_BUSINESSREQ    0x08000000
    #define B2_FAXREQ         0x10000000
    #define B2_NOREGTXTINMSG  0x20000000              //JM960109
    #define B2_NUMONLYPHONE   0x40000000              //JM960109
    #define B2_ALWAYSSAVEINI  0x80000000              //JM960109

/* bbs.attribs3 */
    #define B3_UNVERIFIED_NEWMENU       0x00000001
    #define B3_NO_NEWUSERALIAS          0x00000002
    #define B3_DROP_CARRIER_ON_TIMEUP   0x00000004
    #define B3_BBS_WATCH_THREAD         0x00000008
    #define B3_NO_TELNET_TIMEOUT        0x00000010
    #define B3_ENABLE_ACCOUNTING        0x00000020
    #define B3_ENABLE_EXCEPTIONS        0x00000040
    #define B3_FLUSH_SYSTEM             0x00000080
    #define B3_FLUSH_SYSTEM_LOG         0x00000100
    #define B3_NOSTATUS                 0x00000200
    #define B3_STARTFTP                 0x00000400
    #define B3_NOCHAT                   0x00000800
    #define B3_SYSTEM_INFO              0x00001000
    #define B3_BBS_INFO                 0x00002000
    #define B3_SYSOP_MAIL               0x00004000
    #define B3_FULL_LANG_BUF            0x00008000
    #define B3_ALLOW_KILL               0x00010000
    #define B3_POP_KEEP                 0x00020000


/* user attribs */
    #define U_ANSI            0x00000001
    #define U_COLOR           0x00000002
    #define U_HIGHASCII       0x00000004
    #define U_NOMORE          0x00000008
    #define U_NOCLEAR         0x00000010
    #define U_COLD            0x00000020
    #define U_NOSHOWADDRESS   0x00000040
    #define U_NOSHOWPHONE     0x00000080
    #define U_NOSHOWREAL      0x00000100
    #define U_NOKILL          0x00000200
    #define U_DELETED         0x00000400
    #define U_EXPERT          0x00000800
    #define U_TWIT            0x00001000
    #define U_NEWFILES        0x00002000
    #define U_NEWMSGS         0x00004000
    #define U_DLNEWMSGS       0x00008000
    #define U_DLNEWFILELIST   0x00010000
    #define U_SEENEWS         0x00020000
    #define U_ASKDL           0x00040000
    #define U_NOVICE          0x00080000
    #define U_NOROLL          0x00100000
    #define U_POINTONLY       0x00200000
    #define U_LOCKEDOUT       0x00400000
    #define U_AVAILABLE       0x00800000
    #define U_LISTPROTECTED   0x01000000
    #define U_MISCNEWSOK      0x02000000
    #define U_LIMITFLIST      0x04000000
    #define U_EBCDIC          0x08000000
    #define U_VERIFIED        0x10000000              // user call back verified, turn this off, they get

// verified again.. (if BBS verifies)
    #define U_ANSITE2         0x20000000
    #define U_RIPSCRIPT       0x40000000
    #define U_AVATAR          0x80000000

/* user attribs2*/
    #define U2_FSE            0x00000001
    #define U2_OFF_AFTER_MAIL 0x00000002
    #define U2_MONITOR_MAIL   0x00000004
    #define U2_INT_NEW_FILES  0x00000008
    #define U2_INC_BULLETS    0x00000010
    #define U2_INC_WELCOME    0x00000020
    #define U2_DEFAULT_QWK    0x00000040
    #define U2_DEFAULT_FIDO   0x00000080
    #define U2_DEFAULT_TEXT   0x00000100
    #define U2_DEFAULT_BLUE   0x00000200
    #define U2_AVTANS         0x00000400
    #define U2_8DOT3          0x00000800              //JM940610
    #define U2_NOSHOWBDAY     0x00001000
    #define U2_ALLOW_NET_ATTACH 0x00002000
    #define U2_ALLOW_LOCAL_ATTACH 0x00004000
    #define U2_NO_ALT_ED      0x00008000
    #define U2_POP_SCAN       0x00010000
    #define U2_KEEP_SEENBY    0x00020000
    #define U2_ALLOW_KILL     0x00040000
    #define U2_POP_KEEP       0x00080000


/* Used by string_input */
/* flags */
    #define STRF_UCASE        0x00000001
    #define STRF_LCASE        0x00000002
    #define STRF_REQUIRED     0x00000004
    #define STRF_NOECHO       0x00000008
    #define STRF_ENCRYPT      0x00000010
    #define STRF_HOT          0x00000020
    #define STRF_EDIT         0x00000040
    #define STRF_PRETTY       0x00000080
    #define STRF_MUSTHOT      0x00000100
    #define STRF_NEAT         0x00000200
    #define STRF_NOHELP       0x00000400
    #define STRF_NOQUE        0x00000800
    #define STRF_NOQUEONE     0x00001000
    #define STRF_CHATCLNT     0x00002000
    #define STRF_NOTIMECHECK  0x00004000
    #define STRF_NOANSIINCHECK 0x00008000
    #define STRF_ENTEROK      0x00010000
    #define STRF_ALWAYSCHAT   0x00020000              //JM960202
    #define STRF_NOFIRSTPROMPT 0x00040000              //JM960202

/* types */
    #define STRT_ALPHA        1
    #define STRT_NUMERIC      2
    #define STRT_ALPHANUMERIC 3
    #define STRT_HEX          4
    #define STRT_FILENAME     5
    #define STRT_FILESPEC     6
    #define STRT_ALL          7
    #define STRT_ANY          8
    #define STRT_YN           9
    #define STRT_MULTFILES    10
    #define STRT_MULTSPECS    11
    #define STRT_YNQ          12
    #define STRT_YNQS         13
    #define STRT_JUSTFILE     14
    #define STRT_MULTJUST     15
    #define STRT_TELEPHONE    16
    #define STRT_YNNUM        17
    #define STRT_TELEPHONENUM 18                      //JM960109

// Input flags (input, as in do_more, wait_inkey, etc)
    #define IF_RETURNONERROR  0x00000001              // return lost carrier, or timeout
    #define IF_NOQUEUE        0x00000002
    #define IF_NOTIMECHECK    0x00000004
    #define SINGLE_INPUT      0x00000008
    #define PASSWORD_PROMPT   0x00000010

// Input return codes (along with TIMEOUT and LOSTCARRIER)
    #define IRC_NOTIMELEFT    -3
    #define IRC_LOCKEDOUT     -4
    #define IRC_MORON         -5
    #define IRC_REPROMPT      -6
    #define IRC_ENDSYSOPCHAT  -7
    #define IRC_CHATWAITING   -8
    #define IRC_CHATDOWN      -9
    #define IRC_IDLETIMEOUT   -10

#if 0
struct _msgarea
    {
    char            *name;
    char            *descr;
    char            *forceto;
    char            *origin;
    char            *path;
    char            *usenettag;
    int             minage;
    int             maxage;
    uint32_t        r_security1;
    uint32_t        r_security2;
    uint32_t        r_flags1;
    uint32_t        r_flags2;
    uint32_t        w_security1;
    uint32_t        w_security2;
    uint32_t        w_flags1;
    uint32_t        w_flags2;
    uint32_t        s_security1;
    uint32_t        s_security2;
    uint32_t        s_flags1;
    uint32_t        s_flags2;
    uint32_t        areaflags;
    uint32_t        *groupnum;
    PADDR           addr;
    PADDR           feeds;
    uint32_t        number;
    int32_t         TimeFactor;
    char            *password;
    struct _msgarea *next;
    struct _msgarea *prior;
    };

typedef struct _msgarea MSGAREA, *PMSGAREA;       //JM931019
#endif

/*----------------------------------------------------------*/
/* Message area flags (areaflags)                           */
/*----------------------------------------------------------*/
    #define M_NOORIG     0x00000001         /* No Origin or tear       */
    #define M_ANSI       0x00000002         /* Allow Ansi Messages     */
    #define M_PRIVATE    0x00000004         /* Force Msgs Public       */
    #define M_PUBLIC     0x00000008         /* Force Msgs Private      */
    #define M_ECHO       0x00000010         /* Is a Echomail           */
    #define M_NET        0x00000020         /* It a Netmail area       */
    #define M_MCI        0x00000040         /* Allows MCI Commands     */
    #define M_ANON       0x00000080         /* All Msgs Annon.         */
    #define M_REAL       0x00000100         /* Requires Real Name      */
    #define M_ASSOC      0x00000200         /* Msg area allows assoc   */
    #define M_FORCE      0x00000400         /* Always force            */
    #define M_COMPRESS   0x00000800         /* Allow LZSS comp here    */
    #define M_GROUP      0x00001000         /* groupmail               */
    #define M_USENET     0x00002000         /* usenet conference       */
    #define M_QWK        0x00004000         /* qwk conference          */
    #define M_SQUISH     0x00008000         /* Squish MSG Base         */
    #define M_EMAIL      0x00010000         /* Internet E-Mail         */
    #define M_FIDO       0x00100000         /* Star . msg Format       */
    #define M_JAM        0x00200000         /* JAM msg Format          */

#if 0
struct _filearea
    {
    char             *name;
    char             *descr;
    int             minage;
    int             maxage;
    uint32_t         r_security1;
    uint32_t         r_security2;
    uint32_t         r_flags1;
    uint32_t         r_flags2;
    uint32_t         w_security1;
    uint32_t         w_security2;
    uint32_t         w_flags1;
    uint32_t         w_flags2;
    uint32_t         s_security1;
    uint32_t         s_security2;
    uint32_t         s_flags1;
    uint32_t         s_flags2;
    uint32_t         areaflags;
    uint32_t         groupnum[256];
    int              cost_per_k;
    uint32_t         number;
    char             *upath;
    char             *dpath;
    char             *password;
    char             *ftpname;
    int32_t          TimeFactor;
    struct _filearea *next;
    struct _filearea *prior;
    };


typedef struct _filearea FILEAREA, *PFILEAREA;    //JM931019
#endif

/*-----------------------------------------------------------*/
/* File area flags (areaflags)                               */
/*-----------------------------------------------------------*/
    #define F_FREE       0x00000001         /*                           */
    #define F_NOUP       0x00000002         /*                           */
    #define F_NODOWN     0x00000004         /*                           */
    #define F_LEECH      0x00000008         /*                           */
    #define F_DOWNBACK   0x00000010         /*                           */
    #define F_UPBACK     0x00000020         /*                           */
    #define F_CHARGE     0x00000040         /*                           */
    #define F_CANTLIST   0x00000080         // Uploads not listable
    #define F_CANTDL     0x00000100         // Uploads not downloadable
    #define F_NOFBBS     0x00000200         /* no FILES.BBS at all       */
    #define F_COMMONONLY 0x00000400         /* use only common FILES.BBS */
    #define F_UPBLIND    0x00000800         // UL get desc. afterwards
    #define F_COPYFILE   0x00001000         // copy download from CD to HD
    #define F_NODIR      0x00002000         // copy download from CD to HD
    #define F_NOCOMMON   0x00004000         // copy download from CD to HD
    #define F_NOSEARCH   0x00008000         // copy download from CD to HD


#if 0
typedef struct _libarea
    {
    char            *name;
    char            *descr;
    int             minage;
    int             maxage;
    uint32_t        r_security1;
    uint32_t        r_security2;
    uint32_t        r_flags1;
    uint32_t        r_flags2;
    uint32_t        w_security1;
    uint32_t        w_security2;
    uint32_t        w_flags1;
    uint32_t        w_flags2;
    uint32_t        s_security1;
    uint32_t        s_security2;
    uint32_t        s_flags1;
    uint32_t        s_flags2;
    uint32_t        areaflags;
    uint32_t        number;
    char            *path;
    char            *password;
    struct _libarea *next;
    struct _libarea *prior;
    } LIBAREA, *PLIBAREA;
#endif


/*----------------------------------------------------------*/
/* Library area flags (areaflags)                           */
/*----------------------------------------------------------*/
    #define L_ANSIONLY   0x00000001                   /*                         */
// Group structure

#if 0
typedef struct _GROUP
    {
    PSZ      Name;
    PSZ      Password;
    int32_t  Number;
    uint32_t Flags;
    uint32_t MinutesPerDay;
    uint32_t MinutesPerCall;
    uint32_t DaysBeforeExpiration;
    int32_t  ExpireToGroup;
    uint32_t MaxBankTime;
    uint32_t MaxUKPerDay;
    uint32_t MaxDKPerDay;
    uint32_t ULDLRatio;
    uint32_t RatioCredit;
    uint32_t Security1;
    uint32_t Security2;
    uint32_t Flags1;
    uint32_t Flags2;
    int      CreditsPerUnit;
    int      CreditsPerUnitPeek;
    int      FreeCreditsDay;
    int      FreeCreditsWeek;
    int      FreeCreditsMonth;
    int      FreeCreditsPercentage;
    int      MaxDebt;
    int32_t  GroupIfBroke;
    USHORT   DaysBetweenPWChange;
    PSZ      MainMenu;
    PSZ      MainMenuUnVerified;
    struct _GROUP *Next;
    struct _GROUP *Prev;
    } GROUP, *PGROUP;
#endif

// Group Flags
    #define G_FLAGSOVERWRITE   0x00000001   // if not overwrite, then accumulate
    #define G_SECOVERWRITE     0x00000002   // if not overwrite, then ignore
    #define G_RATIOONBYTES     0x00000004   // if not bytes, then files
    #define G_TIMEOVERWRITE    0x00000008   // if not overwrite, then ignore
///// New File Search Info


#if 0
typedef struct _user_info
    {
    CHAR        name[36];
    CHAR        handle[36];
    CHAR        address[60];
    CHAR        address1[60];
    CHAR        address2[60];
    CHAR        city[20];
    CHAR        state[5];
    CHAR        zipcode[10];
    CHAR        home_phone[21];
    CHAR        data_phone[21];
    CHAR        fax_phone[21];
    CHAR        bus_phone[21];
    CHAR        interests[78];
    CHAR        SysOpComment[78];
    USHORT      BankTime;
    USHORT      computer_type;
    uint32_t    userid;
    USHORT      pointid;
    time32_t    initial_logon;
    time32_t    expires;
    time32_t    last_logon;
    time32_t    logon_today;
    USHORT      birthyear;
    UCHAR       birthmonth;
    UCHAR       birthday;
    UCHAR       Gender;
    int32_t     credit;
    int32_t     minlimit;               // what exactly is this?
    int32_t     Group;                  // must match Group->Number
    uint32_t    CurrLastRead;           // last Read for current msg area
    uint32_t    time_today;             // seconds used today
    uint32_t    time_per_day;           // minutes allowed per day
    uint32_t    time_per_call;          // minutes per call  0=just per day
    uint32_t    numcalls;
    uint32_t    ulnum;                  // files uploaded (ever)
    uint32_t    dlnum;                  // files downloaded (ever)
    uint32_t    ulk;                    // UL in K (ever)
    uint32_t    dlk;                    // DL in K (ever)
    uint32_t    uktoday;                // UL in K Today
    uint32_t    dktoday;                // DL in K Today
    uint32_t    ukperday;               // Max UL K Per day
    uint32_t    dkperday;               // Max DL K Per day
    uint32_t    numposts;
    uint32_t    security1;
    uint32_t    security2;
    uint32_t    flags1;
    uint32_t    flags2;
    uint32_t    attribs;
    uint32_t    attribs2;
    USHORT      length;
    USHORT      width;
    USHORT      lastmsgarea;
    USHORT      lastfilearea;
    UCHAR       lastprotocol;
    UCHAR       lastarchiver;
    int32_t     forsysop;
    UCHAR       interface;
    UCHAR       exp;
    USHORT      leech_percent;
    USHORT      MaxBankTime;
    SHORT       TimeCredit;             // can be negative or positive
    SHORT       CallsToday;
    int32_t     TotalMinsEver;
    int32_t     NetmailDebits;
    time32_t    LastPWChange;
    time32_t    LastListedNewFiles;     //JM940822
    uint32_t    FileKCredit;
    CHAR        UnixId[8];
    CHAR        Country[24];
    USHORT      weight;
    CHAR        height[5];
    CHAR        Pref;
    CHAR        LangIdent[4];           // permanent language identifier
    USHORT      MailDLsToday;           //JM960118
    USHORT      UsesOLMail;             //JM960119
    CHAR        POPPassword[16];
    CHAR        POPLogin[16];
    CHAR        POPServer[128];
    CHAR        NoLongerUsed[22];
    UCHAR       _UnUsedOldTags[256];
    uint32_t    PasswordCRC;
    uint32_t    PasswordCRC2;
    USHORT      Max_Mail_Pkt;
    CHAR        ReAsked;                // TRUE if reasked question were answered
    USHORT      timeout;
    USHORT      CurrMsgGroup;
    USHORT      CurrFileGroup;
    CHAR        EMail[37];
    CHAR        FidoMail[32];
    } USER, *PUSER;


typedef struct _xmsg
    {
    CHAR     MajorVersion;
    CHAR     MinorVersion;
    USHORT   StructLen;
    CHAR     from[60];
    CHAR     to[60];
    CHAR     subj[70];
    CHAR     date[35];                  /*   */
    CHAR     indate[4];                 /* import date  (YMD(null))                     */
    uint32_t msgnum;
    uint32_t timesread;
    time32_t timerecv;
    uint32_t length;                    /* Length of message */
    int32_t  start;                     /* Starting postition in text file              */
    uint32_t OrigMsg;
    uint32_t miscdatlen;
    uint32_t miscdatstart;
    USHORT   o_zone;
    USHORT   o_net;
    USHORT   o_node;
    USHORT   o_point;
    USHORT   d_zone;
    USHORT   d_net;                     /* Destination network number                   */
    USHORT   d_node;                    /* Destination node                             */
    USHORT   d_point;
    USHORT   cost;                      /* Unit cost charged to send the message        */
    USHORT   fflags;                    /* Attribute (behavior) of the message          */
    USHORT   xflags;                    /* Extra attributes                             */
    uint32_t bflags;
    uint32_t cflags;
    } XMSG, *PXMSG;
#endif


/*----------------------------------------------------*/
/* FIDO Message attributes (fflags)                   */
/*----------------------------------------------------*/
    #define MSGPRIVATE 0x0001                         /* private message,        */
    #define MSGCRASH   0x0002                         /* accept for forwarding   */
    #define MSGREAD    0x0004                         /* read by addressee       */
    #define MSGSENT    0x0008                         /* sent OK (remote)        */
    #define MSGFILE    0x0010                         /* file attached to msg    */
    #define MSGFWD     0x0020                         /* being forwarded         */
    #define MSGORPHAN  0x0040                         /* unknown dest node       */
    #define MSGKILL    0x0080                         /* kill after mailing      */
    #define MSGLOCAL   0x0100                         /* FidoNet vs. local       */
    #define MSGXX1     0x0200                         /*                         */
    #define MSGXX2     0x0400                         /* STRIPPED by FidoNet<tm> */
    #define MSGFRQ     0x0800                         /* file request            */
    #define MSGRRQ     0x1000                         /* receipt requested       */
    #define MSGCPT     0x2000                         /* is a return receipt     */
    #define MSGARQ     0x4000                         /* audit trail requested   */
    #define MSGURQ     0x8000                         /* update request          */

/*----------------------------------------------------*/
/*----------------------------------------------------*/
/* Adept Message attributes (xflags)                  */
/*----------------------------------------------------*/
    #define MSGDELETED 0x0001                         /* deleted message,          0000 0000 0000 0001*/
    #define MSGANON    0x0002                         /* anonymous message         0000 0000 0000 0010*/
    #define MSGECHO    0x0004                         /* unmoved echo message      0000 0000 0000 0100*/
    #define MSGNET     0x0008                         /* unmoved net message       0000 0000 0000 1000*/
    #define MSGHOLD    0x0010                         /* file attached to msg      0000 0000 0001 0000*/
    #define MSGHOST    0x0020                         /* being forwarded           0000 0000 0010 0000*/
    #define MSGSCANNED 0x0040                         /* fidonet scanned           0000 0000 0100 0000*/
    #define MSGKEEP    0x0080                         /* don't delete              0000 0000 1000 0000*/
    #define MSGTREATED 0x0100                         /* soft cr's & lf's removed  0000 0001 0000 0000*/
    #define MSGPACKED  0x0200                         /* message LZSS compressed   0000 0010 0000 0000*/
    #define MSGGSCAN   0x0400                         /* groupmail scanned         0000 0100 0000 0000*/
    #define MSGRSCAN   0x0800                         /* rfc0822 scanned           0000 1000 0000 0000*/
/*#define    0x1000      0001 0000 0000 0000*/
/*#define    0x2000      0010 0000 0000 0000*/
    #define MSGARCHIVED 0x4000                        /*                           0100 0000 0000 0000*/
    #define MSGTAGGED  0x8000                         /* used by offline readers   1000 0000 0000 0000*/
/*----------------------------------------------------*/

#if defined(GOLD_CANPACK)
#pragma pack()
#endif

//  ------------------------------------------------------------------