[Ttssh2-commit] [7296] Merge branch 'win16' into node

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2018年 12月 1日 (土) 01:50:02 JST


Revision: 7296
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7296
Author:   zmatsuo
Date:     2018-12-01 01:50:02 +0900 (Sat, 01 Dec 2018)
Log Message:
-----------
Merge branch 'win16' into node

Modified Paths:
--------------
    branches/cmake/teraterm/common/ttftypes.h
    branches/cmake/teraterm/teraterm/filesys.cpp
    branches/cmake/teraterm/teraterm/teraprn.cpp
    branches/cmake/teraterm/teraterm/ttermpro.v10.vcxproj
    branches/cmake/teraterm/teraterm/ttermpro.v11.vcxproj
    branches/cmake/teraterm/teraterm/ttermpro.v12.vcxproj
    branches/cmake/teraterm/teraterm/ttermpro.v14.vcxproj
    branches/cmake/teraterm/teraterm/ttermpro.v15.vcxproj
    branches/cmake/teraterm/teraterm/ttermpro.v15.vcxproj.filters
    branches/cmake/teraterm/teraterm/ttermpro.v9.vcproj
    branches/cmake/teraterm/teraterm/ttermpro.vcproj
    branches/cmake/teraterm/teraterm/vtwin.cpp
    branches/cmake/teraterm/ttpfile/bplus.c
    branches/cmake/teraterm/ttpfile/ftlib.c
    branches/cmake/teraterm/ttpfile/kermit.c
    branches/cmake/teraterm/ttpfile/quickvan.c
    branches/cmake/teraterm/ttpfile/ttpfile.v10.vcxproj
    branches/cmake/teraterm/ttpfile/ttpfile.v11.vcxproj
    branches/cmake/teraterm/ttpfile/ttpfile.v12.vcxproj
    branches/cmake/teraterm/ttpfile/ttpfile.v14.vcxproj
    branches/cmake/teraterm/ttpfile/ttpfile.v15.vcxproj
    branches/cmake/teraterm/ttpfile/ttpfile.v15.vcxproj.filters
    branches/cmake/teraterm/ttpfile/ttpfile.v9.vcproj
    branches/cmake/teraterm/ttpfile/ttpfile.vcproj
    branches/cmake/teraterm/ttpfile/xmodem.c
    branches/cmake/teraterm/ttpfile/ymodem.c
    branches/cmake/teraterm/ttpfile/zmodem.c
    branches/cmake/teraterm/ttpmacro/ttl.c
    branches/cmake/teraterm/ttpmacro/ttmbuff.c
    branches/cmake/teraterm/ttpmacro/ttpmacro.v10.vcxproj
    branches/cmake/teraterm/ttpmacro/ttpmacro.v11.vcxproj
    branches/cmake/teraterm/ttpmacro/ttpmacro.v12.vcxproj
    branches/cmake/teraterm/ttpmacro/ttpmacro.v14.vcxproj
    branches/cmake/teraterm/ttpmacro/ttpmacro.v15.vcxproj
    branches/cmake/teraterm/ttpmacro/ttpmacro.v15.vcxproj.filters
    branches/cmake/teraterm/ttpmacro/ttpmacro.v9.vcproj
    branches/cmake/teraterm/ttpmacro/ttpmacro.vcproj

Added Paths:
-----------
    branches/cmake/teraterm/common/win16api.c
    branches/cmake/teraterm/common/win16api.h

-------------- next part --------------
Modified: branches/cmake/teraterm/common/ttftypes.h
===================================================================
--- branches/cmake/teraterm/common/ttftypes.h	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/common/ttftypes.h	2018-11-30 16:50:02 UTC (rev 7296)
@@ -1,4 +1,4 @@
-/*
+/*
  * Copyright (C) 1994-1998 T. Teranishi
  * (C) 2007-2017 TeraTerm Project
  * All rights reserved.
@@ -110,12 +110,12 @@
   int FnPtr;
 
   BOOL FileOpen;
-  int FileHandle;
+  HANDLE FileHandle;
   LONG FileSize, ByteCount;
   BOOL OverWrite;
 
   BOOL LogFlag;
-  int LogFile;
+  HANDLE LogFile;
   WORD LogState;
   WORD LogCount;
 

Added: branches/cmake/teraterm/common/win16api.c
===================================================================
--- branches/cmake/teraterm/common/win16api.c	                        (rev 0)
+++ branches/cmake/teraterm/common/win16api.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -0,0 +1,107 @@
+
+#include <windows.h>
+#include <assert.h>
+
+/**
+ *	@param[in]	iAttribute	teratermでは0しか使用しない
+ *	@retval 	handle
+ *	@retval 	INVALID_HANDLE_VALUE((HANDLE)(LONG_PTR)-1) オープンできなかった
+ *				(実際のAPIはHFILE_ERROR((HFILE)-1)を返す)
+ */
+HANDLE win16_lcreat(const char *FileName, int iAttribute)
+{
+	HANDLE handle;
+	assert(iAttribute == 0);
+	handle = CreateFileA(FileName,
+						 GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
+						 CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+	return handle;
+}
+
+/**
+ *	@retval 	handle
+ *	@retval 	INVALID_HANDLE_VALUE((HANDLE)(LONG_PTR)-1) オープンできなかった
+ *				(実際のAPIはHFILE_ERROR((HFILE)-1)を返す)
+ */
+HANDLE win16_lopen(const char *FileName, int iReadWrite)
+{
+	HANDLE handle;
+	switch(iReadWrite) {
+	case OF_READ:
+		// read only
+		handle = CreateFileA(FileName,
+							 GENERIC_READ, FILE_SHARE_READ, NULL,
+							 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+		break;
+	case OF_WRITE:
+		// write
+		handle = CreateFileA(FileName,
+							 GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
+							 CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+		break;
+	case OF_READWRITE:
+		// read/write (teratermではttpmacro/ttl.c内の1箇所のみで使用されている
+		handle = CreateFileA(FileName,
+							 GENERIC_WRITE|GENERIC_READ, FILE_SHARE_WRITE, NULL,
+							 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+		break;
+	default:
+		assert(FALSE);
+		handle = INVALID_HANDLE_VALUE;
+		break;
+	}
+	return handle;
+}
+
+/**
+ *	@retval なし
+ *			(実際のAPIはオープンしていたHFILEを返す)
+ */
+void win16_lclose(HANDLE hFile)
+{
+	CloseHandle(hFile);
+}
+
+/**
+ *	@retval 読み込みバイト数
+ */
+UINT win16_lread(HANDLE hFile, LPVOID lpBuffer, UINT uBytes)
+{
+	DWORD NumberOfBytesRead;
+	BOOL Result = ReadFile(hFile, lpBuffer, uBytes, &NumberOfBytesRead, NULL);
+	if (Result == FALSE) {
+		return 0;
+	}
+	return NumberOfBytesRead;
+}
+
+/**
+ *	@retval 書き込みバイト数
+ */
+UINT win16_lwrite(HANDLE hFile, const char*buf, UINT length)
+{
+	DWORD NumberOfBytesWritten;
+	BOOL result = WriteFile(hFile, buf, length, &NumberOfBytesWritten, NULL);
+	if (result == FALSE) {
+		return 0;
+	}
+	return NumberOfBytesWritten;
+}
+
+/*
+ *	@param[in]	iOrigin
+ *				@arg 0(FILE_BEGIN)
+ *				@arg 1(FILE_CURRENT)
+ *				@arg 2(FILE_END)
+ *	@retval ファイル位置
+ *	@retval HFILE_ERROR((HFILE)-1)	エラー
+ *	@retval INVALID_SET_FILE_POINTER((DWORD)-1) エラー
+ */
+LONG win16_llseek(HANDLE hFile, LONG lOffset, int iOrigin)
+{
+	DWORD pos = SetFilePointer(hFile, lOffset, NULL, iOrigin);
+	if (pos == INVALID_SET_FILE_POINTER) {
+		return HFILE_ERROR;
+	}
+	return pos;
+}

Added: branches/cmake/teraterm/common/win16api.h
===================================================================
--- branches/cmake/teraterm/common/win16api.h	                        (rev 0)
+++ branches/cmake/teraterm/common/win16api.h	2018-11-30 16:50:02 UTC (rev 7296)
@@ -0,0 +1,23 @@
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HANDLE win16_lcreat(const char *FileName, int iAttribute);
+HANDLE win16_lopen(const char *FileName, int iReadWrite);
+void win16_lclose(HANDLE hFile);
+UINT win16_lread(HANDLE hFile, void *buf, UINT uBytes);
+UINT win16_lwrite(HANDLE hFile, const void *buf, UINT length);
+LONG win16_llseek(HANDLE hFile, LONG lOffset, int iOrigin);
+
+#ifdef __cplusplus
+}
+#endif
+
+#define _lcreat(p1,p2)		win16_lcreat(p1,p2)
+#define	_lopen(p1,p2)		win16_lopen(p1,p2)
+#define _lclose(p1)			win16_lclose(p1)
+#define _lread(p1,p2,p3)	win16_lread(p1,p2,p3)
+#define _lwrite(p1,p2,p3)	win16_lwrite(p1,p2,p3)
+#define	_llseek(p1,p2,p3)	win16_llseek(p1,p2,p3)

Modified: branches/cmake/teraterm/teraterm/filesys.cpp
===================================================================
--- branches/cmake/teraterm/teraterm/filesys.cpp	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/filesys.cpp	2018-11-30 16:50:02 UTC (rev 7296)
@@ -49,6 +49,7 @@
 #include "dlglib.h"
 #include "vtterm.h"
 #include "ttutil.h"
+#include "win16api.h"
 
 #include "filesys.h"
 #include "ftlib.h"
@@ -584,10 +585,10 @@
 		if (!ts.LogLockExclusive) {
 			dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
 		}
-		LogVar->FileHandle = (int)CreateFile(LogVar->FullName, GENERIC_WRITE, dwShareMode, NULL,
-		                                     OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
-		if (LogVar->FileHandle>0){
-			SetFilePointer((HANDLE)LogVar->FileHandle, 0, NULL, FILE_END);
+		LogVar->FileHandle = CreateFile(LogVar->FullName, GENERIC_WRITE, dwShareMode, NULL,
+		                                OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+		if (LogVar->FileHandle != INVALID_HANDLE_VALUE){
+			SetFilePointer(LogVar->FileHandle, 0, NULL, FILE_END);
 			/* 2007.05.24 Gentaro
 				If log file already exists,
 				a newline is inserted before the first timestamp.
@@ -600,10 +601,10 @@
 		if (!ts.LogLockExclusive) {
 			dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
 		}
-		LogVar->FileHandle = (int)CreateFile(LogVar->FullName, GENERIC_WRITE, dwShareMode, NULL,
-		                                     CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+		LogVar->FileHandle = CreateFile(LogVar->FullName, GENERIC_WRITE, dwShareMode, NULL,
+		                                CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 	}
-	LogVar->FileOpen = (LogVar->FileHandle>0);
+	LogVar->FileOpen = (LogVar->FileHandle != INVALID_HANDLE_VALUE);
 	if (! LogVar->FileOpen)
 	{
 		char msg[128];
@@ -857,8 +858,8 @@
 	if (!ts.LogLockExclusive) {
 		dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
 	}
-	LogVar->FileHandle = (int)CreateFile(LogVar->FullName, GENERIC_WRITE, dwShareMode, NULL,
-	                                     CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+	LogVar->FileHandle = CreateFile(LogVar->FullName, GENERIC_WRITE, dwShareMode, NULL,
+	                                CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
 	// \x92x\x89\x84\x8F\x91\x82\xAB\x8D\x9E\x82ݗp\x83X\x83\x8C\x83b\x83h\x82\xF0\x8BN\x82\xB1\x82\xB7\x81B
 	// (2013.4.19 yutaka)
@@ -1126,9 +1127,9 @@
 	else
 		(*SetFileVar)(SendVar);
 
-	SendVar->FileHandle = (int)CreateFile(SendVar->FullName, GENERIC_READ, FILE_SHARE_READ, NULL,
-	                                      OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
-	SendVar->FileOpen = (SendVar->FileHandle>0);
+	SendVar->FileHandle = CreateFile(SendVar->FullName, GENERIC_READ, FILE_SHARE_READ, NULL,
+	                                 OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
+	SendVar->FileOpen = (SendVar->FileHandle != INVALID_HANDLE_VALUE);
 	if (! SendVar->FileOpen)
 	{
 		FileTransEnd(OpSendFile);
@@ -1475,7 +1476,7 @@
 		    (((PQVVar)ProtoVar)->QVMode==IdQVSend))
 			CommTextOut(&cv,"\015",1);
 		if (FileVar->LogFlag)
-			_lclose(FileVar->LogFile);
+			CloseHandle(FileVar->LogFile);
 		FileVar->LogFile = 0;
 		if (ProtoVar!=NULL)
 		{
@@ -1683,7 +1684,7 @@
 	else
 		FileVar->FileHandle = _lopen(FileVar->FullName,OF_READ);
 
-	FileVar->FileOpen = FileVar->FileHandle>0;
+	FileVar->FileOpen = FileVar->FileHandle != INVALID_HANDLE_VALUE;
 	if (! FileVar->FileOpen)
 	{
 		ProtoEnd();

Modified: branches/cmake/teraterm/teraterm/teraprn.cpp
===================================================================
--- branches/cmake/teraterm/teraterm/teraprn.cpp	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/teraprn.cpp	2018-11-30 16:50:02 UTC (rev 7296)
@@ -38,6 +38,7 @@
 #include "commlib.h"
 #include "ttcommon.h"
 #include "ttlib.h"
+#include "win16api.h"
 
 #include "tt_res.h"
 #include "prnabort.h"
@@ -69,7 +70,7 @@
 
 /* pass-thru printing */
 static char PrnFName[MAX_PATH];
-static int HPrnFile = 0;
+static HANDLE HPrnFile = INVALID_HANDLE_VALUE;
 static char PrnBuff[TermWidthMax];
 static int PrnBuffCount = 0;
 
@@ -180,7 +181,6 @@
 	}
 }
 
-extern "C" {
 int VTPrintInit(int PrnFlag)
 // Initialize printing of VT window
 //   PrnFlag: specifies object to be printed
@@ -345,8 +345,7 @@
 		return (IdPrnScreen);
 	}
 }
-}
-extern "C" {
+
 void PrnSetAttr(TCharAttr Attr)
 //  Set text attribute of printing
 //
@@ -363,9 +362,7 @@
 		SetBkColor(  PrintDC,White);
 	}
 }
-}
 
-extern "C" {
 void PrnOutText(PCHAR Buff, int Count)
 //  Print out text
 //    Buff: points text buffer
@@ -440,9 +437,7 @@
 	} while (Count>0);
 
 }
-}
 
-extern "C" {
 void PrnNewLine()
 //  Moves to the next line in printing
 {
@@ -449,9 +444,7 @@
 	PrnX = Margin.left;
 	PrnY = PrnY + PrnFH;
 }
-}
 
-extern "C" {
 void VTPrintEnd()
 {
 	int i, j;
@@ -472,16 +465,14 @@
 	PrnStop();
 	return;
 }
-}
 
 /* printer emulation routines */
-extern "C" {
 void OpenPrnFile()
 {
 	char Temp[MAX_PATH];
 
 	KillTimer(HVTWin,IdPrnStartTimer);
-	if (HPrnFile > 0) {
+	if (HPrnFile != INVALID_HANDLE_VALUE) {
 		return;
 	}
 	if (PrnFName[0] == 0) {
@@ -493,15 +484,14 @@
 	}
 	else {
 		HPrnFile = _lopen(PrnFName,OF_WRITE);
-		if (HPrnFile <= 0) {
+		if (HPrnFile == INVALID_HANDLE_VALUE) {
 			HPrnFile = _lcreat(PrnFName,0);
 		}
 	}
-	if (HPrnFile > 0) {
+	if (HPrnFile != INVALID_HANDLE_VALUE) {
 		_llseek(HPrnFile,0,2);
 	}
 }
-}
 
 void PrintFile()
 {
@@ -512,7 +502,7 @@
 
 	if (VTPrintInit(IdPrnFile)==IdPrnFile) {
 		HPrnFile = _lopen(PrnFName,OF_READ);
-		if (HPrnFile>0) {
+		if (HPrnFile != INVALID_HANDLE_VALUE) {
 			do {
 				i = 0;
 				do {
@@ -587,7 +577,7 @@
 	HPrnAbortDlg = PrnAbortDlg->GetSafeHwnd();
 
 	HPrnFile = _lopen(PrnFName,OF_READ);
-	PrintAbortFlag = (HPrnFile<=HFILE_ERROR) || ! PrnOpen(ts.PrnDev);
+	PrintAbortFlag = (HPrnFile == INVALID_HANDLE_VALUE) || ! PrnOpen(ts.PrnDev);
 	PrnBuffCount = 0;
 	SetTimer(HVTWin,IdPrnProcTimer,0,NULL);
 }
@@ -596,7 +586,7 @@
 {
 	int c;
 
-	if (HPrnFile==0) {
+	if (HPrnFile==INVALID_HANDLE_VALUE) {
 		return;
 	}
 	if (PrintAbortFlag) {
@@ -604,7 +594,7 @@
 		PrnAbortDlg = NULL;
 		PrnCancel();
 	}
-	if (!PrintAbortFlag && (HPrnFile>0)) {
+	if (!PrintAbortFlag && (HPrnFile != INVALID_HANDLE_VALUE)) {
 		do {
 			if (PrnBuffCount==0) {
 				PrnBuffCount = _lread(HPrnFile,PrnBuff,1);
@@ -626,10 +616,10 @@
 			}
 		} while (c>0);
 	}
-	if (HPrnFile > 0) {
+	if (HPrnFile != INVALID_HANDLE_VALUE) {
 		_lclose(HPrnFile);
 	}
-	HPrnFile = 0;
+	HPrnFile = INVALID_HANDLE_VALUE;
 	PrnClose();
 	remove(PrnFName);
 	PrnFName[0] = 0;
@@ -642,7 +632,7 @@
 
 void PrnFileStart()
 {
-	if (HPrnFile>0) {
+	if (HPrnFile != INVALID_HANDLE_VALUE) {
 		return;
 	}
 	if (PrnFName[0]==0) {
@@ -656,19 +646,16 @@
 	}
 }
 
-extern "C" {
 void ClosePrnFile()
 {
 	PrnBuffCount = 0;
-	if (HPrnFile > 0) {
+	if (HPrnFile != INVALID_HANDLE_VALUE) {
 		_lclose(HPrnFile);
 	}
-	HPrnFile = 0;
+	HPrnFile = INVALID_HANDLE_VALUE;
 	SetTimer(HVTWin,IdPrnStartTimer,ts.PassThruDelay*1000,NULL);
 }
-}
 
-extern "C" {
 void WriteToPrnFile(BYTE b, BOOL Write)
 //  (b,Write) =
 //    (0,FALSE): clear buffer
@@ -689,4 +676,3 @@
 		PrnBuffCount = 0;
 	}
 }
-}

Modified: branches/cmake/teraterm/teraterm/ttermpro.v10.vcxproj
===================================================================
--- branches/cmake/teraterm/teraterm/ttermpro.v10.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/ttermpro.v10.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -134,6 +134,7 @@
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="addsetting.cpp" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="filesys.cpp" />
     <ClCompile Include="ftdlg.cpp" />

Modified: branches/cmake/teraterm/teraterm/ttermpro.v11.vcxproj
===================================================================
--- branches/cmake/teraterm/teraterm/ttermpro.v11.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/ttermpro.v11.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -131,6 +131,7 @@
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="addsetting.cpp" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="filesys.cpp" />
     <ClCompile Include="ftdlg.cpp" />

Modified: branches/cmake/teraterm/teraterm/ttermpro.v12.vcxproj
===================================================================
--- branches/cmake/teraterm/teraterm/ttermpro.v12.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/ttermpro.v12.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -135,6 +135,7 @@
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="..\common\stdafx.cpp" />
     <ClCompile Include="..\common\ttlib.c" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="addsetting.cpp" />
     <ClCompile Include="buffer.c" />
     <ClCompile Include="clipboar.c" />

Modified: branches/cmake/teraterm/teraterm/ttermpro.v14.vcxproj
===================================================================
--- branches/cmake/teraterm/teraterm/ttermpro.v14.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/ttermpro.v14.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -137,6 +137,7 @@
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="..\common\stdafx.cpp" />
     <ClCompile Include="..\common\ttlib.c" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="addsetting.cpp" />
     <ClCompile Include="buffer.c" />
     <ClCompile Include="clipboar.c" />

Modified: branches/cmake/teraterm/teraterm/ttermpro.v15.vcxproj
===================================================================
--- branches/cmake/teraterm/teraterm/ttermpro.v15.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/ttermpro.v15.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -141,6 +141,7 @@
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="..\common\stdafx.cpp" />
     <ClCompile Include="..\common\ttlib.c" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="addsetting.cpp" />
     <ClCompile Include="buffer.c" />
     <ClCompile Include="clipboar.c" />
@@ -199,6 +200,7 @@
     <ClInclude Include="..\common\ttplugin.h" />
     <ClInclude Include="..\common\tttypes.h" />
     <ClInclude Include="..\common\tt_res.h" />
+    <ClInclude Include="..\common\win16api.h" />
     <ClInclude Include="addsetting.h" />
     <ClInclude Include="buffer.h" />
     <ClInclude Include="clipboar.h" />

Modified: branches/cmake/teraterm/teraterm/ttermpro.v15.vcxproj.filters
===================================================================
--- branches/cmake/teraterm/teraterm/ttermpro.v15.vcxproj.filters	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/ttermpro.v15.vcxproj.filters	2018-11-30 16:50:02 UTC (rev 7296)
@@ -120,6 +120,9 @@
     <ClCompile Include="..\common\compat_win.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\common\win16api.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <Image Include="..\..\cygterm\cygterm.ico">
@@ -276,5 +279,8 @@
     <ClInclude Include="..\common\compat_win.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\common\win16api.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file

Modified: branches/cmake/teraterm/teraterm/ttermpro.v9.vcproj
===================================================================
--- branches/cmake/teraterm/teraterm/ttermpro.v9.vcproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/ttermpro.v9.vcproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -273,6 +273,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\common\teraterm_3d.ico"
+				>
+			</File>
+			<File
 				RelativePath="..\common\teraterm_classic.ico"
 				>
 			</File>
@@ -289,6 +293,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\common\vt_3d.ico"
+				>
+			</File>
+			<File
 				RelativePath="..\common\vt_classic.ico"
 				>
 			</File>
@@ -376,6 +384,10 @@
 				RelativePath="WSAAsyncGetAddrInfo.c"
 				>
 			</File>
+			<File
+				RelativePath="..\common\win16_api.c"
+				>
+			</File>
 		</Filter>
 		<Filter
 			Name="Header Files"
@@ -401,6 +413,10 @@
 				RelativePath="ttfileio.h"
 				>
 			</File>
+			<File
+				RelativePath="..\common\win16_api.h"
+				>
+			</File>
 		</Filter>
 	</Files>
 	<Globals>

Modified: branches/cmake/teraterm/teraterm/ttermpro.vcproj
===================================================================
--- branches/cmake/teraterm/teraterm/ttermpro.vcproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/ttermpro.vcproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -389,6 +389,10 @@
 				RelativePath="WSAAsyncGetAddrInfo.c"
 				>
 			</File>
+			<File
+				RelativePath="..\common\win16_api.c"
+				>
+			</File>
 		</Filter>
 		<Filter
 			Name="Header Files"
@@ -414,6 +418,10 @@
 				RelativePath="ttfileio.h"
 				>
 			</File>
+			<File
+				RelativePath="..\common\win16_api.h"
+				>
+			</File>
 		</Filter>
 	</Files>
 	<Globals>

Modified: branches/cmake/teraterm/teraterm/vtwin.cpp
===================================================================
--- branches/cmake/teraterm/teraterm/vtwin.cpp	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/teraterm/vtwin.cpp	2018-11-30 16:50:02 UTC (rev 7296)
@@ -5369,7 +5369,6 @@
  * \x91S Tera Term \x82փ\x81\x83b\x83Z\x81[\x83W\x82𑗐M\x82\xB7\x82\xE9\x83u\x83\x8D\x81[\x83h\x83L\x83\x83\x83X\x83g\x83\x82\x81[\x83h\x81B
  * "sendbroadcast"\x83}\x83N\x83\x8D\x83R\x83}\x83\x93\x83h\x82\xA9\x82\xE7\x82̂ݗ\x98\x97p\x82\xB3\x82\xEA\x82\xE9\x81B
  */
-extern "C"
 void SendBroadcastMessage(HWND HVTWin, HWND hWnd, char *buf, int buflen)
 {
 	int i, count;
@@ -5399,7 +5398,6 @@
  * \x83u\x83\x8D\x81[\x83h\x83L\x83\x83\x83X\x83g\x91\x97\x90M\x82\xF0\x8Ds\x82\xA2\x81A\x8E\xF3\x90M\x91\xA4\x82Ń\x81\x83b\x83Z\x81[\x83W\x82\xF0\x8E\xE6\x8ȆI\x91\xF0\x82\xB7\x82\xE9\x81B
  * "sendmulticast"\x83}\x83N\x83\x8D\x83R\x83}\x83\x93\x83h\x82\xA9\x82\xE7\x82̂ݗ\x98\x97p\x82\xB3\x82\xEA\x82\xE9\x81B
  */
-extern "C"
 void SendMulticastMessage(HWND HVTWin, HWND hWnd, char *name, char *buf, int buflen)
 {
 	int i, count;
@@ -5446,7 +5444,6 @@
 	free(msg);
 }
 
-extern "C"
 void SetMulticastName(char *name)
 {
 	strncpy_s(ts.MulticastName, sizeof(ts.MulticastName), name, _TRUNCATE);

Modified: branches/cmake/teraterm/ttpfile/bplus.c
===================================================================
--- branches/cmake/teraterm/ttpfile/bplus.c	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/bplus.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -38,6 +38,7 @@
 #include "ftlib.h"
 #include "ttcommon.h"
 #include "ttlib.h"
+#include "win16api.h"
 
 /* proto type */
 BOOL WINAPI GetTransFname
@@ -52,7 +53,7 @@
   if (strlen(&(fv->FullName[fv->DirLen]))==0) return FALSE;
 
   fv->FileHandle = _lopen(fv->FullName,OF_READ);
-  fv->FileOpen = fv->FileHandle>0;
+  fv->FileOpen = fv->FileHandle != INVALID_HANDLE_VALUE;
   if (fv->FileOpen)
   {
     SetDlgItemText(fv->HWin, IDC_PROTOFNAME, &(fv->FullName[fv->DirLen]));

Modified: branches/cmake/teraterm/ttpfile/ftlib.c
===================================================================
--- branches/cmake/teraterm/ttpfile/ftlib.c	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ftlib.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -35,6 +35,7 @@
 #include "ttlib.h"
 #include <stdio.h>
 #include <string.h>
+#include "win16api.h"
 
 #include "tt_res.h"
 

Modified: branches/cmake/teraterm/ttpfile/kermit.c
===================================================================
--- branches/cmake/teraterm/ttpfile/kermit.c	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/kermit.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -42,6 +42,7 @@
 #include "ttlib.h"
 #include "dlglib.h"
 #include "ftlib.h"
+#include "win16api.h"
 
 #define KERMIT_CAPAS
 
@@ -1004,7 +1005,7 @@
 
 	/* file open */
 	fv->FileHandle = _lopen(fv->FullName,OF_READ);
-	fv->FileOpen = fv->FileHandle>0;
+	fv->FileOpen = fv->FileHandle != INVALID_HANDLE_VALUE;
 	if (! fv->FileOpen)
 	{
 		if (! fv->NoMsg)

Modified: branches/cmake/teraterm/ttpfile/quickvan.c
===================================================================
--- branches/cmake/teraterm/ttpfile/quickvan.c	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/quickvan.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -42,6 +42,7 @@
 #include "ftlib.h"
 #include "ttlib.h"
 #include "ttcommon.h"
+#include "win16api.h"
 
 #define TimeOutCAN 1
 #define TimeOutCANSend 2
@@ -805,7 +806,7 @@
 
   /* file open */
   fv->FileHandle = _lopen(fv->FullName,OF_READ);
-  fv->FileOpen = fv->FileHandle>0;
+  fv->FileOpen = fv->FileHandle != INVALID_HANDLE_VALUE;
   if (! fv->FileOpen)
   {
     QVCancel(fv,qv,cv);

Modified: branches/cmake/teraterm/ttpfile/ttpfile.v10.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpfile/ttpfile.v10.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ttpfile.v10.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -120,6 +120,7 @@
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="bplus.c" />
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="ftlib.c" />

Modified: branches/cmake/teraterm/ttpfile/ttpfile.v11.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpfile/ttpfile.v11.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ttpfile.v11.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -124,6 +124,7 @@
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="bplus.c" />
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="ftlib.c" />

Modified: branches/cmake/teraterm/ttpfile/ttpfile.v12.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpfile/ttpfile.v12.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ttpfile.v12.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -126,6 +126,7 @@
   <ItemGroup>
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="..\common\ttlib.c" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="bplus.c" />
     <ClCompile Include="ftlib.c" />
     <ClCompile Include="kermit.c" />

Modified: branches/cmake/teraterm/ttpfile/ttpfile.v14.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpfile/ttpfile.v14.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ttpfile.v14.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -126,6 +126,7 @@
   <ItemGroup>
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="..\common\ttlib.c" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="bplus.c" />
     <ClCompile Include="ftlib.c" />
     <ClCompile Include="kermit.c" />

Modified: branches/cmake/teraterm/ttpfile/ttpfile.v15.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpfile/ttpfile.v15.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ttpfile.v15.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -129,6 +129,7 @@
   <ItemGroup>
     <ClCompile Include="..\common\dlglib.c" />
     <ClCompile Include="..\common\ttlib.c" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="bplus.c" />
     <ClCompile Include="ftlib.c" />
     <ClCompile Include="kermit.c" />
@@ -141,6 +142,7 @@
   <ItemGroup>
     <ClInclude Include="..\common\dlglib.h" />
     <ClInclude Include="..\common\ttlib.h" />
+    <ClInclude Include="..\common\win16api.h" />
     <ClInclude Include="bplus.h" />
     <ClInclude Include="file_res.h" />
     <ClInclude Include="ftlib.h" />
@@ -168,4 +170,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file

Modified: branches/cmake/teraterm/ttpfile/ttpfile.v15.vcxproj.filters
===================================================================
--- branches/cmake/teraterm/ttpfile/ttpfile.v15.vcxproj.filters	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ttpfile.v15.vcxproj.filters	2018-11-30 16:50:02 UTC (rev 7296)
@@ -49,6 +49,9 @@
     <ClCompile Include="..\common\dlglib.c">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\common\win16api.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="bplus.h">
@@ -78,6 +81,9 @@
     <ClInclude Include="zmodem.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\common\win16api.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="ttpfile-version.rc">
@@ -92,4 +98,4 @@
       <Filter>Def File</Filter>
     </None>
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file

Modified: branches/cmake/teraterm/ttpfile/ttpfile.v9.vcproj
===================================================================
--- branches/cmake/teraterm/ttpfile/ttpfile.v9.vcproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ttpfile.v9.vcproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -243,6 +243,10 @@
 				RelativePath="zmodem.c"
 				>
 			</File>
+			<File
+				RelativePath="..\common\win16_api.c"
+				>
+			</File>
 		</Filter>
 		<Filter
 			Name="Header Files"

Modified: branches/cmake/teraterm/ttpfile/ttpfile.vcproj
===================================================================
--- branches/cmake/teraterm/ttpfile/ttpfile.vcproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ttpfile.vcproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -244,6 +244,10 @@
 				RelativePath="zmodem.c"
 				>
 			</File>
+			<File
+				RelativePath="..\common\win16_api.c"
+				>
+			</File>
 		</Filter>
 		<Filter
 			Name="Header Files"

Modified: branches/cmake/teraterm/ttpfile/xmodem.c
===================================================================
--- branches/cmake/teraterm/ttpfile/xmodem.c	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/xmodem.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -38,6 +38,7 @@
 #include "ttlib.h"
 #include "ftlib.h"
 #include "dlglib.h"
+#include "win16api.h"
 
 #include "xmodem.h"
 

Modified: branches/cmake/teraterm/ttpfile/ymodem.c
===================================================================
--- branches/cmake/teraterm/ttpfile/ymodem.c	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/ymodem.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -36,6 +36,7 @@
 #include "teraterm.h"
 #include "tttypes.h"
 #include "ttftypes.h"
+#include "win16api.h"
 
 #include "tt_res.h"
 #include "ttcommon.h"
@@ -260,12 +261,12 @@
 		fv->FileHandle = _lopen(fv->FullName,OF_READ);
 		fv->FileSize = GetFSize(fv->FullName);
 	} else {
-		fv->FileHandle = -1;
+		fv->FileHandle = INVALID_HANDLE_VALUE;
 		fv->FileSize = 0;
 		fv->FileMtime = 0;
 		yv->RecvFilesize = FALSE;
 	}
-	fv->FileOpen = fv->FileHandle>0;
+	fv->FileOpen = fv->FileHandle != INVALID_HANDLE_VALUE;
 
 	if (yv->YMode == IdYSend) {
 		InitDlgProgress(fv->HWin, IDC_PROTOPROGRESS, &fv->ProgStat);
@@ -287,8 +288,7 @@
 	yv->LastMessage = 0;
 }
 
-void YInit
-(PFileVar fv, PYVar yv, PComVar cv, PTTSet ts)
+void YInit(PFileVar fv, PYVar yv, PComVar cv, PTTSet ts)
 {
 	char inistr[MAX_PATH + 10];
 
@@ -441,7 +441,7 @@
 				if (fv->FileOpen) {
 					fv->FileOpen = 0;
 					_lclose(fv->FileHandle);
-					fv->FileHandle = -1;
+					fv->FileHandle = INVALID_HANDLE_VALUE;
 
 					if (fv->FileMtime > 0) {
 						SetFMtime(fv->FullName, fv->FileMtime);

Modified: branches/cmake/teraterm/ttpfile/zmodem.c
===================================================================
--- branches/cmake/teraterm/ttpfile/zmodem.c	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpfile/zmodem.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -58,6 +58,7 @@
 #include "ftlib.h"
 #include "ttcommon.h"
 #include "ttlib.h"
+#include "win16api.h"
 
 #define ZPAD   '*'
 #define ZDLE   0x18
@@ -835,7 +836,7 @@
 
 	/* file open */
 	fv->FileHandle = _lopen(fv->FullName, OF_READ);
-	fv->FileOpen = fv->FileHandle > 0;
+	fv->FileOpen = fv->FileHandle != INVALID_HANDLE_VALUE;
 
 	if (zv->CtlEsc) {
 		if ((zv->RxHdr[ZF0] & ESCCTL) == 0) {

Modified: branches/cmake/teraterm/ttpmacro/ttl.c
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttl.c	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttl.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -1,6 +1,6 @@
-/*
+/*
  * Copyright (C) 1994-1998 T. Teranishi
- * (C) 2005-2017 TeraTerm Project
+ * (C) 2005-2018 TeraTerm Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -67,6 +67,7 @@
 #include <ws2tcpip.h>
 #include <iptypes.h>
 #include <iphlpapi.h>
+#include "win16api.h"
 
 #define TTERMCOMMAND "TTERMPRO /D="
 #define CYGTERMCOMMAND "cyglaunch -o /D="
@@ -89,15 +90,56 @@
 
 // for "FindXXXX" commands
 #define NumDirHandle 8
-static long DirHandle[NumDirHandle] = {-1,-1, -1, -1, -1, -1, -1, -1};
+static intptr_t DirHandle[NumDirHandle] = {-1,-1, -1, -1, -1, -1, -1, -1};
 /* for "FileMarkPtr" and "FileSeekBack" commands */
 #define NumFHandle 16
-static int FHandle[NumFHandle];
+//static HANDLE FHandle[NumFHandle];
+static HANDLE FHandle_[NumFHandle];
 static long FPointer[NumFHandle];
 
 // forward declaration
 int ExecCmnd();
 
+static void HandleInit()
+{
+	int i;
+	for (i=0; i<_countof(FHandle_); i++) {
+		FHandle_[i] = INVALID_HANDLE_VALUE;
+	}
+}
+
+/**
+ *	@retval	ファイルハンドルインデックス(0~)
+ *			-1のときエラー
+ */
+static int HandlePut(HANDLE FH)
+{
+	int i;
+	if (FH == INVALID_HANDLE_VALUE) {
+		return -1;
+	}
+	for (i=0; i<_countof(FHandle_); i++) {
+		if (FHandle_[i] == INVALID_HANDLE_VALUE) {
+			FHandle_[i] = FH;
+			return i;
+		}
+	}
+	return -1;
+}
+
+static HANDLE HandleGet(int fhi)
+{
+	if (fhi < 0 || _countof(FHandle_) < fhi) {
+		return INVALID_HANDLE_VALUE;
+	}
+	return FHandle_[fhi];
+}
+
+static void HandleFree(int fhi)
+{
+	FHandle_[fhi] = INVALID_HANDLE_VALUE;
+}
+
 BOOL InitTTL(HWND HWin)
 {
 	int i;
@@ -114,7 +156,7 @@
 	// System variables
 	NewIntVar("result",0);
 	NewIntVar("timeout",0);
-	NewIntVar("mtimeout",0);    // \x83~\x83\x8A\x95b\x92P\x88ʂ̃^\x83C\x83\x80\x83A\x83E\x83g\x97p (2009.1.23 maya)
+	NewIntVar("mtimeout",0);    // ミリ秒単位のタイムアウト用 (2009.1.23 maya)
 	NewStrVar("inputstr","");
 	NewStrVar("matchstr","");   // for 'waitregex' command (2005.10.7 yutaka)
 	NewStrVar("groupmatchstr1","");   // for 'waitregex' command (2005.10.15 yutaka)
@@ -130,9 +172,9 @@
 	if (ParamCnt == 0) {
 		ParamCnt++;
 	}
-	NewIntVar("paramcnt",ParamCnt);  // \x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xE0\x8A܂ވ\xF8\x90\x94\x82̌\x94 (2012.4.10 yutaka)
+	NewIntVar("paramcnt",ParamCnt);  // ファイル名も含む引数の個数 (2012.4.10 yutaka)
 
-	// \x8B\x8C\x8C`\x8E\xAE\x82̃p\x83\x89\x83\x81\x81[\x83^\x90ݒ\xE8 (param1 \x81` param9)
+	// 旧形式のパラメータ設定 (param1 〜 param9)
 	NewStrVar("param1", ShortName);
 	if (Params) {
 		for (i=2; i<=9; i++) {
@@ -146,7 +188,7 @@
 		}
 	}
 
-	// \x90V\x8C`\x8E\xAE\x82̃p\x83\x89\x83\x81\x81[\x83^\x90ݒ\xE8 (params[1\x81`ParamCnt])
+	// 新形式のパラメータ設定 (params[1〜ParamCnt])
 	if (NewStrAryVar("params", ParamCnt+1) == 0) {
 		Err = 0;
 		GetStrAryVarByName(&ParamsVarId, "params", &Err);
@@ -177,8 +219,7 @@
 
 	for (i=0; i<NumDirHandle; i++)
 		DirHandle[i] = -1L;
-	for (i=0; i<NumFHandle; i++)
-		FHandle[i] = -1;
+	HandleInit();
 
 	if (! InitBuff(FileName))
 	{
@@ -751,7 +792,7 @@
 static unsigned int crc16(int n, unsigned char c[])
 {
 #define CRC16POLY1  0x1021U  /* x^{16}+x^{12}+x^5+1 */
-#define CRC16POLY2  0x8408U  /* \x8D\xB6\x89E\x8Bt\x93] */
+#define CRC16POLY2  0x8408U  /* 左右逆転 */
 
 	int i, j;
 	unsigned long r;
@@ -771,7 +812,7 @@
 #define CRC32POLY1 0x04C11DB7UL
 	/* x^{32}+x^{26}+x^{23}+x^{22}+x^{16}+x^{12}+x^{11]+
 	   x^{10}+x^8+x^7+x^5+x^4+x^2+x^1+1 */
-#define CRC32POLY2 0xEDB88320UL  /* \x8D\xB6\x89E\x8Bt\x93] */
+#define CRC32POLY2 0xEDB88320UL  /* 左右逆転 */
 	int i, j;
 	unsigned long r;
 
@@ -785,7 +826,7 @@
 	return r ^ 0xFFFFFFFFUL;
 }
 
-// \x83`\x83F\x83b\x83N\x83T\x83\x80\x83A\x83\x8B\x83S\x83\x8A\x83Y\x83\x80\x81E\x8B\xA4\x92ʃ\x8B\x81[\x83`\x83\x93
+// チェックサムアルゴリズム・共通ルーチン
 WORD TTLDoChecksum(enum checksum_type type)
 {
 	TStrVal Str;
@@ -847,12 +888,12 @@
 	if (Str[0]==0) return Err;
 
 	fh = CreateFile(Str,GENERIC_READ,0,NULL,OPEN_EXISTING,
-		FILE_ATTRIBUTE_NORMAL,NULL); /* \x83t\x83@\x83C\x83\x8B\x83I\x81[\x83v\x83\x93 */
+		FILE_ATTRIBUTE_NORMAL,NULL); /* ファイルオープン */
 	if (fh == INVALID_HANDLE_VALUE) {
 		result = -1;
 		goto error;
 	}
-	/* \x83t\x83@\x83C\x83\x8B\x83}\x83b\x83s\x83\x93\x83O\x83I\x83u\x83W\x83F\x83N\x83g\x8D쐬 */
+	/* ファイルマッピングオブジェクト作成 */
 	hMap = CreateFileMapping(fh,NULL,PAGE_READONLY,0,0,NULL);
 	if (hMap == NULL) {
 		result = -1;
@@ -859,7 +900,7 @@
 		goto error;
 	}
 
-	/* \x83t\x83@\x83C\x83\x8B\x82\xF0\x83}\x83b\x83v\x82\xB5\x81A\x90擪\x83A\x83h\x83\x8C\x83X\x82\xF0lpBuf\x82Ɏ擾 */
+	/* ファイルをマップし、先頭アドレスをlpBufに取得 */
 	lpBuf = (LPBYTE)MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);
 	if (lpBuf == NULL) {
 		result = -1;
@@ -1258,12 +1299,12 @@
 			return Err;
 		}
 
-		// \x83t\x83@\x83C\x83\x8B\x83p\x83X\x82Ɋ‹\xAB\x95ϐ\x94\x82\xAA\x8A܂܂\xEA\x82Ă\xA2\x82\xE9\x82Ȃ\xE7\x82΁A\x93W\x8AJ\x82\xB7\x82\xE9\x81B
+		// ファイルパスに環境変数が含まれているならば、展開する。
 		ExpandEnvironmentStrings(srcptr, deststr, MaxStrLen);
 		SetStrVal(VarId, deststr);
 	}
 	else { // expandenv strvar
-		// \x83t\x83@\x83C\x83\x8B\x83p\x83X\x82Ɋ‹\xAB\x95ϐ\x94\x82\xAA\x8A܂܂\xEA\x82Ă\xA2\x82\xE9\x82Ȃ\xE7\x82΁A\x93W\x8AJ\x82\xB7\x82\xE9\x81B
+		// ファイルパスに環境変数が含まれているならば、展開する。
 		ExpandEnvironmentStrings(StrVarPtr(VarId), deststr, MaxStrLen);
 		SetStrVal(VarId, deststr);
 	}
@@ -1274,17 +1315,17 @@
 WORD TTLFileClose()
 {
 	WORD Err;
-	int FH, i;
+	int fhi;	// handle index
+	HANDLE FH;
 
 	Err = 0;
-	GetIntVal(&FH,&Err);
+	GetIntVal(&fhi,&Err);
+	FH = HandleGet(fhi);
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 	_lclose(FH);
-	i = 0;
-	while ((i<NumFHandle) && (FH!=FHandle[i])) i++;
-	if (i<NumFHandle) FHandle[i] = -1;
+	HandleFree(fhi);
 	return Err;
 }
 
@@ -1291,7 +1332,8 @@
 WORD TTLFileConcat()
 {
 	WORD Err;
-	int FH1, FH2, c;
+	HANDLE FH1, FH2;
+	int c;
 	TStrVal FName1, FName2;
 	BYTE buf[1024];
 
@@ -1322,9 +1364,9 @@
 	}
 
 	FH1 = _lopen(FName1,OF_WRITE);
-	if (FH1<0)
+	if (FH1 == INVALID_HANDLE_VALUE)
 		FH1 = _lcreat(FName1,0);
-	if (FH1<0) {
+	if (FH1 == INVALID_HANDLE_VALUE) {
 		SetResult(3);
 		return Err;
 	}
@@ -1331,7 +1373,7 @@
 	_llseek(FH1,0,2);
 
 	FH2 = _lopen(FName2,OF_READ);
-	if (FH2!=-1)
+	if (FH2 != INVALID_HANDLE_VALUE)
 	{
 		do {
 			c = _lread(FH2,&(buf[0]),sizeof(buf));
@@ -1383,7 +1425,8 @@
 {
 	WORD Err;
 	TVarId VarId;
-	int FH;
+	HANDLE FH;
+	int fhi;
 	TStrVal FName;
 
 	Err = 0;
@@ -1403,14 +1446,17 @@
 		return Err;
 	}
 	FH = _lcreat(FName,0);
-	if (FH<0) {
-		FH = -1;
+	if (FH == INVALID_HANDLE_VALUE) {
 		SetResult(2);
-	  }
-	  else {
+	}
+	else {
 		SetResult(0);
 	}
-	SetIntVal(VarId, FH);
+	fhi = HandlePut(FH);
+	SetIntVal(VarId, fhi);
+	if (fhi == -1) {
+		_lclose(FH);
+	}
 	return Err;
 }
 
@@ -1447,26 +1493,21 @@
 WORD TTLFileMarkPtr()
 {
 	WORD Err;
-	int FH, i;
+	int fhi;
+	HANDLE FH;
+	LONG pos;
 
 	Err = 0;
-	GetIntVal(&FH,&Err);
+	GetIntVal(&fhi,&Err);
+	FH = HandleGet(fhi);
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
-	i = 0;
-	while ((i<NumFHandle) && (FH!=FHandle[i])) i++;
-	if (i>=NumFHandle)
-	{
-		i = 0;
-		while ((i<NumFHandle) && (FHandle[i]!=-1)) i++;
-		if (i<NumFHandle) FHandle[i] = FH;
+	pos = _llseek(FH,0,1);	 /* mark current pos */
+	if (pos == INVALID_SET_FILE_POINTER) {
+		pos = 0;	// ?
 	}
-	if (i<NumFHandle)
-	{
-		FPointer[i] = _llseek(FH,0,1); /* mark current pos */
-		if (FPointer[i]<0) FPointer[i] = 0;
-	}
+	FPointer[fhi] = pos;
 	return Err;
 }
 
@@ -1534,7 +1575,9 @@
 {
 	WORD Err;
 	TVarId VarId;
-	int Append, FH, ReadonlyFlag=0;
+	int fhi;
+	HANDLE FH;
+	int Append, ReadonlyFlag=0;
 	TStrVal FName;
 
 	Err = 0;
@@ -1561,13 +1604,23 @@
 	else {
 		FH = _lopen(FName,OF_READWRITE);
 	}
-	if (FH<0)
+	if (FH == INVALID_HANDLE_VALUE)
 		FH = _lcreat(FName,0);
-	if (FH<0) FH = -1;
-	SetIntVal(VarId, FH);
-	if (FH<0) return Err;
-	if (Append!=0) _llseek(FH, 0, 2);  
-	return Err;
+	if (FH == INVALID_HANDLE_VALUE) {
+		SetIntVal(VarId, -1);
+		return ErrCantOpen;
+	}
+	fhi = HandlePut(FH);
+	if (fhi == -1) {
+		SetIntVal(VarId, -1);
+		_lclose(FH);
+		return ErrCantOpen;
+	}
+	SetIntVal(VarId, fhi);
+	if (Append!=0) {
+		_llseek(FH, 0, 2/*FILE_END*/);
+	}
+	return 0;	// no error
 }
 
 // Format: filelock <file handle> [<timeout>]
@@ -1585,7 +1638,7 @@
 	GetIntVal(&FH,&Err);
 	if (Err!=0) return Err;
 
-	timeout = -1;  // \x96\xB3\x8C\xC0\x91\xE5
+	timeout = -1;  // 無限大
 	if (CheckParameterGiven()) {
 		GetIntVal(&timeout, &Err);
 		if (Err!=0) return Err;
@@ -1595,7 +1648,7 @@
 	dwStart = GetTickCount();
 	do {
 		ret = LockFile((HANDLE)FH, 0, 0, (DWORD)-1, (DWORD)-1);
-		if (ret != 0) { // \x83\x8D\x83b\x83N\x90\xAC\x8C\xF7
+		if (ret != 0) { // ロック成功
 			result = 0;  // success
 			break;
 		}
@@ -1621,7 +1674,7 @@
 	if (Err!=0) return Err;
 
 	ret = UnlockFile((HANDLE)FH, 0, 0, (DWORD)-1, (DWORD)-1);
-	if (ret != 0) { // \x83A\x83\x93\x83\x8D\x83b\x83N\x90\xAC\x8C\xF7
+	if (ret != 0) { // アンロック成功
 		SetResult(0);
 	} else {
 		SetResult(1);
@@ -1634,13 +1687,16 @@
 {
 	WORD Err;
 	TVarId VarId;
-	int FH, i, c;
+	int fhi;
+	HANDLE FH;
+	int i, c;
 	TStrVal Str;
 	BOOL EndFile, EndLine;
 	BYTE b;
 
 	Err = 0;
-	GetIntVal(&FH, &Err);
+	GetIntVal(&fhi, &Err);
+	FH = HandleGet(fhi);
 	GetStrVar(&VarId, &Err);
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
@@ -1683,26 +1739,29 @@
 
 
 // Format: fileread <file handle> <read byte> <strvar>
-// \x8Ew\x92肵\x82\xBD\x83o\x83C\x83g\x90\x94\x82\xBE\x82\xAF\x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x93ǂݍ\x9E\x82ށB
-// \x82\xBD\x82\xBE\x82\xB5\x81A<read byte>\x82\xCD 1\x81`255 \x82܂ŁB
+// 指定したバイト数だけファイルから読み込む。
+// ただし、<read byte>は 1〜255 まで。
 // (2006.11.1 yutaka)
 WORD TTLFileRead()
 {
 	WORD Err;
 	TVarId VarId;
-	int FH, i, c;
-	int ReadByte;   // \x93ǂݍ\x9E\x82ރo\x83C\x83g\x90\x94
+	int fhi;
+	HANDLE FH;
+	int i, c;
+	int ReadByte;   // 読み込むバイト数
 	TStrVal Str;
 	BOOL EndFile, EndLine;
 	BYTE b;
 
 	Err = 0;
-	GetIntVal(&FH,&Err);
+	GetIntVal(&fhi,&Err);
+	FH = HandleGet(fhi);
 	GetIntVal(&ReadByte,&Err);
 	GetStrVar(&VarId,&Err);
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
-	if ((Err==0) && (ReadByte < 1 || ReadByte > MaxStrLen-1))  // \x94͈̓`\x83F\x83b\x83N
+	if ((Err==0) && (ReadByte < 1 || ReadByte > MaxStrLen-1))  // 範囲チェック
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
@@ -1762,7 +1821,7 @@
 		return Err;
 	}
 	if (rename(FName1,FName2) != 0) {
-		// \x83\x8A\x83l\x81[\x83\x80\x82Ɏ\xB8\x94s\x82\xB5\x82\xBD\x82\xE7\x81A\x83G\x83\x89\x81[\x82ŕԂ\xB7\x81B
+		// リネームに失敗したら、エラーで返す。
 		SetResult(-3);
 		return Err;
 	}
@@ -1794,10 +1853,13 @@
 WORD TTLFileSeek()
 {
 	WORD Err;
-	int FH, i, j;
+	int fhi;
+	HANDLE FH;
+	int i, j;
 
 	Err = 0;
-	GetIntVal(&FH,&Err);
+	GetIntVal(&fhi,&Err);
+	FH = HandleGet(fhi);
 	GetIntVal(&i,&Err);
 	GetIntVal(&j,&Err);
 	if ((Err==0) && (GetFirstChar()!=0))
@@ -1810,18 +1872,17 @@
 WORD TTLFileSeekBack()
 {
 	WORD Err;
-	int FH, i;
+	int fhi;
+	HANDLE FH;
 
 	Err = 0;
-	GetIntVal(&FH,&Err);
+	GetIntVal(&fhi,&Err);
+	FH = HandleGet(fhi);
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
-	i = 0;
-	while ((i<NumFHandle) && (FH!=FHandle[i])) i++;
 	/* move back to the marked pos */
-	if (i<NumFHandle)
-		_llseek(FH,FPointer[i],0);
+	_llseek(FH,FPointer[fhi],0);
 	return Err;
 }
 
@@ -1883,13 +1944,16 @@
 WORD TTLFileStrSeek()
 {
 	WORD Err;
-	int FH, Len, i, c;
+	int fhi;
+	HANDLE FH;
+	int Len, i, c;
 	TStrVal Str;
 	BYTE b;
 	long int pos;
 
 	Err = 0;
-	GetIntVal(&FH,&Err);
+	GetIntVal(&fhi,&Err);
+	FH = HandleGet(fhi);
 	GetStrVal(Str,&Err);
 	if ((Err==0) &&
 	    ((strlen(Str)==0) || (GetFirstChar()!=0)))
@@ -1896,7 +1960,7 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 	pos = _llseek(FH,0,1);
-	if (pos==-1) return Err;
+	if (pos == INVALID_SET_FILE_POINTER) return Err;
 
 	Len = strlen(Str);
 	i = 0;
@@ -1925,7 +1989,9 @@
 WORD TTLFileStrSeek2()
 {
 	WORD Err;
-	int FH, Len, i, c;
+	int fhi;
+	HANDLE FH;
+	int Len, i, c;
 	TStrVal Str;
 	BYTE b;
 	long int pos, pos2;
@@ -1932,7 +1998,8 @@
 	BOOL Last;
 
 	Err = 0;
-	GetIntVal(&FH,&Err);
+	GetIntVal(&fhi,&Err);
+	FH = HandleGet(fhi);
 	GetStrVal(Str,&Err);
 	if ((Err==0) &&
 	    ((strlen(Str)==0) || (GetFirstChar()!=0)))
@@ -1939,7 +2006,7 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 	pos = _llseek(FH,0,1);
-	if (pos<=0) return Err;
+	if (pos == INVALID_SET_FILE_POINTER) return Err;
 
 	Len = strlen(Str);
 	i = 0;
@@ -1960,9 +2027,10 @@
 		}
 	} while (!Last && (i!=Len));
 	if (i==Len) {
-		// \x83t\x83@\x83C\x83\x8B\x82\xCC1\x83o\x83C\x83g\x96ڂ\xAA\x83q\x83b\x83g\x82\xB7\x82\xE9\x82ƁA\x83t\x83@\x83C\x83\x8B\x83|\x83C\x83\x93\x83^\x82\xAA\x93˂\xAB\x94j\x82\xC1\x82\xC4 -1 \x82ɂȂ\xE9\x82̂ŁA
-		// \x83[\x83\x8D\x83I\x83t\x83Z\x83b\x83g\x82ɂȂ\xE9\x82悤\x82ɒ\xB2\x90\xAE\x82\xB7\x82\xE9\x81B(2008.10.10 yutaka)
-		if (pos2 < 0)
+		// ファイルの1バイト目がヒットすると、ファイルポインタが突き破って
+		// INVALID_SET_FILE_POINTER になるので、
+		// ゼロオフセットになるように調整する。(2008.10.10 yutaka)
+		if (pos == INVALID_SET_FILE_POINTER) 
 			_llseek(FH, 0, 0);
 		SetResult(1);
 	} else {
@@ -2000,7 +2068,7 @@
 		goto end;
 	}
 
-	// \x83t\x83@\x83C\x83\x8B\x82\xF0\x8Ew\x92肵\x82\xBD\x83T\x83C\x83Y\x82Ő؂\xE8\x8Bl\x82߂\xE9\x81B
+	// ファイルを指定したサイズで切り詰める。
    ret = _sopen_s( &fh, FName, _O_RDWR | _O_CREAT, _SH_DENYNO, _S_IREAD | _S_IWRITE );
    if (ret != 0) {
 		Err = ErrCantOpen;
@@ -2027,11 +2095,14 @@
 WORD TTLFileWrite(BOOL addCRLF)
 {
 	WORD Err, P;
-	int FH, Val;
+	int fhi;
+	HANDLE FH;
+	int Val;
 	TStrVal Str;
 
 	Err = 0;
-	GetIntVal(&FH, &Err);
+	GetIntVal(&fhi, &Err);
+	FH = HandleGet(fhi);
 	if (Err) return Err;
 
 	P = LinePtr;
@@ -2381,7 +2452,7 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	// \x8E\xA9\x95\xAA\x8E\xA9\x90g\x82̑SIPv4\x83A\x83h\x83\x8C\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B
+	// 自分自身の全IPv4アドレスを取得する。
 	if (WSAStartup(MAKEWORD(2,2), &ws) != 0) {
 		SetResult(-1);
 		SetIntVal(VarId2, 0);
@@ -2420,7 +2491,7 @@
 }
 
 
-// IPv6\x83A\x83h\x83\x8C\x83X\x82𕶎\x9A\x97\xF1\x82ɕϊ\xB7\x82\xB7\x82\xE9\x81B
+// IPv6アドレスを文字列に変換する。
 static void myInetNtop(int Family, char *pAddr, char *pStringBuf, size_t StringBufSize)
 {
 	int i;
@@ -2455,7 +2526,7 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	// GetAdaptersAddresses \x82\xAA\x83T\x83|\x81[\x83g\x82\xB3\x82\xEA\x82Ă\xA2\x82Ȃ\xA2 OS \x82͂\xB1\x82\xB1\x82\xC5 return
+	// GetAdaptersAddresses がサポートされていない OS はここで return
 	if (!HasGetAdaptersAddresses()) {
 		SetResult(-1);
 		SetIntVal(VarId2, 0);
@@ -2462,7 +2533,7 @@
 		return Err;
 	}
 
-	// \x8E\xA9\x95\xAA\x8E\xA9\x90g\x82̑SIPv6\x83A\x83h\x83\x8C\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B
+	// 自分自身の全IPv6アドレスを取得する。
 	arysize = GetStrAryVarSize(VarId);
 	num = 0;
 	result = 1;
@@ -2546,7 +2617,7 @@
 
 	SetStrVal(VarId,Temp2);
 
-	SetResult(result);  // \x90\xAC\x8C\xF7\x89”ۂ\xF0\x90ݒ肷\x82\xE9\x81B
+	SetResult(result);  // 成功可否を設定する。
 	return Err;
 }
 
@@ -2561,30 +2632,30 @@
 	int result = 0;  /* failure */
 
 	Err = 0;
-	GetStrVal(FileNameStr, &Err);   // \x83t\x83@\x83C\x83\x8B\x96\xBC
-	GetStrVal(KeyStr, &Err);  // \x83L\x81[\x96\xBC
+	GetStrVal(FileNameStr, &Err);   // ファイル名
+	GetStrVal(KeyStr, &Err);  // キー名
 	GetStrVar(&VarId, &Err);
-	VarStr = StrVarPtr(VarId);  // \x95ϐ\x94\x82ւ̃|\x83C\x83\x93\x83^
+	VarStr = StrVarPtr(VarId);  // 変数へのポインタ
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	// \x95\xB6\x8E\x9A\x97񂪋\xF3\x82̏ꍇ\x82̓G\x83\x89\x81[\x82Ƃ\xB7\x82\xE9\x81B
+	// 文字列が空の場合はエラーとする。
 	if (FileNameStr[0]==0 || 
 	    KeyStr[0]==0 ||
-	    VarStr[0]==0)   // "getpassword"\x93\xAF\x97l\x81A\x8B\xF3\x83p\x83X\x83\x8F\x81[\x83h\x82\xE0\x8B\x96\x89‚\xB5\x82Ȃ\xA2\x81B
+	    VarStr[0]==0)   // "getpassword"同様、空パスワードも許可しない。
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
 	GetAbsPath(FileNameStr, sizeof(FileNameStr));
 
-	// \x83p\x83X\x83\x8F\x81[\x83h\x82\xF0\x88Í\x86\x89\xBB\x82\xB7\x82\xE9\x81B
+	// パスワードを暗号化する。
 	Encrypt(VarStr, Temp);
 
 	if (WritePrivateProfileString("Password", KeyStr, Temp, FileNameStr) != 0) 
 		result = 1;  /* success */
 
-	SetResult(result);  // \x90\xAC\x8C\xF7\x89”ۂ\xF0\x90ݒ肷\x82\xE9\x81B
+	SetResult(result);  // 成功可否を設定する。
 	return Err;
 }
 
@@ -2597,13 +2668,13 @@
 	int result = 0; 
 
 	Err = 0;
-	GetStrVal(FileNameStr, &Err);   // \x83t\x83@\x83C\x83\x8B\x96\xBC
-	GetStrVal(KeyStr, &Err);  // \x83L\x81[\x96\xBC
+	GetStrVal(FileNameStr, &Err);   // ファイル名
+	GetStrVal(KeyStr, &Err);  // キー名
 	if ((Err==0) && (GetFirstChar()!=0))
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	// \x95\xB6\x8E\x9A\x97񂪋\xF3\x82̏ꍇ\x82̓G\x83\x89\x81[\x82Ƃ\xB7\x82\xE9\x81B
+	// 文字列が空の場合はエラーとする。
 	if (FileNameStr[0]==0 || 
 	    KeyStr[0]==0)
 		Err = ErrSyntax;
@@ -2620,7 +2691,7 @@
 		result = 1; 
 	}
 
-	SetResult(result);  // \x90\xAC\x8C\xF7\x89”ۂ\xF0\x90ݒ肷\x82\xE9\x81B
+	SetResult(result);  // 成功可否を設定する。
 	return Err;
 }
 
@@ -2680,7 +2751,7 @@
 		}
 		set_result = TRUE;
 
-		// \x83^\x83C\x83\x80\x83]\x81[\x83\x93\x82̎w\x92肪\x82\xA0\x82\xEA\x82΁Alocaltime()\x82ɉe\x8B\xBF\x82\xB3\x82\xB9\x82\xE9\x81B(2012.5.2 yutaka)
+		// タイムゾーンの指定があれば、localtime()に影響させる。(2012.5.2 yutaka)
 		if (CheckParameterGiven()) {
 			GetStrVal(tzStr, &Err);
 			if (Err!=0) return Err;
@@ -2768,7 +2839,7 @@
 	return Err;
 }
 
-// COM\x83|\x81[\x83g\x82\xA9\x82烌\x83W\x83X\x83^\x92l\x82\xF0\x93ǂށB
+// COMポートからレジスタ値を読む。
 // (2015.1.8 yutaka)
 WORD TTLGetModemStatus()
 {
@@ -2800,9 +2871,9 @@
 }
 
 //
-// Tera Term \x82̃o\x81[\x83W\x83\x87\x83\x93\x8E擾 & \x94\xE4\x8Ar
-// \x83o\x81[\x83W\x83\x87\x83\x93\x94ԍ\x86\x82̓R\x83\x93\x83p\x83C\x83\x8B\x8E\x9E\x82Ɍ\x88\x92肷\x82\xE9\x81B
-// (\x8C\xBB\x8D݂͎\xC0\x8Ds\x83t\x83@\x83C\x83\x8B\x82̃o\x81[\x83W\x83\x87\x83\x93\x8F\xEE\x95\xF1\x82͎Q\x8FƂ\xB5\x82Ȃ\xA2)
+// Tera Term のバージョン取得 & 比較
+// バージョン番号はコンパイル時に決定する。
+// (現在は実行ファイルのバージョン情報は参照しない)
 //
 WORD TTLGetVer()
 {
@@ -3055,7 +3126,7 @@
 	if (Err!=0) return Err;
 
 	Err = ErrSyntax;
-	if (strcmp(Str, "size") == 0) {   // \x83\x8D\x81[\x83e\x81[\x83g\x83T\x83C\x83Y
+	if (strcmp(Str, "size") == 0) {   // ローテートサイズ
 		if (CheckParameterGiven()) {
 			Err = 0;
 			size = 0;
@@ -3082,7 +3153,7 @@
 				_snprintf_s(buf, sizeof(buf), _TRUNCATE, "%s %u", Str, size);
 		}
 
-	} else if (strcmp(Str, "rotate") == 0) {  // \x83\x8D\x81[\x83e\x81[\x83g\x82̐\xA2\x91㐔
+	} else if (strcmp(Str, "rotate") == 0) {  // ローテートの世代数
 		if (CheckParameterGiven()) {
 			Err = 0;
 			num = 0;
@@ -3251,12 +3322,12 @@
 	_splitpath_s(fullpath, drive, sizeof(drive), dir, sizeof(dir), fname, sizeof(fname), ext, sizeof(ext));
 	strncpy_s(dirname, sizeof(dirname), drive, _TRUNCATE);
 	strncat_s(dirname, sizeof(dirname), dir, _TRUNCATE);
-	DeleteSlash(dirname); // \x96\x96\x94\xF6\x82\xCC \ \x82\xF0\x8E\xE6\x82菜\x82\xAD
+	DeleteSlash(dirname); // 末尾の \ を取り除く
 	if (strlen(fname) == 0 && strlen(ext) == 0) {
 		_splitpath_s(dirname, drive, sizeof(drive), dir, sizeof(dir), fname, sizeof(fname), ext, sizeof(ext));
 		strncpy_s(dirname, sizeof(dirname), drive, _TRUNCATE);
 		strncat_s(dirname, sizeof(dirname), dir, _TRUNCATE);
-		DeleteSlash(dirname); // \x96\x96\x94\xF6\x82\xCC \ \x82\xF0\x8E\xE6\x82菜\x82\xAD
+		DeleteSlash(dirname); // 末尾の \ を取り除く
 		strncpy_s(basename, sizeof(basename), fname, _TRUNCATE);
 		strncat_s(basename, sizeof(basename), ext, _TRUNCATE);
 	}
@@ -3399,7 +3470,7 @@
 
 	if (BoxId==IdMsgBox) {
 		ret = OpenMsgDlg(Str1,Str2,FALSE);
-		// \x83\x81\x83b\x83Z\x81[\x83W\x83{\x83b\x83N\x83X\x82\xF0\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82\xB7\x82\xE9\x82ƁA\x83}\x83N\x83\x8D\x82̏I\x97\xB9\x82Ƃ\xB7\x82\xE9\x81B
+		// メッセージボックスをキャンセルすると、マクロの終了とする。
 		// (2008.8.5 yutaka)
 		if (ret == IDCANCEL) {
 			TTLStatus = IdTTLEnd;
@@ -3406,7 +3477,7 @@
 		}
 	} else if (BoxId==IdYesNoBox) {
 		ret = OpenMsgDlg(Str1,Str2,TRUE);
-		// \x83\x81\x83b\x83Z\x81[\x83W\x83{\x83b\x83N\x83X\x82\xF0\x83L\x83\x83\x83\x93\x83Z\x83\x8B\x82\xB7\x82\xE9\x82ƁA\x83}\x83N\x83\x8D\x82̏I\x97\xB9\x82Ƃ\xB7\x82\xE9\x81B
+		// メッセージボックスをキャンセルすると、マクロの終了とする。
 		// (2008.8.6 yutaka)
 		if (ret == IDCLOSE) {
 			TTLStatus = IdTTLEnd;
@@ -3417,7 +3488,7 @@
 		OpenStatDlg(Str1,Str2);
 
 	} else if (BoxId==IdListBox) {
-		//  \x83\x8A\x83X\x83g\x83{\x83b\x83N\x83X\x82̑I\x91\xF0\x8E\x88\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B
+		//  リストボックスの選択肢を取得する。
 		GetStrAryVar(&VarId, Err);
 
 		if (CheckParameterGiven()) {
@@ -3448,8 +3519,8 @@
 		}
 
 		// return 
-		//   0\x88ȏ\xE3: \x91I\x91\xF0\x8D\x80\x96\xDA
-		//   -1: \x83L\x83\x83\x83\x93\x83Z\x83\x8B
+		//   0以上: 選択項目
+		//   -1: キャンセル
 		//	 -2: close
 		ret = OpenListDlg(Str1, Str2, s, sel);
 
@@ -3458,7 +3529,7 @@
 		}
 		free(s);
 
-		// \x83\x8A\x83X\x83g\x83{\x83b\x83N\x83X\x82̕‚\xB6\x82\xE9\x83{\x83^\x83\x93(&\x8Am\x94F\x83_\x83C\x83A\x83\x8D\x83O)\x82ŁA\x83}\x83N\x83\x8D\x82̏I\x97\xB9\x82Ƃ\xB7\x82\xE9\x81B
+		// リストボックスの閉じるボタン(&確認ダイアログ)で、マクロの終了とする。
 		if (ret == -2) {
 			TTLStatus = IdTTLEnd;
 		}
@@ -3468,7 +3539,7 @@
 	return 0;
 }
 
-// \x83\x8A\x83X\x83g\x83{\x83b\x83N\x83X
+// リストボックス
 // (2013.3.13 yutaka)
 WORD TTLListBox()
 {
@@ -3984,8 +4055,8 @@
 }
 
 /*
- * src \x82Ɋ܂܂\xEA\x82\xE9 0x01 \x82\xF0 0x01 0x02 \x82ɒu\x82\xAB\x8A\xB7\x82\xA6\x82\xC4 dst \x82ɃR\x83s\x81[\x82\xB7\x82\xE9\x81B
- * TStrVal \x82ɂ\xCD 0x00 \x82\xAA\x8A܂܂\xEA\x82鎖\x82\xAA\x96\xB3\x82\xA2(\x8FI\x92[\x82Ƌ\xE6\x95ʂł\xAB\x82Ȃ\xA2)\x82̂\xC5 0x00 \x82͍l\x97\xB6\x82\xB7\x82\xE9\x95K\x97v\x82Ȃ\xB5\x81B
+ * src に含まれる 0x01 を 0x01 0x02 に置き換えて dst にコピーする。
+ * TStrVal には 0x00 が含まれる事が無い(終端と区別できない)ので 0x00 は考慮する必要なし。
  */
 static void AddBroadcastString(char *dst, int dstlen, char *src)
 {
@@ -3997,7 +4068,7 @@
 
 	while (*src != 0 && dstlen > 1) {
 		if (*src == 0x01) {
-			// 0x01 \x82\xF0\x8Ai\x94[\x82\xB7\x82\xE9\x82ɂ\xCD 0x01 0x02 \x82\xCC2\x83o\x83C\x83g + NUL \x8FI\x92[\x97p\x82\xCC1\x83o\x83C\x83g\x82\xAA\x95K\x97v
+			// 0x01 を格納するには 0x01 0x02 の2バイト + NUL 終端用の1バイトが必要
 			if (dstlen < 3) {
 				break;
 			}
@@ -4015,13 +4086,13 @@
 }
 
 /*
- * TTLSendBroadcast / TTLSendMulticast \x82̉\xBA\x90\xBF\x82\xAF
+ * TTLSendBroadcast / TTLSendMulticast の下請け
  *
- * \x8Ae\x83p\x83\x89\x83\x81\x81[\x83^\x82\xF0\x98A\x8C\x8B\x82\xB5\x82\xBD\x95\xB6\x8E\x9A\x97\xF1\x82\xF0 buff \x82Ɋi\x94[\x82\xB5\x82ĕԂ\xB7\x81B
- * crlf \x82\xAA TRUE \x82̎\x9E\x82͊e\x83p\x83\x89\x83\x81\x81[\x83^\x82̊Ԃ\xC9 "\n" \x82\xF0\x8B\xB2\x82ށB(\x97v\x8C\x9F\x93\xA2)
+ * 各パラメータを連結した文字列を buff に格納して返す。
+ * crlf が TRUE の時は各パラメータの間に "\n" を挟む。(要検討)
  *
- * \x83p\x83\x89\x83\x81\x81[\x83^\x82\xAA String \x82̏ꍇ\x82͂\xBB\x82̂܂܁AInteger \x82̏ꍇ\x82\xCD ASCII \x83R\x81[\x83h\x82Ƃ݂Ȃ\xB5\x82Ă\xBB\x82̕\xB6\x8E\x9A\x82𑗂\xE9\x81B
- * Tera Term \x91\xA4\x82ł\xCD send \x93\x99\x82Ƌ\xA4\x92ʂ̃\x8B\x81[\x83`\x83\x93\x82\xAA\x8Eg\x82\xED\x82\xEA\x82\xE9\x88ׁADDE \x92ʐM\x82ׂ̈̃G\x83\x93\x83R\x81[\x83h\x82\xF0\x8Ds\x82\xA4\x95K\x97v\x97L\x82\xE8\x81B
+ * パラメータが String の場合はそのまま、Integer の場合は ASCII コードとみなしてその文字を送る。
+ * Tera Term 側では send 等と共通のルーチンが使われる為、DDE 通信の為のエンコードを行う必要有り。
  *   0x00 -> 0x01 0x01
  *   0x01 -> 0x01 0x02
  */
@@ -4072,7 +4143,7 @@
 	return 0;
 }
 
-// sendbroadcast / sendlnbroadcast \x82̓\xF1\x82‚\xA9\x82痘\x97p (crlf\x82̒l\x82œ\xAE\x8D\xEC\x82\xF0\x95ς\xA6\x82\xE9)
+// sendbroadcast / sendlnbroadcast の二つから利用 (crlfの値で動作を変える)
 static WORD TTLSendBroadcast(BOOL crlf)
 {
 	TStrVal buf;
@@ -4101,7 +4172,7 @@
 	return SendCmnd(CmdSetMulticastName, 0);
 }
 
-// sendmulticast / sendlnmulticast \x82̓\xF1\x82‚\xA9\x82痘\x97p (crlf\x82̒l\x82œ\xAE\x8D\xEC\x82\xF0\x95ς\xA6\x82\xE9)
+// sendmulticast / sendlnmulticast の二つから利用 (crlfの値で動作を変える)
 WORD TTLSendMulticast(BOOL crlf)
 {
 	TStrVal buf, Str;
@@ -4110,7 +4181,7 @@
 	if (! Linked)
 		return ErrLinkFirst;
 
-	// \x83}\x83\x8B\x83`\x83L\x83\x83\x83X\x83g\x8E\xAF\x95ʗp\x82̖\xBC\x91O\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B
+	// マルチキャスト識別用の名前を取得する。
 	Err = 0;
 	GetStrVal(Str,&Err);
 	if (Err!=0) return Err;
@@ -4441,9 +4512,9 @@
 						memset(subFmt, 0, sizeof(subFmt));
 					}
 					else {
-						// \x88\xEA\x82Ž\xE8\x91O\x82܂ł\xF0\x82\xBB\x82̂܂\xDC buf \x82Ɋi\x94[
+						// 一つ手前までをそのまま buf に格納
 						strncat_s(buf, sizeof(buf), subFmt, _TRUNCATE);
-						// \x8Ed\x90؂蒼\x82\xB5
+						// 仕切り直し
 						memset(subFmt, 0, sizeof(subFmt));
 						strncat_s(subFmt, sizeof(subFmt), p, 1);
 					}
@@ -4474,7 +4545,7 @@
 						type = STRING;
 					}
 
-					// "%" \x82\xC6 *p \x82̊Ԃ\xAA\x90\xB3\x82\xB5\x82\xA2\x82\xA9\x83`\x83F\x83b\x83N
+					// "%" と *p の間が正しいかチェック
 					str = (UChar* )subFmt;
 					end   = str + strlen(subFmt);
 					start = str;
@@ -4489,7 +4560,7 @@
 
 					strncat_s(subFmt, sizeof(subFmt), p, 1);
 
-					// width, precision \x82\xAA * \x82\xA9\x82ǂ\xA4\x82\xA9\x83`\x83F\x83b\x83N
+					// width, precision が * かどうかチェック
 					width_asterisk = precision_asterisk = 0;
 					if (region->num_regs != 3) {
 						SetResult(-1);
@@ -4518,7 +4589,7 @@
 					}
 					free(match_str);
 
-					// * \x82ɑΉ\x9E\x82\xB7\x82\xE9\x88\xF8\x90\x94\x82\xF0\x8E擾
+					// * に対応する引数を取得
 					if (width_asterisk) {
 						TmpErr = 0;
 						GetIntVal(&NumWidth, &TmpErr);
@@ -4539,7 +4610,7 @@
 					}
 
 					if (type == STRING || type == DOUBLE) {
-						// \x95\xB6\x8E\x9A\x97\xF1\x82Ƃ\xB5\x82ēǂ߂邩\x83g\x83\x89\x83C
+						// 文字列として読めるかトライ
 						TmpErr = 0;
 						GetStrVal(Str, &TmpErr);
 						if (TmpErr == 0) {
@@ -4579,7 +4650,7 @@
 						}
 					}
 					else {
-						// \x90\x94\x92l\x82Ƃ\xB5\x82ēǂ߂邩\x83g\x83\x89\x83C
+						// 数値として読めるかトライ
 						TmpErr = 0;
 						GetIntVal(&Num, &TmpErr);
 						if (TmpErr == 0) {
@@ -4631,8 +4702,8 @@
 		SetStrVal(VarId, buf);
 	}
 	else {
-		// \x83}\x83b\x83`\x82\xB5\x82\xBD\x8Ds\x82\xF0 inputstr \x82֊i\x94[\x82\xB7\x82\xE9
-		SetInputStr(buf);  // \x82\xB1\x82\xB1\x82Ńo\x83b\x83t\x83@\x82\xAA\x83N\x83\x8A\x83A\x82\xB3\x82\xEA\x82\xE9
+		// マッチした行を inputstr へ格納する
+		SetInputStr(buf);  // ここでバッファがクリアされる
 	}
 	SetResult(0);
 
@@ -4697,7 +4768,7 @@
 
 	if (Err!=0) return Err;
 
-	// C\x8C\xBE\x8C\xEA\x82ł\xCD16\x90i\x82\xCD0x\x82Ŏn\x82܂邪\x81ATTL\x8Ed\x97l\x82ł\xCD $ \x82Ŏn\x82܂邽\x82߁A\x8C\xE3\x8E҂\xE0\x83T\x83|\x81[\x83g\x82\xB7\x82\xE9\x81B
+	// C言語では16進は0xで始まるが、TTL仕様では $ で始まるため、後者もサポートする。
 	if (Str[0] == '$') {
 		memmove_s(Str + 2, sizeof(Str) - 2, Str + 1, strlen(Str));
 		Str[0] = '0';
@@ -4704,8 +4775,8 @@
 		Str[1] = 'x';
 	}
 
-	// '%d'\x82\xA9\x82\xE7'%i'\x82֕ύX\x82ɂ\xE6\x82\xE8\x81A10\x90i\x88ȊO\x82̐\x94\x92l\x82\xF0\x95ϊ\xB7\x82ł\xAB\x82\xE9\x82悤\x82ɂ\xB7\x82\xE9\x81B (2007.5.1 yutaka)
-	// \x89\xBA\x88ʌ݊\xB7\x90\xAB\x82̂\xBD\x82\xDF10\x90i\x82\xC616\x90i\x82݂̂̃T\x83|\x81[\x83g\x82Ƃ\xB7\x82\xE9\x81B(2007.5.2 yutaka)
+	// '%d'から'%i'へ変更により、10進以外の数値を変換できるようにする。 (2007.5.1 yutaka)
+	// 下位互換性のため10進と16進のみのサポートとする。(2007.5.2 yutaka)
 	// 10 : decimal
 	// 0x10, $10: hex
 	if (Str[0] == '0' && tolower(Str[1]) == 'x') {
@@ -4811,10 +4882,10 @@
 }
 
 /*
-  \x8F\x91\x8E\xAE: strmatch <\x95\xB6\x8E\x9A\x97\xF1> <\x90\xB3\x8BK\x95\\x8C\xBB>
-  <\x95\xB6\x8E\x9A\x97\xF1>\x82\xC9<\x90\xB3\x8BK\x95\\x8C\xBB>\x82\xAA\x83}\x83b\x83`\x82\xB7\x82邩\x92\xB2\x82ׂ\xE9\x83R\x83}\x83\x93\x83h(awk\x82\xCCmatch\x8A֐\x94\x91\x8A\x93\x96)\x81B
-  result\x82ɂ́A\x83}\x83b\x83`\x82\xB5\x82\xBD\x88ʒu\x82\xF0\x83Z\x83b\x83g(\x83}\x83b\x83`\x82\xB5\x82Ȃ\xA2\x8Fꍇ\x82\xCD0)\x81B
-  \x83}\x83b\x83`\x82\xB5\x82\xBD\x8Fꍇ\x82́Awaitregex\x82Ɠ\xAF\x97l\x82\xC9matchstr,groupmatchstr1-9\x82\xF0\x83Z\x83b\x83g\x81B
+  書式: strmatch <文字列> <正規表現>
+  <文字列>に<正規表現>がマッチするか調べるコマンド(awkのmatch関数相当)。
+  resultには、マッチした位置をセット(マッチしない場合は0)。
+  マッチした場合は、waitregexと同様にmatchstr,groupmatchstr1-9をセット。
  */
 WORD TTLStrMatch()
 {
@@ -4836,7 +4907,7 @@
 		result = 0;
 	}
 
-	// FindRegexStringOne\x82̒\x86\x82\xC5UnlockVar()\x82\xB3\x82\xEA\x82Ă\xB5\x82܂\xA4\x82̂ŁALockVar()\x82\xB5\x82Ȃ\xA8\x82\xB7\x81B
+	// FindRegexStringOneの中でUnlockVar()されてしまうので、LockVar()しなおす。
 	LockVar();
 
 	SetResult(result);
@@ -4880,11 +4951,11 @@
 	srclen = strlen(str);
 	addlen = strlen(addstr);
 
-	// \x82܂\xB8\x82͑}\x93\xFC\x82\xB3\x82\xEA\x82\xE9\x89ӏ\x8A\x88ȍ~\x82̃f\x81[\x83^\x82\xF0\x81A\x8C\xE3\x82\xEB\x82Ɉړ\xAE\x82\xB7\x82\xE9\x81B
+	// まずは挿入される箇所以降のデータを、後ろに移動する。
 	np = str + (index - 1);
 	memmove_s(np + addlen, MaxStrLen, np, srclen - (index - 1));
 
-	// \x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x91}\x93\xFC\x82\xB7\x82\xE9
+	// 文字列を挿入する
 	memcpy(np, addstr, addlen);
 
 	// null-terminate
@@ -4924,7 +4995,7 @@
 	return Err;
 }
 
-// \x95\xB6\x8E\x9A\x97\xF1 str \x82\xCC index \x95\xB6\x8E\x9A\x96ځi1\x83I\x83\x8A\x83W\x83\x93\x81j\x82\xA9\x82\xE7 len \x95\xB6\x8E\x9A\x8D폜\x82\xB7\x82\xE9
+// 文字列 str の index 文字目(1オリジン)から len 文字削除する
 static void remove_string(char *str, int index, int len)
 {
 	char *np;
@@ -4945,7 +5016,7 @@
 	        ^index(np)
 			     ^np+len 
 				 <-->srclen - len - index
-		    \x81\xAB
+		    ↓
 	   XXXXXXYYY
 	 */
 
@@ -5021,18 +5092,18 @@
 
 	oldlen = strlen(oldstr);
 
-	// strptr\x95\xB6\x8E\x9A\x97\xF1\x82\xCC pos \x95\xB6\x8E\x9A\x96ڈȍ~\x82ɂ\xA8\x82\xA2\x82āAoldstr \x82\xF0\x92T\x82\xB7\x81B
+	// strptr文字列の pos 文字目以降において、oldstr を探す。
 	p = tmpstr + pos;
 	ret = FindRegexStringOne(oldstr, oldlen, p, strlen(p));
-	// FindRegexStringOne\x82̒\x86\x82\xC5UnlockVar()\x82\xB3\x82\xEA\x82Ă\xB5\x82܂\xA4\x82̂ŁALockVar()\x82\xB5\x82Ȃ\xA8\x82\xB7\x81B
+	// FindRegexStringOneの中でUnlockVar()されてしまうので、LockVar()しなおす。
 	LockVar();
 	if (ret == 0) {
-		// \x8C\xA9\x82‚\xA9\x82\xE7\x82Ȃ\xA9\x82\xC1\x82\xBD\x8Fꍇ\x82́A"0"\x82Ŗ߂\xE9\x81B
+		// 見つからなかった場合は、"0"で戻る。
 		result = 0;
 		goto error;
 	}
 	else if (ret < 0) {
-		// \x90\xB3\x82\xB5\x82\xAD\x82Ȃ\xA2\x90\xB3\x8BK\x95\\x8C\xBB\x93\x99\x82ŃG\x83\x89\x81[\x82̏ꍇ\x82\xCD -1 \x82\xF0\x95Ԃ\xB7
+		// 正しくない正規表現等でエラーの場合は -1 を返す
 		result = -1;
 		goto error;
 	}
@@ -5107,34 +5178,34 @@
 	srcptr = StrVarPtr(VarId);
 	srclen = strlen(srcptr);
 
-	// \x8D폜\x82\xB7\x82镶\x8E\x9A\x82̃e\x81[\x83u\x83\x8B\x82\xF0\x8D\xEC\x82\xE9\x81B
+	// 削除する文字のテーブルを作る。
 	memset(table, 0, sizeof(table));
 	for (p = trimchars; *p ; p++) {
 		table[*p] = 1;
 	}
 
-	// \x95\xB6\x8E\x9A\x97\xF1\x82̐擪\x82\xA9\x82猟\x8D\x{142DC2}\xE9
+	// 文字列の先頭から検索する
 	for (i = 0 ; i < srclen ; i++) {
 		if (table[srcptr[i]] == 0) 
 			break;
 	}
-	// \x8D폜\x82\xB3\x82\xEA\x82Ȃ\xA2\x97L\x8C\xF8\x82ȕ\xB6\x8E\x9A\x97\xF1\x82̎n\x82܂\xE8\x81B
-	// \x82\xB7\x82ׂč폜\x91ΏۂƂȂ\xE9\x8Fꍇ\x82́Astart == srclen \x81B
+	// 削除されない有効な文字列の始まり。
+	// すべて削除対象となる場合は、start == srclen 。
 	start = i;  
 
-	// \x95\xB6\x8E\x9A\x97\xF1\x82̖\x96\x94\x{182A42}猟\x8D\x{142DC2}\xE9
+	// 文字列の末尾から検索する
 	for (i = srclen - 1 ; i >= 0 ; i--) {
 		if (table[srcptr[i]] == 0) 
 			break;
 	}
-	// \x8D폜\x82\xB3\x82\xEA\x82Ȃ\xA2\x97L\x8C\xF8\x82ȕ\xB6\x8E\x9A\x97\xF1\x82̏I\x82\xED\x82\xE8\x81B
-	// \x82\xB7\x82ׂč폜\x91ΏۂƂȂ\xE9\x8Fꍇ\x82́Aend == -1 \x81B
+	// 削除されない有効な文字列の終わり。
+	// すべて削除対象となる場合は、end == -1 。
 	end = i;
 
-	// \x96\x96\x94\xF6\x82\xF0\x8D\xED\x82\xE9
+	// 末尾を削る
 	srcptr[end + 1] = '\0';
 
-	// \x8E\x9F\x82ɁA\x90擪\x82\xA9\x82\xE7\x8D\xED\x82\xE9\x81B
+	// 次に、先頭から削る。
 	remove_string(srcptr, 1, start);
 
 	return Err;
@@ -5162,7 +5233,7 @@
 			// TODO array
 #if 0
 			Err = 0;
-			// Parameter \x82\xA9\x82\xE7 array \x82\xF0\x8E󂯎\xE6\x82\xE9
+			// Parameter から array を受け取る
 			if (Err==0) {
 				ary = TRUE;
 			}
@@ -5181,16 +5252,16 @@
 	if (!ary && (maxvar < 1 || maxvar > MAXVARNUM) )
 		return ErrSyntax;
 
-	// \x83f\x83\x8A\x83~\x83^\x82\xCD1\x95\xB6\x8E\x9A\x82݂̂Ƃ\xB7\x82\xE9\x81B
+	// デリミタは1文字のみとする。
 	len = strlen(delimchars);
 	if (len != 1)
 		return ErrSyntax;
 
 	srclen = strlen(src);
-	strcpy_s(buf, MaxStrLen, src);  /* \x94j\x89󂳂\xEA\x82Ă\xE0\x82\xA2\x82\xA2\x82悤\x82ɁA\x83R\x83s\x81[\x83o\x83b\x83t\x83@\x82\xF0\x8Eg\x82\xA4\x81B*/
+	strcpy_s(buf, MaxStrLen, src);  /* 破壊されてもいいように、コピーバッファを使う。*/
 
 #if 0
-	// \x83g\x81[\x83N\x83\x93\x82̐؂\xE8\x8Fo\x82\xB5\x82\xF0\x8Ds\x82\xA4\x81B
+	// トークンの切り出しを行う。
 	memset(tok, 0, sizeof(tok));
 #if 0
 	tok[0] = strtok_s(srcptr, delimchars, &last);
@@ -5200,8 +5271,8 @@
 			break;
 	} 
 #else
-	/* strtok\x82\xF0\x8Eg\x82\xA4\x82ƁA\x98A\x91\xB1\x82\xB5\x82\xBD\x8B\xE6\x90؂肪1\x82‚Ɋۂ߂\xE7\x82\xEA\x82邽\x82߁A\x8E\xA9\x91O\x82Ń|\x83C\x83\x93\x83^\x82\xF0
-	 * \x82\xBD\x82ǂ\xE9\x81B\x82\xBD\x82\xBE\x82\xB5\x81A\x8B\xE6\x90؂蕶\x8E\x9A\x82\xCD1\x82‚݂̂Ƃ\xB7\x82\xE9\x81B
+	/* strtokを使うと、連続した区切りが1つに丸められるため、自前でポインタを
+	 * たどる。ただし、区切り文字は1つのみとする。
 	 */
 	i = 0;
 	for (p = buf; *p == delimchars[0] ; p++) {
@@ -5229,11 +5300,11 @@
 		p = buf;
 		count = 1;
 		tok[count-1] = p;
-		for (i=0; i < srclen && count < maxvar + omit; i++) { // count \x8Fȗ\xAA\x8E\x9E\x82ɂ́A\x92\xB4\x89ߕ\xAA\x82\xF0\x8ÊĂ邽\x82\xDF 1 \x82—]\x95\xAA\x82ɐi\x82߂\xE9
+		for (i=0; i < srclen && count < maxvar + omit; i++) { // count 省略時には、超過分を捨てるため 1 つ余分に進める
 			if (*p == *delimchars) {
 				*p = '\0';
 				count++;
-				if (count <= MAXVARNUM) { // tok \x82̗v\x91f\x90\x94\x82𒴂\xA6\x82đ\xE3\x93\xFC\x82\xB5\x82Ȃ\xA2\x82悤\x82ɂ\xB7\x82\xE9(count \x8Fȗ\xAA\x8E\x9E\x82̂\xBD\x82\xDF)
+				if (count <= MAXVARNUM) { // tok の要素数を超えて代入しないようにする(count 省略時のため)
 					tok[count-1] = p+1;
 				}
 			}
@@ -5243,7 +5314,7 @@
 #endif
 
 //end:
-	// \x8C\x8B\x89ʂ̊i\x94[
+	// 結果の格納
 	for (i = 1 ; i <= count ; i++) {
 		SetGroupMatchStr(i, tok[i-1]);
 	}
@@ -5278,7 +5349,7 @@
 			// TODO array
 #if 0
 			Err = 0;
-			// Parameter \x82\xA9\x82\xE7 array \x82\xF0\x8E󂯎\xE6\x82\xE9
+			// Parameter から array を受け取る
 			if (Err==0) {
 				ary = TRUE;
 			}
@@ -5422,9 +5493,9 @@
 		Err = ErrSyntax;
 	if (Err!=0) return Err;
 
-	// Windows OS\x82\xAA\x8BN\x93\xAE\x82\xB5\x82Ă\xA9\x82\xE7\x82̌o\x89ߎ\x9E\x8Aԁi\x83~\x83\x8A\x95b\x81j\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B\x82\xBD\x82\xBE\x82\xB5\x81A49\x93\xFA\x82\xF0\x8Co\x89߂\xB7\x82\xE9\x82ƁA0\x82ɖ߂\xE9\x81B
-	// GetTickCount64() API(Vista\x88ȍ~)\x82\xF0\x8Eg\x82\xA4\x82ƁA\x83I\x81[\x83o\x81[\x83t\x83\x8D\x81[\x82\xB5\x82Ȃ\xAD\x82Ȃ邪\x81A\x82\xBB\x82\xE0\x82\xBB\x82\xE0Tera Term\x82ł\xCD
-	// 64bit\x95ϐ\x94\x82\xF0\x83T\x83|\x81[\x83g\x82\xB5\x82Ă\xA2\x82Ȃ\xA2\x82̂ŁA\x88Ӗ\xA1\x82\xAA\x82Ȃ\xA2\x81B
+	// Windows OSが起動してからの経過時間(ミリ秒)を取得する。ただし、49日を経過すると、0に戻る。
+	// GetTickCount64() API(Vista以降)を使うと、オーバーフローしなくなるが、そもそもTera Termでは
+	// 64bit変数をサポートしていないので、意味がない。
 	tick = GetTickCount();
 
 	SetIntVal(VarId, tick);
@@ -6370,7 +6441,7 @@
 							if (StrConst)
 								SetStrVal(VarId,Str);
 							else
-							// StrVarPtr \x82̕Ԃ\xE8\x92l\x82\xAA TStrVal \x82̃|\x83C\x83\x93\x83^\x82ł\xA0\x82邱\x82Ƃ\xF0\x8A\xFA\x91҂\xB5\x82ăT\x83C\x83Y\x82\xF0\x8CŒ\xE8
+							// StrVarPtr の返り値が TStrVal のポインタであることを期待してサイズを固定
 							// (2007.6.23 maya)
 								strncpy_s(StrVarPtr(VarId),MaxStrLen,StrVarPtr((TVarId)Val),_TRUNCATE);
 						break;
@@ -6430,7 +6501,7 @@
 	UnlockVar();
 }
 
-// \x90\xB3\x8BK\x95\\x8C\xBB\x82Ń}\x83b\x83`\x82\xB5\x82\xBD\x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x8BL\x98^\x82\xB7\x82\xE9
+// 正規表現でマッチした文字列を記録する
 // (2005.10.7 yutaka)
 void SetMatchStr(PCHAR Str)
 {
@@ -6442,7 +6513,7 @@
 		SetStrVal(VarId,Str);
 }
 
-// \x90\xB3\x8BK\x95\\x8C\xBB\x82ŃO\x83\x8B\x81[\x83v\x83}\x83b\x83`\x82\xB5\x82\xBD\x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x8BL\x98^\x82\xB7\x82\xE9
+// 正規表現でグループマッチした文字列を記録する
 // (2005.10.15 yutaka)
 void SetGroupMatchStr(int no, PCHAR Str)
 {

Modified: branches/cmake/teraterm/ttpmacro/ttmbuff.c
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttmbuff.c	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttmbuff.c	2018-11-30 16:50:02 UTC (rev 7296)
@@ -34,6 +34,7 @@
 #include <stdlib.h>
 #include "ttmparse.h"
 #include "ttlib.h"
+#include "win16api.h"
 
 #include "ttmbuff.h"
 
@@ -136,7 +137,7 @@
 
 BOOL LoadMacroFile(PCHAR FileName, int IBuff)
 {
-	int F;
+	HANDLE F;
 	int dummy_read = 0;
 	char basename[MAX_PATH];
 	unsigned int i, n;
@@ -176,7 +177,7 @@
 	}
 
 	F = _lopen(FileName,OF_READ);
-	if (F<=0) {
+	if (F == INVALID_HANDLE_VALUE) {
 		return FALSE;
 	}
 	BuffHandle[IBuff] = GlobalAlloc(GMEM_MOVEABLE, BuffLen[IBuff]);

Modified: branches/cmake/teraterm/ttpmacro/ttpmacro.v10.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttpmacro.v10.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttpmacro.v10.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
@@ -124,6 +124,7 @@
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="errdlg.cpp" />
     <ClCompile Include="inpdlg.cpp" />
     <ClCompile Include="ListDlg.cpp" />

Modified: branches/cmake/teraterm/ttpmacro/ttpmacro.v11.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttpmacro.v11.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttpmacro.v11.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
@@ -124,6 +124,7 @@
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="errdlg.cpp" />
     <ClCompile Include="inpdlg.cpp" />
     <ClCompile Include="ListDlg.cpp" />

Modified: branches/cmake/teraterm/ttpmacro/ttpmacro.v12.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttpmacro.v12.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttpmacro.v12.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
@@ -129,6 +129,7 @@
     <ClCompile Include="..\common\i18n.c" />
     <ClCompile Include="..\common\stdafx.cpp" />
     <ClCompile Include="..\common\ttlib.c" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="errdlg.cpp" />
     <ClCompile Include="inpdlg.cpp" />
     <ClCompile Include="ListDlg.cpp" />

Modified: branches/cmake/teraterm/ttpmacro/ttpmacro.v14.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttpmacro.v14.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttpmacro.v14.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
@@ -129,6 +129,7 @@
     <ClCompile Include="..\common\i18n.c" />
     <ClCompile Include="..\common\stdafx.cpp" />
     <ClCompile Include="..\common\ttlib.c" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="errdlg.cpp" />
     <ClCompile Include="inpdlg.cpp" />
     <ClCompile Include="ListDlg.cpp" />

Modified: branches/cmake/teraterm/ttpmacro/ttpmacro.v15.vcxproj
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttpmacro.v15.vcxproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttpmacro.v15.vcxproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -132,6 +132,7 @@
     <ClCompile Include="..\common\i18n.c" />
     <ClCompile Include="..\common\stdafx.cpp" />
     <ClCompile Include="..\common\ttlib.c" />
+    <ClCompile Include="..\common\win16api.c" />
     <ClCompile Include="errdlg.cpp" />
     <ClCompile Include="inpdlg.cpp" />
     <ClCompile Include="ListDlg.cpp" />
@@ -151,6 +152,7 @@
   <ItemGroup>
     <ClInclude Include="..\common\ttddecmnd.h" />
     <ClInclude Include="..\common\ttlib.h" />
+    <ClInclude Include="..\common\win16api.h" />
     <ClInclude Include="errdlg.h" />
     <ClInclude Include="inpdlg.h" />
     <ClInclude Include="ListDlg.h" />

Modified: branches/cmake/teraterm/ttpmacro/ttpmacro.v15.vcxproj.filters
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttpmacro.v15.vcxproj.filters	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttpmacro.v15.vcxproj.filters	2018-11-30 16:50:02 UTC (rev 7296)
@@ -73,6 +73,9 @@
     <ClCompile Include="wait4all.c">
       <Filter>Source Files %28C%29</Filter>
     </ClCompile>
+    <ClCompile Include="..\common\win16api.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="errdlg.h">
@@ -132,6 +135,9 @@
     <ClInclude Include="ttmparse.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\common\win16api.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <Image Include="ttmacro.ico">
@@ -146,4 +152,4 @@
       <Filter>Resource Files</Filter>
     </ResourceCompile>
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file

Modified: branches/cmake/teraterm/ttpmacro/ttpmacro.v9.vcproj
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttpmacro.v9.vcproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttpmacro.v9.vcproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -395,6 +395,10 @@
 				RelativePath="wait4all.c"
 				>
 			</File>
+			<File
+				RelativePath="..\common\win16api.c"
+				>
+			</File>
 		</Filter>
 	</Files>
 	<Globals>

Modified: branches/cmake/teraterm/ttpmacro/ttpmacro.vcproj
===================================================================
--- branches/cmake/teraterm/ttpmacro/ttpmacro.vcproj	2018-11-30 16:49:46 UTC (rev 7295)
+++ branches/cmake/teraterm/ttpmacro/ttpmacro.vcproj	2018-11-30 16:50:02 UTC (rev 7296)
@@ -400,6 +400,10 @@
 				RelativePath="wait4all.c"
 				>
 			</File>
+			<File
+				RelativePath="..\common\win16api.c"
+				>
+			</File>
 		</Filter>
 	</Files>
 	<Globals>


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