home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
win100b
/
wkkint.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-10-19
|
7KB
|
186 lines
/*
* Kermit initialization module
*
* Copyright (c) by
* William S. Hall
* 3665 Benton Street #66
* Santa Clara, CA 95051
*
*/
#define NOKANJI
#define NOMINMAX
#define NOATOM
#define NOSOUND
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#ifdef COLUMBIA
#include "wkasci.h"
#include "wkkerm.h"
#else
#include "ascii.h"
#include "wnkerm.h"
#endif
/*
* krmInit
*
* This function must be called during terminal initialization,
* preferably in response to WM_CREATE.
* At this time, Kermit receives the main Window handle,
* a pointer to a linear buffer which will be filled during file transfer
* by reading the communications port, a pointer to the buffer's
* current length, and a pointer to the comm port id number.
* After these values have been recorded, then WIN.INI is
* read for the various protocol and packet parameters.
*/
BOOL FAR krmInit(HWND hWnd, BYTE *bufptr, int *buflen, int *cid, int menupos)
{
char szAppStr[80];
char szKeyStr[80];
Kermit.hWnd = hWnd;
Kermit.hInst = GetWindowWord(hWnd, GWW_HINSTANCE);
krmBufptr = bufptr;
krmBuflen = buflen;
krmcid = cid;
KermParams.ebquote = KRM_DEFEBQUOTE;
KermParams.rpquote = KRM_DEFRPTQUOTE;
LoadString(Kermit.hInst,IDS_KRM_KERMITMENU,szAppStr,sizeof(szAppStr));
/*
ChangeMenu(GetMenu(hWnd), 0,
szAppStr, LoadMenu(Kermit.hInst, "KRMMENU"),
MF_APPEND | MF_BYPOSITION | MF_POPUP);
*/
InsertMenu(GetMenu(hWnd),menupos,MF_POPUP | MF_BYPOSITION,
LoadMenu(Kermit.hInst,"KRMMENU"),szAppStr);
LoadString(Kermit.hInst,IDS_KRM_KERMIT,(LPSTR)szAppStr,sizeof(szAppStr));
krmIcon = LoadIcon(Kermit.hInst, szAppStr);
LoadString(Kermit.hInst, IDS_KRM_TIMER, szKeyStr, sizeof(szKeyStr));
KermParams.Timer = GetProfileInt(szAppStr, szKeyStr, KRM_DEFTIMER);
LoadString(Kermit.hInst, IDS_KRM_FILEWARN, szKeyStr, sizeof(szKeyStr));
KermParams.FileWarning = GetProfileInt(szAppStr,szKeyStr,KRM_DEFFILEWARN);
LoadString(Kermit.hInst, IDS_KRM_BELL, szKeyStr, sizeof(szKeyStr));
KermParams.Bell = GetProfileInt(szAppStr, szKeyStr, KRM_DEFBELL);
/*
LoadString(Kermit.hInst, IDS_KRM_VERBOSE, szKeyStr, sizeof(szKeyStr));
KermParams.verbose = GetProfileInt(szAppStr,szKeyStr,KRM_DEFVERBOSE);
*/
LoadString(Kermit.hInst, IDS_KRM_DISCARD, szKeyStr, sizeof(szKeyStr));
KermParams.DiscardPartialFile =
GetProfileInt(szAppStr,szKeyStr,KRM_DEFDISCARD);
LoadString(Kermit.hInst,IDS_KRM_BLOCKCHECKTYPE,szKeyStr,sizeof(szKeyStr));
KermParams.BlockCheckType =
GetProfileInt(szAppStr,szKeyStr,KRM_DEFBLOCKCHECK);
if ((KermParams.BlockCheckType < 1) || (KermParams.BlockCheckType > 3))
KermParams.BlockCheckType = 1;
LoadString(Kermit.hInst, IDS_KRM_RETRYLIMIT, szKeyStr, sizeof(szKeyStr));
KermParams.RetryLimit = GetProfileInt(szAppStr,szKeyStr,KRM_DEFRETRYLIMIT);
if ((KermParams.RetryLimit < KRM_MINRETRYLIMIT)
|| (KermParams.RetryLimit > KRM_MAXRETRYLIMIT))
KermParams.RetryLimit = KRM_DEFRETRYLIMIT;
LoadString(Kermit.hInst, IDS_KRM_SENDDELAY, szKeyStr, sizeof(szKeyStr));
KermParams.SendDelay = GetProfileInt(szAppStr,szKeyStr,KRM_DEFSENDDELAY);
if (KermParams.SendDelay > KRM_MAXSENDDELAY)
KermParams.SendDelay = KRM_DEFSENDDELAY;
LoadString(Kermit.hInst, IDS_KRM_SENDMARK, szKeyStr, sizeof(szKeyStr));
sndparams.mark = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFMARK);
if (sndparams.mark >= ' ')
sndparams.mark = KRM_DEFMARK;
LoadString(Kermit.hInst, IDS_KRM_RCVMARK, szKeyStr, sizeof(szKeyStr));
rcvparams.mark = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFMARK);
if (rcvparams.mark >= ' ')
rcvparams.mark = KRM_DEFMARK;
LoadString(Kermit.hInst, IDS_KRM_SENDMAXLEN, szKeyStr, sizeof(szKeyStr));
sndparams.maxpktsize = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPACKETSIZE);
if ((sndparams.maxpktsize > KRM_MAXPACKETSIZE) ||
(sndparams.maxpktsize < KRM_MINPACKETSIZE))
sndparams.maxpktsize = KRM_DEFPACKETSIZE;
LoadString(Kermit.hInst, IDS_KRM_RCVMAXLEN, szKeyStr, sizeof(szKeyStr));
rcvparams.maxpktsize = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPACKETSIZE);
if ((rcvparams.maxpktsize > KRM_MAXPACKETSIZE) ||
(rcvparams.maxpktsize < KRM_MINPACKETSIZE))
rcvparams.maxpktsize = KRM_DEFPACKETSIZE;
LoadString(Kermit.hInst, IDS_KRM_SENDTIMEOUT, szKeyStr, sizeof(szKeyStr));
sndparams.timeout = GetProfileInt(szAppStr,szKeyStr,KRM_DEFTIMEOUT);
if ((sndparams.timeout > KRM_MAXTIMEOUT) ||
(sndparams.timeout < KRM_MINTIMEOUT))
sndparams.timeout = KRM_DEFTIMEOUT;
LoadString(Kermit.hInst, IDS_KRM_RCVTIMEOUT, szKeyStr, sizeof(szKeyStr));
rcvparams.timeout = GetProfileInt(szAppStr,szKeyStr,KRM_DEFTIMEOUT);
if ((rcvparams.timeout > KRM_MAXTIMEOUT) ||
(rcvparams.timeout < KRM_MINTIMEOUT))
rcvparams.timeout = KRM_DEFTIMEOUT;
LoadString(Kermit.hInst, IDS_KRM_SENDPADCOUNT, szKeyStr, sizeof(szKeyStr));
sndparams.padcount = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCOUNT);
if (sndparams.padcount > KRM_MAXPADCOUNT)
sndparams.padcount = KRM_DEFPADCOUNT;
LoadString(Kermit.hInst, IDS_KRM_RCVPADCOUNT, szKeyStr, sizeof(szKeyStr));
rcvparams.padcount = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCOUNT);
if (rcvparams.padcount > KRM_MAXPADCOUNT)
rcvparams.padcount = KRM_DEFPADCOUNT;
LoadString(Kermit.hInst, IDS_KRM_SENDPADCHAR, szKeyStr, sizeof(szKeyStr));
sndparams.padchar = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCHAR);
if ((sndparams.padchar >= ' ') && (sndparams.padchar < DEL))
sndparams.padchar = KRM_DEFPADCHAR;
LoadString(Kermit.hInst, IDS_KRM_RCVPADCHAR, szKeyStr, sizeof(szKeyStr));
rcvparams.padchar = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCHAR);
if ((rcvparams.padchar >= ' ') && (rcvparams.padchar != DEL))
rcvparams.padchar = KRM_DEFPADCHAR;
LoadString(Kermit.hInst, IDS_KRM_SENDEOL, szKeyStr, sizeof(szKeyStr));
sndparams.eol = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFEOL);
if (sndparams.eol >= ' ')
sndparams.eol = KRM_DEFEOL;
LoadString(Kermit.hInst, IDS_KRM_RCVEOL, szKeyStr, sizeof(szKeyStr));
rcvparams.eol = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFEOL);
if (rcvparams.eol >= ' ')
rcvparams.eol = KRM_DEFEOL;
LoadString(Kermit.hInst, IDS_KRM_SENDQUOTE, szKeyStr, sizeof(szKeyStr));
sndparams.quote = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFQUOTE);
if (((sndparams.quote <= 32) || (sndparams.quote >= 63)) &&
((sndparams.quote <= 95) || (sndparams.quote >= 127)))
sndparams.quote = KRM_DEFQUOTE;
LoadString(Kermit.hInst, IDS_KRM_RCVQUOTE, szKeyStr, sizeof(szKeyStr));
rcvparams.quote = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFQUOTE);
if (((rcvparams.quote <= 32) || (rcvparams.quote >= 63)) &&
((rcvparams.quote <= 95) || (rcvparams.quote >= 127)))
rcvparams.quote = KRM_DEFQUOTE;
Kermit.fpTimer = MakeProcInstance((FARPROC)krmDoTimeout, Kermit.hInst);
Kermit.fpXfer = MakeProcInstance((FARPROC)krmXferDlgBox, Kermit.hInst);
Kermit.fpXferRemote = MakeProcInstance((FARPROC)krmXferRemote,
Kermit.hInst);
if (!(Kermit.fpTimer && Kermit.fpXfer && Kermit.fpXferRemote)) {
krmShowMessage(IDS_KRM_CANNOTINIT);
return FALSE;
}
return TRUE;
}