[Ttssh2-commit] [5109] continueをサポート。

Back to archive index

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



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