mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
705 lines
26 KiB
705 lines
26 KiB
/*
|
|
* HISTORY:
|
|
* 16-Jul-87 danl Added ILRGBUF
|
|
* 23-Jan-87 danl Added strUSRLIBPHONE
|
|
* 22-Mar-87 danl Added strFMTHEAP
|
|
* 11-Apr-1987 mz Make things near/far, pascal/cdecl
|
|
* Better typing
|
|
* 21-Apr-87 danl Added pShell
|
|
* 30-Apr-87 danl Added PDOC
|
|
* 04-May-1987 mz Tagged TOPLINE as unused
|
|
* 05-May-87 danl PDOC is char huge *
|
|
* 06-May-87 danl Added hReadMessage
|
|
* 21-May-87 danl Added strTmpDrv
|
|
* 11-Jun-87 danl Added F_SENDER
|
|
* 17-Jun-87 danl Added strLARGEFLD IDOCLARGE
|
|
* 18-Jun-87 danl Added fConfirmComposeAbort
|
|
* 22-Jun-87 danl Remove argStruct to init.c
|
|
* 01-Jul-87 danl Added strWZMAILDL strVERSION
|
|
* 14-Jul-87 danl Added fBackupExpunge
|
|
* 15-Jul-87 danl Add fNotifyFlags and masks
|
|
* 21-Jul-87 danl Added fMAILLOGREC
|
|
* 21-Jul-87 danl Add pRFAIndent
|
|
* 05-Aug-87 danl Moved commandLine from cmd0.c
|
|
* 05-Aug-87 danl Added pVecDL;
|
|
* 05-Aug-87 danl Added WZMAILTMP
|
|
* 06-Aug-87 danl Added strTYPECHAR strNETTROUBLE
|
|
* 07-Aug-87 danl Added fSortHdr
|
|
* 21-Aug-1987 mz Change references from MAXARG to MAXLINELEN
|
|
* 24-Aug-1987 mz Add new string constant for "ALL"
|
|
* 27-Aug-87 danl Added strINVALIDFLDSPEC
|
|
* 10-Sep-87 danl Added LEFT RIGHT
|
|
* 16-Sep-87 danl Added F_NUMFROM
|
|
* 18-Sep-87 danl Added VShandle
|
|
* 18-Sep-87 danl Added dosVShandle zmVShandle
|
|
* 06-Oct-87 bw Added strSHELLNAME
|
|
* 19-Nov-87 sz Add globals for BeepOnMail
|
|
* 17-Mar-1988 mz Add stuff for better tools.ini processing
|
|
* 12-Oct-1989 leefi v1.10.73, Added UUCODE pragma
|
|
* 12-Oct-1989 leefi v1.10.73, GetPassword(), added parameters
|
|
* 12-Oct-1989 leefi v1.10.73, ResetPassword(), added parameters
|
|
*
|
|
*/
|
|
|
|
/* display to user display encoding style selected */
|
|
#if !defined(UUCODE)
|
|
#pragma message ("fyi: WARNING, using pre-1.10.73 binary encoding method")
|
|
#endif
|
|
|
|
#ifdef NT
|
|
#if DBG
|
|
#define ZMDbgPrint(x) DbgPrint (x, "%d \n", GetLastError() )
|
|
#else
|
|
#define ZMDbgPrint(x) ZMexit (1, x);
|
|
#endif
|
|
#endif
|
|
|
|
#define INTERNAL NEAR
|
|
#define EXTERNAL FAR
|
|
|
|
#define ILRGBUF 512
|
|
|
|
#if defined (HEAPCRAP)
|
|
extern LONG lHeapSize;
|
|
extern LONG lHeapFree;
|
|
extern LONG lHeapLargest;
|
|
INT heapinfo ( );
|
|
#endif
|
|
|
|
typedef INT IDOC; /* index into rgDoc */
|
|
typedef INT INOTE; /* index into rgNote */
|
|
|
|
#ifdef NT
|
|
typedef HANDLE VShandle;
|
|
#else
|
|
typedef INT VShandle; /* video state handle */
|
|
#endif
|
|
|
|
typedef UINT FLAG;
|
|
|
|
#define IDOCLARGE 200
|
|
/* window and misc. macros */
|
|
|
|
#define INRANGE(a,x,b) ((a)<=(x)&&(x)<=(b))
|
|
#define TWINWIDTH(h) ((h)->win.right-(h)->win.left+1-(h)->lLeft-(h)->lRight)
|
|
#define TWINHEIGHT(h) ((h)->win.bottom-(h)->win.top-(h)->lBottom)
|
|
|
|
/* contants for drawing window borders */
|
|
|
|
INT C_TL;
|
|
INT C_TR;
|
|
INT C_BL;
|
|
INT C_BR;
|
|
INT C_H;
|
|
INT C_V;
|
|
|
|
/* standard window procedure commands
|
|
*
|
|
* KEY
|
|
* The supplied data is the ASCII keystroke that occurred.
|
|
* Extended chars are represented as a NUL low byte and high-byte
|
|
* contains scan code.
|
|
*
|
|
* PAINT
|
|
* The supplied data is the line from the top of the screen that
|
|
* must be repainted. Most window procs just display from saved
|
|
* content areas.
|
|
*
|
|
* CREATE
|
|
* The supplied data is specific to the client. It is passed
|
|
* in from the CreateWindow call.
|
|
*
|
|
* CLOSE
|
|
* No data is supplied
|
|
*
|
|
* Window specific commands
|
|
*
|
|
* REGENCONT
|
|
* The content area (precomputed image) is to be regenerated. Data
|
|
* is 0 implies entire region to be repainted. Otherwise, generate
|
|
* relevant line in header. No painting is done
|
|
*
|
|
* DISPLAY
|
|
* Text output of a string followed by a CRLF
|
|
*
|
|
* CLRCMDLN
|
|
* Clear the command line buffer and issue DISPPROMPT
|
|
*
|
|
* REOPNFILE
|
|
* In a file window, open a file, generate contents. If data == TRUE
|
|
* then draw the window.
|
|
*
|
|
* CLOSEFILE
|
|
* Close the file associated with a file window
|
|
*
|
|
* DISPTITLE
|
|
* The supplied data is a string to add into the header.
|
|
*
|
|
* DISPPROMPT
|
|
* Display a prompt. Supplied data indicates whether CRLF should
|
|
* be done first.
|
|
*
|
|
* REGENIDOC
|
|
* Regenerate content area for specific document. Paint is sent
|
|
*
|
|
* RECREATE
|
|
* Fast reloading of content window.
|
|
*
|
|
* GOTOIDOCALL
|
|
* The supplied data is an idoc of the document to be highlighted.
|
|
* The window is scrolled to make sure that it is visible.
|
|
*
|
|
* DISPLAYSTR
|
|
* The supplied data is a string that is output.
|
|
*
|
|
*/
|
|
#define KEY 0
|
|
#define PAINT 1
|
|
#define CREATE 3
|
|
#define CLOSE 4
|
|
|
|
#define REGENCONT 2
|
|
#define DISPLAY 23
|
|
#define CLRCMDLN 25
|
|
#define REOPNFILE 26
|
|
#define CLOSEFILE 27
|
|
#define DISPTITLE 28
|
|
#define DISPPROMPT 29
|
|
#define REGENIDOC 30
|
|
#define RECREATE 31
|
|
#define GOTOIDOCALL 33
|
|
#define DISPLAYSTR 34
|
|
|
|
/* misc. constants */
|
|
|
|
#define NORM 0x70 /* default normal text attribute */
|
|
#define BOLD 0x07 /* default bold text attribute */
|
|
|
|
#define FORWARD 1 /* scroll forward const for scroll */
|
|
#define BACKWRD -1 /* scroll backward const for scroll */
|
|
|
|
#define TABMSG 0 /* prefix appended messages with tabs */
|
|
#define NOTABMSG 1 /* don't prefix appended msgs w/ tabs */
|
|
|
|
#define SAMEFLD 0 /* re-open the previous mailfolder */
|
|
#define DFRNTFLD 1 /* open a different mailfolder */
|
|
|
|
#define ENCBFSIZE 48 /* binary encode buffer size */
|
|
#define DECBFSIZE 100 /* binary decode buffer size */
|
|
|
|
#undef MAXLINELEN
|
|
#define MAXLINELEN 200 /* maximum window width supported */
|
|
|
|
#define LINELENGTH 72 /* maximum line len when displaying */
|
|
/* aliases */
|
|
|
|
/* string constants found in constant.c */
|
|
|
|
extern PSTR strBLANK;
|
|
extern PSTR strEMPTY;
|
|
extern PSTR strWHITE;
|
|
extern PSTR strCRLF;
|
|
extern PSTR strPERIOD;
|
|
extern PSTR strEOH;
|
|
extern PSTR strMORE;
|
|
extern PSTR strFLD;
|
|
extern PSTR strREPLYING;
|
|
extern PSTR strREADONLY;
|
|
extern PSTR strBEGINBINARY;
|
|
extern PSTR strENDBINARY;
|
|
extern PSTR strMAILFLAGS;
|
|
extern PSTR strTYPEY;
|
|
extern PSTR strUSRLIBPHONE;
|
|
extern PSTR strLARGEFLD;
|
|
extern PSTR pVersion;
|
|
extern PSTR strTOOLSINI;
|
|
extern PSTR strENVVAR;
|
|
extern PSTR strSAVEABORT;
|
|
extern PSTR strFMTHEAP;
|
|
extern PSTR rgstrFIELDS[];
|
|
extern PSTR strWZMAIL;
|
|
extern PSTR strWZMAILDEXE;
|
|
extern PSTR strWZMAILDL;
|
|
extern PSTR strWZMAILTMP;
|
|
extern PSTR strWZMAILHLP;
|
|
extern PSTR strSHELLNAME;
|
|
extern PSTR strVERSION;
|
|
extern PSTR strAll;
|
|
extern PSTR strINVALIDFLDSPEC;
|
|
|
|
/* command.c command proc operations */
|
|
|
|
CHAR commandLine [ MAXLINELEN + 8 ]; /* text of line for execution */
|
|
|
|
#define SETFLAGS 0 /* set flags command constant */
|
|
#define RESETFLAGS 1 /* reset flags command constant */
|
|
#define COPYMSGS 0 /* copy messages command constant */
|
|
#define MOVEMSGS 1 /* move messages command constant */
|
|
#define DELMSGS 0 /* delete messages command constant */
|
|
#define UNDELMSGS 1 /* undelete messages command constant */
|
|
|
|
/* compose.c command proc operations */
|
|
|
|
#define COMPABORT 0 /* abort compose msg command const */
|
|
#define COMPMAIL 1 /* mail compose message command const */
|
|
#define COMPSAVE 2 /* save compose message command const */
|
|
|
|
/* misc. flags, and masks */
|
|
|
|
#define F_TABMSG 0x0001 /* tab message while appending */
|
|
#define F_FIXFROM 0x0002 /* replace "From" with ">From" */
|
|
#define F_BRKLN 0x0004 /* print seperator after each file */
|
|
#define F_BRKPAGE 0x0008 /* top of page for each file */
|
|
#define F_HEADERS 0x0010 /* headers only */
|
|
#define F_SENDER 0x0020 /* sender only */
|
|
#define F_INDENTMSG 0x0040 /* use RFAIndent on msg */
|
|
#define F_NUMFROM 0x0080 /* Number From fields only */
|
|
|
|
#define M_CMDOPRN 0x000F /* operation mask for cmdproc data */
|
|
#define M_CMDMODE 0x00F0 /* mode mask for cmdproc data */
|
|
|
|
/* fNotifyTools flags */
|
|
#define F_NEWVERSION 0x0001
|
|
#define F_SENDHEAPDUMP 0x0002
|
|
#define F_LOADALIAS 0x0004
|
|
#define F_UPDXENIXDL 0x0008
|
|
|
|
|
|
/* window structs */
|
|
|
|
struct boxType {
|
|
INT left, top;
|
|
INT right, bottom;
|
|
};
|
|
|
|
typedef struct boxType BOX;
|
|
typedef BOX *PBOX;
|
|
|
|
struct windowType;
|
|
|
|
typedef struct windowType *HW ;
|
|
|
|
typedef UINT WDATA;
|
|
|
|
typedef VOID (PASCAL INTERNAL *PWNDPROC) (HW, INT, WDATA);
|
|
typedef FLAG (PASCAL INTERNAL *PKEYPROC) (HW, INT);
|
|
typedef VOID (PASCAL INTERNAL *PVISPROC) (HW, BOX, INT, LPSTR, INT);
|
|
|
|
|
|
struct windowType {
|
|
struct windowType *pNext; /* pointer to next window on screen */
|
|
BOX win; /* box on screen representing window */
|
|
LPSTR pContent; /* pointer to window contents */
|
|
PSTR pTitle; /* pointer to title */
|
|
PSTR pFooter; /* pointer to footer */
|
|
INT crsrX, crsrY; /* cursor x and y coordinates in wcr */
|
|
USHORT fsFlag; /* state flags */
|
|
UINT contSize; /* size of content region in bytes */
|
|
WDATA data; /* word for use by window procs */
|
|
PWNDPROC wndProc; /* window procedure */
|
|
PKEYPROC keyProc; /* procedure for undefined keys */
|
|
INT lLeft,lRight,lBottom;
|
|
/* lines on left/right bottom border */
|
|
/* 1 -> show border */
|
|
/* 0 -> don't show border */
|
|
};
|
|
|
|
#define WF_BLINK 0x0001 /* cursor visible */
|
|
#define WF_NODISCARD 0x0002 /* do not discard contents */
|
|
|
|
/* the windows are stored in the order that they are laid out on the screen;
|
|
* when clipping a line, we merely walk all windows up until the one that we
|
|
* are outputting for
|
|
*/
|
|
|
|
typedef struct vectorType *PVECTOR;
|
|
|
|
#define PARSEERROR ((PVECTOR) -1) /* returned in pVec by msglist */
|
|
/*
|
|
** List Window
|
|
*/
|
|
struct listwindata {
|
|
INT iBold;
|
|
INT iTop;
|
|
INT cnt;
|
|
PVECTOR pVec;
|
|
UINT data;
|
|
};
|
|
|
|
|
|
/* special command characters */
|
|
|
|
#define HELP '?'
|
|
#define ESC 0x1B
|
|
#define ENTER 0x0D
|
|
#define EOFC 0x1A
|
|
#define CTRLENTER 0x0A
|
|
#define BACKSPACE 0x08
|
|
#define RUBOUT 0x7F
|
|
#define TAB 0x09
|
|
|
|
#define CTRL_B 0x02
|
|
#define CTRL_C 0x03
|
|
#define CTRL_D 0x04
|
|
#define CTRL_F 0x06
|
|
#define CTRL_K 0x0b
|
|
#define CTRL_L 0x0c
|
|
#define CTRL_N 0x0e
|
|
#define CTRL_P 0x10
|
|
#define CTRL_T 0x14
|
|
#define CTRL_U 0x15
|
|
|
|
|
|
#ifdef NT
|
|
/* virtual key codes, low byte is 0 */
|
|
|
|
#define SHIFT_KEY 0x0010
|
|
#define CTRL_KEY 0x0011
|
|
#define ALT_KEY 0x0012
|
|
#define CAPLCK_KEY 0x0014
|
|
#define NUMLCK_KEY 0x0090
|
|
#define SCRLCK_KEY 0x0091
|
|
|
|
#define HOME 0x2400
|
|
#define END 0x2300
|
|
#define PGUP 0x2100
|
|
#define PGDN 0x2200
|
|
#define UP 0x2600
|
|
#define DOWN 0x2800
|
|
#define LEFT 0x2500
|
|
#define RIGHT 0x2700
|
|
|
|
#define KEY_F1 0x7000
|
|
#define KEY_F2 0x7100
|
|
#define KEY_F3 0x7200
|
|
#define KEY_F4 0x7300
|
|
#define KEY_F5 0x7400
|
|
#define KEY_F6 0x7500
|
|
#define KEY_F7 0x7600
|
|
#define KEY_F8 0x7700
|
|
#define KEY_F9 0x7800
|
|
#define KEY_F10 0x7900
|
|
|
|
#define SHIFT_TAB 0x0f00 /* special case - build from state */
|
|
|
|
|
|
#else
|
|
|
|
/* extended characters, lead in is 0 */
|
|
|
|
#define HOME 0x4700
|
|
#define END 0x4f00
|
|
#define PGUP 0x4900
|
|
#define PGDN 0x5100
|
|
#define UP 0x4800
|
|
#define DOWN 0x5000
|
|
#define LEFT 0x4b00
|
|
#define RIGHT 0x4d00
|
|
|
|
|
|
#define KEY_F1 0x3b00
|
|
#define KEY_F2 0x3c00
|
|
#define KEY_F3 0x3d00
|
|
#define KEY_F4 0x3e00
|
|
#define KEY_F5 0x3f00
|
|
#define KEY_F6 0x4000
|
|
#define KEY_F7 0x4100
|
|
#define KEY_F8 0x4200
|
|
#define KEY_F9 0x4300
|
|
#define KEY_F10 0x4400
|
|
#define SHIFT_TAB 0x0f00
|
|
|
|
#endif
|
|
|
|
/* screen states */
|
|
|
|
#define BHDRNOCOMP 0
|
|
#define BIGHEADERS 1
|
|
#define BIGCOMPOSE 2
|
|
|
|
/* command function type */
|
|
|
|
typedef VOID (PASCAL INTERNAL *PDOFUNC) (HW, PSTR , INT );
|
|
|
|
struct CFT {
|
|
PSTR cmd; /* text of the command */
|
|
PDOFUNC func; /* pointer to command function */
|
|
INT data; /* data to send along */
|
|
FLAG fWin; /* F_HDRWIN F_COMPWIN F_FOCUSWIN */
|
|
};
|
|
|
|
#define F_HDRWIN 1
|
|
#define F_COMPWIN 2
|
|
#define F_FOCUSWIN 4
|
|
|
|
/* Select-file window information */
|
|
|
|
typedef struct GLOBPACKET_ {
|
|
PDOFUNC func; /* pointer to the command function */
|
|
HW hWnd; /* command's window from orig. call */
|
|
PSTR p; /* command args " */
|
|
INT operation; /* command's operation " */
|
|
} GLOBPACKET;
|
|
|
|
/* message flag masks */
|
|
|
|
#define F_UNREAD 0x0001
|
|
#define F_DELETED 0x0002
|
|
#define F_MOVED 0x0004
|
|
#define F_FLAGGED 0x0008
|
|
#define F_LOCKED 0x4000
|
|
#define F_FLAGSVALID 0x8000
|
|
|
|
/* field sizes for the header window */
|
|
|
|
#define FLAGLEN 4 /* number of flags */
|
|
#define MSGLEN 4 /* width of number display */
|
|
#define FROMLEN 11 /* max length of a sender */
|
|
#define FROMSTR "%-11s " /* format for sender name */
|
|
#define DATELEN 13 /* mmm dd hh:mm */
|
|
#define DATESTR "%-13s" /* format for date string */
|
|
#define SUBJLEN 43 /* length of subject string */
|
|
#define SUBJSTR "%-43s" /* format for subject string */
|
|
|
|
#if (80-2 - FLAGLEN-1 - MSGLEN-1 - FROMLEN-1 - DATELEN - SUBJLEN) != 0
|
|
Error: field widths screwed up
|
|
#endif
|
|
|
|
/* global mailbox variables */
|
|
|
|
struct Doc {
|
|
PSTR hdr; /* pointer to displayed header */
|
|
UINT flag; /* message flags */
|
|
LONG len; /* length of message */
|
|
};
|
|
|
|
Fhandle fhMailBox; /* folder handle to mail box */
|
|
|
|
/*
|
|
** One slot in rgDoc for each doc in folder. Slot i is associated with
|
|
** WZMAIL message i+1 as displayed in the header window.
|
|
**
|
|
** One slot in mpInoteIdoc for each doc in folder BUT the headers command
|
|
** will cause a subset of slots to be used (0..INOTEMAC) and the CHRON
|
|
** variable determines whether values in mpInoteIdoc are ascending or
|
|
** descending.
|
|
**
|
|
** INOTEMAC last USED slot in mpInoteIdoc, < INOTEMAX if headers not all
|
|
** INOTENAX last slot in mpInoteIdoc
|
|
** IDOCMAC last USED slot in rgDoc
|
|
** IDOCMAX last slot in rgDoc, all slots always used
|
|
*/
|
|
typedef struct Doc HUGE *PDOC; /* pointer to document info */
|
|
PDOC rgDoc; /* alloc'd array of Doc */
|
|
CHAR mboxName [ MAXPATHLEN ]; /* textual name of current mailbox */
|
|
CHAR headerText [ MAXPATHLEN ]; /* text of header selection */
|
|
PSTR pPrevHdrCmd; /* previous header command */
|
|
IDOC *mpInoteIdoc; /* map INOTE to IDOC */
|
|
IDOC idocRead; /* idoc being read */
|
|
IDOC idocLast; /* last doc */
|
|
INOTE inoteTop; /* top doc in header window */
|
|
INOTE inoteBold; /* hightlighted note */
|
|
INOTE inoteLast; /* last note, may not = idocLast */
|
|
#define inoteMax idocLast
|
|
|
|
#define MAILFLAG "Mail-Flags: "
|
|
#define E_MAILFLAG "Mail-Flags: 0000\n"
|
|
#define L_MAILFLAG (12+4+1)
|
|
#define F_MAILFLAG "Mail-Flags: %04x\n"
|
|
|
|
#define IDOCTODOC(x) ((Docid)((x)+1))
|
|
|
|
#define XALIAS "/usr/lib/mail/aliases.hash" /* xenix alias file name */
|
|
|
|
#define EXPTHRESH 25 /* % of msgs deleted before expunge */
|
|
#define NEWMAILINT 300 /* Default # sec between newmail */
|
|
|
|
/* global window handles, screen size */
|
|
|
|
HW hHeaders; /* handle of headers window */
|
|
HW hCommand; /* handle of command window */
|
|
HW hCompose; /* handle of compose window */
|
|
HW hDebug; /* handle of debug window */
|
|
HW hFocus; /* handle of window which is "focus" */
|
|
HW hReadMessage; /* handle of read message window */
|
|
VShandle dosVShandle; /* video state of dos at boot */
|
|
VShandle zmVShandle; /* video state of wzmail */
|
|
INT ySize; /* number of lines on screen */
|
|
INT xSize; /* number of columns on screen */
|
|
|
|
/* general global variables */
|
|
|
|
FLAG fQuit; /* Quit Yet? */
|
|
FLAG fDLMail; /* Download mail? */
|
|
FLAG fMailInfoDown; /* Have we a MailInfo.lst? */
|
|
FLAG fDirectComp; /* ZM invoked with aliases? */
|
|
FLAG fComposeOnBoot; /* ZM invoked with aliases? */
|
|
FLAG DefMOChron; /* CHRON=yes => FALSE, header display order */
|
|
FLAG fNewmailOnSend; /* TRUE => do DownloadMail after Send */
|
|
FLAG fNewmailOnStart; /* TRUE => do DownloadMail on WZMAIL start */
|
|
FLAG fExpungeOnQuit; /* TRUE => expunge on quit */
|
|
FLAG fMetoo; /* TRUE => include me in alias expansions */
|
|
FLAG fNotifyTools; /* TRUE => mail tools about this user */
|
|
FLAG fCurFldIsDefFld; /* TRUE => current folder is def folder */
|
|
FLAG fReadOnlyAll; /* TRUE => all folders readonly */
|
|
FLAG fReadOnlyCur; /* TRUE => current folder readonly */
|
|
FLAG fGetPhone; /* TRUE => get /usr/lib/phonelist from xenix */
|
|
FLAG fScreenSetup; /* TRUE => screen setup complete */
|
|
FLAG fCheckAnyMail; /* TRUE => boot iff there is new mail on host */
|
|
FLAG fWinBorders; /* TRUE => show window borders */
|
|
FLAG fAppendReply; /* TRUE => do NOT put "text below .." in reply */
|
|
FLAG fConfirmNewFld; /* TRUE => ask user to confirm new folders */
|
|
FLAG fBackupExpunge; /* TRUE => create EXPUNGE.FLD on expunge */
|
|
FLAG fConfirmComposeAbort; /* TRUE => ask confirm abort compose */
|
|
FLAG fCheckMail; /* TRUE => check mail next time in main loop */
|
|
FLAG fMAILLOGREC; /* TRUE => send MAILLOGREC to mtpsrv */
|
|
FLAG fSortHdr; /* TRUE => sort msg hdr field contents */
|
|
FLAG fBeepOnMail; /* TRUE => sound beep when new mail */
|
|
FLAG fMailUnSeen; /* TRUE => mail waiting for user to view */
|
|
FLAG fSetClock; /* TRUE => initialize DOS clock from CMOs */
|
|
FLAG fMailAllowed; /* TRUE => we can do net mail stuff */
|
|
FLAG fShellWait; /* TRUE => wait for keypress after shell command*/
|
|
FLAG fPrintWait; /* TRUE => wait for keypress after print command*/
|
|
CHAR strTmpDrv[4]; /* lower case temp drive, e.g. "f:" */
|
|
PSTR pstrDirectComp; /* aliases for direct comp */
|
|
PSTR UsrPassWrd; /* user's password for xenix machine */
|
|
PSTR DefDirectory; /* default folder directory */
|
|
PSTR DefMailbox; /* default file name of mailbox */
|
|
PSTR DefMailName; /* default mail name */
|
|
PSTR DefMailEdit; /* default mail editor */
|
|
PSTR DefMailHost; /* default mail host xenix machine */
|
|
PSTR DefMsgsDisp; /* default message list to display */
|
|
PSTR DefHelpPath; /* default path to help file */
|
|
PSTR RecordFolder; /* !=NULL => record outgoing msgs here */
|
|
PSTR pAliasFN; /* Filename of alias file */
|
|
PSTR pPhoneFN; /* Filename of phone list file */
|
|
PSTR pMyPhoneFN; /* Filename of private phone list file */
|
|
PSTR pMailInfoFN; /* Filename of MAILINFO GET list file */
|
|
PSTR pCompFile; /* file behind compose window */
|
|
PSTR pInitHdrCmd; /* if != NULL, do headers cmd on this at boot */
|
|
PSTR pInitScript; /* if != NULL, do this scriptfile at boot */
|
|
PSTR pShellCmd; /* shell command, def "command.com" */
|
|
PSTR pShellFlags; /* shell flags, def " /c " */
|
|
PSTR pRFAIndent; /* string used to indent Reply, Fowarded App msg*/
|
|
PSTR pVideoState; /* original video state */
|
|
PSTR pToolsini; /* value of TOOLS.INI variable in tools.ini */
|
|
PSTR pXenixdl; /* value of XENIXDL variable in tools.ini */
|
|
PSTR pPrintCmd; /* print command to use */
|
|
PSTR pFirstNode; /* lowest alloced object */
|
|
PSTR pPhoneServer; /* OS/2 Lanman server name for phone data base */
|
|
PSTR pszPasswordAge; /* time string for password aging */
|
|
INT bgAttr; /* background attribute */
|
|
INT fgAttr; /* foreground attribute */
|
|
INT attrInit; /* screen attribute at boot */
|
|
INT DefNorm; /* default normal text attribute */
|
|
INT DefBold; /* default bold text attribute */
|
|
INT DefScrnHgt; /* default screen height */
|
|
INT ScrnState; /* current screen state */
|
|
INT WindLevel; /* number of winds 'from' header */
|
|
INT HdrHeight; /* height of header window */
|
|
INT CmdHeight; /* height of command window */
|
|
INT DebHeight; /* height of debug window */
|
|
INT AliasesAround; /* OK => alias file is avaiable */
|
|
INT cShowSize; /* show size for msgs larger than this */
|
|
INT cSecNewmail; /* number of sec between checking NM */
|
|
LONG lTmLastMail; /* time of last download of mail */
|
|
LONG lTmPassword; /* time of last GetPasswrd */
|
|
LONG lPasswordAge; /* maximum age of password entry (in seconds) */
|
|
INT cSecConnect; /* number of sec to hold a connection */
|
|
LONG lTmConnect; /* time of last use of connection */
|
|
INT cchCmdLine; /* number of char on command line */
|
|
INT BootCount; /* number of times booted with a back-date WZ */
|
|
PVECTOR pVecDL; /* vector of private distribution lists */
|
|
|
|
|
|
/* send.c */
|
|
|
|
#define CHDRFIELDS 8
|
|
|
|
|
|
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
|
|
/* !! !! */
|
|
/* !! DO NOT CHANGE THE ORDERING !! */
|
|
/* !! !! */
|
|
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
|
|
|
|
#define HDRFROM 0
|
|
#define HDRTO 1
|
|
#define HDRCC 2
|
|
#define HDRBCC 3
|
|
#define HDRRRT 4
|
|
#define HDRRCD 5
|
|
#define HDRSUBJ 6
|
|
#define HDRFLAGS 7
|
|
#define HDRALL -1
|
|
|
|
#define pstrFrom ppstr[ 0 ]
|
|
#define pstrTo ppstr[ 1 ]
|
|
#define pstrCc ppstr[ 2 ]
|
|
#define pstrBcc ppstr[ 3 ]
|
|
#define pstrRrt ppstr[ 4 ]
|
|
#define pstrRcd ppstr[ 5 ]
|
|
#define pstrSubj ppstr[ 6 ]
|
|
#define pstrFlags ppstr[ 7 ]
|
|
|
|
typedef struct HDRINFO {
|
|
PSTR ppstr [ CHDRFIELDS ];
|
|
PSTR pstrRestOfHdr; /* all fields not specifically recognized */
|
|
LONG lBody; /* excludes <eoh> or first blank */
|
|
LONG lReplying;
|
|
} HDRINFO;
|
|
|
|
typedef struct HDRINFO *PHDRINFO;
|
|
|
|
union Ptr
|
|
{
|
|
PUINT w;
|
|
PSTR b;
|
|
};
|
|
|
|
|
|
FLAG fDelUndelBold; /* TRUE -> last cmd d or u on current msg */
|
|
|
|
|
|
#if defined (HEAPCRAP)
|
|
FILE *fpHeapDump; /* fp to pstrHEAPDUMP */
|
|
PSTR strHEAPDUMP; /* name of heap dump file in DEFDIRECTORY */
|
|
#endif
|
|
|
|
#if defined (OS2)
|
|
PLINFOSEG pInfoSegL; /* pointer to LDT info seg for OS/2 */
|
|
PGINFOSEG pInfoSegG; /* pointer to GDT info seg for OS/2 */
|
|
|
|
/* Some convenient macros for multiple screen group things. In particular
|
|
* we don't do things if we are invisible and full screen since we may block.
|
|
*/
|
|
|
|
#define ISFULLSCREEN ((USHORT) pInfoSegL->sgCurrent < pInfoSegG->sgMax)
|
|
#define ISWINDOWED (!ISFULLSCREEN)
|
|
|
|
#define ISVISIBLE ((ISWINDOWED && pInfoSegG->sgCurrent == 1) || \
|
|
(!ISWINDOWED && (USHORT) pInfoSegL->sgCurrent == pInfoSegG->sgCurrent))
|
|
#elif defined (NT)
|
|
|
|
#define ISFULLSCREEN (TRUE)
|
|
#define ISWINDOWED (!ISFULLSCREEN)
|
|
#define ISVISIBLE (TRUE)
|
|
|
|
#endif
|
|
|
|
struct argStruct {
|
|
FLAG LoadAlias;
|
|
FLAG DebugWin;
|
|
FLAG fUpdate;
|
|
PSTR pMfldLoad;
|
|
PSTR pAliasList;
|
|
};
|
|
|
|
typedef struct argStruct *PARG;
|
|
|
|
struct pos {
|
|
INT pgNm; /* 0 - based page # */
|
|
INT lnNm; /* 0 - based line # within pg */
|
|
};
|
|
|
|
#include "zmtype.h"
|