798 lines
25 KiB
C
798 lines
25 KiB
C
/*===========================================================================*/
|
|
/* Copyright (c) 1987 - 1988, Future Soft Engineering, Inc. */
|
|
/* Houston, Texas */
|
|
/*===========================================================================*/
|
|
|
|
#define NOGDICAPMASKS TRUE
|
|
#define NOVIRTUALKEYCODES TRUE
|
|
#define NOICONS TRUE
|
|
#define NOKEYSTATES TRUE
|
|
#define NOSYSCOMMANDS TRUE
|
|
#define NOATOM TRUE
|
|
#define NOCLIPBOARD TRUE
|
|
#define NODRAWTEXT TRUE
|
|
#define NOMINMAX TRUE
|
|
#define NOSCROLL TRUE
|
|
#define NOHELP TRUE
|
|
#define NOPROFILER TRUE
|
|
#define NODEFERWINDOWPOS TRUE
|
|
#define NOPEN TRUE
|
|
#define NO_TASK_DEFINES TRUE
|
|
#define NOLSTRING TRUE
|
|
#define WIN31
|
|
#define USECOMM
|
|
|
|
#include <windows.h>
|
|
#include "port1632.h"
|
|
#include "dcrc.h"
|
|
#include "dynacomm.h"
|
|
#include "fileopen.h"
|
|
#include "task.h"
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
#define DCS_OLD_FKEYLEVELS 4
|
|
#define DCS_OLD_NUMFKEYS 8
|
|
#define DCS_OLD_FKEYLEN 64
|
|
#define DCS_OLD_FKEYTITLESZ 20
|
|
#define DCS_OLD_XTRALEN 44
|
|
#define DCS_OLD_MDMCMDLEN 32
|
|
#define DCS_OLD_MISCSTRLEN 21
|
|
|
|
|
|
#define TITLEREC struct tagTITLEREC
|
|
|
|
struct tagTITLEREC
|
|
{
|
|
BYTE title[DCS_OLD_FKEYTITLESZ];
|
|
BYTE xtra[DCS_OLD_XTRALEN];
|
|
};
|
|
|
|
|
|
#define oldTrmParams struct tagOldTrmParams
|
|
#define LPOLDSETTINGS oldTrmParams FAR *
|
|
|
|
struct tagOldTrmParams
|
|
{
|
|
INT inpRefNum;
|
|
INT outRefNum;
|
|
INT emulate;
|
|
INT dataBits;
|
|
INT parity;
|
|
INT speed;
|
|
INT stopBits;
|
|
BYTE col80Or132;
|
|
BYTE flowControl;
|
|
BOOL localEcho;
|
|
BOOL lineWrap;
|
|
BOOL inpCRLF;
|
|
BOOL outCRLF;
|
|
BOOL inpLFCR;
|
|
BOOL fCtrlBits;
|
|
STRING fKeyText[DCS_OLD_FKEYLEVELS][DCS_OLD_NUMFKEYS][DCS_OLD_FKEYLEN];
|
|
TITLEREC fKeyTitle[DCS_OLD_FKEYLEVELS][DCS_OLD_NUMFKEYS];
|
|
STRING phone[DCS_OLD_MDMCMDLEN];
|
|
STRING binTXPrefix[DCS_OLD_MDMCMDLEN];
|
|
STRING dialPrefix[DCS_OLD_MDMCMDLEN];
|
|
STRING binTXSuffix[DCS_OLD_MDMCMDLEN];
|
|
STRING dialSuffix[DCS_OLD_MDMCMDLEN];
|
|
STRING binRXPrefix[DCS_OLD_MDMCMDLEN];
|
|
STRING hangPrefix[DCS_OLD_MDMCMDLEN];
|
|
STRING binRXSuffix[DCS_OLD_MDMCMDLEN];
|
|
STRING hangSuffix[DCS_OLD_MDMCMDLEN];
|
|
STRING fastInq[DCS_OLD_MDMCMDLEN];
|
|
STRING originate[DCS_OLD_MDMCMDLEN];
|
|
STRING fastRsp[DCS_OLD_MDMCMDLEN];
|
|
STRING answer[DCS_OLD_MDMCMDLEN];
|
|
STRING strXtra8[DCS_OLD_MDMCMDLEN];
|
|
BOOL flgRetry;
|
|
BYTE padding2;
|
|
INT dlyRetry;
|
|
INT cntRetry;
|
|
BOOL flgSignal;
|
|
BYTE version;
|
|
BOOL carrierFlag;
|
|
BYTE padding3;
|
|
STRING xLinStr[DCS_OLD_MISCSTRLEN+1];
|
|
STRING mdmConnect[DCS_OLD_MISCSTRLEN+1];
|
|
STRING strXtra2[DCS_OLD_MISCSTRLEN+1];
|
|
STRING strXtra3[DCS_OLD_MISCSTRLEN+1];
|
|
STRING strXtra4[DCS_OLD_MISCSTRLEN+1];
|
|
INT rcvBlSz;
|
|
INT sendBlSz;
|
|
INT retryCt;
|
|
BYTE remote;
|
|
BYTE padding9;
|
|
INT xtraInt[4];
|
|
INT xWrapCol;
|
|
BYTE termCursor;
|
|
BOOL cursorBlink;
|
|
BOOL bsKey;
|
|
BYTE language;
|
|
STRING autoExecute[DCS_OLD_FKEYLEN];
|
|
BYTE xTxtType;
|
|
BYTE xChrType;
|
|
INT xChrDelay;
|
|
BYTE xLinType;
|
|
BYTE padding10;
|
|
INT xLinDelay;
|
|
BYTE xMdmType;
|
|
BOOL xWordWrap;
|
|
BYTE xBinType;
|
|
BYTE xBinFork;
|
|
};
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
#define MSSETTINGS struct tagMSSETTINGS
|
|
#define LPMSSETTINGS MSSETTINGS FAR *
|
|
|
|
struct tagMSSETTINGS
|
|
{
|
|
INT iCRC; /* The CRC checksum for the settings */
|
|
INT iVersion; /* The version number */
|
|
BOOL fModem; /* True if port is connected to a modem */
|
|
BOOL fNewLine; /* True if new-line button is on */
|
|
BOOL fLocalEcho; /* True if local-echo button is on */
|
|
BOOL fAutoWrap; /* True if auto-wrap button is on */
|
|
BOOL fVT52; /* True if term is VT52, false if ANSI */
|
|
BOOL fLarge; /* True for large text size */
|
|
BOOL fTone; /* True if dial type is tone */
|
|
BOOL fFast; /* True if dial pulses are short */
|
|
INT clnBuf; /* Count of lines in buffer */
|
|
INT iBaud; /* The baud rate */
|
|
INT iPort; /* The port number */
|
|
INT iByteSize; /* The number of bits per char */
|
|
INT iStopBits; /* The number of stop bits */
|
|
INT iParity; /* The parity method */
|
|
INT iHandshake; /* The handshake method */
|
|
INT iAnswer; /* The number of seconds to wait for answer */
|
|
INT iToneWait; /* Number of seconds to wait for tone */
|
|
CHAR szPhNum[30]; /* The phone number */
|
|
CHAR szFNCapture[128]; /* The capture file name */
|
|
INT iCountry; /* The character translation country code */
|
|
};
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL termInitSetup(HANDLE); /* ==> termfile.h */
|
|
VOID termCloseEnable(BOOL);
|
|
BOOL termCloseFile(VOID);
|
|
BOOL termCloseAll(VOID);
|
|
BOOL termSaveFile(BOOL);
|
|
BOOL NEAR termReadFile(BYTE *);
|
|
VOID NEAR termCloseWindow(VOID);
|
|
BOOL NEAR termCloseFileInternal(VOID);
|
|
INT TF_ErrProc(WORD, WORD, WORD);
|
|
|
|
BOOL NEAR readTermSettings(INT, WORD); /* mbbx 2.00: was LONG */
|
|
VOID NEAR convertMSToIBM(LPMSSETTINGS, recTrmParams *);
|
|
BOOL NEAR writeTermSettings(INT);
|
|
VOID NEAR convertInternalToVirtual(LPSETTINGS, LPSETTINGS); /* rkhx 2.00 */
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* termInitSetup() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL termInitSetup(HANDLE hPrevInstance)
|
|
{
|
|
// sdj: was unref local- WNDCLASS termClass;
|
|
|
|
activTerm = FALSE;
|
|
|
|
strcpy(termData.filePath, fileDocData[FILE_NDX_SETTINGS].filePath);
|
|
*termData.fileName = 0;
|
|
strcpy(termData.fileExt, fileDocData[FILE_NDX_SETTINGS].fileExt);
|
|
LoadString(hInst, STR_TERMINAL, (LPSTR) termData.title, MINRESSTR);
|
|
termData.flags = TF_DEFTITLE;
|
|
|
|
resetEmul(); /* must have init settings! */
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* termFile() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL termFile(BYTE *filePath, BYTE *fileName,BYTE *fileExt,BYTE *title,WORD flags)
|
|
{
|
|
BYTE work[PATHLEN];
|
|
RECT termRect;
|
|
BYTE OEMname[STR255]; /* jtf 3.20 */
|
|
|
|
if(strlen(fileName) > 0) /* mbbx 1.03 ... */
|
|
{
|
|
#ifdef ORGCODE
|
|
strcpy(work, filePath); /* mbbx 2.00: no forced extents... */
|
|
strcpy(work+strlen(work), fileName); /* jtf 3.20 */
|
|
#else
|
|
strcpy(work, filePath); /* mbbx 2.00: no forced extents... */
|
|
strcpy(work+strlen(work), "\\"); /* jtf 3.20 */
|
|
strcpy(work+strlen(work), fileName); /* jtf 3.20 */
|
|
#endif
|
|
|
|
|
|
// JYF -- replace below two lines with following if()
|
|
// to remove the use of AnsiToOem()
|
|
//
|
|
//AnsiToOem((LPSTR) work, (LPSTR) OEMname); /* jtf 3.20 */
|
|
//if(!fileExist(OEMname))
|
|
|
|
if (!fileExist(work))
|
|
return(FALSE);
|
|
}
|
|
|
|
if(termCloseFileInternal())
|
|
{
|
|
if((flags & TF_DEFTITLE) && (strlen(fileName) > 0))
|
|
strcpy(termData.title, fileName);
|
|
else
|
|
strcpy(termData.title, title);
|
|
SetWindowText(hTermWnd, (LPSTR) termData.title);
|
|
setAppTitle();
|
|
|
|
SetCursor(LoadCursor(NULL, IDC_WAIT));
|
|
|
|
strcpy(termData.filePath, filePath);
|
|
strcpy(termData.fileName, fileName);
|
|
strcpy(termData.fileExt, fileExt);
|
|
termData.flags = flags | (termData.flags & (TF_DIM | TF_HIDE));
|
|
|
|
setDefaults(); /* mbbx 2.00: do this first! */
|
|
if(strlen(fileName) > 0)
|
|
{
|
|
if(!termReadFile(work))
|
|
doFileNew(); /* jtf 3.31 */
|
|
}
|
|
|
|
activTerm = TRUE;
|
|
|
|
setFKeyLevel(1, TRUE); /* mbbx 2.00 ... */
|
|
showHidedbmyControls(trmParams.environmentFlags & DCS_EVF_FKEYSSHOW, TRUE); /* jtf 3.20 */
|
|
resetSerial(&trmParams, TRUE, FALSE, 0);
|
|
resetEmul();
|
|
initChildSize(&termRect); /* mbbx 2.00: reset window pos... */
|
|
if(IsZoomed(hTermWnd))
|
|
SetFocus(NULL);
|
|
|
|
if(!(termData.flags & TF_HIDE))
|
|
showTerminal(TRUE, TRUE);
|
|
|
|
SetCursor(LoadCursor(NULL, IDC_ARROW));
|
|
}
|
|
|
|
gotCommEvent = TRUE;
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* termCloseFile() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL termCloseFile(VOID)
|
|
{
|
|
BOOL termCloseFile = TRUE;
|
|
|
|
if(activTerm)
|
|
{
|
|
if(termCloseFile = termCloseFileInternal())
|
|
termCloseWindow();
|
|
}
|
|
|
|
return(termCloseFile);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* termCloseAll() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL termCloseAll(VOID)
|
|
{
|
|
return(termCloseFile());
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* termSaveFile() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL termSaveFile(BOOL bGetName)
|
|
{
|
|
BOOL termSaveFile = TRUE;
|
|
BYTE titleText[MINRESSTR];
|
|
BYTE filePath[PATHLEN+1];
|
|
INT hFile;
|
|
// sdj: was unref local - OFSTRUCT ofDummy;
|
|
BYTE fileName[PATHLEN];
|
|
|
|
SetCursor(LoadCursor(NULL, IDC_WAIT));
|
|
|
|
if(activTerm)
|
|
{
|
|
if(bGetName || (strlen(termData.fileName) == 0))
|
|
{
|
|
/* rjs swat - default to *.trm if no default term name */
|
|
if(strlen(termData.fileName))
|
|
strcpy(fileName, termData.fileName);
|
|
else
|
|
strcpy(fileName, "*.TRM");
|
|
/* end rjs swat */
|
|
|
|
/* mbbx 1.10: CUA... */
|
|
LoadString(hInst, !bGetName ? STR_SAVE : STR_SAVEAS, (LPSTR) titleText, MINRESSTR);
|
|
|
|
if(termData.filePath[strlen(termData.filePath) - 1] != '\\')
|
|
strcat(termData.filePath, "\\");
|
|
|
|
termSaveFile = FileOpen(termData.filePath, fileName, NULL, termData.fileExt,
|
|
titleText, 0, NULL, FO_PUTFILE | FO_FORCEEXTENT);
|
|
|
|
if(strrchr(fileName, '\\'))
|
|
strcpy(termData.fileName, strrchr(fileName, '\\') + 1);
|
|
else
|
|
strcpy(termData.fileName, fileName);
|
|
}
|
|
|
|
if(termSaveFile)
|
|
{
|
|
setFileDocData(FILE_NDX_SETTINGS, termData.filePath, termData.fileName, NULL, NULL); /* mbbx 2.00: no forced extents... */
|
|
|
|
if(termData.flags & TF_DEFTITLE)
|
|
{
|
|
strcpy(termData.title, termData.fileName);
|
|
SetWindowText(hTermWnd, (LPSTR) termData.fileName);
|
|
setAppTitle(); /* mbbx 1.00 */
|
|
}
|
|
|
|
#ifdef ORGCODE
|
|
strcpy(filePath, termData.filePath);
|
|
strcpy(filePath+strlen(filePath), termData.fileName);
|
|
#else
|
|
|
|
/* jtf 3.20 */
|
|
|
|
strcpy(filePath, termData.filePath);
|
|
strcpy(filePath+strlen(filePath), "\\");
|
|
strcpy(filePath+strlen(filePath), termData.fileName);
|
|
|
|
DEBOUT("termSaveFile: opening the file[%s]\n",filePath);
|
|
DEBOUT("termSaveFile: with flags [%lx]\n",O_WRONLY|O_TRUNC|O_CREAT|S_IWRITE);
|
|
#endif
|
|
if((hFile = _open((LPSTR) filePath, O_WRONLY | O_TRUNC | O_CREAT, S_IWRITE)) != -1)
|
|
{
|
|
if(termSaveFile = writeTermSettings(hFile))
|
|
termData.flags &= ~TF_CHANGED;
|
|
|
|
_close(hFile);
|
|
}
|
|
else
|
|
termSaveFile = FALSE;
|
|
|
|
if(!termSaveFile)
|
|
{
|
|
TF_ErrProc(STREWRERR, MB_OK | MB_ICONHAND, 999);
|
|
strcpy(termData.fileName, ""); /* rjs swat */
|
|
}
|
|
}
|
|
else
|
|
strcpy(termData.fileName, ""); /* rjs swat */
|
|
}
|
|
|
|
SetCursor(LoadCursor(NULL, IDC_ARROW));
|
|
|
|
return(termSaveFile);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* termReadFile() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL NEAR termReadFile(BYTE *filePath)
|
|
{
|
|
BOOL termReadFile = FALSE;
|
|
INT hFile;
|
|
// sdj: was unref local - OFSTRUCT ofDummy;
|
|
// sdj: was unref local - LOGFONT logFont;
|
|
BYTE *junk;
|
|
|
|
/* jtf 3.20 */
|
|
DEBOUT("termReadFile: opening the file[%s]\n",filePath);
|
|
DEBOUT("termReadFile: with flags [%lx]\n",O_RDONLY);
|
|
|
|
junk = strrchr(filePath, '.');
|
|
AnsiUpper((LPSTR)junk);
|
|
|
|
if((hFile = _open((LPSTR) filePath, O_RDONLY)) != -1)
|
|
{
|
|
if(termReadFile = readTermSettings(hFile, _filelength(hFile)))
|
|
{
|
|
resetTermBuffer(); /* mbbx 1.03 */
|
|
icsResetTable((WORD) trmParams.language); /* mbbx 1.04: ics */
|
|
buildTermFont(); /* mbbx 2.00: font selection... */
|
|
trmParams.fResetDevice = TRUE; /* mbbx 2.00: network... */
|
|
trmParams.newDevRef = trmParams.comDevRef;
|
|
trmParams.comDevRef = ITMNOCOM;
|
|
}
|
|
|
|
_close(hFile);
|
|
}
|
|
else
|
|
TF_ErrProc(STRFERROPEN, MB_OK | MB_ICONHAND, 999);
|
|
|
|
return(termReadFile);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* termCloseWindow() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
VOID NEAR termCloseWindow(VOID)
|
|
{
|
|
if(IsWindowVisible(hTermWnd))
|
|
{
|
|
if(childZoomStatus(0x0001, 0) && (countChildWindows(FALSE) == 1))
|
|
{
|
|
childZoomStatus(0, 0x4000);
|
|
ShowWindow(hTermWnd, SW_RESTORE);
|
|
}
|
|
/* added typecast to param 2 as HWND -sdj*/
|
|
SetWindowPos(hTermWnd,(HWND) 1, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_HIDEWINDOW);
|
|
selectTopWindow(); /* mbbx 1.03 ... */
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* termCloseFileInternal() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL NEAR termCloseFileInternal(VOID)
|
|
{
|
|
BOOL termCloseFileInternal = TRUE;
|
|
if(activTerm)
|
|
{
|
|
if(termData.flags & TF_NOCLOSE) /* mbbx 1.01 */
|
|
{
|
|
termCloseFileInternal = FALSE;
|
|
}
|
|
else if(xferFlag != XFRNONE)
|
|
{
|
|
if(termCloseFileInternal = (TF_ErrProc(STR_STOPXFER, MB_YESNO | MB_ICONEXCLAMATION, 0) == IDYES))
|
|
{
|
|
xferBytes = 0;
|
|
xferEndTimer = 0;
|
|
xferWaitEcho = FALSE;
|
|
xferStopped = TRUE;
|
|
xferEnd();
|
|
|
|
}
|
|
}
|
|
|
|
if(termCloseFileInternal)
|
|
{
|
|
if(termData.flags & TF_CHANGED)
|
|
{
|
|
switch(TF_ErrProc(STR_SAVECHANGES, MB_YESNOCANCEL | MB_ICONEXCLAMATION, 0))
|
|
{
|
|
case IDYES:
|
|
termCloseFileInternal = termSaveFile(FALSE); /* mbbx 2.00 */
|
|
break;
|
|
case IDCANCEL:
|
|
termCloseFileInternal = FALSE;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(termCloseFileInternal)
|
|
{
|
|
exitSerial();
|
|
activTerm = FALSE;
|
|
}
|
|
}
|
|
}
|
|
|
|
return(termCloseFileInternal);
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* TF_ErrProc() - */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
INT TF_ErrProc(WORD errMess, WORD errType,WORD errCode)
|
|
{
|
|
// sdj: was unref local - INT result;
|
|
//BYTE temp1[PATHLEN]; /* rjs bugs 008 -> from 80 to 255 sdj:see below..*/
|
|
BYTE temp1[256]; /* sdj: rjs just said it should be 255 but left it 80!*/
|
|
/* sdj: with PATHLEN as 80, LoadString was corrupting the */
|
|
/* sdj: stack with a err popup of invalid rcbfile */
|
|
|
|
|
|
|
|
|
|
BYTE temp2[80];
|
|
|
|
|
|
GetWindowText(hItWnd, (LPSTR) temp2, 80);
|
|
if(!strchr(temp2, '-'))
|
|
{
|
|
sprintf(temp1, " - %s", termData.title);
|
|
strcpy(temp2+strlen(temp2), temp1);
|
|
}
|
|
|
|
/* NOTE: some messages use taskState.result to pass fileName to error handler... */
|
|
LoadString(hInst, errMess, (LPSTR) temp1, 255); /* rjs bugs 008 -> from 80 to 255 */
|
|
|
|
MessageBeep(0);
|
|
/* jtf 3.20 this was GetFocus() changed to GetActiveWindow() to stop rip */
|
|
return(MessageBox(GetActiveWindow(), (LPSTR) temp1, (LPSTR) temp2, errType));
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* */
|
|
/* SETTINGS FILE I/O ROUTINES */
|
|
/* */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* readTermSettings() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL NEAR readTermSettings(INT hFile, WORD fileSize) /* mbbx 2.00: support NEW & OLD DCS and MS settings... */
|
|
//INT hFile;
|
|
//WORD fileSize; /* mbbx 2.00: was LONG */
|
|
{
|
|
BOOL readTermSettings = FALSE;
|
|
HANDLE hData;
|
|
LPSTR lpData;
|
|
BOOL flag; /* jtf 3.31 */
|
|
|
|
flag = TRUE; /* jtf 3.31 */
|
|
|
|
if((hData = GlobalAlloc(GMEM_MOVEABLE, (DWORD) fileSize)) != NULL)
|
|
{
|
|
if((lpData = GlobalLock(hData)) != NULL)
|
|
{
|
|
|
|
/******** this was to debug the 4K trm file/struct compact bug
|
|
now we can avoid this noise on the debug machine, so
|
|
that we get the satisfaction of resolving one more bug(5399)!
|
|
|
|
DbgPrint("sizeof (recTrm) = %lx\n",sizeof(trmParams));
|
|
DbgPrint("Address of trmParams.fileID = %lx\n",&(trmParams.fileID));
|
|
DbgPrint("Address of trmParams.newDevRef = %lx\n",&(trmParams.newDevRef));
|
|
DbgPrint("Address of trmParams.speed = %lx\n",&(trmParams.speed));
|
|
DbgPrint("Address of trmParams.answerBack = %lx\n",&(trmParams.answerBack));
|
|
DbgPrint("Address of trmParams.bufferLines= %lx\n",&(trmParams.bufferLines));
|
|
DbgPrint("Address of trmParams.retryCt = %lx\n",&(trmParams.retryCt));
|
|
DbgPrint("Address of trmParams.xWrapCol = %lx\n",&(trmParams.xWrapCol));
|
|
DbgPrint("Address of trmParams.xLinStr = %lx\n",&(trmParams.xLinStr));
|
|
DbgPrint("Address of trmParams.phone = %lx\n",&(trmParams.phone));
|
|
DbgPrint("Address of trmParams.dialSuffix = %lx\n",&(trmParams.dialSuffix));
|
|
|
|
|
|
**************/
|
|
|
|
|
|
if(_read(hFile, lpData, fileSize) == fileSize)
|
|
{
|
|
readTermSettings = TRUE; /* mbbx 2.00: read OLD DCS... */
|
|
|
|
|
|
switch(fileSize)
|
|
{
|
|
case sizeof(recTrmParams):
|
|
lmovmem(lpData, (LPBYTE) &trmParams, fileSize);
|
|
break;
|
|
case sizeof(MSSETTINGS):
|
|
convertMSToIBM((LPMSSETTINGS) lpData, &trmParams);
|
|
break;
|
|
default:
|
|
TF_ErrProc(STRFERRFILELENGTH, MB_OK | MB_ICONHAND, 999);
|
|
flag = FALSE; /* jtf 3.31 */
|
|
readTermSettings = FALSE;
|
|
break;
|
|
}
|
|
}
|
|
|
|
GlobalUnlock(hData);
|
|
}
|
|
|
|
GlobalFree(hData);
|
|
}
|
|
|
|
if ((!readTermSettings) && (flag))
|
|
TF_ErrProc(STRFERRREAD, MB_OK | MB_ICONHAND, 999);
|
|
|
|
return(readTermSettings);
|
|
}
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* convertMSToIBM() - [mbb] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
#define MS_HSSOFTWARE 0
|
|
#define MS_HSHARDWARE 1
|
|
#define MS_HSNONE 2
|
|
|
|
#define MS_IDS_NONE 0
|
|
#define MS_IDS_BRITISH 1
|
|
#define MS_IDS_DANISH 2
|
|
#define MS_IDS_FINNISH 3
|
|
#define MS_IDS_FRENCH 4
|
|
#define MS_IDS_CANADIAN 5
|
|
#define MS_IDS_GERMAN 6
|
|
#define MS_IDS_ITALIAN 7
|
|
#define MS_IDS_SPANISH 8
|
|
#define MS_IDS_SWEDISH 9
|
|
#define MS_IDS_SWISS 10
|
|
|
|
VOID NEAR convertMSToIBM(LPMSSETTINGS lpMSSettings, recTrmParams *ptrTrmParams)
|
|
{
|
|
|
|
ptrTrmParams->outCRLF = (BYTE) lpMSSettings->fNewLine;
|
|
ptrTrmParams->localEcho = (BYTE) lpMSSettings->fLocalEcho;
|
|
ptrTrmParams->lineWrap = (BYTE) lpMSSettings->fAutoWrap;
|
|
ptrTrmParams->bufferLines = lpMSSettings->clnBuf; /* jtf term */
|
|
|
|
ptrTrmParams->emulate = lpMSSettings->fVT52 ? ITMVT52 : ITMVT100;
|
|
ptrTrmParams->speed = lpMSSettings->iBaud; /* jtf term */
|
|
switch(lpMSSettings->iPort) /* mbbx 2.00: network... */
|
|
{
|
|
case 0: /* jtf term */
|
|
case 1:
|
|
ptrTrmParams->comDevRef = ITMWINCOM;
|
|
ptrTrmParams->comPortRef = ITMCOM1 + (lpMSSettings->iPort); /* jtf term */
|
|
break;
|
|
default:
|
|
ptrTrmParams->comDevRef = ITMNOCOM;
|
|
break;
|
|
}
|
|
|
|
switch(lpMSSettings->iByteSize)
|
|
{
|
|
case 4:
|
|
ptrTrmParams->dataBits = ITMDATA4;
|
|
break;
|
|
case 5:
|
|
ptrTrmParams->dataBits = ITMDATA5;
|
|
break;
|
|
case 6:
|
|
ptrTrmParams->dataBits = ITMDATA6;
|
|
break;
|
|
case 7:
|
|
ptrTrmParams->dataBits = ITMDATA7;
|
|
break;
|
|
default:
|
|
ptrTrmParams->dataBits = ITMDATA8;
|
|
break;
|
|
}
|
|
|
|
switch(lpMSSettings->iStopBits)
|
|
{
|
|
case ONE5STOPBITS:
|
|
ptrTrmParams->stopBits = ITMSTOP5;
|
|
break;
|
|
case TWOSTOPBITS:
|
|
ptrTrmParams->stopBits = ITMSTOP2;
|
|
break;
|
|
default:
|
|
ptrTrmParams->stopBits = ITMSTOP1;
|
|
break;
|
|
}
|
|
|
|
switch(lpMSSettings->iParity)
|
|
{
|
|
case EVENPARITY:
|
|
ptrTrmParams->parity = ITMEVENPARITY;
|
|
break;
|
|
case ODDPARITY:
|
|
ptrTrmParams->parity = ITMODDPARITY;
|
|
break;
|
|
case MARKPARITY:
|
|
ptrTrmParams->parity = ITMMARKPARITY;
|
|
break;
|
|
case SPACEPARITY:
|
|
ptrTrmParams->parity = ITMSPACEPARITY;
|
|
break;
|
|
default:
|
|
ptrTrmParams->parity = ITMNOPARITY;
|
|
break;
|
|
}
|
|
|
|
switch(lpMSSettings->iHandshake)
|
|
{
|
|
case MS_HSHARDWARE:
|
|
ptrTrmParams->flowControl = ITMHARDFLOW;
|
|
break;
|
|
case MS_HSNONE:
|
|
ptrTrmParams->flowControl = ITMNOFLOW;
|
|
break;
|
|
default:
|
|
ptrTrmParams->flowControl = ITMXONFLOW;
|
|
break;
|
|
}
|
|
|
|
ptrTrmParams->dlyRetry = (lpMSSettings->iAnswer + lpMSSettings->iToneWait);
|
|
lstrcpy(ptrTrmParams->phone, lpMSSettings->szPhNum);
|
|
|
|
switch(lpMSSettings->iCountry)
|
|
{
|
|
case MS_IDS_BRITISH:
|
|
ptrTrmParams->language = ICS_BRITISH;
|
|
break;
|
|
case MS_IDS_GERMAN:
|
|
ptrTrmParams->language = ICS_GERMAN;
|
|
break;
|
|
case MS_IDS_FRENCH:
|
|
ptrTrmParams->language = ICS_FRENCH;
|
|
break;
|
|
case MS_IDS_SWEDISH:
|
|
ptrTrmParams->language = ICS_SWEDISH;
|
|
break;
|
|
case MS_IDS_ITALIAN:
|
|
ptrTrmParams->language = ICS_ITALIAN;
|
|
break;
|
|
case MS_IDS_SPANISH:
|
|
ptrTrmParams->language = ICS_SPANISH;
|
|
break;
|
|
case MS_IDS_DANISH:
|
|
ptrTrmParams->language = ICS_DANISH;
|
|
break;
|
|
case MS_IDS_FINNISH:
|
|
ptrTrmParams->language = ICS_FINISH;
|
|
break;
|
|
case MS_IDS_CANADIAN:
|
|
ptrTrmParams->language = ICS_CANADIAN;
|
|
break;
|
|
case MS_IDS_SWISS:
|
|
ptrTrmParams->language = ICS_SWISS;
|
|
break;
|
|
default:
|
|
ptrTrmParams->language = ICS_NONE;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
/* writeTermSettings() - [scf] */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
BOOL NEAR writeTermSettings(INT fileHandle)
|
|
{
|
|
BOOL writeTermSettings = FALSE;
|
|
HANDLE hSettings;
|
|
LPSETTINGS lpSettings;
|
|
|
|
if((hSettings = GlobalAlloc(GMEM_MOVEABLE, (DWORD) sizeof(recTrmParams))) != NULL)
|
|
{
|
|
if(lpSettings = (LPSETTINGS) GlobalLock(hSettings))
|
|
{
|
|
lmovmem((LPBYTE) &trmParams, (LPBYTE) lpSettings, sizeof(recTrmParams));
|
|
|
|
/* perform conversions here, if necessary... */
|
|
|
|
if(_write(fileHandle, (LPSTR) lpSettings, sizeof(recTrmParams)) == sizeof(recTrmParams)) /* jtf 3.15 */
|
|
writeTermSettings = TRUE;
|
|
|
|
GlobalUnlock(hSettings);
|
|
}
|
|
|
|
GlobalFree(hSettings);
|
|
}
|
|
|
|
return(writeTermSettings);
|
|
}
|