[Ttssh2-commit] [5866] チケット #35143 BOM付きマクロファイルがエラーとなる

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2015年 5月 15日 (金) 00:14:55 JST


Revision: 5866
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5866
Author:   yutakapon
Date:     2015-05-15 00:14:54 +0900 (Fri, 15 May 2015)
Log Message:
-----------
チケット #35143 BOM付きマクロファイルがエラーとなる

マクロファイルが UTF-8 で保存されており、先頭に BOM が付与されていれば、
マクロ実行時に BOM を除去し、Syntax error とならないようにした。

Ticket Links:
------------
    http://sourceforge.jp/projects/ttssh2/tracker/detail/35143

Modified Paths:
--------------
    trunk/teraterm/ttpmacro/ttmbuff.c

-------------- next part --------------
Modified: trunk/teraterm/ttpmacro/ttmbuff.c
===================================================================
--- trunk/teraterm/ttpmacro/ttmbuff.c	2015-05-13 04:12:05 UTC (rev 5865)
+++ trunk/teraterm/ttpmacro/ttmbuff.c	2015-05-14 15:14:54 UTC (rev 5866)
@@ -93,6 +93,22 @@
 }
 
 
+// \x83}\x83N\x83\x8D\x83t\x83@\x83C\x83\x8B\x82̐擪\x82ɂ\xA0\x82\xE9 BOM \x82\xF0\x8F\x9C\x8B\x8E\x82\xB7\x82\xE9\x81B
+static void TrimUnicodeBOM(CHAR *pbuf, BINT *plen)
+{
+	BYTE *buf = pbuf;
+	BINT len = *plen;
+
+	// UTF-8 BOM
+	if (len > 3) {
+		if (buf[0] == 0xEF && buf[1] == 0xBB && buf[2] == 0xBF) {
+			memmove_s(&buf[0], len, &buf[3], len - 3);
+			*plen = len - 3;
+		}
+	}
+}
+
+
 BOOL LoadMacroFile(PCHAR FileName, int IBuff)
 {
 	int F;
@@ -149,6 +165,10 @@
 			}
 			_lclose(F);
 
+			// for UTF-8 BOM
+			// (2015.5.15 yutaka)
+			TrimUnicodeBOM(Buff[IBuff], &BuffLen[IBuff]);
+
 			// \x8Ds\x94ԍ\x86\x94z\x97\xF1\x82\xF0\x8D\xEC\x82\xE9\x81B\x82\xB1\x82\xEA\x82ɂ\xE6\x82\xE8\x81A\x83o\x83b\x83t\x83@\x82̃C\x83\x93\x83f\x83b\x83N\x83X\x82\xA9\x82\xE7\x8Ds\x94ԍ\x86\x82ւ̕ϊ\xB7\x82\xAA
 			// O(N)->O(logN)\x82Ō\x9F\x8D\xF5\x82ł\xAB\x82\xE9\x82悤\x82ɂȂ\xE9\x81B
 			// (2014.1.18 yutaka)



Ttssh2-commit メーリングリストの案内
アーカイブの一覧に戻る