|
|
/*===========================================================================*/ /* 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 NOOPENFILE 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
#include <stdlib.h> /* adding for _searchenv and exit crt -sdj*/
#include <windows.h>
#include <port1632.h>
#include "dcrc.h"
#include "dynacomm.h"
#include "task.h"
#include "video.h" /* mbbx 1.04: per jtfx 1.1 */
#include <ctype.h>
VOID NEAR PASCAL DestroyWindows() { if(hdbmyControls) DestroyWindow(hdbmyControls); if(hdbXferCtrls) DestroyWindow(hdbXferCtrls); if(hTermWnd) DestroyWindow(hTermWnd); }
/*---------------------------------------------------------------------------*/ /* WinMain() - entry point from Windows [mbb] */ /*---------------------------------------------------------------------------*/
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, INT cmdShow) { CHAR errmsg[115],caption[18]; VOID (APIENTRY *lpfnRegisterPenApp)(WORD, BOOL) = NULL; // -sdj was unreferenced local var: DWORD tickCount;
readDateTime(startTimer);
trmParams.comDevRef = ITMNOCOM;
if(!initConnectors(TRUE)) return (FALSE);
/* Added 02/2591 w-dougw check that all windows are created. */ if(!initWindows(hInstance, hPrevInstance, cmdShow)) { LoadString(hInstance,STR_ERRCAPTION,caption,sizeof(caption)); LoadString(hInstance,STR_OUTOFMEMORY,errmsg,79); MessageBox(NULL,errmsg,caption,MB_ICONHAND|MB_SYSTEMMODAL); return(FALSE); } initDialogs(); if(!setup()) { LoadString(hInstance,STR_ERRCAPTION,caption,sizeof(caption)); LoadString(hInstance,STR_OUTOFMEMORY,errmsg,79); MessageBox(NULL,errmsg,caption,MB_ICONHAND|MB_SYSTEMMODAL); return(FALSE); } DEBOUT("Calling: %s\n","readCmdLine()"); readCmdLine(lpszCmdLine); /* mbbx 2.00 ... */ DEBOUT("Outof: %s\n","readCmdLine()");
DEBOUT("Calling: %s\n","PrintFileInit()"); PrintFileInit(); /* jtfterm */ DEBOUT("Outof: %s\n","PrintFileInit()");
/* Register as a good little pen-windows app
*/ /* NOTE**** have to confirm that this is the way to go GetSystemMet RC-sdj*/ /* added typecasting of (HANDLE) to param 1 */ if (lpfnRegisterPenApp = (VOID *)GetProcAddress(IntToPtr(GetSystemMetrics(SM_PENWINDOWS)), "RegisterPenApp")) (*lpfnRegisterPenApp)(1, TRUE);
DEBOUT("Calling: %s\n","mainProcess()"); mainProcess(); /* now load _WINMAIN segment */ DEBOUT("Outof: %s\n","mainProcess()");
/* Make sure to de-register if you register
*/ if (lpfnRegisterPenApp) (*lpfnRegisterPenApp)(1, FALSE);
PrintFileShutDown(); /* jtfterm */
DestroyWindow(hdbXferCtrls); /* rjs swat */ DestroyWindow(hdbmyControls); /* jtf 3.33 */ DestroyWindow(hItWnd); /* rjs swat */
freeItResources();
exit((int)msg.wParam); /*ExitProcess((DWORD)msg.wParam); should this be used instead of exit()?-sdj*/ }
/* was
BOOL registerIt(hInstance) HANDLE hInstance; */
/*---------------------------------------------------------------------------*/ /* initWndClass() - [mbb] */ /*---------------------------------------------------------------------------*/
BOOL initWndClass() /* mbbx 1.04 ... */ { WNDCLASS wndClass;
wndClass.style = CS_HREDRAW | CS_VREDRAW; wndClass.lpfnWndProc = DC_WndProc; wndClass.cbClsExtra = 0; wndClass.cbWndExtra = 0; wndClass.hInstance = hInst; wndClass.hIcon = (HICON) NULL; wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); wndClass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE+1); /* mbbx 2.00 ... */ wndClass.lpszMenuName = (LPSTR) szAppName_private; wndClass.lpszClassName = (LPSTR) szAppName_private;
if(!RegisterClass((LPWNDCLASS) &wndClass)) /* register DYNACOMM class */ return(FALSE);
wndClass.style = CS_DBLCLKS; /* jtf 3.21 | CS_HREDRAW | CS_VREDRAW; */ wndClass.lpfnWndProc = TF_WndProc; wndClass.hIcon = (HICON) NULL; wndClass.hCursor = LoadCursor(NULL, IDC_IBEAM); wndClass.hbrBackground = (HBRUSH) NULL; wndClass.lpszMenuName = (LPSTR) NULL; wndClass.lpszClassName = (LPSTR) DC_WNDCLASS;
if(!RegisterClass((LPWNDCLASS) &wndClass)) /* register TERMINAL class */ return(FALSE);
return(TRUE); }
/*---------------------------------------------------------------------------*/ /* initPort () - Initialize hTE text rectangles and init thePort */ /* thePort is always 0 or an active DC of hTermWnd */ /* portLocks is count of number of un'releasePort'ed getPort calls */
extern BOOL insertionPoint;
VOID initPort () { insertionPoint = TRUE; thePort = 0; portLocks = 0; hTE.active = TRUE; hTE.selStart = hTE.selEnd = MAXROWCOL;
/* Added 02/22/91 for win 3.1 common dialog interface */ hDevNames = NULL; hDevMode = NULL; }
/*---------------------------------------------------------------------------*/ /* initIcon() */ /*---------------------------------------------------------------------------*/
VOID initIcon() { // -sdj was unreferenced var: CHAR temp[10];
icon.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(ICO_DYNACOMM));
icon.flash = FALSE;
icon.dx = GetSystemMetrics(SM_CXICON)/16; icon.dy = GetSystemMetrics(SM_CYICON)/16;
}
/*---------------------------------------------------------------------------*/ /* createWindows() - Determine tube size and create all Windows. */ /*---------------------------------------------------------------------------*/
BOOL createWindows(INT cmdShow) { INT ndx; // -sdj was unreferenced local var: HMENU hSysMenu;
BYTE work[80]; // -sdj was unrefenced var: , work1[80], work2[80];
LoadString(hInst, STR_APPNAME, (LPSTR) work, MINRESSTR); strcpy(work+strlen(work), " - "); LoadString(hInst, STR_TERMINAL, (LPSTR) work+strlen(work), MINRESSTR);
//sdj: using the values from the registry instead of hardcoding it
if(!(hItWnd = CreateWindow((LPSTR) szAppName_private, (LPSTR) work, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, WindowXPosition, WindowYPosition, WindowWidth, WindowHeight, // was hardcoded to: 10,10,400,400, win31:CW_USEDEFAULT, 0, CW_USEDEFAULT, 0
(HWND) NULL, (HMENU) NULL, (HANDLE) hInst, (LPSTR) NULL))) return(FALSE);
LoadString(hInst, STR_INI_MAXIMIZED, (LPSTR) work, MINRESSTR); if(!GetProfileInt((LPSTR) szAppName_private, (LPSTR) work, 0) || (cmdShow == SW_SHOWMINNOACTIVE) || (cmdShow == SW_SHOWMINIMIZED) || (cmdShow == SW_MINIMIZE)) { ShowWindow(hItWnd, cmdShow); } else ShowWindow(hItWnd, SW_SHOWMAXIMIZED);
if(!(hdbmyControls = CreateDialog(hInst, getResId(IDDBMYCONTROLS), hItWnd, dbmyControls))) return(FALSE); for(ndx = 0; ndx < DCS_NUMFKEYS; ndx += 1) /* mbbx 2.00: moved from hidemyControls... */ { fKeyHandles[ndx] = GetDlgItem(hdbmyControls, IDFK1 + ndx); DEBOUT("createWindows: fKeyHandles[]=%lx from GetDlgItem()\n",fKeyHandles[ndx]); } LoadString(hInst, STR_TERMINAL, (LPSTR) work, MINRESSTR); if(!(hTermWnd = CreateWindow((LPSTR) DC_WNDCLASS, (LPSTR) work, /* Removed WS_THICKFRAME jtf 3.21 */ WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_CLIPSIBLINGS | CS_BYTEALIGNWINDOW, 0, 0, 0, 0, hItWnd, (HMENU) NULL, (HANDLE) hInst, (LPSTR) NULL))) return(FALSE);
if(!(hdbXferCtrls = CreateDialog(hInst, getResId(IDDBXFERCTRLS), hTermWnd, dbmyControls))) { return(FALSE); }
/* mbbx 1.04 */ xferCtlStop = GetDlgItem(hdbXferCtrls, IDSTOP); /* mbbx 2.00: moved from hidemyControls()... */ xferCtlPause = GetDlgItem(hdbXferCtrls, IDPAUSE); xferCtlScale = GetDlgItem(hdbXferCtrls, IDSCALE); showXferCtrls(0); }
/*---------------------------------------------------------------------------*/ /* sizeWindows() - */ /*---------------------------------------------------------------------------*/
VOID sizeWindows() { RECT fKeysRect; RECT ctrlsRect; RECT termRect;
setDefaultFonts();
GetWindowRect(hdbmyControls, &fKeysRect); GetWindowRect(fKeyHandles[0], &ctrlsRect); /* mbbx 2.00: fkeys... */ MoveWindow(hdbmyControls, 0, fKeysRect.top, fKeysRect.right, fKeysHeight = ((ctrlsRect.bottom - ctrlsRect.top) * 2), FALSE);
GetClientRect(hItWnd, &fKeysRect); /* mbbx 2.00: may not init maximized... */ sizeFkeys(MAKELONG(fKeysRect.right, fKeysRect.bottom));
GetWindowRect(hdbXferCtrls, &ctrlsRect); /* mbbx 1.04: fkeys... */ ctrlsHeight = ctrlsRect.bottom - ctrlsRect.top;
initChildSize(&termRect); MoveWindow(hTermWnd, 0, 0, termRect.right, termRect.bottom, FALSE); /* jtf 3.21 */ } /*---------------------------------------------------------------------------*/ /* initWindows() - */ /*---------------------------------------------------------------------------*/
BOOL initWindows(HANDLE hInstance, HANDLE hPrevInstance, INT cmdShow) {
BYTE str[MINRESSTR];
hInst = hInstance;
/* Added 02/26/91 for window existence */ hItWnd = NULL; hdbmyControls = NULL; hTermWnd = NULL; hdbXferCtrls = NULL; hEdit = NULL; fKeyHdl = NULL;
LoadString(hInst, STR_APPNAME_PRIVATE, (LPSTR) szAppName_private, 20); LoadString(hInst, STR_APPNAME, (LPSTR) szAppName, 20); LoadString(hInst, STR_DEVELOPER, (LPSTR) szMessage, 80); LoadString(hInst, STR_NOMEMORY,(LPSTR)NoMemStr,sizeof(NoMemStr)); /* rjs msoft ??? */
//sdj: lets try and see if the x,y,width,height are in the win.ini
//sdj: if so use them and save the values in the global variables
//sdj: so that these can be used by the createwindow call during init
//sdj: and can be saved using getwindowrect just before the user exits
//sdj: the terminal app.
//sdj: defaults are 10,10,400,400. win31 had: CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
LoadString(hInst, STR_INI_XPOSITION, (LPSTR) str, MINRESSTR); WindowXPosition = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 10);
LoadString(hInst, STR_INI_YPOSITION, (LPSTR) str, MINRESSTR); WindowYPosition = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 10);
LoadString(hInst, STR_INI_WIDTH, (LPSTR) str, MINRESSTR); WindowWidth = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 400);
LoadString(hInst, STR_INI_HEIGHT, (LPSTR) str, MINRESSTR); WindowHeight = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 400);
setDefaultAttrib(TRUE); /* mbbx 1.04: ...szAppName loaded */
if(!hPrevInstance) { if(!initWndClass()) /* mbbx 1.04 ... */ return(FALSE); }
initPort(); initIcon();
theBrush = GetStockObject (WHITE_BRUSH); blackBrush = GetStockObject (BLACK_BRUSH);
if(!createWindows(cmdShow)) return(FALSE);
sizeWindows();
maxScreenLine = MAXSCREENLINE; /* rjs moved from size windows */
hMenu = GetMenu(hItWnd);
return(TRUE); }
/*---------------------------------------------------------------------------*/ /* initDialogs() - Do all dialogbox initialization. [scf] */ /*---------------------------------------------------------------------------*/
VOID initDialogs() /* mbbx: remove ALL of these... */ { }
/*---------------------------------------------------------------------------*/ /* dbPortInit() - [mbb] */ /*---------------------------------------------------------------------------*/
INT_PTR APIENTRY dbPortInit(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { #ifdef WIN32
WORD temp_wParam; #endif
switch(message) { case WM_INITDIALOG: initDlgPos(hDlg); initComDevSelect(hDlg, ITMCONNECTOR, TRUE); return(TRUE);
case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { case IDOK: break;
case ITMCONNECTOR: if(GET_WM_COMMAND_CMD(wParam, lParam) == LBN_DBLCLK) break; return(TRUE); } break;
default: return(FALSE); }
trmParams.comPortRef = getComDevSelect(hDlg, ITMCONNECTOR, &trmParams.newDevRef); trmParams.fResetDevice = TRUE; #ifdef WIN32
/* code in next block passes address of wParam to function*/ /* so we pass temp variable instead, since we need extract ID from wParam under WIN32*/ temp_wParam = GET_WM_COMMAND_ID(wParam, lParam); #endif
#ifdef ORGCODE
trmParams.comPortRef = getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &wParam); #else
trmParams.comPortRef = getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &temp_wParam); #endif
resetSerial(&trmParams, TRUE, TRUE, FALSE); /* slc swat */
if(trmParams.comDevRef != trmParams.newDevRef) { exitSerial(); return(TRUE); } exitSerial();
#ifdef ORGCODE
EndDialog(hDlg, (INT) getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &wParam)); #else
if (!(getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &temp_wParam))) { EndDialog(hDlg,TRUE); } else{ EndDialog(hDlg, (INT) getComDevSelect(hDlg, ITMCONNECTOR, (BYTE *) &temp_wParam)); } #endif
return(TRUE); }
/*---------------------------------------------------------------------------*/ /* setProfileExtent() - [mbb] */ /*---------------------------------------------------------------------------*/
/* mbbx: 1.01 - moved from itutil1.c */
BOOL NEAR setProfileExtent(BYTE *section, BYTE *extent) { BOOL setProfileExtent = FALSE; BYTE str[80]; BYTE temp[80];
if(!GetProfileString((LPSTR) section, (LPSTR) extent, (LPSTR) NULL_STR, (LPSTR) temp, 80)) { strcpy(temp, extent); AnsiLower((LPSTR) temp); sprintf(str, "%s.exe ^.%s", szAppName_private, temp); AnsiLower((LPSTR) str); WriteProfileString((LPSTR) section, (LPSTR) temp, (LPSTR) str); setProfileExtent = TRUE; }
return(setProfileExtent); }
/*---------------------------------------------------------------------------*/ /* initFileDocData() - [mbb] */ /*---------------------------------------------------------------------------*/
BOOL NEAR initFileDocData(FILEDOCTYPE fileType, WORD strResID,BYTE *fileExt,BYTE *szSection) /* mbbx 2.00 ... */ { BYTE work1[MINRESSTR], work2[80];
LoadString(hInst, strResID, (LPSTR) work1, MINRESSTR); GetProfileString((LPSTR) szAppName_private, (LPSTR) work1, (LPSTR) NULL_STR, (LPSTR) work2, 80);
getDataPath(fileType, fileDocData[fileType].filePath, work2);
strcpy(fileDocData[fileType].fileExt, fileExt); if(!getFileType(work2, fileDocData[fileType].fileExt)) strcpy(work2, fileDocData[fileType].fileExt);
strcpy(fileDocData[fileType].fileName, fileDocData[fileType].fileExt+1);
if(work2[strlen(work2)-1] != '*') return(setProfileExtent(szSection, fileDocData[fileType].fileExt+3));
return(FALSE); }
/*---------------------------------------------------------------------------*/ /* initProfileData() - [mbb] */ /*---------------------------------------------------------------------------*/
#define DEFBUFFERLINES 100 /* mbbx 1.10... */
VOID initProfileData() /* mbbx: 1.01 ... */ { BYTE str[MINRESSTR], str2[MINRESSTR], portName[16]; INT ndx; // -sdj eas unreferenced local var: FARPROC lpdbPortInit;
BOOL notify;
LoadString(hInst, STR_INI_PORT, (LPSTR) str, MINRESSTR); if(!GetProfileString((LPSTR) szAppName_private, (LPSTR) str, (LPSTR) NULL_STR, (LPSTR) portName, 5)) { trmParams.comDevRef = ITMNOCOM; /* jtf 3.33 */ trmParams.speed = 1200; /* jtf 3.33 */ trmParams.dataBits = ITMDATA8; /* jtf 3.33 */ trmParams.stopBits = ITMSTOP1; /* jtf 3.33 */ trmParams.parity = ITMNOPARITY; /* jtf 3.33 */ if((ndx = doSettings(IDDBPORTINIT, dbPortInit)) != -1) /* mbbx 2.01.10 ... */ { LoadString(hInst, (ndx > 0) ? STR_COM : STR_COM_CONNECT, (LPSTR) str2, MINRESSTR); sprintf(portName, str2, ndx); WriteProfileString((LPSTR) szAppName_private, (LPSTR) str, (LPSTR) portName); } }
LoadString(hInst, STR_INI_SWAP, (LPSTR) str, MINRESSTR); if((ndx = GetProfileInt((LPSTR) szAppName_private, (LPSTR) str, 0)) > 0) *taskState.string = (BYTE)sprintf(taskState.string+1, "%d", SetSwapAreaSize(ndx));
LoadString(hInst, STR_INI_INTL, (LPSTR) str, MINRESSTR); LoadString(hInst, STR_INI_IDATE, (LPSTR) str2, MINRESSTR); intlData.iDate = GetProfileInt((LPSTR) str, (LPSTR) str2, 0); LoadString(hInst, STR_INI_SDATE, (LPSTR) str2, MINRESSTR); GetProfileString((LPSTR) str, (LPSTR) str2, (LPSTR) "/", (LPSTR) intlData.sDate, 2); LoadString(hInst, STR_INI_ITIME, (LPSTR) str2, MINRESSTR); intlData.iTime = GetProfileInt((LPSTR) str, (LPSTR) str2, 0); LoadString(hInst, STR_INI_STIME, (LPSTR) str2, MINRESSTR); GetProfileString((LPSTR) str, (LPSTR) str2, (LPSTR) ":", (LPSTR) intlData.sTime, 2); LoadString(hInst, STR_INI_S1159, (LPSTR) str2, MINRESSTR); GetProfileString((LPSTR) str, (LPSTR) str2, (LPSTR) "AM", (LPSTR) intlData.s1159, 4); LoadString(hInst, STR_INI_S2359, (LPSTR) str2, MINRESSTR); GetProfileString((LPSTR) str, (LPSTR) str2, (LPSTR) "PM", (LPSTR) intlData.s2359, 4);
LoadString(hInst, STR_INI_EXTENSIONS, (LPSTR) str, MINRESSTR); notify = initFileDocData(FILE_NDX_SETTINGS, STR_INI_SETTINGS, SETTINGS_FILE_TYPE, str); if(initFileDocData(FILE_NDX_TASK, STR_INI_TASK, TASK_FILE_TYPE, str)) notify = TRUE; if(initFileDocData(FILE_NDX_SCRIPT, STR_INI_SCRIPT, SCRIPT_FILE_TYPE, str)) notify = TRUE; if(initFileDocData(FILE_NDX_MEMO, STR_INI_MEMO, MEMO_FILE_TYPE, str)) notify = TRUE; if(initFileDocData(FILE_NDX_DATA, STR_INI_DATA, DATA_FILE_TYPE, str)) notify = TRUE; if(notify) #ifdef ORGCODE
SendMessage(0xFFFF, WM_WININICHANGE, 0, (LONG) ((LPSTR) str)); #else
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, (LPARAM) str); #endif
}
// sdj: added this code to get the list of comm ports which the serial driver
// sdj: recognized while loading the system.
// sdj: if this number of ports is > 9 then it is set to 9
// sdj: and if this info cannot be retrieved this this is set to 4 as before
void GetNumCommPortsInSystem(LPBYTE pMaxCom) {
int i,j, nEntries; DWORD dwSize, dwBufz; DWORD dwType; HKEY hkey; char szSerial[40]; char szCom[40]; char szCom2[40]; char szFormat[200]; BYTE tmp1[TMPNSTR+1]; BYTE tmp2[TMPNSTR+1];
// NT Registry keys to find COM port to Serial Device mapping
char szRegSerialMap[] = "Hardware\\DeviceMap\\SerialComm";
//////////////////////////////////////////////////////////////////////
// Get list of valid COM ports from DEVICEMAP in registry
//////////////////////////////////////////////////////////////////////
*pMaxCom = 0; i = 0;
if (!RegOpenKeyEx (HKEY_LOCAL_MACHINE, szRegSerialMap, 0L, KEY_READ, &hkey)) { dwBufz = sizeof(szSerial); dwSize = sizeof(szCom); nEntries = i = 0;
while (!RegEnumValue (hkey, i++, szSerial, &dwBufz, NULL, &dwType, szCom, &dwSize)) { if (dwType != REG_SZ) continue;
++nEntries;
// arComNumAndName[nEntries].Index = nEntries;
// strcpy(arComNumAndName[nEntries].PortName,szCom);
//
dwSize = sizeof(szCom); dwBufz = sizeof(szSerial);
if (nEntries > 19) break; // lets not bother with >= 20 entries
} RegCloseKey (hkey); *pMaxCom = (BYTE)nEntries; arComNumAndName[0].Index = (BYTE)nEntries;
} else { // sdj: could not find the list of comm ports in the registry, so
// sdj: stick with the original terminal hardcoded value of com1-4
LoadString(hInst, STR_NOCOMMPORTS, (LPSTR) tmp1, TMPNSTR); /* mbbx 1.00 */ LoadString(hInst, STR_ERRCAPTION, (LPSTR) tmp2, TMPNSTR); MessageBox(NULL, (LPSTR) tmp1, (LPSTR)tmp2, MB_OK | MB_APPLMODAL); *pMaxCom = 0; }
//sdj: if maxcomm is > 9 set it to 9
//
if (*pMaxCom > 9) *pMaxCom = 9; //
//
strcpy(szCom,"COM%d");
for (i=1,j=1; i<= 9; i++) { sprintf(szCom2,szCom,i); if (QueryDosDevice(szCom2,szFormat,400)) { arComNumAndName[j].Index = (BYTE)j; strcpy(arComNumAndName[j].PortName,szCom2); j++; } }
}
/*---------------------------------------------------------------------------*/ /* setup() - Reset all varibles, read settings file & emulation. [scf] */ /*---------------------------------------------------------------------------*/
BOOL setup() /* mbbx 2.00: no cmd line... */ { // -sdj was unreferenced local var: BYTE path[PATHLEN+1];
// -sdj was unreferenced local var: BYTE tmp1[TMPNSTR+1];
// -sdj was unreferenced local var: INT ndx;
SetRect (&cursorRect, 0, 0, 0, 0); vScrollShowing = TRUE; serNdx = 0; cursorTick = -1l; cursBlinkOn = FALSE; cursorOn = TRUE; activCursor = 1; prtFlag = FALSE; useScrap = FALSE; copiedTable = FALSE; *fKeyStr = 0; /* mbbx 2.00: fKeySeq... */ fKeyNdx = 1; scrapSeq = FALSE;
xferFlag = XFRNONE; xferPaused = FALSE; xferBreak = FALSE; /* mbbx 2.00: xfer ctrls */ xferEndTimer = 0; xferWaitEcho = FALSE; xferViewPause = 0; /* mbbx: auto line count */ xferViewLine = 0; xferPSChar = 0; /* mbbx 1.02: packet switching */ *strRXErrors = *strRXBytes = *strRXFname = *strRXFork = 0; taskInit(); keyMapInit(); /* mbbx 1.04: keymap */
debugFlg = FALSE; /* how does this get enabled??? */
mdmOnLine = FALSE; dialing = FALSE; answerMode = FALSE; protectMode = FALSE; /* mbbx: emulation state */ KER_getflag = FALSE;
gotCommEvent = TRUE; sPort = NULL; bPortIsGood = FALSE; /* it is not yet opened */ //-sdj for telnet-quit processing
bPortDisconnected = TRUE; /* this will ensure that reads dont
occur before resetserial inits this to FALSE, it will be set to true by checkcommevent if for some reason, wait(getlasterror) is not IO_PENDING */
bgOutStandingWrite = FALSE; /* slc swat */
//MaxComPortNumberInMenu = 5;
/* this will get set to proper
value when the win.ini is looked at for COMn entries, but during init, this needs to be set to > COM1 -sdj:04/21/92 */
GetNumCommPortsInSystem(&MaxComPortNumberInMenu);
if((hemulKeyInfo = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, (DWORD) SIZEOFEMULKEYINFO)) == NULL) return(FALSE);
initProfileData(); /* mbbx: 1.01 */
hTE.hText = NULL; DEBOUT("Calling: %s\n","setDefaults()"); setDefaults(); DEBOUT("Outof: %s\n","setDefaults()");
DEBOUT("Calling: %s\n","setFKeyLevel()"); setFKeyLevel(1, FALSE); /* jtfterm */ DEBOUT("Outof: %s\n","setFKeyLevel()");
DEBOUT("Calling: %s\n","termInitSetup()"); termInitSetup(NULL); DEBOUT("Outof: %s\n","termInitSetup()");
strcpy(szMessage, szAppName); return(TRUE); }
/*---------------------------------------------------------------------------*/ /* readCmdLine() - [mbb] */ /*---------------------------------------------------------------------------*/
BOOL fileDocExist(WORD fileType, BYTE *filePath) { BOOL fileDocExist; BYTE savePath[PATHLEN], testPath[PATHLEN]; BYTE OEMname[STR255];
strcpy(savePath, filePath); getDataPath(fileType, testPath, savePath); strcat(testPath, savePath);
// JYF -- replace below lines with followin if()
// to remove the use of AnsiToOem()
//
//AnsiToOem((LPSTR) testPath, (LPSTR) OEMname); /* jtf 3.20 */
//if(fileDocExist = fileExist(OEMname)) /* jtf 3.20 */
if (fileDocExist = fileExist(testPath)) strcpy(filePath, testPath);
return(fileDocExist); }
WORD NEAR getFileDocType(BYTE *filePath) { BYTE fileExt[16]; WORD fileType;
*fileExt = 0; if(!getFileType(filePath, fileExt)) { forceExtension(filePath, NO_FILE_TYPE+2, FALSE); if(fileDocExist(FILE_NDX_DATA, filePath) || fileDocExist(FILE_NDX_SETTINGS, filePath)) return(FILE_NDX_SETTINGS); /* jtf 3.11 */ }
for(fileType = FILE_NDX_SETTINGS; fileType <= FILE_NDX_MEMO; fileType += 1) { if(*fileExt == 0) forceExtension(filePath, fileDocData[fileType].fileExt+2, TRUE); else if((fileType < FILE_NDX_MEMO) && (strcmp(fileDocData[fileType].fileExt+2, fileExt) != 0)) continue;
if(fileDocExist(FILE_NDX_DATA, filePath) || fileDocExist(fileType, filePath) || (*fileExt != 0)) return(fileType); }
return(FILE_NDX_DATA); }
BOOL NEAR initTermFile(BYTE *filePath) { getDataPath(FILE_NDX_SETTINGS, fileDocData[FILE_NDX_SETTINGS].filePath, filePath);
LoadString(hInst, STR_TERMINAL, (LPSTR) termData.title, MINRESSTR); /* mbbx 2.00: no forced extents... */ return(termFile(fileDocData[FILE_NDX_SETTINGS].filePath, filePath, fileDocData[FILE_NDX_SETTINGS].fileExt, termData.title, TF_DEFTITLE)); }
VOID NEAR readCmdLine(LPSTR lpszCmdLine) { INT ndx, ndx2; BYTE filePath[PATHLEN]; BYTE tmpFilePath[PATHLEN]; INT nEditWnd = 0; BYTE OEMname[STR255]; /* jtf 3.20 */ BYTE work[STR255]; /* jtf 3.28 */ BYTE work1[STR255]; /* jtf 3.28 */ INT testFlag; saveFileType = FILE_NDX_SETTINGS; /* jtf 3.11 */
AnsiUpper(lpszCmdLine); for(ndx = 0; lpszCmdLine[ndx] != 0; ) /* mbbx 2.00 ... */ { while(lpszCmdLine[ndx] == 0x20) ndx++;
if(lpszCmdLine[ndx] == 0) break;
for(ndx2 = 0; (filePath[ndx2] = lpszCmdLine[ndx]) != 0; ndx2 += 1) { ndx += 1; if(filePath[ndx2] == 0x20) { filePath[ndx2] = 0; break; } } strcpy(work1,filePath); if(!activTerm) initTermFile(filePath); }
ndx = lstrlen(lpszCmdLine); while(ndx) { ndx--; if(isspace(lpszCmdLine[ndx])) lpszCmdLine[ndx] = 0x00; }
if ((!activTerm) && (lstrlen(lpszCmdLine) > 0)) { LoadString(hInst, STRERRNOFILE, (LPSTR) work, STR255-1); /* jtf 3.15 */ strcpy(filePath,work1); forceExtension(filePath, SETTINGS_FILE_TYPE+2, FALSE); sprintf(work1, work, filePath); testFlag = MessageBox(GetActiveWindow(), (LPSTR) work1, (LPSTR) szAppName, MB_OKCANCEL);
if (testFlag==IDOK) { if (filePath[1]==':') { filePath[0]='A'; } else { strcpy(work,filePath); strcpy(filePath,"A:"); strcpy(filePath+2,work); } initTermFile(filePath); } } if(!activTerm) /* mbbx 2.00: term init... */ { LoadString(hInst, STR_AUTOLOAD, (LPSTR) filePath, PATHLEN); /* jtf 3.17 */
// JYF -- replace below two lines with the following if()
// to remove the use of AnsiToOem()
//
//AnsiToOem((LPSTR) filePath, (LPSTR) OEMname); /* jtf 3.20 */
//if (fileExist(OEMname)) /* jtf 3.20 */
if (fileExist(filePath)) initTermFile(filePath); else { _searchenv( filePath, "PATH", tmpFilePath ); if(strlen(tmpFilePath)>0) initTermFile(tmpFilePath); }
if(!activTerm) { if((nEditWnd -= 1) >= 0) termData.flags |= TF_HIDE; else saveFileType = FILE_NDX_SETTINGS;
activTerm = TRUE; resetSerial(&trmParams, TRUE, TRUE,0);
if(!(termData.flags & TF_HIDE)) showTerminal(TRUE, TRUE); } } if(!IsIconic(hItWnd)) /* rjs bugs 015 */ sizeTerm(0L); /* jtf 3.21 */ }
/*---------------------------------------------------------------------------*/ /* freeItResources()- Free up all windows resource b/4 back to DOS executive.*/ /* Internal house keeping. Note: Close that serial port. */ /*---------------------------------------------------------------------------*/
VOID freeItResources() { // -sdj was unreferenced local var: INT ndx;
exitSerial(); keyMapCancel(); /* mbbx 1.04: keymap */
DeleteObject(hTE.hFont); clearFontCache(); /* mbbx 2.00: redundant code... */
GlobalFree(hTE.hText); GlobalFree(hemulKeyInfo); }
|