svnno****@sourc*****
svnno****@sourc*****
2013年 1月 7日 (月) 18:30:14 JST
Revision: 5109 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5109 Author: doda Date: 2013-01-07 18:30:14 +0900 (Mon, 07 Jan 2013) Log Message: ----------- continueをサポート。 http://sourceforge.jp/ticket/browse.php?group_id=1412&tid=30446 Modified Paths: -------------- trunk/teraterm/common/helpid.h trunk/teraterm/ttpmacro/ttl.c trunk/teraterm/ttpmacro/ttmbuff.c trunk/teraterm/ttpmacro/ttmbuff.h trunk/teraterm/ttpmacro/ttmparse.c trunk/teraterm/ttpmacro/ttmparse.h -------------- next part -------------- Modified: trunk/teraterm/common/helpid.h =================================================================== --- trunk/teraterm/common/helpid.h 2013-01-06 09:08:41 UTC (rev 5108) +++ trunk/teraterm/common/helpid.h 2013-01-07 09:30:14 UTC (rev 5109) @@ -174,6 +174,7 @@ #define HlpMacroCommandClosett 92008 #define HlpMacroCommandCode2str 92009 #define HlpMacroCommandConnect 92010 +#define HlpMacroCommandContinue 92155 #define HlpMacroCommandCrc32 92138 #define HlpMacroCommandCrc32File 92139 #define HlpMacroCommandCygConnect 92130 Modified: trunk/teraterm/ttpmacro/ttl.c =================================================================== --- trunk/teraterm/ttpmacro/ttl.c 2013-01-06 09:08:41 UTC (rev 5108) +++ trunk/teraterm/ttpmacro/ttl.c 2013-01-07 09:30:14 UTC (rev 5109) @@ -311,11 +311,11 @@ return 0; } -WORD TTLBreak() { +WORD TTLBreak(WORD WId) { if (GetFirstChar()!=0) return ErrSyntax; - return BreakLoop(); + return BreakLoop(WId); } WORD TTLCall() @@ -4918,7 +4918,7 @@ int ExecCmnd() { WORD WId, Err; - BOOL StrConst, E, WithIndex; + BOOL StrConst, E, WithIndex, Result; TStrVal Str; TName Cmnd; WORD ValType, VarType; @@ -4927,8 +4927,10 @@ Err = 0; + Result = GetReservedWord(&WId); + if (EndWhileFlag>0) { - if (GetReservedWord(&WId)) { + if (Result) { switch (WId) { case RsvWhile: case RsvUntil: @@ -4945,7 +4947,7 @@ } if (BreakFlag>0) { - if (GetReservedWord(&WId)) { + if (Result) { switch (WId) { case RsvIf: if (CheckThen(&Err)) @@ -4972,11 +4974,12 @@ BreakFlag--; break; } } - return Err; + if (BreakFlag>0 || !ContinueFlag) + return Err; } if (EndIfFlag>0) { - if (! GetReservedWord(&WId)) + if (! Result) ; else if ((WId==RsvIf) && CheckThen(&Err)) EndIfFlag++; @@ -4986,7 +4989,7 @@ } if (ElseFlag>0) { - if (! GetReservedWord(&WId)) + if (! Result) ; else if ((WId==RsvIf) && CheckThen(&Err)) EndIfFlag++; @@ -5006,7 +5009,7 @@ return Err; } - if (GetReservedWord(&WId)) + if (Result) switch (WId) { case RsvBasename: Err = TTLBasename(); break; @@ -5017,7 +5020,8 @@ case RsvBPlusSend: Err = TTLCommCmdFile(CmdBPlusSend,IdTTLWaitCmndResult); break; case RsvBreak: - Err = TTLBreak(); break; + case RsvContinue: + Err = TTLBreak(WId); break; case RsvCall: Err = TTLCall(); break; case RsvCallMenu: Modified: trunk/teraterm/ttpmacro/ttmbuff.c =================================================================== --- trunk/teraterm/ttpmacro/ttmbuff.c 2013-01-06 09:08:41 UTC (rev 5108) +++ trunk/teraterm/ttpmacro/ttmbuff.c 2013-01-07 09:30:14 UTC (rev 5109) @@ -13,6 +13,7 @@ int EndWhileFlag; int BreakFlag; +BOOL ContinueFlag; #define MAXBUFFLEN 2147483647 @@ -492,7 +493,7 @@ return 0; } -WORD BreakLoop() +WORD BreakLoop(WORD WId) { if (SP<1) { return ErrInvalidCtl; @@ -501,11 +502,16 @@ switch (TypeStack[SP-1]) { case CtlFor: case CtlWhile: - SP--; - if (LevelStack[SP] < INest) { - INest = LevelStack[SP]; - CloseBuff(INest+1); + if (WId == RsvContinue) { + ContinueFlag = TRUE; } + else { + SP--; + if (LevelStack[SP] < INest) { + INest = LevelStack[SP]; + CloseBuff(INest+1); + } + } BreakFlag = 1; break; default: Modified: trunk/teraterm/ttpmacro/ttmbuff.h =================================================================== --- trunk/teraterm/ttpmacro/ttmbuff.h 2013-01-06 09:08:41 UTC (rev 5108) +++ trunk/teraterm/ttpmacro/ttmbuff.h 2013-01-07 09:30:14 UTC (rev 5109) @@ -32,10 +32,11 @@ int GetLineNo(void); char *GetLineBuffer(void); int IsUpdateMacroCommand(void); -WORD BreakLoop(); +WORD BreakLoop(WORD WId); extern int EndWhileFlag; extern int BreakFlag; +extern BOOL ContinueFlag; #ifdef __cplusplus } Modified: trunk/teraterm/ttpmacro/ttmparse.c =================================================================== --- trunk/teraterm/ttpmacro/ttmparse.c 2013-01-06 09:08:41 UTC (rev 5108) +++ trunk/teraterm/ttpmacro/ttmparse.c 2013-01-07 09:30:14 UTC (rev 5109) @@ -162,6 +162,7 @@ else if (_stricmp(Str,"closett")==0) *WordId = RsvCloseTT; else if (_stricmp(Str,"code2str")==0) *WordId = RsvCode2Str; else if (_stricmp(Str,"connect")==0) *WordId = RsvConnect; + else if (_stricmp(Str,"continue")==0) *WordId = RsvContinue; else if (_stricmp(Str,"crc32")==0) *WordId = RsvCrc32; else if (_stricmp(Str,"crc32file")==0) *WordId = RsvCrc32File; else if (_stricmp(Str,"cygconnect")==0) *WordId = RsvCygConnect; Modified: trunk/teraterm/ttpmacro/ttmparse.h =================================================================== --- trunk/teraterm/ttpmacro/ttmparse.h 2013-01-06 09:08:41 UTC (rev 5108) +++ trunk/teraterm/ttpmacro/ttmparse.h 2013-01-07 09:30:14 UTC (rev 5109) @@ -200,6 +200,7 @@ #define RsvLogInfo 152 #define RsvFileLock 153 #define RsvFileUnLock 154 +#define RsvContinue 155 #define RsvSetDebug 175 #define RsvYmodemRecv 176 #define RsvYmodemSend 177