[Ttssh2-commit] [6072] すでに接続済みの状態から File - New Connection で新規接続しようとした時、

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2015年 11月 5日 (木) 20:08:31 JST


Revision: 6072
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6072
Author:   doda
Date:     2015-11-05 20:08:31 +0900 (Thu, 05 Nov 2015)
Log Message:
-----------
すでに接続済みの状態から File - New Connection で新規接続しようとした時、
ホスト欄での入力にコメントが含まれていると正常に接続出来ない場合がある
問題を修正。

ttxssh.dll では TTXSetCommandLine() でコマンドライン文字列を生成する時、
/ssh-consume=~ "元のコマンドライン文字列" "その他ttsshで付加するオプション"
という形になるので、元のコマンドライン文字列にコメントが含まれていると
"その他ttsshで付加するオプション"の部分がコメントアウトされて利用されない。

対処として、TTXSetCommandLine() で元のコマンドライン文字列を渡す時に
コメント部分を削除する。

Modified Paths:
--------------
    trunk/teraterm/common/ttlib.c
    trunk/teraterm/common/ttlib.h
    trunk/teraterm/teraterm/vtwin.cpp

-------------- next part --------------
Modified: trunk/teraterm/common/ttlib.c
===================================================================
--- trunk/teraterm/common/ttlib.c	2015-11-04 15:36:50 UTC (rev 6071)
+++ trunk/teraterm/common/ttlib.c	2015-11-05 11:08:31 UTC (rev 6072)
@@ -1139,6 +1139,29 @@
 	dest[j] = 0;
 }
 
+void FAR PASCAL DeleteComment(PCHAR dest, int dest_size, PCHAR src)
+{
+	BOOL quoted = FALSE;
+	PCHAR tail = dest + dest_size - 1;
+
+	while (*src != '\0' && dest < tail && (quoted || *src != ';')) {
+		*dest++ = *src;
+
+		if (*src++ == '"') {
+			if (*src == '"' && dest < tail) {
+				*dest++ = *src++;
+			}
+			else {
+				quoted = !quoted;
+			}
+		}
+	}
+
+	*dest = '\0';
+
+	return;
+}
+
 void split_buffer(char *buffer, int delimiter, char **head, char **body)
 {
 	char *p1, *p2;

Modified: trunk/teraterm/common/ttlib.h
===================================================================
--- trunk/teraterm/common/ttlib.h	2015-11-04 15:36:50 UTC (rev 6071)
+++ trunk/teraterm/common/ttlib.h	2015-11-05 11:08:31 UTC (rev 6072)
@@ -56,6 +56,7 @@
 
 PCHAR FAR PASCAL GetParam(PCHAR buff, int size, PCHAR param);
 void FAR PASCAL DequoteParam(PCHAR dest, int dest_len, PCHAR src);
+void FAR PASCAL DeleteComment(PCHAR dest, int dest_size, PCHAR src);
 
 void split_buffer(char *buffer, int delimiter, char **head, char **body);
 

Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp	2015-11-04 15:36:50 UTC (rev 6071)
+++ trunk/teraterm/teraterm/vtwin.cpp	2015-11-05 11:08:31 UTC (rev 6072)
@@ -3638,7 +3638,7 @@
 			}
 			else {
 				char tcpport[6];
-				strncpy_s(Command2, sizeof(Command2), &Command[9], _TRUNCATE);
+				DeleteComment(Command2, sizeof(Command2), &Command[9]);
 				Command[9] = 0;
 				if (GetHNRec.Telnet==0)
 					strncat_s(Command,sizeof(Command)," /T=0",_TRUNCATE);



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