[Ttssh2-commit] [8975] kermit.c のみで使用する構造体を移動

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2020年 11月 2日 (月) 00:29:37 JST


Revision: 8975
          https://osdn.net/projects/ttssh2/scm/svn/commits/8975
Author:   zmatsuo
Date:     2020-11-02 00:29:37 +0900 (Mon, 02 Nov 2020)
Log Message:
-----------
kermit.c のみで使用する構造体を移動

- ttftypes.h から kermit.c へ移動

Modified Paths:
--------------
    branches/proto_unicode/teraterm/common/ttftypes.h
    branches/proto_unicode/teraterm/teraterm/filesys_proto.cpp
    branches/proto_unicode/teraterm/ttpfile/kermit.c
    branches/proto_unicode/teraterm/ttpfile/kermit.h
    branches/proto_unicode/teraterm/ttpfile/ttfile_proto.cpp

-------------- next part --------------
Modified: branches/proto_unicode/teraterm/common/ttftypes.h
===================================================================
--- branches/proto_unicode/teraterm/common/ttftypes.h	2020-11-01 15:29:23 UTC (rev 8974)
+++ branches/proto_unicode/teraterm/common/ttftypes.h	2020-11-01 15:29:37 UTC (rev 8975)
@@ -89,6 +89,7 @@
 #define TitQVRcv    "Quick-VAN Receive"
 #define TitQVSend   "Quick-VAN Send"
 
+#if 0
 typedef struct {
 	int MAXL;
 	BYTE TIME,NPAD,PADC,EOL,QCTL,QBIN,CHKT,REPT,CAPAS,WINDO,MAXLX1,MAXLX2;
@@ -141,6 +142,7 @@
 #define ServerInit 9
 #define GetInit 10
 #define Finish 11
+#endif
 
 #if 0
 /* XMODEM */

Modified: branches/proto_unicode/teraterm/teraterm/filesys_proto.cpp
===================================================================
--- branches/proto_unicode/teraterm/teraterm/filesys_proto.cpp	2020-11-01 15:29:23 UTC (rev 8974)
+++ branches/proto_unicode/teraterm/teraterm/filesys_proto.cpp	2020-11-01 15:29:37 UTC (rev 8975)
@@ -64,6 +64,7 @@
 #endif
 #include "tt_res.h"
 #include "xmodem.h"
+#include "kermit.h"
 
 #if 0
 #define FS_BRACKET_NONE  0
@@ -745,7 +746,9 @@
 
 	switch (ProtoId) {
 		case PROTO_KMT:
-			vsize = sizeof(TKmtVar);
+//			vsize = sizeof(TKmtVar);
+			KmtCreate(fv);
+			vsize = 0;
 			break;
 		case PROTO_XM:
 //			vsize = sizeof(TXVar);
@@ -780,7 +783,10 @@
 
 	switch (ProtoId) {
 		case PROTO_KMT:
+#if 0
 			((PKmtVar)ProtoVar)->KmtMode = Mode;
+#endif
+			_ProtoSetOpt(fv, KMT_MODE, Mode);
 			break;
 		case PROTO_XM:
 #if 0

Modified: branches/proto_unicode/teraterm/ttpfile/kermit.c
===================================================================
--- branches/proto_unicode/teraterm/ttpfile/kermit.c	2020-11-01 15:29:23 UTC (rev 8974)
+++ branches/proto_unicode/teraterm/ttpfile/kermit.c	2020-11-01 15:29:37 UTC (rev 8975)
@@ -44,8 +44,63 @@
 #include "ftlib.h"
 #include "win16api.h"
 
+#include "kermit.h"
+
 #define KERMIT_CAPAS
 
+typedef struct {
+	int MAXL;
+	BYTE TIME,NPAD,PADC,EOL,QCTL,QBIN,CHKT,REPT,CAPAS,WINDO,MAXLX1,MAXLX2;
+} KermitParam;
+
+#define	KMT_DATAMAX		4000
+#define	KMT_PKTMAX		(KMT_DATAMAX + 32)
+#define	KMT_PKTQUE		4
+
+typedef struct {
+  BYTE PktIn[KMT_PKTMAX], PktOut[KMT_PKTMAX];
+  int PktInPtr;
+  int PktInLen, PktInCount;
+  int PktNum, PktNumOffset;
+  int PktReadMode;
+  int KmtMode, KmtState;
+  BOOL Quote8, RepeatFlag;
+  char ByteStr[6];
+  BOOL NextByteFlag;
+  int RepeatCount;
+  BYTE NextSeq;
+  BYTE NextByte;
+  KermitParam KmtMy, KmtYour;
+  int PktOutCount, PktInLongPacketLen;
+  int FileAttrFlag;
+  BOOL FileType;
+  time_t FileTime;
+  int FileMode;
+  LONGLONG FileSize;
+} TKmtVar;
+typedef TKmtVar far *PKmtVar;
+
+  /* Kermit states */
+#define WaitMark  0
+#define WaitLen   1
+#define WaitCheck 2
+
+#define Unknown 0
+#define SendInit 1
+#define SendFile 2
+#define SendData 3
+#define SendEOF 4
+#define SendEOT 5
+#define SendFileAttr 6
+
+#define ReceiveInit 6
+#define ReceiveFile 7
+#define ReceiveData 8
+
+#define ServerInit 9
+#define GetInit 10
+#define Finish 11
+
 /* kermit parameters */
 #define MaxNum 94
 
@@ -1114,10 +1169,10 @@
 	kv->KmtState = Finish;
 }
 
-void KmtInit
-(PFileVarProto fv, PKmtVar kv, PComVar cv, PTTSet ts)
+void KmtInit(PFileVarProto fv, PComVar cv, PTTSet ts)
 {
 	char uimsg[MAX_UIMSG];
+	PKmtVar kv = fv->data;
 	UILanguageFile = ts->UILanguageFile;
 
 	strncpy_s(fv->DlgCaption,sizeof(fv->DlgCaption),"Tera Term: Kermit ",_TRUNCATE);
@@ -1228,8 +1283,9 @@
 	}
 }
 
-void KmtTimeOutProc(PFileVarProto fv, PKmtVar kv, PComVar cv)
+void KmtTimeOutProc(PFileVarProto fv, PComVar cv)
 {
+	PKmtVar kv = fv->data;
 	switch (kv->KmtState) {
 	case SendInit:
 		KmtSendPacket(fv,kv,cv);
@@ -1267,7 +1323,7 @@
 	}
 }
 
-BOOL KmtReadPacket(PFileVarProto fv,  PKmtVar kv, PComVar cv)
+BOOL KmtReadPacket(PFileVarProto fv,  PComVar cv)
 {
 	BYTE b;
 	int c, PktNumNew;
@@ -1274,6 +1330,7 @@
 	BOOL GetPkt;
 	char FNBuff[50];
 	int i, j, Len;
+	PKmtVar kv = fv->data;
 
 	c = CommRead1Byte(cv,&b);
 
@@ -1563,8 +1620,9 @@
 	return TRUE;
 }
 
-void KmtCancel(PFileVarProto fv, PKmtVar kv, PComVar cv)
+void KmtCancel(PFileVarProto fv, PComVar cv)
 {
+	PKmtVar kv = fv->data;
 	KmtIncPacketNum(kv);
 	strncpy_s(&(kv->PktOut[4]),sizeof(kv->PktOut)-4,"Cancel",_TRUNCATE);
 	KmtMakePacket(fv,kv,(BYTE)(kv->PktNum-kv->PktNumOffset),(BYTE)'E',
@@ -1571,3 +1629,35 @@
 		strlen(&(kv->PktOut[4])));
 	KmtSendPacket(fv,kv,cv);
 }
+
+static int SetOptV(PFileVarProto fv, int request, va_list ap)
+{
+	PKmtVar kv = fv->data;
+	switch(request) {
+	case KMT_MODE: {
+		int Mode = va_arg(ap, int);
+		kv->KmtMode = Mode;
+		return 0;
+	}
+	}
+	return -1;
+}
+
+BOOL KmtCreate(PFileVarProto fv)
+{
+	PKmtVar kv;
+	kv = malloc(sizeof(TKmtVar));
+	if (kv == NULL) {
+		return FALSE;
+	}
+	memset(kv, 0, sizeof(*kv));
+	fv->data = kv;
+
+	fv->Init = KmtInit;
+	fv->Parse = KmtReadPacket;
+	fv->TimeOutProc = KmtTimeOutProc;
+	fv->Cancel = KmtCancel;
+	fv->SetOptV = SetOptV;
+
+	return TRUE;
+}

Modified: branches/proto_unicode/teraterm/ttpfile/kermit.h
===================================================================
--- branches/proto_unicode/teraterm/ttpfile/kermit.h	2020-11-01 15:29:23 UTC (rev 8974)
+++ branches/proto_unicode/teraterm/ttpfile/kermit.h	2020-11-01 15:29:37 UTC (rev 8975)
@@ -35,13 +35,18 @@
 extern "C" {
 #endif
 
+enum {
+	KMT_MODE
+};
+
 /* prototypes */
-void KmtInit(PFileVarProto fv, PKmtVar kv, PComVar cv, PTTSet ts);
-void KmtTimeOutProc(PFileVarProto fv, PKmtVar kv, PComVar cv);
-BOOL KmtReadPacket
-  (PFileVarProto fv,  PKmtVar kv, PComVar cv);
-void KmtCancel
-  (PFileVarProto fv, PKmtVar kv, PComVar cv);
+BOOL KmtCreate(PFileVarProto fv);
+#if 0
+void KmtInit(PFileVarProto fv, PComVar cv, PTTSet ts);
+void KmtTimeOutProc(PFileVarProto fv, PComVar cv);
+BOOL KmtReadPacket(PFileVarProto fv, PComVar cv);
+void KmtCancel(PFileVarProto fv, PComVar cv);
+#endif
 
 #ifdef __cplusplus
 }

Modified: branches/proto_unicode/teraterm/ttpfile/ttfile_proto.cpp
===================================================================
--- branches/proto_unicode/teraterm/ttpfile/ttfile_proto.cpp	2020-11-01 15:29:23 UTC (rev 8974)
+++ branches/proto_unicode/teraterm/ttpfile/ttfile_proto.cpp	2020-11-01 15:29:37 UTC (rev 8975)
@@ -57,7 +57,7 @@
 {
 	switch (Proto) {
 	case PROTO_KMT:
-		KmtInit(fv,(PKmtVar)pv,cv,ts);
+		fv->Init(fv,cv,ts);
 		break;
 	case PROTO_XM:
 		fv->Init(fv,cv,ts);
@@ -84,7 +84,7 @@
 	Ok = FALSE;
 	switch (Proto) {
 	case PROTO_KMT:
-		Ok = KmtReadPacket(fv,(PKmtVar)pv,cv);
+		Ok = fv->Parse(fv,cv);
 		break;
 	case PROTO_XM:
 		Ok = fv->Parse(fv, cv);
@@ -123,7 +123,7 @@
 {
 	switch (Proto) {
 	case PROTO_KMT:
-		KmtTimeOutProc(fv,(PKmtVar)pv,cv);
+		fv->TimeOutProc(fv,cv);
 		break;
 	case PROTO_XM:
 		fv->TimeOutProc(fv,cv);
@@ -147,7 +147,7 @@
 {
 	switch (Proto) {
 	case PROTO_KMT:
-		KmtCancel(fv,(PKmtVar)pv,cv);
+		fv->Cancel(fv,cv);
 		break;
 	case PROTO_XM:
 		fv->Cancel(fv,cv);


Ttssh2-commit メーリングリストの案内
Back to archive index