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: ",