[Ttssh2-commit] [6361] ZmodemAuto 時、ZRINIT を受けたら ZMODEM 送信ダイアログを開くようにした。

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2016年 4月 5日 (火) 22:02:51 JST


Revision: 6361
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6361
Author:   doda
Date:     2016-04-05 22:02:51 +0900 (Tue, 05 Apr 2016)
Log Message:
-----------
ZmodemAuto 時、ZRINIT を受けたら ZMODEM 送信ダイアログを開くようにした。

Modified Paths:
--------------
    trunk/teraterm/common/tttypes.h
    trunk/teraterm/teraterm/filesys.cpp
    trunk/teraterm/teraterm/vtterm.c
    trunk/teraterm/ttpfile/zmodem.c

-------------- next part --------------
Modified: trunk/teraterm/common/tttypes.h
===================================================================
--- trunk/teraterm/common/tttypes.h	2016-04-04 11:13:38 UTC (rev 6360)
+++ trunk/teraterm/common/tttypes.h	2016-04-05 13:02:51 UTC (rev 6361)
@@ -117,7 +117,8 @@
   /* ZMODEM function id */
 #define IdZReceive 1
 #define IdZSend    2
-#define IdZAuto    3
+#define IdZAutoR   3
+#define IdZAutoS   4
 
   /* B-Plus function id */
 #define IdBPReceive 1

Modified: trunk/teraterm/teraterm/filesys.cpp
===================================================================
--- trunk/teraterm/teraterm/filesys.cpp	2016-04-04 11:13:38 UTC (rev 6360)
+++ trunk/teraterm/teraterm/filesys.cpp	2016-04-05 13:02:51 UTC (rev 6361)
@@ -1802,7 +1802,7 @@
 	if (! ProtoStart())
 		return;
 
-	if (mode==IdZSend)
+	if (mode == IdZSend || mode == IdZAutoS)
 	{
 		Opt = ts.XmodemBin;
 		FileVar->OpId = OpZSend;
@@ -1819,7 +1819,7 @@
 		else
 		(*SetFileVar)(FileVar);
 	}
-	else /* IdZReceive or IdZAuto */
+	else /* IdZReceive or IdZAutoR */
 		FileVar->OpId = OpZRcv;
 
 	TalkStatus = IdTalkQuiet;

Modified: trunk/teraterm/teraterm/vtterm.c
===================================================================
--- trunk/teraterm/teraterm/vtterm.c	2016-04-04 11:13:38 UTC (rev 6360)
+++ trunk/teraterm/teraterm/vtterm.c	2016-04-05 13:02:51 UTC (rev 6361)
@@ -4880,10 +4880,35 @@
 
 void CANSeen(BYTE b)
 {
-  ParseMode = ModeFirst;
-  if (((ts.FTFlag & FT_ZAUTO)!=0) && (b=='B'))
-    ZMODEMStart(IdZAuto); /* Auto ZMODEM activation */
-  ChangeEmu = -1;
+	static int state = 0;
+
+	if (ts.FTFlag & FT_ZAUTO) {
+		if (state == 0 && b == 'B') {
+			state = 1;
+		}
+		else if (state == 1 && b == '0') {
+			state = 2;
+		}
+		else {
+			if (state == 2) {
+				if (b =='0') { // ZRQINIT
+					/* Auto ZMODEM activation (Receive) */
+					ZMODEMStart(IdZAutoR);
+				}
+				else if (b == '1') { // ZRINIT
+					/* Auto ZMODEM activation (Send) */
+					ZMODEMStart(IdZAutoS);
+				}
+			}
+			ParseMode = ModeFirst;
+			ChangeEmu = -1;
+			state = 0;
+		}
+	}
+	else {
+		ParseMode = ModeFirst;
+		ChangeEmu = -1;
+	}
 }
 
 BOOL CheckKanji(BYTE b)

Modified: trunk/teraterm/ttpfile/zmodem.c
===================================================================
--- trunk/teraterm/ttpfile/zmodem.c	2016-04-04 11:13:38 UTC (rev 6360)
+++ trunk/teraterm/ttpfile/zmodem.c	2016-04-05 13:02:51 UTC (rev 6361)
@@ -612,11 +612,19 @@
 	zv->WinSize = ts->ZmodemWinSize;
 	fv->LogFlag = ((ts->LogFlag & LOG_Z) != 0);
 
-	if (zv->ZMode == IdZAuto) {
+	if (zv->ZMode == IdZAutoR || zv->ZMode == IdZAutoS) {
+		if (zv->ZMode == IdZAutoR) {
+			zv->ZMode = IdZReceive;
+			CommInsert1Byte(cv, '0');
+		}
+		else {
+			zv->ZMode = IdZSend;
+			CommInsert1Byte(cv, '1');
+		}
+		CommInsert1Byte(cv, '0');
 		CommInsert1Byte(cv, 'B');
 		CommInsert1Byte(cv, ZDLE);
 		CommInsert1Byte(cv, ZPAD);
-		zv->ZMode = IdZReceive;
 	}
 
 	strncpy_s(fv->DlgCaption, sizeof(fv->DlgCaption), "Tera Term: ",



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