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)