/*
 *	Copyright (C) 1984, 1985  SRI International
 *	Copyright (C) 1990, 1991, 1993  TGV, Inc.
 *
 *	Global Data
 *
 */
#include "vax-mm.h"


/*
 *	Non-Local goto, to get us to the TOP LEVEL command interpreter
 */
jmp_buf Goto_Top_Level;


/*
 *	Global definitions
 */
int Help_Top_Level, Help_Read, Help_Send;	/* Help contexts	*/
int Last_Message;				/* Last message		*/
int Current_Message;				/* Current message	*/
struct Msg *Messages;				/* Messages		*/
char *Message_Text;				/* Text of messages	*/
int Message_Text_Size;				/* Size of Text area	*/
int Max_Messages;				/* Size of Messages	*/
int Number_Of_Recent_Messages;			/* # Recent Msgs.	*/
int Number_Of_Unseen_Messages;			/* # Unseen Msgs.	*/
int Number_Of_Deleted_Messages;			/* # Deleted Msgs.	*/
unsigned int Message_File_Last_Modified;	/* Last time file read	*/
int Message_File_Modified;			/* Needs to be rewritten*/
int Message_File_Size;				/* Size of message file */
int Last_Message_File_EOF;			/* EOF pos of msg file	*/
int Read_Mode;					/* In READ mode		*/
int Text_File_FD = -1;				/* Mail.TXT file descr. */
int Header_File_FD = -1;			/* Mail.HDR file descr. */
int Read_Only = 0;				/* Mail file is r/o	*/
int Incorporate_Newmail_File=1;			/* Read VMSmail file	*/
char Current_Mail_File[128];			/* Our current mail file*/
char New_Mail_File[128];			/* Newmail file		*/
int Mail_File_Mode = 0600;			/* "creat" mode of files*/
struct Header_File_Header Header_File_Header;	/* Header file header	*/
int Doing_Take_File;			/* Currently processing a take file */
int File_Delivery_Done;			/* Must check current file change   */
int Number_Of_Messages_To_Update;	/* # of message hdrs to update	    */
int Text_File_Mode;			/* Mode (protection) of text file   */
int Header_File_Mode;			/* Mode (protection) of header file */
char *Local_Host_Name;			/* Name of host we're running on */
char *Home_File();			/* File in home dir. */
int Ignore_Control_C_Flag;		/* Do we ignore ^C right now?       */
int New_Style_Parsing;	    	    	/* Use new or old-style addr parsing */

/*
 *	Options
 */
int Print_Debugging_Info = 0;		/* Print debugging info    */
int Doing_Rscan;			/* Parsing exec cmd line   */
int Saved_Editor_PID;			/* PID of saved EMACS	   */
int Do_Blank_Screen;			/* Blank screen on startup */
int Immediate_Wakeup;			/* COMND_WAKEUP (temp)	   */
int Control_E_Editor;			/* Editor to invoke on ^E  */
int Control_N_Abort;			/* ^N abort >0 always,
						0 ask,	<0 never   */
char Dead_Letter_File[70+1];		/* Dead letter file	   */
char Default_Bboard[70+1] =		/* Default bboard file	   */
		"BBOARD:MAIL.TXT";
char Default_BCC_List[100+1];		/* Default BCC List	   */
char Default_CC_List[100+1];		/* Default CC List	   */
char Editor_Invocation_Command[64+1] =
		"emacs -lmm -emm %s";	/* How to invoke the editor*/
char Spell_Invocation_Command[64+1] =
		"spell %s";		/* Spell checker invocation*/
int  Simple_Editor = 0;			/* Simple "vi"-like editor */
int Escape_Automatic_Send = 0;		/* Escape send automatically*/
int Flagged_Autotype_Suppress;		/* Don't type Flagged Hdrs */
int List_Confirm_Suppress;		/* Suppress List Confirm   */
char List_Device[32+1];			/* Listing device	   */
int Spool_To_List_Device;		/* Spool on LIST-DEVICE    */
int List_Include_Headers;		/* Do headers at startup   */
int List_On_Separate_Pages;		/* List msgs separate pages*/
char Mail_Copy_File[70+1];		/* MAIL copy file	   */
int Mail_Copy_File_Exists;		/* Have made mail copy file*/
int Mark_Deleted_Messages;		/* Mark deleted messages?  */
char Msg_Seq_Prompt[32+1];		/* Message Sequence Prompt */
int More_Processing;			/* "more" processing enabled   */
int Quit_Is_Synonym_For_Push;		/* "quit" means "push"	   */
int Push_On_Control_C;			/* ^C means "push"	   */
char Personal_Name[50+1];		/* Personal Name	   */
int Prompt_For_BCC;			/* Prompt for BCC	   */
char Read_Prompt[40+1];			/* Read Prompt		   */
int Read_Receipt_Reply = 0;		/* Send read receipts?	   */
int Reply_CC_Others = -1;		/* Reply cc's everyone	   */
int Reply_Include_Me;			/* Include me in replies   */
int Reply_Initial_Display;		/* Reply cmd autodisplay   */
char Reply_Leading_String[32+1];	/* Reply leading string    */
int Reply_Insert_Current_Msg;		/* Insert current message  */
int Reply_Sender_Only_Default;		/* repl<cr> = just from    */
char Saved_Messages_File[70+1];		/* Save messages file name */
char Send_Prompt[40+1];			/* Send mode prompt	   */
int Send_Return_Sends = 0;		/* <cr> sends message	   */
int Short_Message_Length = 1500;	/* Size of "short" message */
char Signature_File[70+1];		/* Signature file	   */
int Terse_Text_Prompt;			/* Long/short text prompt  */
char Top_Level_Prompt[40+1];		/* Top-Level Prompt	   */
int Use_Editor_Automatically;		/* Use editor by default   */
char User_Name[32+1];			/* Login Name		   */
char Real_User_Name[32+1];		/* Really the Login Name   */
char User_Header_Str[256+1];		/* User supplied header    */
int Dont_Insert_Message_ID;		/* Don't do Message-ID: field */
char User_From_String[63+1];		/* User specified "From:"  */
char User_Reply_To_String[63+1];	/* User "Reply-To:" field  */
char This_Hosts_Name[63+1];		/* Host name to use	   */
int Delivery_To_MM;			/* Delivery to VMS MAIL or MM? */
int Dont_Display_Restored_Draft;    	/* Don't display restored drafts (duh) */
int Dont_Load_System_Init_File;		/* Dont Load system mm.init*/
int Dont_Ignore_Bad_Addresses;		/* Reject bad addr lines   */
int Dont_Complete_Usernames;		/* Don't do username completion */
int Dont_Do_Locking;			/* Don't do locking	   */
int Second_MM_Invocation;		/* 2nd or greater MM?	   */
char POP3_Server_Host[63+1];		/* Remote POP3 Server 	   */
char POP3_User_Name[32+1];  		/* Remote POP3 user	   */
int  POP3_No_Delete;			/* DELEte after RETRieve. Default
					 * is to DELEte */
int  POP3_Debug;			/* Display POP3 Debug info */ 
int  POP3_Check_Interval;		/*  > 0 - Time in min. to check mail
					 *  < 0 - one time check
					 *  = 0 - don't check remote POP mail
					 */	
int  POP3_Check_Interval_Temp;
int Print_Jobs_Immediately;		/* Print jobs when requested */
					/* or on exit                */
char Print_Form[32+1];			/* Default printer form	     */
char Print_Queue[32+1];			/* Default printer queue     */

struct option_keyword_table
	User_Headers,			/* Special headers to gen. */
	Suppress_Headers,		/* Headers to suppress	   */
	Bboard_Suppress_Headers,	/* ditto for BBOARDs	   */
	Only_Type_Headers,		/* Headers to type	   */
	Bboard_Only_Type_Headers,	/* ditto for BBOARDs	   */
	Key_Table;			/* Keywords for messages   */

/*
 *	Determination of mail delivery system
 */
int VMS_Mail_Delivery_System;
