#include <stdio.h>
#include <stdlib.h>
#include <exec/types.h>
#include <ctype.h>
#include <string.h>
#include <libraries/dosextens.h>

#define Prototype extern
#define Local static

#define VERSION		"1.11"
#define UUMAIL		"uumail:"
#define UULIB		"uulib:"
#define UULIB_CONFIG	"uulib:Config"
#define SIGNATURE	".signature"
#define ELM_RC		".elm/elmrc"
#define ELM_HEADERS	".elm/elmheaders"
#define ELM_ALIASES	".elm/aliases"
#define REVERSE_ON	"\033[7m"
#define UNDERLINE_ON	"\033[4m"
#define BOLDFACE_ON	"\033[1m"
#define PLAIN_TEXT	"\033[0m"
#define FULL		0
#define UPDATE		1
#define MAX_LINELENGTH	1024

typedef int StatusFlag;

struct MailItem {
    struct MailItem *next;      /* next mail item in list */
    long ArtikelStart;          /* start of article within file */
    long ArtikelEnd;            /* end of article within file */
    long TextStart;             /* start of real text */
    long SignatureStart;        /* start of signature */
    long Lines;                 /* number of lines (real text, no header) */
    long TotalLines;            /* total number of lines (header and body) */
    char *From;                 /* sender (full address) */
    char *FromName;             /* sender (real name) */
    char *To;                   /* receiver (normal: me) */
    char *ToName;               /* receiver (real name) */
    char *Cc;                   /* carbon copy */
    char *Bcc;                  /* blind carbon copy */
    char *Subject;              /* Subject: */
    char *Date;                 /* date (short) */
    char *RR_To;                /* Return-Receipt-To: */
    char *RV_To;                /* Return-View-To: */
    char *ReplyTo;              /* Reply-To: */
    char *MessageID;            /* Message-Id: */
    StatusFlag Status;          /* status flags */
    StatusFlag OldStatus;       /* old status flags (folder changed?) */
    int Urgent;                 /* this message is tagged urgent */
};

struct AliasItem {
    struct AliasItem *next;
    char *alias;
    char *real;
};


#include "protos.h"

/* Status Flags */
#define DELETED		2
#define LOGGED		4
#define ANSWERED	8
#define FORWARDED	16
#define READ		32
#define RR		64
#define OLD		128
#define BOUNCED		256

/* Sendmail Versions */
#define SM_FEULNER	1
#define SM_DILLON	2
#define SM_OTHER	3

/* we want no enforcer hits */
#define STR(x) ((x)?(x):(""))

extern int MaxArticle;
extern int SendmailVersion;
extern BOOL MailToDelete;
extern struct MailItem *MailList;
extern struct AliasItem *AliasList;

extern char *MailTmp;                   /* temporary mail file */
extern char *UserName;
extern char *HostName;
extern char *RealName;
extern char *MailEditor;
extern char *DomainName;
extern char *FolderName;
extern char *PrefixString;
extern char *SentArchive;
extern char *ReceivedFolder;
extern char *ReplyIntro;
extern char *ForwardIntro;
extern char *ColorData;
extern char *FileBuffer;
extern char *StdFontName;
extern char *PagerFontName;
extern char *IntuiFontName;
extern char *Pager;
extern char *PubScreenName;
extern char *Shell;
extern char *PipeDefault;

extern BOOL ReturnView;
extern BOOL ReturnReceipt;
extern BOOL WantView;
extern BOOL WantReturn;
extern BOOL ShowHeader;
extern BOOL ShowSig;
extern BOOL AlwaysDelete;
extern BOOL AlwaysKeep;
extern BOOL KeepBackup;
extern BOOL UseOwnScreen;
extern BOOL ShanghaiWindows;
extern BOOL ReverseSorting;
extern BOOL WBToFront;
extern BOOL UseCmdClearKludge;
extern char *TBuffer;                   /* help for output */

extern int Win_Height;                  /* characters */
extern int Win_Width;                   /* characters */

extern int Screen_Height;               /* pixels */
extern int Screen_Width;                /* pixels */
extern int Screen_Interlace;            /* yes/no */

extern int StdFontSize;                 /* font y-size */
extern int PagerFontSize;               /* font y-size */
extern int IntuiFontSize;               /* font y-size */

extern long FileBufferSize;
