home *** CD-ROM | disk | FTP | other *** search
/ kermit.columbia.edu / kermit.columbia.edu.tar / kermit.columbia.edu / win100b / wkkint.c < prev    next >
C/C++ Source or Header  |  1991-10-19  |  7KB  |  186 lines

  1. /*
  2.  * Kermit initialization module
  3.  *
  4.  * Copyright (c) by
  5.  * William S. Hall
  6.  * 3665 Benton Street #66
  7.  * Santa Clara, CA 95051
  8.  *
  9.  */
  10.  
  11. #define NOKANJI
  12. #define NOMINMAX
  13. #define NOATOM
  14. #define NOSOUND
  15. #include <windows.h>
  16. #include <stdlib.h>
  17. #include <string.h>
  18. #ifdef COLUMBIA
  19. #include "wkasci.h"
  20. #include "wkkerm.h"
  21. #else
  22. #include "ascii.h"
  23. #include "wnkerm.h"
  24. #endif
  25.  
  26. /*
  27.  * krmInit
  28.  *
  29.  * This function must be called during terminal initialization,
  30.  * preferably in response to WM_CREATE.
  31.  * At this time, Kermit receives the main Window handle,
  32.  * a pointer to a linear buffer which will be filled during file transfer
  33.  * by reading the communications port, a pointer to the buffer's
  34.  * current length, and a pointer to the comm port id number.
  35.  * After these values have been recorded, then WIN.INI is
  36.  * read for the various protocol and packet parameters.
  37.  */
  38. BOOL FAR krmInit(HWND hWnd, BYTE *bufptr, int *buflen, int *cid, int menupos)
  39. {
  40.  
  41.     char szAppStr[80];
  42.     char szKeyStr[80];
  43.  
  44.     Kermit.hWnd = hWnd;
  45.     Kermit.hInst = GetWindowWord(hWnd, GWW_HINSTANCE);
  46.     krmBufptr = bufptr;
  47.     krmBuflen = buflen;
  48.     krmcid = cid;
  49.  
  50.     KermParams.ebquote = KRM_DEFEBQUOTE;
  51.     KermParams.rpquote = KRM_DEFRPTQUOTE;
  52.  
  53.     LoadString(Kermit.hInst,IDS_KRM_KERMITMENU,szAppStr,sizeof(szAppStr));
  54. /*
  55.     ChangeMenu(GetMenu(hWnd), 0, 
  56.            szAppStr, LoadMenu(Kermit.hInst, "KRMMENU"), 
  57.            MF_APPEND | MF_BYPOSITION | MF_POPUP);
  58. */
  59.     InsertMenu(GetMenu(hWnd),menupos,MF_POPUP | MF_BYPOSITION,
  60.            LoadMenu(Kermit.hInst,"KRMMENU"),szAppStr);
  61.  
  62.     LoadString(Kermit.hInst,IDS_KRM_KERMIT,(LPSTR)szAppStr,sizeof(szAppStr));
  63.     krmIcon = LoadIcon(Kermit.hInst, szAppStr);
  64.     
  65.     LoadString(Kermit.hInst, IDS_KRM_TIMER, szKeyStr, sizeof(szKeyStr));
  66.     KermParams.Timer = GetProfileInt(szAppStr, szKeyStr, KRM_DEFTIMER);
  67.  
  68.     LoadString(Kermit.hInst, IDS_KRM_FILEWARN, szKeyStr, sizeof(szKeyStr));
  69.     KermParams.FileWarning = GetProfileInt(szAppStr,szKeyStr,KRM_DEFFILEWARN);
  70.  
  71.     LoadString(Kermit.hInst, IDS_KRM_BELL, szKeyStr, sizeof(szKeyStr));
  72.     KermParams.Bell = GetProfileInt(szAppStr, szKeyStr, KRM_DEFBELL);
  73. /*
  74.     LoadString(Kermit.hInst, IDS_KRM_VERBOSE, szKeyStr, sizeof(szKeyStr));
  75.     KermParams.verbose = GetProfileInt(szAppStr,szKeyStr,KRM_DEFVERBOSE);
  76. */
  77.     LoadString(Kermit.hInst, IDS_KRM_DISCARD, szKeyStr, sizeof(szKeyStr));
  78.     KermParams.DiscardPartialFile = 
  79.                 GetProfileInt(szAppStr,szKeyStr,KRM_DEFDISCARD);
  80.  
  81.     LoadString(Kermit.hInst,IDS_KRM_BLOCKCHECKTYPE,szKeyStr,sizeof(szKeyStr));
  82.     KermParams.BlockCheckType =
  83.         GetProfileInt(szAppStr,szKeyStr,KRM_DEFBLOCKCHECK);
  84.     if ((KermParams.BlockCheckType < 1) || (KermParams.BlockCheckType > 3))
  85.         KermParams.BlockCheckType = 1;
  86.  
  87.     LoadString(Kermit.hInst, IDS_KRM_RETRYLIMIT, szKeyStr, sizeof(szKeyStr));
  88.     KermParams.RetryLimit = GetProfileInt(szAppStr,szKeyStr,KRM_DEFRETRYLIMIT);
  89.     if ((KermParams.RetryLimit < KRM_MINRETRYLIMIT) 
  90.             || (KermParams.RetryLimit > KRM_MAXRETRYLIMIT))
  91.         KermParams.RetryLimit = KRM_DEFRETRYLIMIT;
  92.  
  93.     LoadString(Kermit.hInst, IDS_KRM_SENDDELAY, szKeyStr, sizeof(szKeyStr));
  94.     KermParams.SendDelay = GetProfileInt(szAppStr,szKeyStr,KRM_DEFSENDDELAY);
  95.     if (KermParams.SendDelay > KRM_MAXSENDDELAY) 
  96.         KermParams.SendDelay = KRM_DEFSENDDELAY;
  97.  
  98.     LoadString(Kermit.hInst, IDS_KRM_SENDMARK, szKeyStr, sizeof(szKeyStr));
  99.     sndparams.mark = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFMARK);
  100.     if (sndparams.mark >= ' ') 
  101.         sndparams.mark = KRM_DEFMARK;
  102.  
  103.     LoadString(Kermit.hInst, IDS_KRM_RCVMARK, szKeyStr, sizeof(szKeyStr));
  104.     rcvparams.mark = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFMARK);
  105.     if (rcvparams.mark >= ' ') 
  106.         rcvparams.mark = KRM_DEFMARK;
  107.  
  108.     LoadString(Kermit.hInst, IDS_KRM_SENDMAXLEN, szKeyStr, sizeof(szKeyStr));
  109.     sndparams.maxpktsize = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPACKETSIZE);
  110.     if ((sndparams.maxpktsize > KRM_MAXPACKETSIZE) ||
  111.             (sndparams.maxpktsize < KRM_MINPACKETSIZE))
  112.         sndparams.maxpktsize = KRM_DEFPACKETSIZE;
  113.  
  114.     LoadString(Kermit.hInst, IDS_KRM_RCVMAXLEN, szKeyStr, sizeof(szKeyStr));
  115.     rcvparams.maxpktsize = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPACKETSIZE);
  116.     if ((rcvparams.maxpktsize > KRM_MAXPACKETSIZE) ||
  117.             (rcvparams.maxpktsize < KRM_MINPACKETSIZE))
  118.         rcvparams.maxpktsize = KRM_DEFPACKETSIZE;
  119.  
  120.     LoadString(Kermit.hInst, IDS_KRM_SENDTIMEOUT, szKeyStr, sizeof(szKeyStr));
  121.     sndparams.timeout = GetProfileInt(szAppStr,szKeyStr,KRM_DEFTIMEOUT);
  122.     if ((sndparams.timeout > KRM_MAXTIMEOUT) ||
  123.             (sndparams.timeout < KRM_MINTIMEOUT))
  124.         sndparams.timeout = KRM_DEFTIMEOUT;
  125.  
  126.     LoadString(Kermit.hInst, IDS_KRM_RCVTIMEOUT, szKeyStr, sizeof(szKeyStr));
  127.     rcvparams.timeout = GetProfileInt(szAppStr,szKeyStr,KRM_DEFTIMEOUT);
  128.     if ((rcvparams.timeout > KRM_MAXTIMEOUT) ||
  129.             (rcvparams.timeout < KRM_MINTIMEOUT))
  130.         rcvparams.timeout = KRM_DEFTIMEOUT;
  131.  
  132.     LoadString(Kermit.hInst, IDS_KRM_SENDPADCOUNT, szKeyStr, sizeof(szKeyStr));
  133.     sndparams.padcount = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCOUNT);
  134.     if (sndparams.padcount > KRM_MAXPADCOUNT)
  135.         sndparams.padcount = KRM_DEFPADCOUNT;
  136.  
  137.     LoadString(Kermit.hInst, IDS_KRM_RCVPADCOUNT, szKeyStr, sizeof(szKeyStr));
  138.     rcvparams.padcount = GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCOUNT);
  139.     if (rcvparams.padcount > KRM_MAXPADCOUNT)
  140.         rcvparams.padcount = KRM_DEFPADCOUNT;
  141.  
  142.     LoadString(Kermit.hInst, IDS_KRM_SENDPADCHAR, szKeyStr, sizeof(szKeyStr));
  143.     sndparams.padchar = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCHAR);
  144.     if ((sndparams.padchar >= ' ') && (sndparams.padchar < DEL))
  145.         sndparams.padchar = KRM_DEFPADCHAR;
  146.  
  147.     LoadString(Kermit.hInst, IDS_KRM_RCVPADCHAR, szKeyStr, sizeof(szKeyStr));
  148.     rcvparams.padchar = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFPADCHAR);
  149.     if ((rcvparams.padchar >= ' ') && (rcvparams.padchar != DEL))
  150.         rcvparams.padchar = KRM_DEFPADCHAR;
  151.  
  152.     LoadString(Kermit.hInst, IDS_KRM_SENDEOL, szKeyStr, sizeof(szKeyStr));
  153.     sndparams.eol = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFEOL);
  154.     if (sndparams.eol >= ' ')
  155.     sndparams.eol = KRM_DEFEOL;
  156.  
  157.     LoadString(Kermit.hInst, IDS_KRM_RCVEOL, szKeyStr, sizeof(szKeyStr));
  158.     rcvparams.eol = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFEOL);
  159.     if (rcvparams.eol >= ' ')
  160.     rcvparams.eol = KRM_DEFEOL;
  161.     
  162.     LoadString(Kermit.hInst, IDS_KRM_SENDQUOTE, szKeyStr, sizeof(szKeyStr));
  163.     sndparams.quote = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFQUOTE);
  164.     if (((sndparams.quote <= 32) || (sndparams.quote >= 63)) &&
  165.     ((sndparams.quote <= 95) || (sndparams.quote >= 127)))
  166.     sndparams.quote = KRM_DEFQUOTE;
  167.  
  168.     LoadString(Kermit.hInst, IDS_KRM_RCVQUOTE, szKeyStr, sizeof(szKeyStr));
  169.     rcvparams.quote = (BYTE)GetProfileInt(szAppStr,szKeyStr,KRM_DEFQUOTE);
  170.     if (((rcvparams.quote <= 32) || (rcvparams.quote >= 63)) &&
  171.     ((rcvparams.quote <= 95) || (rcvparams.quote >= 127)))
  172.     rcvparams.quote = KRM_DEFQUOTE;
  173.  
  174.     Kermit.fpTimer = MakeProcInstance((FARPROC)krmDoTimeout, Kermit.hInst);
  175.     Kermit.fpXfer = MakeProcInstance((FARPROC)krmXferDlgBox, Kermit.hInst);
  176.     Kermit.fpXferRemote = MakeProcInstance((FARPROC)krmXferRemote,
  177.                        Kermit.hInst);
  178.  
  179.     if  (!(Kermit.fpTimer && Kermit.fpXfer && Kermit.fpXferRemote)) {
  180.     krmShowMessage(IDS_KRM_CANNOTINIT);
  181.     return FALSE;
  182.     }
  183.     return TRUE;
  184. }
  185.  
  186.