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\x82A\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\x82A\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\x82Alocaltime()\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>