From scmnotify @ osdn.net Sun Jun 6 22:56:43 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 06 Jun 2021 22:56:43 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkyOTldIOODgOOCpuODs+ODreODvOODiQ==?=
=?utf-8?b?5pyA5paw54mI44KSNC4xMDbjgavmm7TmlrA=?=
Message-ID: <1622987803.716028.1729.nullmailer@users.osdn.me>
Revision: 9299
https://osdn.net/projects/ttssh2/scm/svn/commits/9299
Author: zmatsuo
Date: 2021-06-06 22:56:43 +0900 (Sun, 06 Jun 2021)
Log Message:
-----------
ダウンロード最新版を4.106に更新
- 4.105 -> 4.106
Modified Paths:
--------------
trunk/doc/web/index.html.en
trunk/doc/web/index.html.ja
-------------- next part --------------
Modified: trunk/doc/web/index.html.en
===================================================================
--- trunk/doc/web/index.html.en 2021-05-31 11:19:45 UTC (rev 9298)
+++ trunk/doc/web/index.html.en 2021-06-06 13:56:43 UTC (rev 9299)
@@ -67,7 +67,7 @@
Download
-Latest version is available from OSDN download page. Current latest release is 4.105.
+Latest version is available from OSDN download page. Current latest release is 4.106.
Modified: trunk/doc/web/index.html.ja
===================================================================
--- trunk/doc/web/index.html.ja 2021-05-31 11:19:45 UTC (rev 9298)
+++ trunk/doc/web/index.html.ja 2021-06-06 13:56:43 UTC (rev 9299)
@@ -67,7 +67,7 @@
ダウンロード
-最新のリリースは、OSDN よりダウンロードすることができます。現在の最新版は 4.105 です。
+最新のリリースは、OSDN よりダウンロードすることができます。現在の最新版は 4.106 です。
From scmnotify @ osdn.net Sat Jun 12 23:39:03 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sat, 12 Jun 2021 23:39:03 +0900
Subject: [Ttssh2-commit] [9300] unfrozen
Message-ID: <1623508743.502041.7488.nullmailer@users.osdn.me>
Revision: 9300
https://osdn.net/projects/ttssh2/scm/svn/commits/9300
Author: zmatsuo
Date: 2021-06-12 23:39:03 +0900 (Sat, 12 Jun 2021)
Log Message:
-----------
unfrozen
Modified Paths:
--------------
branches/4-stable/installer/teraterm.iss
-------------- next part --------------
Modified: branches/4-stable/installer/teraterm.iss
===================================================================
--- branches/4-stable/installer/teraterm.iss 2021-06-06 13:56:43 UTC (rev 9299)
+++ branches/4-stable/installer/teraterm.iss 2021-06-12 14:39:03 UTC (rev 9300)
@@ -1,30 +1,30 @@
#define AppName "Tera Term"
#define AppVer "4.106"
-;#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', '');
+#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', '');
[InnoIDE_PreCompile]
Name: makechm.bat
-;Name: build.bat
-Name: build.bat; Parameters: rebuild
+Name: build.bat
+;Name: build.bat; Parameters: rebuild
[InnoIDE_PostCompile]
-Name: makearchive.bat; Parameters: release
+;Name: makearchive.bat; Parameters: release
[PreCompile]
Name: makechm.bat
-;Name: build.bat
-Name: build.bat; Parameters: rebuild
+Name: build.bat
+;Name: build.bat; Parameters: rebuild
[PostCompile]
-Name: makearchive.bat; Parameters: release
+;Name: makearchive.bat; Parameters: release
[_ISToolPreCompile]
Name: makechm.bat
-;Name: build.bat
-Name: build.bat; Parameters: rebuild
+Name: build.bat
+;Name: build.bat; Parameters: rebuild
[_ISToolPostCompile]
-Name: makearchive.bat; Parameters: release
+;Name: makearchive.bat; Parameters: release
[Setup]
AppCopyright=(C) 2004-2019 TeraTerm Project
From scmnotify @ osdn.net Sun Jun 13 00:26:02 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 13 Jun 2021 00:26:02 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMDFdIOODoeODouODquODquODvOOCrw==?=
=?utf-8?b?5L+u5q2j?=
Message-ID: <1623511562.514034.21139.nullmailer@users.osdn.me>
Revision: 9301
https://osdn.net/projects/ttssh2/scm/svn/commits/9301
Author: zmatsuo
Date: 2021-06-13 00:26:01 +0900 (Sun, 13 Jun 2021)
Log Message:
-----------
メモリリーク修正
- r9242
Revision Links:
--------------
https://osdn.net/projects/ttssh2/scm/svn/commits/9242
Modified Paths:
--------------
trunk/teraterm/ttpset/ttset.c
-------------- next part --------------
Modified: trunk/teraterm/ttpset/ttset.c
===================================================================
--- trunk/teraterm/ttpset/ttset.c 2021-06-12 14:39:03 UTC (rev 9300)
+++ trunk/teraterm/ttpset/ttset.c 2021-06-12 15:26:01 UTC (rev 9301)
@@ -38,6 +38,10 @@
#include
#include
#include
+#define _CRTDBG_MAP_ALLOC
+#include
+#include
+
#include "ttlib.h"
#include "tt_res.h"
#include "servicenames.h"
@@ -183,6 +187,7 @@
if (lenW != 0 && strA[lenA-1] == 0) {
lenA--;
}
+ free(strW);
return lenA;
}
@@ -4373,6 +4378,9 @@
break;
case DLL_PROCESS_ATTACH:
/* do process initialization */
+#ifdef _DEBUG
+ _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
+#endif
break;
case DLL_PROCESS_DETACH:
/* do process cleanup */
From scmnotify @ osdn.net Sun Jun 13 00:26:11 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 13 Jun 2021 00:26:11 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMDJdIENNYWtlTGlzdHMudHh0IOOBrg==?=
=?utf-8?b?44Or44O844Or44GM6YGp5b+c44GV44KM44Gq44GL44Gj44Gf?=
Message-ID: <1623511571.964992.21537.nullmailer@users.osdn.me>
Revision: 9302
https://osdn.net/projects/ttssh2/scm/svn/commits/9302
Author: zmatsuo
Date: 2021-06-13 00:26:11 +0900 (Sun, 13 Jun 2021)
Log Message:
-----------
CMakeLists.txt のルールが適応されなかった
- *.txt が後ろに書いてあるため
- r9281
- セクションの並び順を変更した
Revision Links:
--------------
https://osdn.net/projects/ttssh2/scm/svn/commits/9281
Modified Paths:
--------------
trunk/.editorconfig
-------------- next part --------------
Modified: trunk/.editorconfig
===================================================================
--- trunk/.editorconfig 2021-06-12 15:26:01 UTC (rev 9301)
+++ trunk/.editorconfig 2021-06-12 15:26:11 UTC (rev 9302)
@@ -22,12 +22,6 @@
charset = utf-8-bom
indent_style = space
-[{CMakeLists.txt,*.cmake}]
-end_of_line = crlf
-charset = utf-8-bom
-indent_style = space
-indent_size = 2
-
[*.pl]
end_of_line = crlf
charset = utf-8-bom
@@ -39,3 +33,9 @@
charset = cp932
indent_style = tab
indent_size = 4
+
+[{CMakeLists.txt,*.cmake}]
+end_of_line = crlf
+charset = utf-8-bom
+indent_style = space
+indent_size = 2
From scmnotify @ osdn.net Sun Jun 13 00:29:07 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 13 Jun 2021 00:29:07 +0900
Subject: [Ttssh2-commit] [9303] wcsdup() -> _wcsdup()
Message-ID: <1623511747.671501.23935.nullmailer@users.osdn.me>
Revision: 9303
https://osdn.net/projects/ttssh2/scm/svn/commits/9303
Author: zmatsuo
Date: 2021-06-13 00:29:07 +0900 (Sun, 13 Jun 2021)
Log Message:
-----------
wcsdup() -> _wcsdup()
- 警告対応
warning C4996: 'wcsdup': The POSIX name for this item is deprecated.
Instead, use the ISO C and C++ conformant name: _wcsdup.
See online help for details.
Modified Paths:
--------------
trunk/teraterm/common/dllutil.cpp
-------------- next part --------------
Modified: trunk/teraterm/common/dllutil.cpp
===================================================================
--- trunk/teraterm/common/dllutil.cpp 2021-06-12 15:26:11 UTC (rev 9302)
+++ trunk/teraterm/common/dllutil.cpp 2021-06-12 15:29:07 UTC (rev 9303)
@@ -98,7 +98,7 @@
HandleListCount++;
HandleList = (HandleList_t *)realloc(HandleList, sizeof(HandleList_t)*HandleListCount);
p = &HandleList[i];
- p->dllName = wcsdup(dllName);
+ p->dllName = _wcsdup(dllName);
p->handle = module;
p->LoadFlag = LoadFlag;
p->refCount = 1;
From scmnotify @ osdn.net Sun Jun 13 00:29:15 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 13 Jun 2021 00:29:15 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMDRdIGN5Z3Rlcm1fdCDjgaggZXRlcm1f?=
=?utf-8?b?bG9va2ZlZWxfdCDmp4vpgKDkvZPjgavjg6rjgrbjg7zjg5bjgpLov73liqA=?=
=?utf-8?b?44GX44Gf?=
Message-ID: <1623511755.547463.24088.nullmailer@users.osdn.me>
Revision: 9304
https://osdn.net/projects/ttssh2/scm/svn/commits/9304
Author: zmatsuo
Date: 2021-06-13 00:29:15 +0900 (Sun, 13 Jun 2021)
Log Message:
-----------
cygterm_t と eterm_lookfeel_t 構造体にリザーブを追加した
- この構造体のサイズが変化すると TTTSet構造体のサイズが変化する
- 大きな修正が必要となることが予想される
- Tera Term 4 の r9109
- 将来メンバを追加する時のため領域を確保
- plugin は再ビルドが必要
Revision Links:
--------------
https://osdn.net/projects/ttssh2/scm/svn/commits/9109
Modified Paths:
--------------
trunk/teraterm/common/tttypes.h
-------------- next part --------------
Modified: trunk/teraterm/common/tttypes.h
===================================================================
--- trunk/teraterm/common/tttypes.h 2021-06-12 15:29:07 UTC (rev 9303)
+++ trunk/teraterm/common/tttypes.h 2021-06-12 15:29:15 UTC (rev 9304)
@@ -340,6 +340,7 @@
int BGNoFrame;
char BGThemeFile[MAX_PATH];
int BGIgnoreThemeFile;
+ char reserve[20];
} eterm_lookfeel_t;
typedef struct cygterm {
@@ -354,6 +355,7 @@
BOOL login_shell;
BOOL home_chdir;
BOOL agent_proxy;
+ char reserve[20];
} cygterm_t;
/* TTTSet */
From scmnotify @ osdn.net Sun Jun 13 00:29:23 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 13 Jun 2021 00:29:23 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMDVdIFdJTjMyIEFQSSDjgafmloflrZc=?=
=?utf-8?b?5YiX44KS5YuV55qE44Gr5omx44GG44OY44Or44OR44KS5L2c5oiQ?=
Message-ID: <1623511763.529055.24251.nullmailer@users.osdn.me>
Revision: 9305
https://osdn.net/projects/ttssh2/scm/svn/commits/9305
Author: zmatsuo
Date: 2021-06-13 00:29:23 +0900 (Sun, 13 Jun 2021)
Log Message:
-----------
WIN32 API で文字列を動的に扱うヘルパを作成
- 最大長を気にしなくてもよい
- 文字列が不要になったらfree()する
- ヘルパAPI
- GetModuleFileNameW()
- GetPrivateProfileStringW()
- GetFullPathNameW()
Modified Paths:
--------------
trunk/teraterm/common/CMakeLists.txt
trunk/teraterm/common/common_static.v16.vcxproj
trunk/teraterm/common/common_static.v8.vcproj
Added Paths:
-----------
trunk/teraterm/common/win32helper.cpp
trunk/teraterm/common/win32helper.h
-------------- next part --------------
Modified: trunk/teraterm/common/CMakeLists.txt
===================================================================
--- trunk/teraterm/common/CMakeLists.txt 2021-06-12 15:29:15 UTC (rev 9304)
+++ trunk/teraterm/common/CMakeLists.txt 2021-06-12 15:29:23 UTC (rev 9305)
@@ -41,6 +41,8 @@
ttlib_static_cpp.cpp
win16api.c
win16api.h
+ win32helper.cpp
+ win32helper.h
)
target_include_directories(
Modified: trunk/teraterm/common/common_static.v16.vcxproj
===================================================================
--- trunk/teraterm/common/common_static.v16.vcxproj 2021-06-12 15:29:15 UTC (rev 9304)
+++ trunk/teraterm/common/common_static.v16.vcxproj 2021-06-12 15:29:23 UTC (rev 9305)
@@ -152,6 +152,7 @@
+
@@ -169,6 +170,7 @@
+
Modified: trunk/teraterm/common/common_static.v8.vcproj
===================================================================
--- trunk/teraterm/common/common_static.v8.vcproj 2021-06-12 15:29:15 UTC (rev 9304)
+++ trunk/teraterm/common/common_static.v8.vcproj 2021-06-12 15:29:23 UTC (rev 9305)
@@ -312,6 +312,14 @@
RelativePath=".\win16api.h"
>
+
+
+
+
Added: trunk/teraterm/common/win32helper.cpp
===================================================================
--- trunk/teraterm/common/win32helper.cpp (rev 0)
+++ trunk/teraterm/common/win32helper.cpp 2021-06-12 15:29:23 UTC (rev 9305)
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2021- TeraTerm Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include
+#define _CRTDBG_MAP_ALLOC
+#include
+#include
+
+#include "win32helper.h"
+
+/**
+ * GetModuleFileNameW() \x82̓\xAE\x93I\x83o\x83b\x83t\x83@\x94\xC5
+ *
+ * @param buf \x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x8Ai\x94[\x82\xB7\x82\xE9\x83o\x83b\x83t\x83@
+ * \x95s\x97v\x82ɂȂ\xC1\x82\xBD\x82\xE7free()\x82\xB7\x82\xE9
+ * @return \x83G\x83\x89\x81[\x83R\x81[\x83h,0(=NO_ERROR)\x82̂Ƃ\xAB\x83G\x83\x89\x81[\x82Ȃ\xB5
+ */
+DWORD hGetModuleFileNameW(HMODULE hModule, wchar_t **buf)
+{
+ size_t size = MAX_PATH;
+ wchar_t *b = (wchar_t*)malloc(sizeof(wchar_t) * size);
+ DWORD error;
+ if (b == NULL) {
+ error = ERROR_NOT_ENOUGH_MEMORY;
+ goto error_return;
+ }
+
+ for(;;) {
+ DWORD r = GetModuleFileNameW(hModule, b, (DWORD)size);
+ if (r == 0) {
+ // \x8A\x94\x82\xAA\x8E\xB8\x94s
+ error = GetLastError();
+ break;
+ } else if (r < size - 1) {
+ // \x8E擾\x90\xAC\x8C\xF7
+ size = r + 1;
+ b = (wchar_t*)realloc(b, sizeof(wchar_t) * size);
+ *buf = b;
+ return NO_ERROR;
+ } else {
+ size *= 2;
+ wchar_t *p = (wchar_t*)realloc(b, sizeof(wchar_t) * size);
+ if (p == NULL) {
+ free(b);
+ error = ERROR_NOT_ENOUGH_MEMORY;
+ break;
+ }
+ b = p;
+ }
+ }
+
+ // error
+ free(b);
+error_return:
+ *buf = NULL;
+ return error;
+}
+
+/**
+ * GetPrivateProfileStringW() \x82̓\xAE\x93I\x83o\x83b\x83t\x83@\x94\xC5
+ *
+ * @param str \x95\xB6\x8E\x9A\x97\xF1\x82\xF0\x8Ai\x94[\x82\xB7\x82\xE9\x83o\x83b\x83t\x83@
+ * \x95s\x97v\x82ɂȂ\xC1\x82\xBD\x82\xE7free()\x82\xB7\x82\xE9
+ * @return \x83G\x83\x89\x81[\x83R\x81[\x83h,0(=NO_ERROR)\x82̂Ƃ\xAB\x83G\x83\x89\x81[\x82Ȃ\xB5
+ */
+DWORD hGetPrivateProfileStringW(const wchar_t *section, const wchar_t *key, const wchar_t *def, const wchar_t *ini, wchar_t **str)
+{
+ size_t size = 256;
+ wchar_t *b = (wchar_t*)malloc(sizeof(wchar_t) * size);
+ DWORD error;
+ if (b == NULL) {
+ error = ERROR_NOT_ENOUGH_MEMORY;
+ goto error_return;
+ }
+ b[0] = 0;
+ for(;;) {
+ DWORD r = GetPrivateProfileStringW(section, key, def, b, (DWORD)size, ini);
+ if (r == 0 || b[0] == L'\0') {
+ // \x8E\x9F\x82̏ꍇ\x82\xB1\x82\xB1\x82ɓ\xFC\x82\xE9
+ // ini\x82\xC9'key='\x82ƋL\x8Fq ("="\x82̌\xE3\x82ɉ\xBD\x82\xE0\x8F\x91\x82\xA2\x82Ă\xA2\x82Ȃ\xA2)
+ // ini\x82\xC9'key=...' \x82\xAA\x91\xB6\x8D݂\xB5\x82Ȃ\xA2 \x82\xA9\x82\xC2 def=NULL
+ free(b);
+ *str = NULL;
+ return NO_ERROR;
+ } else if (r < size - 2) {
+ size = r + 1;
+ b = (wchar_t *)realloc(b, sizeof(wchar_t) * size);
+ *str = b;
+ return NO_ERROR;
+ } else {
+ wchar_t *p;
+ size *= 2;
+ p = (wchar_t*)realloc(b, sizeof(wchar_t) * size);
+ if (p == NULL) {
+ free(b);
+ error = ERROR_NOT_ENOUGH_MEMORY;
+ break;
+ }
+ b = p;
+ }
+ }
+
+ // error
+ free(b);
+error_return:
+ *str = NULL;
+ return error;
+}
+
+/**
+ * GetFullPathNameW() \x82̓\xAE\x93I\x83o\x83b\x83t\x83@\x94\xC5
+ *
+ * @param fullpath fullpath\x82\xF0\x8Ai\x94[\x82\xB7\x82\xE9\x83o\x83b\x83t\x83@
+ * \x95s\x97v\x82ɂȂ\xC1\x82\xBD\x82\xE7free()\x82\xB7\x82\xE9
+ * @return \x83G\x83\x89\x81[\x83R\x81[\x83h,0(=NO_ERROR)\x82̂Ƃ\xAB\x83G\x83\x89\x81[\x82Ȃ\xB5
+ */
+DWORD hGetFullPathNameW(const wchar_t *lpFileName, wchar_t **fullpath, wchar_t **filepart)
+{
+ size_t len = GetFullPathNameW(lpFileName, 0, NULL, NULL); // include L'\0'
+ if (len == 0) {
+ *fullpath = NULL;
+ *filepart = NULL;
+ return GetLastError();
+ }
+ wchar_t *path = (wchar_t *)malloc(sizeof(wchar_t) * len);
+ wchar_t *file;
+ len = GetFullPathNameW(lpFileName, (DWORD)len, path, &file);
+ if (len == 0) {
+ free(path);
+ return GetLastError();
+ }
+ if (filepart != NULL) {
+ *filepart = file;
+ }
+ *fullpath = path;
+ return NO_ERROR;
+}
Added: trunk/teraterm/common/win32helper.h
===================================================================
--- trunk/teraterm/common/win32helper.h (rev 0)
+++ trunk/teraterm/common/win32helper.h 2021-06-12 15:29:23 UTC (rev 9305)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2021- TeraTerm Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+DWORD hGetModuleFileNameW(HMODULE hModule, wchar_t **buf);
+DWORD hGetPrivateProfileStringW(const wchar_t *section, const wchar_t *key, const wchar_t *def, const wchar_t *ini, wchar_t **str);
+DWORD hGetFullPathNameW(const wchar_t *lpFileName, wchar_t **fullpath, wchar_t **filepart);
+
+#ifdef __cplusplus
+}
+#endif
From scmnotify @ osdn.net Sun Jun 13 00:29:32 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 13 Jun 2021 00:29:32 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMDZdIFRUVFNldOani+mAoOS9k+OBrg==?=
=?utf-8?b?44OV44Kh44Kk44Or44KS5L+d5oyB44GZ44KL44Oh44Oz44OQ44KSVW5pY29k?=
=?utf-8?b?ZeWMlizli5XnmoTjg5Djg4Pjg5XjgqHljJbjgZfjgZ8=?=
Message-ID: <1623511772.697844.24356.nullmailer@users.osdn.me>
Revision: 9306
https://osdn.net/projects/ttssh2/scm/svn/commits/9306
Author: zmatsuo
Date: 2021-06-13 00:29:32 +0900 (Sun, 13 Jun 2021)
Log Message:
-----------
TTTSet構造体のファイルを保持するメンバをUnicode化,動的バッファ化した
- common/tttypes.h
- 次のメンバを追加
- wchar_t *HomeDirW;
- wchar_t *SetupFNameW;
- wchar_t *KeyCnfFNW;
- wchar_t *LogFNW;
- wchar_t *MacroFNW;
- wchar_t *UILanguageFileW;
- wchar_t *UILanguageFileW_ini;
- 主要なメンバのみ
- 従来の(ANSI文字列版)メンバーも利用可能
- Unicode版から変換
- 従来通りのフォルダ名に従来通りのファイル名で使用すれば問題は起きないはず
- Tera Term内部はほとんど従来通り(ANSI文字版)を使用
Modified Paths:
--------------
trunk/teraterm/common/codeconv.cpp
trunk/teraterm/common/codeconv.h
trunk/teraterm/common/ttlib.c
trunk/teraterm/common/ttlib.h
trunk/teraterm/common/ttlib_static_cpp.cpp
trunk/teraterm/common/tttypes.h
trunk/teraterm/teraterm/vtwin.cpp
trunk/teraterm/ttpcmn/ttcmn.c
trunk/teraterm/ttpdlg/ttdlg.c
trunk/teraterm/ttpmacro/ttmacro.cpp
trunk/teraterm/ttpmacro/ttmdlg.cpp
trunk/teraterm/ttpmacro/ttmdlg.h
trunk/teraterm/ttpset/ttset.c
trunk/ttpmenu/ttpmenu.cpp
-------------- next part --------------
Modified: trunk/teraterm/common/codeconv.cpp
===================================================================
--- trunk/teraterm/common/codeconv.cpp 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/common/codeconv.cpp 2021-06-12 15:29:32 UTC (rev 9306)
@@ -1026,6 +1026,36 @@
return wstr_ptr;
}
+/**
+ * WideCharToMultiByte() \x82\xCC TRUNCATE + CP_ACP \x94\xC5
+ * wchar_t \x82̃p\x83X,\x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0 char \x82ɕϊ\xB7\x82\xB7\x82\xE9\x82Ƃ\xAB\x82Ɏg\x97p
+ *
+ * @param[in] wstr_ptr wchar_t \x82̕\xB6\x8E\x9A\x97\xF1
+ * @param[in,out] mb_ptr char \x95\xB6\x8E\x9A\x97\xF1\x8Fo\x97͐\xE6ptr
+ * @param[in] mb_len char \x95\xB6\x8E\x9A\x97\xF1\x8Fo\x97͐\xE6\x83T\x83C\x83Y
+ */
+void WideCharToACP_t(const wchar_t *wstr_ptr, char *mb_ptr, size_t mb_len)
+{
+ const DWORD flags = 0;
+ size_t out_len = WideCharToMultiByte(CP_ACP, flags, wstr_ptr, -1, mb_ptr, mb_len, NULL, NULL);
+ if (out_len == 0) {
+ // \x95ϊ\xB7\x8E\xB8\x94s
+ DWORD err = GetLastError();
+ if (err == ERROR_INSUFFICIENT_BUFFER) {
+ // wstr_ptr \x82̒\xB7\x82\xB3\x82\xF0 -1 \x82Ŏw\x92肵\x82āAmb_len \x82\xAA\x95s\x91\xAB\x82\xB5\x82Ă\xA2\x82\xE9\x82Ƃ\xAB
+ // \x83o\x83b\x83t\x83@\x82\xA2\x82\xC1\x82ς\xA2\x82ɕϊ\xB7\x82͍s\x82\xED\x82\xEA\x82Ă\xA2\x82\xE9
+ mb_ptr[mb_len - 1] = 0;
+ }
+ else {
+ mb_ptr[0] = 0;
+ }
+ }
+ else if (out_len == mb_len) {
+ // TRUNCATE
+ mb_ptr[mb_len - 1] = 0;
+ }
+}
+
char *ToCharW(const wchar_t *strW)
{
if (strW == NULL) return NULL;
Modified: trunk/teraterm/common/codeconv.h
===================================================================
--- trunk/teraterm/common/codeconv.h 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/common/codeconv.h 2021-06-12 15:29:32 UTC (rev 9306)
@@ -57,6 +57,7 @@
void WideCharToUTF32(const wchar_t *wstr_ptr, size_t *wstr_len_,
char32_t *u32_ptr, size_t *u32_len_);
int UTF8ToWideChar(const char *u8_ptr, int u8_len, wchar_t *wstr_ptr, int wstr_len);
+void WideCharToACP_t(const wchar_t *wstr_ptr, char *mb_ptr, size_t mb_len);
// API wrappers
char *_WideCharToMultiByte(const wchar_t *wstr_ptr, size_t wstr_len, int code_page, size_t *mb_len_);
Modified: trunk/teraterm/common/ttlib.c
===================================================================
--- trunk/teraterm/common/ttlib.c 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/common/ttlib.c 2021-06-12 15:29:32 UTC (rev 9306)
@@ -42,6 +42,7 @@
#include "teraterm.h"
#include "tttypes.h"
#include "compat_win.h"
+#include "codeconv.h"
#include "../teraterm/unicode_test.h"
@@ -982,32 +983,6 @@
}
/*
- * Get home(exe,dll) directory
- * @param[in] hInst WinMain()\x82\xCC HINSTANCE \x82܂\xBD\x82\xCD NULL
- * @param[in,out] HomeDir
- * @param[out] HomeDirLen
- */
-void GetHomeDir(HINSTANCE hInst, char *HomeDir, size_t HomeDirLen)
-{
- char Temp[MAX_PATH];
- DWORD result = GetModuleFileName(NULL,Temp,sizeof(Temp));
- if (result == 0 || result == _countof(Temp)) {
- // \x83p\x83X\x82̎擾\x82Ɏ\xB8\x94s\x82\xB5\x82\xBD\x81B\x92v\x96\xBD\x93I\x81Aabort() \x82\xB7\x82\xE9\x81B
- abort();
- // \x82\xB1\x82\xB1\x82\xC5return\x82\xB5\x82Ă\xE0\x83v\x83\x89\x83O\x83C\x83\x93(ttpset.dll)\x82̃\x8D\x81[\x83h\x82Ɏ\xB8\x94s\x82\xB5\x82\xC4abort()\x82\xB7\x82\xE9
- }
- ExtractDirName(Temp, Temp);
- strncpy_s(HomeDir, HomeDirLen, Temp, _TRUNCATE);
-}
-
-// \x83f\x83t\x83H\x83\x8B\x83g\x82\xCC TERATERM.INI \x82̃t\x83\x8B\x83p\x83X\x82\xF0 ttpmacro \x82\xA9\x82\xE7\x82\xE0
-// \x8E擾\x82\xB7\x82邽\x82߂ɒlj\xC1\x82\xB5\x82\xBD\x81B(2007.2.18 maya)
-void GetDefaultSetupFName(const char *home, char *dest, int destlen)
-{
- GetDefaultFName(home, "TERATERM.INI", dest, destlen);
-}
-
-/*
* UILanguageFile\x82̃t\x83\x8B\x83p\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9
*
* @param[in] HomeDir exe,dll\x82̑\xB6\x8D݂\xB7\x82\xE9\x83t\x83H\x83\x8B\x83_ GetHomeDir()\x82Ŏ擾\x82ł\xAB\x82\xE9
@@ -1027,43 +1002,30 @@
SetCurrentDirectory(CurDir);
}
-void GetUILanguageFile(char *buf, int buflen)
-{
- char HomeDir[MAX_PATH];
- char Temp[MAX_PATH];
- char SetupFName[MAX_PATH];
-
- /* Get home directory */
- GetHomeDir(NULL, HomeDir, sizeof(HomeDir));
-
- /* Get SetupFName */
- GetDefaultSetupFName(HomeDir, SetupFName, sizeof(SetupFName));
-
- /* Get LanguageFile name */
- GetPrivateProfileString("Tera Term", "UILanguageFile", "lang\\Default.lng",
- Temp, sizeof(Temp), SetupFName);
-
- GetUILanguageFileFull(HomeDir, Temp, buf, buflen);
-}
-
// \x8Ew\x92肵\x82\xBD\x83G\x83\x93\x83g\x83\x8A\x82\xF0 teraterm.ini \x82\xA9\x82\xE7\x93ǂݎ\xE6\x82\xE9 (2009.3.23 yutaka)
void GetOnOffEntryInifile(char *entry, char *buf, int buflen)
{
- char HomeDir[MAX_PATH];
- char Temp[MAX_PATH];
- char SetupFName[MAX_PATH];
+ wchar_t *HomeDirW;
+ wchar_t Temp[MAX_PATH];
+ wchar_t *SetupFName;
+ wchar_t *entryW = ToWcharA(entry);
+ char * TempA;
/* Get home directory */
- GetHomeDir(NULL, HomeDir, sizeof(HomeDir));
+ HomeDirW = GetHomeDirW(NULL);
/* Get SetupFName */
- GetDefaultSetupFName(HomeDir, SetupFName, sizeof(SetupFName));
+ SetupFName = GetDefaultSetupFNameW(HomeDirW);
/* Get LanguageFile name */
- GetPrivateProfileString("Tera Term", entry, "off",
- Temp, sizeof(Temp), SetupFName);
+ GetPrivateProfileStringW(L"Tera Term", entryW, L"off",
+ Temp, _countof(Temp), SetupFName);
- strncpy_s(buf, buflen, Temp, _TRUNCATE);
+ TempA = ToCharW(Temp);
+ strncpy_s(buf, buflen, TempA, _TRUNCATE);
+ free(HomeDirW);
+ free(SetupFName);
+ free(TempA);
}
void get_lang_msgW(const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile)
Modified: trunk/teraterm/common/ttlib.h
===================================================================
--- trunk/teraterm/common/ttlib.h 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/common/ttlib.h 2021-06-12 15:29:32 UTC (rev 9306)
@@ -46,6 +46,7 @@
BOOL GetFileNamePosW(const wchar_t *PathName, size_t *DirLen, size_t *FNPos);
DllExport BOOL ExtractFileName(PCHAR PathName, PCHAR FileName, int destlen);
DllExport BOOL ExtractDirName(PCHAR PathName, PCHAR DirName);
+wchar_t *ExtractDirNameW(const wchar_t *PathName);
void FitFileName(PCHAR FileName, int destlen, const char *DefExt);
void AppendSlash(PCHAR Path, int destlen);
void AppendSlashW(wchar_t *Path, size_t destlen);
@@ -79,12 +80,13 @@
void GetNthNum(PCHAR Source, int Nth, int far *Num);
int GetNthNum2(PCHAR Source, int Nth, int defval);
void GetDownloadFolder(char *dest, int destlen);
-void GetHomeDir(HINSTANCE hInst, char *HomeDir, size_t HomeDirLen);
+wchar_t *GetHomeDirW(HINSTANCE hInst);
void GetDefaultFName(const char *home, const char *file, char *dest, int destlen);
-void GetDefaultSetupFName(const char *home, char *dest, int destlen);
-void GetUILanguageFile(char *buf, int buflen);
+wchar_t *GetDefaultFNameW(const wchar_t *home, const wchar_t *file);
+wchar_t *GetDefaultSetupFNameW(const wchar_t *home);
void GetUILanguageFileFull(const char *HomeDir, const char *UILanguageFileRel,
char *UILanguageFileFull, size_t UILanguageFileFullLen);
+wchar_t *GetUILanguageFileFullW(const wchar_t *HomeDir, const wchar_t *UILanguageFileRel);
void GetOnOffEntryInifile(char *entry, char *buf, int buflen);
void get_lang_msg(const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile);
void get_lang_msgW(const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile);
Modified: trunk/teraterm/common/ttlib_static_cpp.cpp
===================================================================
--- trunk/teraterm/common/ttlib_static_cpp.cpp 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/common/ttlib_static_cpp.cpp 2021-06-12 15:29:32 UTC (rev 9306)
@@ -35,10 +35,13 @@
#include
#include
#include
+#include
#include "i18n.h"
#include "layer_for_unicode.h"
#include "asprintf.h"
+#include "win32helper.h"
+#include "codeconv.h"
#include "ttlib.h"
@@ -794,3 +797,116 @@
return (int)j;
}
+
+/**
+ * ExtractDirName() \x82\xCC wchar_t \x94\xC5
+ */
+wchar_t *ExtractDirNameW(const wchar_t *PathName)
+{
+ size_t i;
+ wchar_t *DirName = _wcsdup(PathName);
+ if (!GetFileNamePosW(DirName, &i, NULL))
+ return NULL;
+ DirName[i] = 0;
+ return DirName;
+}
+
+/*
+ * Get home(exe,dll) directory
+ *
+ * @param[in] hInst WinMain()\x82\xCC HINSTANCE \x82܂\xBD\x82\xCD NULL
+ * @return HomeDir
+ */
+wchar_t *GetHomeDirW(HINSTANCE hInst)
+{
+ wchar_t *TempW;
+ wchar_t *dir;
+ DWORD error = hGetModuleFileNameW(NULL, &TempW);
+ if (error != 0) {
+ // \x83p\x83X\x82̎擾\x82Ɏ\xB8\x94s\x82\xB5\x82\xBD\x81B\x92v\x96\xBD\x93I\x81Aabort() \x82\xB7\x82\xE9\x81B
+ abort();
+ // \x82\xB1\x82\xB1\x82\xC5return\x82\xB5\x82Ă\xE0\x83v\x83\x89\x83O\x83C\x83\x93(ttpset.dll)\x82̃\x8D\x81[\x83h\x82Ɏ\xB8\x94s\x82\xB5\x82\xC4abort()\x82\xB7\x82\xE9
+ }
+ dir = ExtractDirNameW(TempW);
+ free(TempW);
+ return dir;
+}
+
+/*
+ * UILanguageFile\x82̃t\x83\x8B\x83p\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9
+ *
+ * @param[in] HomeDir exe,dll\x82̑\xB6\x8D݂\xB7\x82\xE9\x83t\x83H\x83\x8B\x83_ GetHomeDir()\x82Ŏ擾\x82ł\xAB\x82\xE9
+ * @param[in] UILanguageFileRel lng\x83t\x83@\x83C\x83\x8B\x81AHomeDir\x82\xA9\x82\xE7\x82̑\x8A\x91p\x83X
+ * @param[in,out] UILanguageFileFull lng\x83t\x83@\x83C\x83\x8Bptr\x81A\x83t\x83\x8B\x83p\x83X
+ * @param[in] UILanguageFileFullLen lng\x83t\x83@\x83C\x83\x8Blen\x81A\x83t\x83\x8B\x83p\x83X
+ */
+wchar_t *GetUILanguageFileFullW(const wchar_t *HomeDir, const wchar_t *UILanguageFileRel)
+{
+ wchar_t *fullpath;
+ size_t size = wcslen(HomeDir) + 1 + wcslen(UILanguageFileRel) + 1;
+ wchar_t *rel = (wchar_t *)malloc(sizeof(wchar_t) * size);
+ wcscpy(rel, HomeDir);
+ wcscat(rel, L"\\");
+ wcscat(rel, UILanguageFileRel);
+ hGetFullPathNameW(rel, &fullpath, NULL);
+ free(rel);
+ return fullpath;
+}
+
+/**
+ * \x90ݒ\xE8\x83t\x83@\x83C\x83\x8B\x82̃t\x83\x8B\x83p\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9
+ * GetDefaultFName() \x82\xCC wchar_t\x94\xC5
+ *
+ * @param[in] home ttermpro.exe \x93\x99\x82̎\xC0\x8Ds\x83t\x83@\x83C\x83\x8B\x82̂\xA0\x82\xE9\x83t\x83H\x83\x8B\x83_
+ * My Documents \x82Ƀt\x83@\x83C\x83\x8B\x82\xAA\x82\xA0\x82\xC1\x82\xBD\x8Fꍇ\x82͎g\x97p\x82\xB3\x82\xEA\x82Ȃ\xA2
+ * @param[in] file \x90ݒ\xE8\x83t\x83@\x83C\x83\x8B\x96\xBC
+ * @return \x83t\x83\x8B\x83p\x83X
+ */
+wchar_t *GetDefaultFNameW(const wchar_t *home, const wchar_t *file)
+{
+ // My Documents \x82\xC9 file \x82\xAA\x82\xA0\x82\xE9\x8Fꍇ\x81A
+ // \x82\xBB\x82\xEA\x82\xF0\x93ǂݍ\x9E\x82ނ悤\x82ɂ\xB5\x82\xBD\x81B(2007.2.18 maya)
+ wchar_t MyDoc[MAX_PATH];
+ LPITEMIDLIST pidl;
+
+ IMalloc *pmalloc;
+ SHGetMalloc(&pmalloc);
+ if (SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl) == S_OK) {
+ SHGetPathFromIDListW(pidl, MyDoc);
+ pmalloc->Free(pidl);
+ pmalloc->Release();
+ }
+ else {
+ pmalloc->Release();
+ MyDoc[0] = 0;
+ }
+
+ if (MyDoc[0] != 0) {
+ // My Documents \x82\xC9 file \x82\xAA\x82\xA0\x82邩?
+ size_t destlen = (wcslen(MyDoc) + wcslen(file) + 1 + 1) * sizeof(wchar_t);
+ wchar_t *dest = (wchar_t *)malloc(sizeof(wchar_t) * destlen);
+ wcscpy(dest, MyDoc);
+ AppendSlashW(dest,destlen);
+ wcsncat_s(dest, destlen, file, _TRUNCATE);
+ if (GetFileAttributesW(dest) != INVALID_FILE_ATTRIBUTES) {
+ // My Documents \x82̐ݒ\xE8\x83t\x83@\x83C\x83\x8B
+ return dest;
+ }
+ free(dest);
+ }
+
+ size_t destlen = (wcslen(home) + wcslen(file) + 1 + 1) * sizeof(wchar_t);
+ wchar_t *dest = (wchar_t *)malloc(sizeof(wchar_t) * destlen);
+ wcscpy(dest, home);
+ AppendSlashW(dest,destlen);
+ wcsncat_s(dest, destlen, file, _TRUNCATE);
+ return dest;
+}
+
+// \x83f\x83t\x83H\x83\x8B\x83g\x82\xCC TERATERM.INI \x82̃t\x83\x8B\x83p\x83X\x82\xF0\x8E擾
+wchar_t *GetDefaultSetupFNameW(const wchar_t *home)
+{
+ const wchar_t *ini = L"TERATERM.INI";
+ wchar_t *buf = GetDefaultFNameW(home, ini);
+ return buf;
+}
Modified: trunk/teraterm/common/tttypes.h
===================================================================
--- trunk/teraterm/common/tttypes.h 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/common/tttypes.h 2021-06-12 15:29:32 UTC (rev 9306)
@@ -362,7 +362,7 @@
struct tttset {
/*------ VTSet --------*/
/* Tera Term home directory */
- char HomeDir[MAXPATHLEN];
+ char HomeDir[MAXPATHLEN]; // ttermpro.exe \x82̂\xA0\x82\xE9\x83t\x83H\x83\x8B\x83_
/* Setup file name */
char SetupFName[MAX_PATH];
@@ -526,7 +526,7 @@
#ifdef USE_NORMAL_BGCOLOR
WORD UseNormalBGColor;
#endif
- char UILanguageFile[MAX_PATH];
+ char UILanguageFile[MAX_PATH]; // \x90\xE2\x91p\x83X
char UIMsg[MAX_UIMSG];
WORD BroadcastCommandHistory;
WORD AcceptBroadcast; // 337: 2007/03/20
@@ -539,7 +539,7 @@
WORD DisableAppCursor;
WORD ClearComBuffOnOpen;
WORD Send8BitCtrl;
- char UILanguageFile_ini[MAX_PATH];
+ char UILanguageFile_ini[MAX_PATH]; // \x91\x8A\x91p\x83X,ini\x83t\x83@\x83C\x83\x8B\x82̒\x86\x90g
WORD SelectOnlyByLButton;
WORD TelAutoDetect;
char XModemRcvCommand[MAX_PATH];
@@ -647,6 +647,13 @@
BYTE UnicodeAmbiguousWidth;
BYTE UnicodeEmojiOverride;
BYTE UnicodeEmojiWidth;
+ wchar_t *HomeDirW; // ttermpro.exe \x82̂\xA0\x82\xE9\x83t\x83H\x83\x8B\x83_
+ wchar_t *SetupFNameW;
+ wchar_t *KeyCnfFNW;
+ wchar_t *LogFNW;
+ wchar_t *MacroFNW;
+ wchar_t *UILanguageFileW; // \x90\xE2\x91p\x83X
+ wchar_t *UILanguageFileW_ini; // \x91\x8A\x91p\x83X,ini\x83t\x83@\x83C\x83\x8B\x82̒\x86\x90g
};
typedef struct tttset TTTSet, *PTTSet;
Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/teraterm/vtwin.cpp 2021-06-12 15:29:32 UTC (rev 9306)
@@ -3364,17 +3364,12 @@
/* Auto start logging or /L= option */
if (ts.LogAutoStart || ts.LogFN[0] != 0) {
- if (ts.LogFN[0] == 0) {
- wchar_t *filenameW = FLogGetLogFilename(NULL);
- char *filenameA = ToCharW(filenameW);
- strncpy_s(ts.LogFN, sizeof(ts.LogFN), filenameA, _TRUNCATE);
- free(filenameA);
- free(filenameW);
+ if (ts.LogFN == NULL || ts.LogFN[0] == 0) {
+ ts.LogFNW = FLogGetLogFilename(NULL);
+ WideCharToACP_t(ts.LogFNW, ts.LogFN, sizeof(ts.LogFN));
}
if (ts.LogFN[0]!=0) {
- wchar_t *fnW = ToWcharA(ts.LogFN);
- FLogOpen(fnW, LOG_UTF8, FALSE);
- free(fnW);
+ FLogOpen(ts.LogFNW, LOG_UTF8, FALSE);
}
}
Modified: trunk/teraterm/ttpcmn/ttcmn.c
===================================================================
--- trunk/teraterm/ttpcmn/ttcmn.c 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/ttpcmn/ttcmn.c 2021-06-12 15:29:32 UTC (rev 9306)
@@ -110,7 +110,6 @@
memcpy(&pm->ts, ts, sizeof(TTTSet));
}
-
BOOL WINAPI StartTeraTerm(PTTSet ts)
{
if (FirstInstance) {
@@ -129,15 +128,17 @@
// if (FirstInstance) { \x82̕\x94\x95\xAA\x82\xA9\x82\xE7\x88ړ\xAE (2008.3.13 maya)
// \x8BN\x93\xAE\x8E\x9E\x82ɂ́A\x8B\xA4\x97L\x83\x81\x83\x82\x83\x8A\x82\xCC HomeDir \x82\xC6 SetupFName \x82͋\xF3\x82ɂȂ\xE9
- /* Get home directory */
- GetHomeDir(hInst, ts->HomeDir, sizeof(ts->HomeDir));
- _chdir(ts->HomeDir);
- GetDefaultSetupFName(ts->HomeDir, ts->SetupFName, sizeof(ts->SetupFName));
+ /* Get home directory (ttermpro.exe\x82̃t\x83H\x83\x8B\x83_) */
+ ts->HomeDirW = GetHomeDirW(hInst);
+ WideCharToACP_t(ts->HomeDirW, ts->HomeDir, _countof(ts->HomeDir));
+ SetCurrentDirectoryW(ts->HomeDirW);
- strncpy_s(ts->KeyCnfFN, sizeof(ts->KeyCnfFN), ts->HomeDir, _TRUNCATE);
- AppendSlash(ts->KeyCnfFN, sizeof(ts->KeyCnfFN));
- strncat_s(ts->KeyCnfFN, sizeof(ts->KeyCnfFN), "KEYBOARD.CNF", _TRUNCATE);
+ ts->SetupFNameW = GetDefaultSetupFNameW(ts->HomeDirW);
+ WideCharToACP_t(ts->SetupFNameW, ts->SetupFName, _countof(ts->SetupFName));
+ ts->KeyCnfFNW = GetDefaultFNameW(ts->HomeDirW, L"KEYBOARD.CNF");
+ WideCharToACP_t(ts->KeyCnfFNW, ts->KeyCnfFN, _countof(ts->KeyCnfFN));
+
if (FirstInstance) {
FirstInstance = FALSE;
return TRUE;
Modified: trunk/teraterm/ttpdlg/ttdlg.c
===================================================================
--- trunk/teraterm/ttpdlg/ttdlg.c 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/ttpdlg/ttdlg.c 2021-06-12 15:29:32 UTC (rev 9306)
@@ -53,6 +53,7 @@
#include "codeconv.h"
#include "helpid.h"
#include "layer_for_unicode.h"
+#include "asprintf.h"
// Oniguruma: Regular expression library
#define ONIG_EXTERN extern
@@ -3015,11 +3016,11 @@
// \x8C\xBE\x8C\xEA\x83t\x83@\x83C\x83\x8B\x82\xAA\x95ύX\x82\xB3\x82\xEA\x82Ă\xA2\x82\xBD\x8Fꍇ
w = (WORD)GetCurSel(Dialog, IDC_GENLANG_UI);
if (1 <= w && w <= uilist_count && w != langui_sel) {
- _snprintf_s(ts->UILanguageFile_ini, sizeof(ts->UILanguageFile_ini), _TRUNCATE,
- "%s\\%s", get_lang_folder(), LangUIList[w - 1]);
+ aswprintf(&ts->UILanguageFileW_ini, L"%hs\\%hs", get_lang_folder(), LangUIList[w - 1]);
+ WideCharToACP_t(ts->UILanguageFileW_ini, ts->UILanguageFile_ini, sizeof(ts->UILanguageFile_ini));
- GetUILanguageFileFull(ts->HomeDir, ts->UILanguageFile_ini,
- ts->UILanguageFile, sizeof(ts->UILanguageFile));
+ ts->UILanguageFileW = GetUILanguageFileFullW(ts->HomeDirW, ts->UILanguageFileW_ini);
+ WideCharToACP_t(ts->UILanguageFileW, ts->UILanguageFile, sizeof(ts->UILanguageFileW));
// \x83^\x83C\x83g\x83\x8B\x82̍X\x90V\x82\xF0\x8Ds\x82\xA4\x81B(2014.2.23 yutaka)
PostMessage(GetParent(Dialog),WM_USER_CHANGETITLE,0,0);
Modified: trunk/teraterm/ttpmacro/ttmacro.cpp
===================================================================
--- trunk/teraterm/ttpmacro/ttmacro.cpp 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/ttpmacro/ttmacro.cpp 2021-06-12 15:29:32 UTC (rev 9306)
@@ -40,6 +40,7 @@
#include "tmfc.h"
#include "dlglib.h"
#include "dllutil.h"
+#include "codeconv.h"
#include "ttm_res.h"
#include "ttmmain.h"
@@ -53,7 +54,8 @@
#endif
char UILanguageFile[MAX_PATH];
-static char SetupFName[MAX_PATH];
+static wchar_t *SetupFNameW;
+static char *SetupFName;
static HWND CtrlWnd;
static HINSTANCE hInst;
@@ -75,8 +77,12 @@
char UILanguageFileRel[MAX_PATH];
LOGFONTA logfont;
- GetHomeDir(hInst, HomeDir, sizeof(HomeDir));
- GetDefaultFName(HomeDir, "TERATERM.INI", SetupFName, sizeof(SetupFName));
+ HomeDirW = GetHomeDirW(hInst);
+ char *HomeDirA = ToCharW(HomeDirW);
+ strcpy_s(HomeDir, sizeof(HomeDir), HomeDirA);
+ free(HomeDirA);
+ SetupFNameW = GetDefaultFNameW(HomeDirW, L"TERATERM.INI");
+ SetupFName = ToCharW(SetupFNameW);
GetPrivateProfileString("Tera Term", "UILanguageFile", "lang\\Default.lng",
UILanguageFileRel, sizeof(UILanguageFileRel), SetupFName);
GetUILanguageFileFull(HomeDir, UILanguageFileRel,
Modified: trunk/teraterm/ttpmacro/ttmdlg.cpp
===================================================================
--- trunk/teraterm/ttpmacro/ttmdlg.cpp 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/ttpmacro/ttmdlg.cpp 2021-06-12 15:29:32 UTC (rev 9306)
@@ -56,6 +56,7 @@
#include "ttmdlg.h"
char HomeDir[MAX_PATH];
+wchar_t *HomeDirW;
char FileName[MAX_PATH];
char TopicName[11];
char ShortName[MAX_PATH];
@@ -293,4 +294,3 @@
}
return r == IDCANCEL ? -1 : -2;
}
-
Modified: trunk/teraterm/ttpmacro/ttmdlg.h
===================================================================
--- trunk/teraterm/ttpmacro/ttmdlg.h 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/ttpmacro/ttmdlg.h 2021-06-12 15:29:32 UTC (rev 9306)
@@ -51,6 +51,7 @@
int OpenListDlg(const wchar_t *Text, const wchar_t *Caption, wchar_t **Lists, int Selected);
extern char HomeDir[MAX_PATH];
+extern wchar_t *HomeDirW;
extern char FileName[MAX_PATH];
extern char TopicName[11];
extern char ShortName[MAX_PATH];
Modified: trunk/teraterm/ttpset/ttset.c
===================================================================
--- trunk/teraterm/ttpset/ttset.c 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/teraterm/ttpset/ttset.c 2021-06-12 15:29:32 UTC (rev 9306)
@@ -46,6 +46,7 @@
#include "tt_res.h"
#include "servicenames.h"
#include "codeconv.h"
+#include "win32helper.h"
#define DllExport __declspec(dllexport)
#include "ttset.h"
@@ -56,6 +57,7 @@
#define INI_FILE_IS_UNICODE 1
#define Section "Tera Term"
+#define SectionW L"Tera Term"
#define MaxStrLen (LONG)512
@@ -1698,8 +1700,8 @@
GetPrivateProfileInt(Section, "SendBreakTime", 1000, FName);
/* Startup macro -- special option */
- GetPrivateProfileString(Section, "StartupMacro", "",
- ts->MacroFN, sizeof(ts->MacroFN), FName);
+ hGetPrivateProfileStringW(SectionW, L"StartupMacro", L"", FName, &ts->MacroFNW);
+ WideCharToACP_t(ts->MacroFNW, ts->MacroFN, sizeof(ts->MacroFN));
/* TEK GIN Mouse keycode -- special option */
ts->GINMouseCode =
@@ -1901,13 +1903,17 @@
strncpy_s(ts->Locale, sizeof(ts->Locale), Temp, _TRUNCATE);
// UI language message file (\x91\x8A\x91p\x83X)
- GetPrivateProfileString(Section, "UILanguageFile", "lang\\Default.lng",
- ts->UILanguageFile_ini, sizeof(ts->UILanguageFile_ini), FName);
+ hGetPrivateProfileStringW(SectionW, L"UILanguageFile", NULL, FName, &ts->UILanguageFileW_ini);
+ if (ts->UILanguageFileW_ini == NULL) {
+ ts->UILanguageFileW_ini = wcsdup(L"lang\\Default.lng");
+ }
+ WideCharToACP_t(ts->UILanguageFileW_ini, ts->UILanguageFile_ini, sizeof(ts->UILanguageFile_ini));
// UI language message file (full path)
- GetUILanguageFileFull(ts->HomeDir, ts->UILanguageFile_ini,
- ts->UILanguageFile, sizeof(ts->UILanguageFile));
+ ts->UILanguageFileW = GetUILanguageFileFullW(ts->HomeDirW, ts->UILanguageFileW_ini);
+ WideCharToACP_t(ts->UILanguageFileW, ts->UILanguageFile, sizeof(ts->UILanguageFile));
+
// Broadcast Command History (2007.3.3 maya)
ts->BroadcastCommandHistory =
GetOnOff(Section, "BroadcastCommandHistory", FName, FALSE);
Modified: trunk/ttpmenu/ttpmenu.cpp
===================================================================
--- trunk/ttpmenu/ttpmenu.cpp 2021-06-12 15:29:23 UTC (rev 9305)
+++ trunk/ttpmenu/ttpmenu.cpp 2021-06-12 15:29:32 UTC (rev 9306)
@@ -38,7 +38,10 @@
#include "resource.h"
#include "ttlib.h"
+#include "codeconv.h"
+#include "win32helper.h"
+
// UTF-8 TeraTerm\x82ł́A\x83f\x83t\x83H\x83\x8B\x83g\x83C\x83\x93\x83X\x83g\x81[\x83\x8B\x90\xE6\x82\xF0\x89\xBA\x8BL\x82ɕύX\x82\xB5\x82\xBD\x81B(2004.12.2 yutaka)
// \x82\xB3\x82\xE7\x82ɁA\x83f\x83t\x83H\x83\x8B\x83g\x83C\x83\x93\x83X\x83g\x81[\x83\x8B\x90\xE6\x82̓J\x83\x8C\x83\x93\x83g\x83f\x83B\x83\x8C\x83N\x83g\x83\x8A\x82ɕύX\x81B(2004.12.14 yutaka)
#define DEFAULT_PATH "."
@@ -2638,6 +2641,37 @@
return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
}
+static void GetUILanguageFile(char *buf, int buflen)
+{
+ wchar_t *HomeDirW;
+ wchar_t *Temp;
+ wchar_t *SetupFName;
+ wchar_t *fullpath;
+ char *fullpathA;
+
+ /* Get home directory */
+ HomeDirW = GetHomeDirW(NULL);
+
+ /* Get SetupFName */
+ SetupFName = GetDefaultSetupFNameW(HomeDirW);
+
+ /* Get LanguageFile name */
+ hGetPrivateProfileStringW(L"Tera Term", L"UILanguageFile", NULL, SetupFName, &Temp);
+ if (Temp == NULL) {
+ Temp = _wcsdup(L"lang\\Default.lng");
+ }
+
+ fullpath = GetUILanguageFileFullW(HomeDirW, Temp);
+ fullpathA = ToCharW(fullpath);
+ free(HomeDirW);
+ free(SetupFName);
+ free(Temp);
+ free(fullpath);
+
+ strcpy_s(buf, buflen, fullpathA);
+ free(fullpathA);
+}
+
/* ==========================================================================
Function Name : (int WINAPI) WinMain()
Outline : \x83\x81\x83C\x83\x93\x8A\x94
From scmnotify @ osdn.net Sun Jun 13 00:29:41 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 13 Jun 2021 00:29:41 +0900
Subject: [Ttssh2-commit] =?utf-8?q?=5B9307=5D_layer=5Ffor=5Funicode_?=
=?utf-8?b?44GrIEFQSSDov73liqA=?=
Message-ID: <1623511781.461267.24521.nullmailer@users.osdn.me>
Revision: 9307
https://osdn.net/projects/ttssh2/scm/svn/commits/9307
Author: zmatsuo
Date: 2021-06-13 00:29:41 +0900 (Sun, 13 Jun 2021)
Log Message:
-----------
layer_for_unicode に API 追加
- 追加
- _GetModuleHandleW()
- _GetSystemDirectoryW()
- _GetTempFileNameW()
- _GetTempPathW()
Modified Paths:
--------------
trunk/teraterm/common/codeconv.cpp
trunk/teraterm/common/codeconv.h
trunk/teraterm/common/compat_win.cpp
trunk/teraterm/common/compat_win.h
trunk/teraterm/common/layer_for_unicode.cpp
trunk/teraterm/common/layer_for_unicode.h
-------------- next part --------------
Modified: trunk/teraterm/common/codeconv.cpp
===================================================================
--- trunk/teraterm/common/codeconv.cpp 2021-06-12 15:29:32 UTC (rev 9306)
+++ trunk/teraterm/common/codeconv.cpp 2021-06-12 15:29:41 UTC (rev 9307)
@@ -1056,6 +1056,27 @@
}
}
+/**
+ * MultiByteToWideChar() \x82\xCC TRUNCATE + CP_ACP \x94\xC5
+ * wchar_t \x82̃p\x83X,\x83t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0 char \x82ɕϊ\xB7\x82\xB7\x82\xE9\x82Ƃ\xAB\x82Ɏg\x97p
+ *
+ * @param[in] str_ptr char \x82̕\xB6\x8E\x9A\x97\xF1
+ * @param[in,out] wstr_ptr wchar_t \x95\xB6\x8E\x9A\x97\xF1\x8Fo\x97͐\xE6ptr
+ * @param[in] wstr_len wchar_t \x95\xB6\x8E\x9A\x97\xF1\x8Fo\x97͐敶\x8E\x9A\x90\x94
+ * @return \x95ϊ\xB7\x82\xB5\x82\xBD\x95\xB6\x8E\x9A\x90\x94(L'^0'\x8A܂\xDE), wcslen(wstr_ptr) + 1
+ */
+size_t ACPToWideChar_t(const char *str_ptr, wchar_t *wstr_ptr, size_t wstr_len)
+{
+ const DWORD flags = 0;
+ size_t out_len = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS,
+ str_ptr, -1,
+ wstr_ptr, wstr_len);
+ if (out_len == wstr_len) {
+ wstr_ptr[wstr_len-1] = 0;
+ }
+ return out_len;
+}
+
char *ToCharW(const wchar_t *strW)
{
if (strW == NULL) return NULL;
Modified: trunk/teraterm/common/codeconv.h
===================================================================
--- trunk/teraterm/common/codeconv.h 2021-06-12 15:29:32 UTC (rev 9306)
+++ trunk/teraterm/common/codeconv.h 2021-06-12 15:29:41 UTC (rev 9307)
@@ -58,6 +58,7 @@
char32_t *u32_ptr, size_t *u32_len_);
int UTF8ToWideChar(const char *u8_ptr, int u8_len, wchar_t *wstr_ptr, int wstr_len);
void WideCharToACP_t(const wchar_t *wstr_ptr, char *mb_ptr, size_t mb_len);
+size_t ACPToWideChar_t(const char *str_ptr, wchar_t *wstr_ptr, size_t wstr_len);
// API wrappers
char *_WideCharToMultiByte(const wchar_t *wstr_ptr, size_t wstr_len, int code_page, size_t *mb_len_);
Modified: trunk/teraterm/common/compat_win.cpp
===================================================================
--- trunk/teraterm/common/compat_win.cpp 2021-06-12 15:29:32 UTC (rev 9306)
+++ trunk/teraterm/common/compat_win.cpp 2021-06-12 15:29:41 UTC (rev 9307)
@@ -38,7 +38,7 @@
#include "ttlib.h"
// for debug
-//#define UNICODE_API_DISABLE 1
+#define UNICODE_API_DISABLE 1
ATOM (WINAPI *pRegisterClassW)(const WNDCLASSW *lpWndClass);
HWND (WINAPI *pCreateWindowExW)(DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, int X, int Y, int nWidth, int nHeight,
@@ -84,6 +84,7 @@
DWORD (WINAPI *pGetPrivateProfileStringW)(LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpDefault,
LPWSTR lpReturnedString, DWORD nSize, LPCWSTR lpFileName);
BOOL (WINAPI *pWritePrivateProfileStringW)(LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpString, LPCWSTR lpFileName);
+UINT (WINAPI *pGetPrivateProfileIntW)(LPCWSTR lpAppName, LPCWSTR lpKeyName, INT nDefault, LPCWSTR lpFileName);
BOOL (WINAPI *pCreateProcessW)(LPCWSTR lpApplicationName, LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles,
@@ -102,6 +103,8 @@
HMODULE (WINAPI *pLoadLibraryW)(LPCWSTR lpLibFileName);
DWORD (WINAPI *pGetModuleFileNameW)(HMODULE hModule, LPWSTR lpFilename, DWORD nSize);
DWORD (WINAPI *pExpandEnvironmentStringsW)(LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize);
+DWORD (WINAPI *pGetTempPathW)(DWORD nBufferLength, LPWSTR lpBuffer);
+UINT (WINAPI *pGetTempFileNameW)(LPCWSTR lpPathName, LPCWSTR lpPrefixString, UINT uUnique, LPWSTR lpTempFileName);
// gdi32
int (WINAPI *pAddFontResourceExW)(LPCWSTR name, DWORD fl, PVOID res);
@@ -251,6 +254,7 @@
{ "SetCurrentDirectoryW", (void **)&pSetCurrentDirectoryW },
{ "GetPrivateProfileStringW", (void **)&pGetPrivateProfileStringW },
{ "WritePrivateProfileStringW", (void **)&pWritePrivateProfileStringW },
+ { "GetPrivateProfileIntW", (void **)&pGetPrivateProfileIntW },
{ "CreateProcessW", (void **)&pCreateProcessW },
{ "CopyFileW", (void **)&pCopyFileW },
{ "DeleteFileW", (void **)&pDeleteFileW },
@@ -263,6 +267,8 @@
{ "LoadLibraryW", (void **)&pLoadLibraryW },
{ "GetModuleFileNameW", (void **)&pGetModuleFileNameW },
{ "ExpandEnvironmentStringsW", (void **)&pExpandEnvironmentStringsW },
+ { "GetTempPathW", (void **)&pGetTempPathW },
+ { "GetTempFileNameW", (void **)&pGetTempFileNameW },
#endif
{ "GetConsoleWindow", (void **)&pGetConsoleWindow },
{},
@@ -363,7 +369,11 @@
pFindFirstFileW = NULL;
pFindNextFileW = NULL;
pRemoveDirectoryW = NULL;
+ pGetPrivateProfileIntW = NULL;
pGetModuleFileNameW = NULL;
+ pLoadLibraryW = NULL;
+ pGetTempPathW = NULL;
+ pGetTempFileNameW = NULL;
}
// GetConsoleWindow\x93\xC1\x95ʏ\x88\x97\x9D
Modified: trunk/teraterm/common/compat_win.h
===================================================================
--- trunk/teraterm/common/compat_win.h 2021-06-12 15:29:32 UTC (rev 9306)
+++ trunk/teraterm/common/compat_win.h 2021-06-12 15:29:41 UTC (rev 9307)
@@ -79,8 +79,6 @@
extern BOOL(WINAPI *pModifyMenuW)(HMENU hMnu, UINT uPosition, UINT uFlags, UINT_PTR uIDNewItem, LPCWSTR lpNewItem);
extern int(WINAPI *pGetMenuStringW)(HMENU hMenu, UINT uIDItem, LPWSTR lpString, int cchMax, UINT flags);
extern BOOL(WINAPI *pSetWindowTextW)(HWND hWnd, LPCWSTR lpString);
-extern DWORD(WINAPI *pGetPrivateProfileStringW)(LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpDefault,
- LPWSTR lpReturnedString, DWORD nSize, LPCWSTR lpFileName);
extern UINT(WINAPI *pDragQueryFileW)(HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch);
extern BOOL (WINAPI *pSetDlgItemTextW)(HWND hDlg, int nIDDlgItem, LPCWSTR lpString);
extern BOOL (WINAPI *pGetDlgItemTextW)(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int cchMax);
@@ -128,6 +126,7 @@
extern DWORD (WINAPI *pGetPrivateProfileStringW)(LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpDefault,
LPWSTR lpReturnedString, DWORD nSize, LPCWSTR lpFileName);
extern BOOL (WINAPI *pWritePrivateProfileStringW)(LPCWSTR lpAppName,LPCWSTR lpKeyName,LPCWSTR lpString,LPCWSTR lpFileName);
+extern UINT (WINAPI *pGetPrivateProfileIntW)(LPCWSTR lpAppName, LPCWSTR lpKeyName, INT nDefault, LPCWSTR lpFileName);
extern BOOL (WINAPI *pCreateProcessW)(LPCWSTR lpApplicationName, LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles,
@@ -160,6 +159,8 @@
extern HMODULE (WINAPI *pLoadLibraryW)(LPCWSTR lpLibFileName);
extern DWORD (WINAPI *pGetModuleFileNameW)(HMODULE hModule, LPWSTR lpFilename, DWORD nSize);
extern DWORD (WINAPI *pExpandEnvironmentStringsW)(LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize);
+extern DWORD (WINAPI *pGetTempPathW)(DWORD nBufferLength, LPWSTR lpBuffer);
+extern UINT (WINAPI *pGetTempFileNameW)(LPCWSTR lpPathName, LPCWSTR lpPrefixString, UINT uUnique, LPWSTR lpTempFileName);
// shlobj_core.h
extern LPITEMIDLIST (WINAPI *pSHBrowseForFolderW)(LPBROWSEINFOW lpbi);
Modified: trunk/teraterm/common/layer_for_unicode.cpp
===================================================================
--- trunk/teraterm/common/layer_for_unicode.cpp 2021-06-12 15:29:32 UTC (rev 9306)
+++ trunk/teraterm/common/layer_for_unicode.cpp 2021-06-12 15:29:41 UTC (rev 9307)
@@ -683,6 +683,22 @@
return r;
}
+UINT _GetPrivateProfileIntW(LPCWSTR lpAppName, LPCWSTR lpKeyName, INT nDefault, LPCWSTR lpFileName)
+{
+ if (pGetPrivateProfileIntW != NULL) {
+ return pGetPrivateProfileIntW(lpAppName, lpKeyName, nDefault, lpFileName);
+ }
+
+ char *appA = ToCharW(lpAppName);
+ char *keyA = ToCharW(lpKeyName);
+ char *fileA = ToCharW(lpFileName);
+ UINT r = GetPrivateProfileIntA(appA, keyA, nDefault, fileA);
+ free(appA);
+ free(keyA);
+ free(fileA);
+ return r;
+}
+
BOOL _CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles,
@@ -887,11 +903,11 @@
char filenameA[MAX_PATH];
DWORD r = GetModuleFileNameA(hModule, filenameA, sizeof(filenameA));
- wchar_t *bufW = ToWcharA(filenameA);
- wcsncpy_s(lpFilename, nSize, bufW, _TRUNCATE);
- r = (DWORD)wcslen(lpFilename);
- free(bufW);
- return r;
+ if (r == 0) {
+ return 0;
+ }
+ DWORD wlen = ACPToWideChar_t(filenameA, lpFilename, nSize);
+ return wlen - 1; // not including the terminating null character
}
DWORD _ExpandEnvironmentStringsW(LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize)
@@ -910,3 +926,53 @@
free(dstW);
return r;
}
+
+HMODULE _GetModuleHandleW(LPCWSTR lpModuleName)
+{
+ char *lpStringA = ToCharW(lpModuleName);
+ HMODULE h = GetModuleHandleA(lpStringA);
+ free(lpStringA);
+ return h;
+}
+
+UINT _GetSystemDirectoryW(LPWSTR lpBuffer, UINT uSize)
+{
+ char buf[MAX_PATH];
+ UINT r = GetSystemDirectoryA(buf, _countof(buf));
+ if (r == 0) {
+ return 0;
+ }
+ size_t wlen = ACPToWideChar_t(buf, lpBuffer, uSize);
+ return wlen - 1; // not including the terminating null character
+}
+
+DWORD _GetTempPathW(DWORD nBufferLength, LPWSTR lpBuffer)
+{
+ if (pGetTempPathW != NULL) {
+ return pGetTempPathW(nBufferLength, lpBuffer);
+ }
+
+ char buf[MAX_PATH];
+ DWORD r = GetTempPathA(_countof(buf), buf);
+ if (r == 0) {
+ return 0;
+ }
+ size_t wlen = ACPToWideChar_t(buf, lpBuffer, nBufferLength);
+ return wlen - 1; // not including the terminating null character
+}
+
+UINT _GetTempFileNameW(LPCWSTR lpPathName, LPCWSTR lpPrefixString, UINT uUnique, LPWSTR lpTempFileName)
+{
+ if (pGetTempFileNameW != NULL) {
+ return pGetTempFileNameW(lpPathName, lpPrefixString, uUnique, lpTempFileName);
+ }
+
+ char buf[MAX_PATH];
+ char *lpPathNameA = ToCharW(lpPathName);
+ char *lpPrefixStringA = ToCharW(lpPrefixString);
+ UINT r = GetTempFileNameA(lpPathNameA, lpPrefixStringA, uUnique, buf);
+ ACPToWideChar_t(buf, lpTempFileName, MAX_PATH);
+ free(lpPathNameA);
+ free(lpPrefixStringA);
+ return r;
+}
Modified: trunk/teraterm/common/layer_for_unicode.h
===================================================================
--- trunk/teraterm/common/layer_for_unicode.h 2021-06-12 15:29:32 UTC (rev 9306)
+++ trunk/teraterm/common/layer_for_unicode.h 2021-06-12 15:29:41 UTC (rev 9307)
@@ -121,6 +121,7 @@
DWORD _GetPrivateProfileStringW(LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpDefault,
LPWSTR lpReturnedString, DWORD nSize, LPCWSTR lpFileName);
BOOL _WritePrivateProfileStringW(LPCWSTR lpAppName,LPCWSTR lpKeyName,LPCWSTR lpString,LPCWSTR lpFileName);
+UINT _GetPrivateProfileIntW(LPCWSTR lpAppName, LPCWSTR lpKeyName, INT nDefault, LPCWSTR lpFileName);
BOOL _CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles,
@@ -139,6 +140,10 @@
HMODULE _LoadLibraryW(LPCWSTR lpLibFileName);
DWORD _GetModuleFileNameW(HMODULE hModule, LPWSTR lpFilename, DWORD nSize);
DWORD _ExpandEnvironmentStringsW(LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize);
+HMODULE _GetModuleHandleW(LPCWSTR lpModuleName);
+UINT _GetSystemDirectoryW(LPWSTR lpBuffer, UINT uSize);
+DWORD _GetTempPathW(DWORD nBufferLength, LPWSTR lpBuffer);
+UINT _GetTempFileNameW(LPCWSTR lpPathName, LPCWSTR lpPrefixString, UINT uUnique, LPWSTR lpTempFileName);
// gdi32.lib
int _AddFontResourceW(LPCWSTR lpFileName);
From scmnotify @ osdn.net Sun Jun 13 00:29:49 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 13 Jun 2021 00:29:49 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMDhdIF9fd2ZvcGVuX3MoKSDjgpIgbGF5?=
=?utf-8?b?ZXJfZm9yX3VuaWNvZGVfY3J0IOOBuOenu+WLlQ==?=
Message-ID: <1623511789.520724.24786.nullmailer@users.osdn.me>
Revision: 9308
https://osdn.net/projects/ttssh2/scm/svn/commits/9308
Author: zmatsuo
Date: 2021-06-13 00:29:49 +0900 (Sun, 13 Jun 2021)
Log Message:
-----------
__wfopen_s() を layer_for_unicode_crt へ移動
Modified Paths:
--------------
trunk/teraterm/common/fileread.cpp
trunk/teraterm/common/layer_for_unicode_crt.cpp
trunk/teraterm/common/layer_for_unicode_crt.h
-------------- next part --------------
Modified: trunk/teraterm/common/fileread.cpp
===================================================================
--- trunk/teraterm/common/fileread.cpp 2021-06-12 15:29:41 UTC (rev 9307)
+++ trunk/teraterm/common/fileread.cpp 2021-06-12 15:29:49 UTC (rev 9308)
@@ -37,6 +37,7 @@
#include "codeconv.h"
#include "ttlib.h"
+#include "layer_for_unicode_crt.h"
#include "fileread.h"
@@ -44,25 +45,6 @@
typedef unsigned char uint8_t;
#endif
-static void __wfopen_s(FILE **fp, wchar_t const* filename, wchar_t const* mode)
-{
- if (IsWindowsNTKernel()) {
- // \x91\xBD\x95\xAA\x93\xE0\x95\x94\x82\xC5 CreateFileW() \x82\xF0\x8Eg\x97p\x82\xB5\x82Ă\xA2\x82\xE9
- // NT\x82ł̂ݎg\x97p\x82\xB7\x82\xE9
- _wfopen_s(fp, filename, mode);
- if (fp != NULL) {
- return;
- }
- // \x94O\x82̈\xD7 ANSI \x82ł\xE0\x83I\x81[\x83v\x83\x93\x82\xB7\x82\xE9
- }
- // ANSI \x82ŃI\x81[\x83v\x83\x93
- char *filenameA = ToCharW(filename);
- char *modeA = ToCharW(mode);
- fopen_s(fp, filenameA, modeA);
- free(filenameA);
- free(modeA);
-}
-
/**
* \x83t\x83@\x83C\x83\x8B\x82\xF0\x83\x81\x83\x82\x83\x8A\x82ɓǂݍ\x9E\x82\xDE
* @param[out] *_len \x83T\x83C\x83Y(terminater\x8A܂\xDE)
Modified: trunk/teraterm/common/layer_for_unicode_crt.cpp
===================================================================
--- trunk/teraterm/common/layer_for_unicode_crt.cpp 2021-06-12 15:29:41 UTC (rev 9307)
+++ trunk/teraterm/common/layer_for_unicode_crt.cpp 2021-06-12 15:29:49 UTC (rev 9308)
@@ -29,12 +29,12 @@
#include
#include "codeconv.h"
+#include "ttlib.h"
#include "layer_for_unicode_crt.h"
/**
- * fopen \x82\xCC wchar_t, char \x97\xBC\x91Ή\x9E\x94\xC5
- * TODO __wfopen_s()#fileread.cpp \x82\xE0\x82\xB1\x82̃t\x83@\x83C\x83\x8B\x82Ɉړ\xAE\x82\xB7\x82\xE9
+ * fopen \x82\xCC wchar_t\x94\xC5
*/
FILE *__wfopen(const wchar_t *fname, const wchar_t *mode)
{
@@ -49,3 +49,22 @@
free(modeA);
return fp;
}
+
+void __wfopen_s(FILE **fp, wchar_t const* filename, wchar_t const* mode)
+{
+ if (IsWindowsNTKernel()) {
+ // \x91\xBD\x95\xAA\x93\xE0\x95\x94\x82\xC5 CreateFileW() \x82\xF0\x8Eg\x97p\x82\xB5\x82Ă\xA2\x82\xE9
+ // NT\x82ł̂ݎg\x97p\x82\xB7\x82\xE9
+ _wfopen_s(fp, filename, mode);
+ if (fp != NULL) {
+ return;
+ }
+ // \x94O\x82̈\xD7 ANSI \x82ł\xE0\x83I\x81[\x83v\x83\x93\x82\xB7\x82\xE9
+ }
+ // ANSI \x82ŃI\x81[\x83v\x83\x93
+ char *filenameA = ToCharW(filename);
+ char *modeA = ToCharW(mode);
+ fopen_s(fp, filenameA, modeA);
+ free(filenameA);
+ free(modeA);
+}
Modified: trunk/teraterm/common/layer_for_unicode_crt.h
===================================================================
--- trunk/teraterm/common/layer_for_unicode_crt.h 2021-06-12 15:29:41 UTC (rev 9307)
+++ trunk/teraterm/common/layer_for_unicode_crt.h 2021-06-12 15:29:49 UTC (rev 9308)
@@ -35,6 +35,7 @@
#endif
FILE *__wfopen(const wchar_t *fname, const wchar_t *mode);
+void __wfopen_s(FILE **fp, wchar_t const* filename, wchar_t const* mode);
#ifdef __cplusplus
}
From scmnotify @ osdn.net Sun Jun 13 00:29:58 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 13 Jun 2021 00:29:58 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMDldIGxheWVyX2Zvcl91bmljb2Rl44KS?=
=?utf-8?b?5L2/55So44GZ44KL44KI44GG5L+u5q2j?=
Message-ID: <1623511798.195826.24883.nullmailer@users.osdn.me>
Revision: 9309
https://osdn.net/projects/ttssh2/scm/svn/commits/9309
Author: zmatsuo
Date: 2021-06-13 00:29:57 +0900 (Sun, 13 Jun 2021)
Log Message:
-----------
layer_for_unicodeを使用するよう修正
Modified Paths:
--------------
trunk/teraterm/common/dllutil.cpp
trunk/teraterm/common/ttlib.c
trunk/teraterm/common/ttlib_static_cpp.cpp
trunk/teraterm/common/win32helper.cpp
trunk/teraterm/teraterm/teraprn.cpp
trunk/teraterm/teraterm/ttplug.c
trunk/teraterm/teraterm/vtwin.cpp
trunk/teraterm/ttpmacro/ttmlib.c
trunk/teraterm/ttpset/ttset.c
trunk/teraterm/ttpset/ttset_keyboard.c
trunk/ttpmenu/CMakeLists.txt
-------------- next part --------------
Modified: trunk/teraterm/common/dllutil.cpp
===================================================================
--- trunk/teraterm/common/dllutil.cpp 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/common/dllutil.cpp 2021-06-12 15:29:57 UTC (rev 9309)
@@ -33,6 +33,8 @@
#endif
#include
+#include "layer_for_unicode.h"
+
#include "dllutil.h"
typedef struct {
@@ -54,7 +56,7 @@
int r;
if (LoadFlag == DLL_GET_MODULE_HANDLE) {
- module = GetModuleHandleW(dllName);
+ module = _GetModuleHandleW(dllName);
assert(module != NULL);
return module;
}
@@ -73,12 +75,12 @@
dllPath[0] = 0;
switch (LoadFlag) {
case DLL_LOAD_LIBRARY_SYSTEM:
- r = GetSystemDirectoryW(dllPath, _countof(dllPath));
+ r = _GetSystemDirectoryW(dllPath, _countof(dllPath));
assert(r != 0);
if (r == 0) return NULL;
break;
case DLL_LOAD_LIBRARY_CURRENT:
- r = GetModuleFileNameW(NULL, dllPath, _countof(dllPath));
+ r = _GetModuleFileNameW(NULL, dllPath, _countof(dllPath));
assert(r != 0);
if (r == 0) return NULL;
*wcsrchr(dllPath, L'\\') = 0;
@@ -88,7 +90,7 @@
}
wcscat_s(dllPath, _countof(dllPath), L"\\");
wcscat_s(dllPath, _countof(dllPath), dllName);
- module = LoadLibraryW(dllPath);
+ module = _LoadLibraryW(dllPath);
if (module == NULL) {
// \x91\xB6\x8D݂\xB5\x82Ȃ\xA2,dll\x82\xB6\x82\xE1\x82Ȃ\xA2?
return NULL;
Modified: trunk/teraterm/common/ttlib.c
===================================================================
--- trunk/teraterm/common/ttlib.c 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/common/ttlib.c 2021-06-12 15:29:57 UTC (rev 9309)
@@ -43,6 +43,7 @@
#include "tttypes.h"
#include "compat_win.h"
#include "codeconv.h"
+#include "layer_for_unicode.h"
#include "../teraterm/unicode_test.h"
@@ -1018,8 +1019,8 @@
SetupFName = GetDefaultSetupFNameW(HomeDirW);
/* Get LanguageFile name */
- GetPrivateProfileStringW(L"Tera Term", entryW, L"off",
- Temp, _countof(Temp), SetupFName);
+ _GetPrivateProfileStringW(L"Tera Term", entryW, L"off",
+ Temp, _countof(Temp), SetupFName);
TempA = ToCharW(Temp);
strncpy_s(buf, buflen, TempA, _TRUNCATE);
Modified: trunk/teraterm/common/ttlib_static_cpp.cpp
===================================================================
--- trunk/teraterm/common/ttlib_static_cpp.cpp 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/common/ttlib_static_cpp.cpp 2021-06-12 15:29:57 UTC (rev 9309)
@@ -872,7 +872,7 @@
IMalloc *pmalloc;
SHGetMalloc(&pmalloc);
if (SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl) == S_OK) {
- SHGetPathFromIDListW(pidl, MyDoc);
+ _SHGetPathFromIDListW(pidl, MyDoc);
pmalloc->Free(pidl);
pmalloc->Release();
}
@@ -888,7 +888,7 @@
wcscpy(dest, MyDoc);
AppendSlashW(dest,destlen);
wcsncat_s(dest, destlen, file, _TRUNCATE);
- if (GetFileAttributesW(dest) != INVALID_FILE_ATTRIBUTES) {
+ if (_GetFileAttributesW(dest) != INVALID_FILE_ATTRIBUTES) {
// My Documents \x82̐ݒ\xE8\x83t\x83@\x83C\x83\x8B
return dest;
}
Modified: trunk/teraterm/common/win32helper.cpp
===================================================================
--- trunk/teraterm/common/win32helper.cpp 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/common/win32helper.cpp 2021-06-12 15:29:57 UTC (rev 9309)
@@ -31,6 +31,8 @@
#include
#include
+#include "layer_for_unicode.h"
+
#include "win32helper.h"
/**
@@ -51,7 +53,7 @@
}
for(;;) {
- DWORD r = GetModuleFileNameW(hModule, b, (DWORD)size);
+ DWORD r = _GetModuleFileNameW(hModule, b, (DWORD)size);
if (r == 0) {
// \x8A\x94\x82\xAA\x8E\xB8\x94s
error = GetLastError();
@@ -99,7 +101,7 @@
}
b[0] = 0;
for(;;) {
- DWORD r = GetPrivateProfileStringW(section, key, def, b, (DWORD)size, ini);
+ DWORD r = _GetPrivateProfileStringW(section, key, def, b, (DWORD)size, ini);
if (r == 0 || b[0] == L'\0') {
// \x8E\x9F\x82̏ꍇ\x82\xB1\x82\xB1\x82ɓ\xFC\x82\xE9
// ini\x82\xC9'key='\x82ƋL\x8Fq ("="\x82̌\xE3\x82ɉ\xBD\x82\xE0\x8F\x91\x82\xA2\x82Ă\xA2\x82Ȃ\xA2)
@@ -141,7 +143,7 @@
*/
DWORD hGetFullPathNameW(const wchar_t *lpFileName, wchar_t **fullpath, wchar_t **filepart)
{
- size_t len = GetFullPathNameW(lpFileName, 0, NULL, NULL); // include L'\0'
+ size_t len = _GetFullPathNameW(lpFileName, 0, NULL, NULL); // include L'\0'
if (len == 0) {
*fullpath = NULL;
*filepart = NULL;
@@ -149,7 +151,7 @@
}
wchar_t *path = (wchar_t *)malloc(sizeof(wchar_t) * len);
wchar_t *file;
- len = GetFullPathNameW(lpFileName, (DWORD)len, path, &file);
+ len = _GetFullPathNameW(lpFileName, (DWORD)len, path, &file);
if (len == 0) {
free(path);
return GetLastError();
Modified: trunk/teraterm/teraterm/teraprn.cpp
===================================================================
--- trunk/teraterm/teraterm/teraprn.cpp 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/teraterm/teraprn.cpp 2021-06-12 15:29:57 UTC (rev 9309)
@@ -42,6 +42,7 @@
#include "ttlib.h"
#include "codeconv.h"
#include "vtdisp.h"
+#include "layer_for_unicode.h"
#include "tt_res.h"
#include "tmfc.h"
@@ -450,15 +451,15 @@
KillTimer(HVTWin, IdPrnStartTimer);
wchar_t TempPath[MAX_PATH];
- GetTempPathW(_countof(TempPath), TempPath);
+ _GetTempPathW(_countof(TempPath), TempPath);
wchar_t Temp[MAX_PATH];
- if (GetTempFileNameW(TempPath, L"tmp", 0, Temp) == 0) {
+ if (_GetTempFileNameW(TempPath, L"tmp", 0, Temp) == 0) {
free(p);
return NULL;
}
p->PrnFName = _wcsdup(Temp);
- HANDLE h = CreateFileW(p->PrnFName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ HANDLE h = _CreateFileW(p->PrnFName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (h == INVALID_HANDLE_VALUE) {
free(p);
return NULL;
@@ -474,7 +475,7 @@
if (handle->PrnFName == NULL) {
return;
}
- DeleteFileW(handle->PrnFName);
+ _DeleteFileW(handle->PrnFName);
free(handle->PrnFName);
handle->PrnFName = NULL;
}
@@ -491,9 +492,9 @@
static void PrintFile_(PrintFile *handle)
{
if (VTPrintInit(IdPrnFile)==IdPrnFile) {
- HANDLE HPrnFile = CreateFileW(handle->PrnFName,
- GENERIC_READ, FILE_SHARE_READ, NULL,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ HANDLE HPrnFile = _CreateFileW(handle->PrnFName,
+ GENERIC_READ, FILE_SHARE_READ, NULL,
+ OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (HPrnFile != INVALID_HANDLE_VALUE) {
char BuffA[TermWidthMax];
@@ -589,9 +590,9 @@
PrnAbortDlg->Create(hInst,hParent,&PrintAbortFlag,&ts);
HPrnAbortDlg = PrnAbortDlg->GetSafeHwnd();
- handle->HPrnFile = CreateFileW(handle->PrnFName,
- GENERIC_READ, FILE_SHARE_READ, NULL,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ handle->HPrnFile = _CreateFileW(handle->PrnFName,
+ GENERIC_READ, FILE_SHARE_READ, NULL,
+ OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
PrintAbortFlag = (handle->HPrnFile == INVALID_HANDLE_VALUE) || ! PrnOpen(ts.PrnDev);
handle->PrnBuffCount = 0;
SetTimer(HVTWin,IdPrnProcTimer,0,NULL);
Modified: trunk/teraterm/teraterm/ttplug.c
===================================================================
--- trunk/teraterm/teraterm/ttplug.c 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/teraterm/ttplug.c 2021-06-12 15:29:57 UTC (rev 9309)
@@ -41,6 +41,7 @@
#include "ttplugin.h"
#include "codeconv.h"
#include "asprintf.h"
+#include "layer_for_unicode.h"
#include "ttplug.h"
@@ -66,7 +67,7 @@
const wchar_t *sub_message;
HMODULE hPlugin;
- hPlugin = LoadLibraryW(fileName);
+ hPlugin = _LoadLibraryW(fileName);
if (hPlugin != NULL) {
TTXBindProc bind = NULL;
FARPROC *pbind = (FARPROC *)&bind;
@@ -147,7 +148,7 @@
aswprintf(&load_mask, L"%s\\TTX*.DLL", HomeDirW);
- hFind = FindFirstFileW(load_mask, &fd);
+ hFind = _FindFirstFileW(load_mask, &fd);
if (hFind != INVALID_HANDLE_VALUE) {
do {
wchar_t *filename;
@@ -154,7 +155,7 @@
aswprintf(&filename, L"%s\\%s", HomeDirW, fd.cFileName);
loadExtension(filename);
free(filename);
- } while (FindNextFileW(hFind, &fd));
+ } while (_FindNextFileW(hFind, &fd));
FindClose(hFind);
}
free(load_mask);
Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/teraterm/vtwin.cpp 2021-06-12 15:29:57 UTC (rev 9309)
@@ -4659,7 +4659,7 @@
free(HomeDirW);
}
- SetCurrentDirectoryW(DirW);
+ _SetCurrentDirectoryW(DirW);
/* OPENFILENAME record */
OPENFILENAMEW ofn = {};
Modified: trunk/teraterm/ttpmacro/ttmlib.c
===================================================================
--- trunk/teraterm/ttpmacro/ttmlib.c 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/ttpmacro/ttmlib.c 2021-06-12 15:29:57 UTC (rev 9309)
@@ -38,6 +38,7 @@
#include "compat_win.h"
#include "ttmlib.h"
#include "codeconv.h"
+#include "layer_for_unicode.h"
static char CurrentDir[MAXPATHLEN];
@@ -186,13 +187,13 @@
wchar_t *pCurrentDirW = ToWcharU8(CurrentDir);
wchar_t *DirW = ToWcharU8(Dir);
char *pCurrentDirU8;
- GetCurrentDirectoryW(_countof(Temp), Temp);
- SetCurrentDirectoryW(pCurrentDirW);
- SetCurrentDirectoryW(DirW);
- GetCurrentDirectoryW(_countof(CurrentDirW), CurrentDirW);
+ _GetCurrentDirectoryW(_countof(Temp), Temp);
+ _SetCurrentDirectoryW(pCurrentDirW);
+ _SetCurrentDirectoryW(DirW);
+ _GetCurrentDirectoryW(_countof(CurrentDirW), CurrentDirW);
pCurrentDirU8 = ToU8W(CurrentDirW);
strncpy_s(CurrentDir, _countof(CurrentDir), pCurrentDirU8, _TRUNCATE);
- SetCurrentDirectoryW(Temp);
+ _SetCurrentDirectoryW(Temp);
free(pCurrentDirW);
free(DirW);
free(pCurrentDirU8);
Modified: trunk/teraterm/ttpset/ttset.c
===================================================================
--- trunk/teraterm/ttpset/ttset.c 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/ttpset/ttset.c 2021-06-12 15:29:57 UTC (rev 9309)
@@ -46,6 +46,7 @@
#include "tt_res.h"
#include "servicenames.h"
#include "codeconv.h"
+#include "layer_for_unicode.h"
#include "win32helper.h"
#define DllExport __declspec(dllexport)
@@ -171,7 +172,7 @@
wchar_t *defW = ToWcharA(defA);
DWORD lenW_max = size;
wchar_t *strW = malloc(sizeof(wchar_t) * lenW_max);
- DWORD lenW = GetPrivateProfileStringW(appW, keyW, defW, strW, lenW_max, filenameW);
+ DWORD lenW = _GetPrivateProfileStringW(appW, keyW, defW, strW, lenW_max, filenameW);
free(appW);
free(keyW);
free(defW);
@@ -201,7 +202,7 @@
wchar_t *appW = ToWcharA(appA);
wchar_t *keyW = ToWcharA(keyA);
wchar_t *strW = ToWcharA(strA);
- BOOL r = WritePrivateProfileStringW(appW, keyW, strW, filenameW);
+ BOOL r = _WritePrivateProfileStringW(appW, keyW, strW, filenameW);
free(appW);
free(keyW);
free(strW);
@@ -215,7 +216,7 @@
{
wchar_t *appW = ToWcharA(appA);
wchar_t *keyW = ToWcharA(keyA);
- UINT r = GetPrivateProfileIntW(appW, keyW, def, filenameW);
+ UINT r = _GetPrivateProfileIntW(appW, keyW, def, filenameW);
free(appW);
free(keyW);
return r;
Modified: trunk/teraterm/ttpset/ttset_keyboard.c
===================================================================
--- trunk/teraterm/ttpset/ttset_keyboard.c 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/teraterm/ttpset/ttset_keyboard.c 2021-06-12 15:29:57 UTC (rev 9309)
@@ -36,6 +36,7 @@
#include
#include "ttlib.h"
#include "codeconv.h"
+#include "layer_for_unicode.h"
#include "../teraterm/keyboard_i.h"
typedef struct {
@@ -50,7 +51,7 @@
for (i = 0; i < count; i++) {
wchar_t Temp[11];
WORD Num;
- GetPrivateProfileStringW(section, p->key_str, L"", Temp, _countof(Temp), FName);
+ _GetPrivateProfileStringW(section, p->key_str, L"", Temp, _countof(Temp), FName);
if (Temp[0] == 0)
Num = 0xFFFF;
else if (_wcsicmp(Temp, L"off") == 0)
@@ -190,8 +191,8 @@
wchar_t EntName[7];
wchar_t TempStr[256];
_snwprintf_s(EntName, _countof(EntName), _TRUNCATE, L"User%d", i + 1);
- GetPrivateProfileStringW(L"User keys", EntName, L"",
- TempStr, _countof(TempStr), FName);
+ _GetPrivateProfileStringW(L"User keys", EntName, L"",
+ TempStr, _countof(TempStr), FName);
if (TempStr[0] == 0) {
continue;
}
Modified: trunk/ttpmenu/CMakeLists.txt
===================================================================
--- trunk/ttpmenu/CMakeLists.txt 2021-06-12 15:29:49 UTC (rev 9308)
+++ trunk/ttpmenu/CMakeLists.txt 2021-06-12 15:29:57 UTC (rev 9309)
@@ -30,9 +30,8 @@
source_group(
"common"
- FILES
- ${COMMON_SRC}
- )
+ REGULAR_EXPRESSION
+ "teraterm\/common\/")
if(SUPPORT_OLD_WINDOWS)
if(MSVC)
From scmnotify @ osdn.net Sat Jun 19 01:05:02 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sat, 19 Jun 2021 01:05:02 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMTBdIFRleHTjg5XjgqHjgqTjg6vpgIE=?=
=?utf-8?b?5L+h5pmCLEFOU0njgafjg5XjgqHjgqTjg6vjgpLoqq3jgb/ovrzjgb/jgIFV?=
=?utf-8?b?bmljb2Rl44Gn6YCB5L+h?=
Message-ID: <1624032302.288623.5983.nullmailer@users.osdn.me>
Revision: 9310
https://osdn.net/projects/ttssh2/scm/svn/commits/9310
Author: zmatsuo
Date: 2021-06-19 01:05:01 +0900 (Sat, 19 Jun 2021)
Log Message:
-----------
Textファイル送信時,ANSIでファイルを読み込み、Unicodeで送信
- テキストファイル読み込み
- ANSI文字コードに決め打ちで読み込む
- 日本語 Windows では Shift JIS (CP932)
- Unicode に変換する
- 送信時に Unicode を出力文字コードに変換する
- ワークをできるだけ動的に確保するようにした
Modified Paths:
--------------
trunk/doc/en/html/menu/file-sendfile.html
trunk/doc/ja/html/menu/file-sendfile.html
trunk/installer/release/lang_utf8/Japanese.lng
trunk/teraterm/teraterm/filesys.cpp
-------------- next part --------------
Modified: trunk/doc/en/html/menu/file-sendfile.html
===================================================================
--- trunk/doc/en/html/menu/file-sendfile.html 2021-06-12 15:29:57 UTC (rev 9309)
+++ trunk/doc/en/html/menu/file-sendfile.html 2021-06-18 16:05:01 UTC (rev 9310)
@@ -18,9 +18,26 @@
- File Name
-
- Enter or select the file name of an existing file.
+ \x91\x97\x90M\x82\xB7\x82\xE9\x83t\x83@\x83C\x83\x8B\x82̃t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x93\xFC\x97͂܂\xBD\x82͑I\x91\xF0\x82\xB5\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2\x81B
+ \x82\xB7\x82łɑ\xB6\x8D݂\xB7\x82\xE9\x83t\x83@\x83C\x83\x8B\x82łȂ\xAF\x82\xEA\x82Ȃ\xE8\x82܂\xB9\x82\xF1\x81B
+ \x83_\x83C\x83A\x83\x8D\x83O\x82Ƀt\x83@\x83C\x83\x8B\x82\xF0\x83h\x83\x8D\x83b\x83v\x82\xB7\x82邱\x82ƂŃt\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x93\xFC\x97͂\xB7\x82邱\x82Ƃ\xE0\x82ł\xAB\x82܂\xB7\x81B
+ - Tera Term 4 \x82Ɠ\xAF\x82\xB6\x95\xFB\x96@\x82ő\x97\x90M
+ -
+
+ - Tera Term 4 \x82Ɠ\xAF\x82\xB6\x95\xFB\x96@(\x83`\x83F\x83b\x83N\x82\xF0\x93\xFC\x82ꂽ\x82Ƃ\xAB)
+ -
+ \x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x93ǂݍ\x9E\x82݂Ȃ\xAA\x82瑗\x90M\x82\xB5\x82܂\xB7\x81B
+ \x83e\x83L\x83X\x83g\x83t\x83@\x83C\x83\x8B\x82\xCDACP\x82Ƃ\xB5\x82ēǂݍ\x9E\x82݁A\x83G\x83\x93\x83R\x81[\x83h\x82͎\xA9\x93\xAE\x94\xBB\x92肳\x82\xEA\x82܂\xB9\x82\xF1\x81B
+
+ - \x83`\x83F\x83b\x83N\x82\xF0\x8AO\x82\xB5\x82\xBD\x8E\x9E
+ -
+ \x83t\x83@\x83C\x83\x8B\x82\xF0\x83\x81\x83\x82\x83\x8A\x82ɓǂݍ\x9E\x82\xF1\x82ł\xA9\x82瑗\x90M\x82\xB5\x82܂\xB7\x81B
+ \x83e\x83L\x83X\x83g\x83t\x83@\x83C\x83\x8B\x82̃G\x83\x93\x83R\x81[\x83h\x82͎\xA9\x93\xAE\x94\xBB\x92肵\x82܂\xB7\x81B
+
+
+
- Binary
-
If you select this option, received characters are sent without any
@@ -27,8 +44,107 @@
modifications. Otherwise, new-line codes are converted and control
characters (except TAB, LF and CR) are stripped out.
+
+ - delay type
+ -
+
+ - no delay
+ -
+ \x83f\x83B\x83\x8C\x83C\x8F\x88\x97\x9D\x82Ȃ\xB5
+
+
+ - per charactor
+ -
+ 1\x95\xB6\x8E\x9A\x96\x88\x82Ƀf\x83B\x83\x8C\x83C\x8F\x88\x97\x9D\x82\xF0\x8Ds\x82\xA4
+
+
+ - per line
+ -
+ 1\x8Ds\x96\x88\x82Ƀf\x83B\x83\x8C\x83C\x8F\x88\x97\x9D\x82\xF0\x8Ds\x82\xA4
+
+
+ - per sendsize
+ -
+ \x8Ew\x92著\x90M\x95\xB6\x8E\x9A\x96\x88\x82Ƀf\x83B\x83\x8C\x83C\x8F\x88\x97\x9D\x82\xF0\x8Ds\x82\xA4
+
+
+
+
+
+ - send size
+ -
+ \x91\x97\x90M\x83T\x83C\x83Y(delay type\x82\xAA per sendsize\x82̂Ƃ\xAB\x97L\x8C\xF8)
+
+
+ - delay time(ms)
+ -
+ \x83f\x83B\x83\x8C\x83C\x8E\x9E\x8A\xD4
+
+ \x91\x97\x90M\x83T\x83C\x83Y
+
+
+ Tera Term\x82̒ʐM\x91\x8A\x8E\xE8\x82̎\xF3\x90M\x83o\x83b\x83t\x83@\x83T\x83C\x83Y\x82Ə\x88\x97\x9D\x91\xAC\x93x\x82\xF0\x8Dl\x97\xB6\x82\xB7\x82邱\x82ƂŁA
+ \x8Ew\x92肵\x82\xBD\x91\x97\x90M\x83T\x83C\x83Y\x96\x88\x82Ƀf\x83B\x83\x8C\x83C\x82\xF0\x93\xFC\x82\xEA\x82邱\x82ƂŁA
+ 1\x83L\x83\x83\x83\x89\x83N\x83^\x96\x88\x81A1\x8Ds\x96\x88\x82Ƀf\x83B\x83\x8C\x83C\x82\xF0\x93\xFC\x82\xEA\x82\xE9\x82\xE6\x82\xE8\x8C\xF8\x97\xA6\x93I\x82Ƀt\x83@\x83C\x83\x8B\x91\x97\x90M\x82\xF0\x8Ds\x82\xA4\x82\xB1\x82Ƃ\xAA\x82ł\xAB\x82܂\xB7\x81B
+
+
+
+ \x91\x97\x90M\x83f\x81[\x83^\x82̃h\x83\x8D\x83b\x83v\x82͎\x9F\x82̂Ƃ\xB1\x82\xEB\x82Ŕ\xAD\x90\xB6\x82\xB7\x82邱\x82Ƃ\xAA\x8Dl\x82\xA6\x82\xE7\x82\xEA\x82܂\xB7\x81B
+
+
+
+ s1 s2 s3 s4 program
+Tera Term ---> Tera Term\x93\xE0 ---> Windows ---> (sshd,telnet,pipe) ---> OS,driver ---> \x8B[\x8E\x97\x92[\x96\x96(pty) + \x83V\x83F\x83\x8B,\x82\xBB\x82̑\xBC\x83R\x83}\x83\x93\x83h
+ \x91\x97\x90M\x83o\x83b\x83t\x83@ (serial ) UART\x83`\x83b\x83v\x82Ȃ\xC7 \x91g\x8D\x9E\x83v\x83\x8D\x83O\x83\x89\x83\x80\x93\x99
+ \x8E\xF3\x90M\x83o\x83b\x83t\x83@ <--- <--- <--- <---
+ r1 r2 r3 r4
+
+
+
+ - s1 Tera Term\x93\xE0\x82̑\x97\x90M\x83o\x83b\x83t\x83@
+ -
+ \x89\\x90\xAB\x82͒Ⴂ\x82ł\xB5\x82傤\x81B
+ \x91\x97\x90M\x83o\x83b\x83t\x83@\x82̋T\x83C\x83Y\x82\xF0\x8C\xA9\x82Ȃ\xAA\x82\xE7\x83f\x81[\x83^\x82\xF0\x8Bl\x82߂Ă\xA2\x82\xAB\x82܂\xB7\x81B
+ - s2 Windows
+ -
+ \x89\\x90\xAB\x82͒Ⴂ\x82ł\xB5\x82傤\x81B
+ \x8Eg\x97p\x82\xB7\x82\xE9\x83n\x81[\x83h\x83E\x83F\x83A\x81A\x83h\x83\x89\x83C\x83o\x82̃o\x81[\x83W\x83\x87\x83\x93\x82ɂ\xE6\x82\xC1\x82Ă\xCDBSoD\x82\xF0\x8A܂߂ėl\x81X\x82ȕs\x8B\x82\xAA\x94\xAD\x90\xB6\x82\xB7\x82邱\x82Ƃ\xAA\x82\xA0\x82\xE8\x82܂\xB7\x81B
+ Tera Term\x82̃V\x83\x8A\x83A\x83\x8B\x83|\x81[\x83g\x90ݒ\xE8\x82ł̓h\x83\x89\x83C\x83o\x82̏ڍׂ\xF0\x8C\xA9\x82邱\x82Ƃ\xAA\x82ł\xAB\x82܂\xB7\x81B
+
+ - s3 \x91\x97\x90M\x98H
+ -
+ serial\x82̏ꍇ\x83G\x83\x89\x81[\x8E\x9E\x82̍đ\x97\x8F\x88\x97\x9D\x82͂\xA0\x82\xE8\x82܂\xB9\x82\xF1\x81B\x83f\x81[\x83^\x82ɃG\x83\x89\x81[\x82\xAA\x94\xAD\x90\xB6\x82\xB7\x82\xE9\x82ƃh\x83\x8D\x83b\x83v\x82\xB5\x82܂\xB7\x81B
+ TCP/IP, pipe\x82̏ꍇ\x82͉\\x90\xAB\x82͒Ⴂ\x82Ǝv\x82\xED\x82\xEA\x82܂\xB7\x81B
+
+ - s4 OS,UART\x83`\x83b\x83v
+ -
+ PC(CPU)\x82̏\x88\x97\x9D\x94\\x97͂\xA6\x82\xBD\x83f\x81[\x83^\x82̎\xF3\x90M(program\x82\xAAOS\x82\xE2\x83`\x83b\x83v\x82\xA9\x82\xE7\x8E\xF3\x90M\x83f\x81[\x83^\x82\xF0\x88\xF8\x82\xAB\x8E\xE6\x82\xE7\x82Ȃ\xA2\x8Fꍇ)\x93\x99\x82ŁA
+ OS(\x83h\x83\x89\x83C\x83o)\x81AUART\x83`\x83b\x83v\x82̎\xF3\x90M\x83o\x83b\x83t\x83@\x82\xAA\x83I\x81[\x83o\x81[\x83t\x83\x8D\x81[\x82\xB5\x82ăh\x83\x8D\x83b\x83v\x82\xB5\x82܂\xB7\x81B
+ \x83t\x83\x8D\x81[\x90\xA7\x8C䓙\x82\xCDOS(\x83h\x83\x89\x83C\x83o)\x82\xAA\x8Ds\x82\xA4\x82\xA9program\x82\xAA\x8Ds\x82\xA4\x82\xA9\x82͎\xC0\x91\x95\x82ɂ\xE6\x82\xE8\x82܂\xB7\x81B
+ TCP/IP\x82ł̓t\x83\x8D\x81[\x90\xA7\x8C\xE4,\x83G\x83\x89\x81[\x8E\x9E\x82̍đ\x97\x82\xAA\x8Ds\x82\xED\x82\xEA\x81A\x91\xBD\x82\xAD\x82̏ꍇOS\x93\xE0\x82̃v\x83\x8D\x83g\x83R\x83\x8B\x83X\x83^\x83b\x83N\x82\xAA\x82\xB1\x82\xEA\x82\xE7\x82̏\x88\x97\x9D\x82\xF0\x8Ds\x82\xA2\x82܂\xB7\x81B
+ \x83V\x83\x8A\x83A\x83\x8B\x82ł̓t\x83\x8D\x81[\x90\xA7\x8C\xE4\x82̗L\x96\xB3\x82̓\x86\x81[\x83U\x81[\x82\xAA\x8C\x88\x82߂邱\x82Ƃ\xAA\x82ł\xAB\x81A\x83I\x81[\x83o\x81[\x83t\x83\x8D\x81[\x82ȂǃG\x83\x89\x81[\x8E\x9E\x82̍đ\x97\x82͍s\x82\xED\x82\xEA\x82܂\xB9\x82\xF1\x81B
+
+ - program
+ -
+ \x83v\x83\x8D\x83O\x83\x89\x83\x80\x93\xE0\x82̎\xF3\x90M\x83o\x83b\x83t\x83@\x83I\x81[\x83o\x81[\x83t\x83\x8D\x81[\x82ȂǂŃh\x83\x8D\x83b\x83v\x82\xB5\x82܂\xB7\x81B
+ \x89\xBC\x91z\x92[\x96\x96(pty)\x82ł̓o\x83b\x83t\x83@\x82\xAA\x88\xEC\x82ꂻ\x82\xA4\x82ɂȂ\xE9\x82\xC60x07(BEL)\x82\xAA\x91\x97\x82\xE7\x82\xEA\x81ATera Term\x82Ńx\x83\x8B\x82\xAA\x82Ȃ\xE8\x82܂\xB7\x81B
+
+
+
+ \x8E\xE5\x82\xC8UART\x83`\x83b\x83v\x81A\x83h\x83\x89\x83C\x83o\x82̎\xF3\x90M\x83o\x83b\x83t\x83@\x83T\x83C\x83Y
+
+ 8250 UART \x8E\xF3\x90M\x83o\x83b\x83t\x83@\x82Ȃ\xB5
+ 16550 UART 16 Byte FIFO
+ FT232R 256 Byte receive buffer
+ TTY drive(Linux 2.6.26) 4KB (TTSSH\x82ɂ\xE6\x82\xE9SSH\x82̐v\x82Ǝ\xC0\x91\x95/\x8B^\x8E\x97\x92[\x96\x96\x82̂\xB5\x82\xAD\x82\xDD)
+
+
+
+ \x91\x97\x90M\x83f\x81[\x83^\x82̃G\x83R\x81[\x82\xAA\x95Ԃ\xC1\x82Ă\xB1\x82Ȃ\xA2\x8Fꍇ\x82͎\xF3\x90M\x83f\x81[\x83^\x82\xAA\x82ǂ\xB1\x82\xA9\x82Ńh\x83\x8D\x83b\x83v\x82\xB5\x82Ă\xA2\x82邱\x82Ƃ\xE0\x8Dl\x82\xA6\x82\xE7\x82\xEA\x82܂\xB7\x81B
+
+
"Send file" dialog box (displayed while sending)
- Close
Modified: trunk/doc/ja/html/menu/file-sendfile.html
===================================================================
--- trunk/doc/ja/html/menu/file-sendfile.html 2021-06-12 15:29:57 UTC (rev 9309)
+++ trunk/doc/ja/html/menu/file-sendfile.html 2021-06-18 16:05:01 UTC (rev 9310)
@@ -19,9 +19,25 @@
- File Name
-
\x91\x97\x90M\x82\xB7\x82\xE9\x83t\x83@\x83C\x83\x8B\x82̃t\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x93\xFC\x97͂܂\xBD\x82͑I\x91\xF0\x82\xB5\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2\x81B
- \x82\xB7\x82łɑ\xB6\x8D݂\xB7\x82\xE9\x83t\x83@\x83C\x83\x8B\x82łȂ\xAF\x82\xEA\x82Ȃ\xE8\x82܂\xB9\x82\xF1\x81B
+ \x82\xB7\x82łɑ\xB6\x8D݂\xB7\x82\xE9\x83t\x83@\x83C\x83\x8B\x82łȂ\xAF\x82\xEA\x82Ȃ\xE8\x82܂\xB9\x82\xF1\x81B
+ \x83_\x83C\x83A\x83\x8D\x83O\x82Ƀt\x83@\x83C\x83\x8B\x82\xF0\x83h\x83\x8D\x83b\x83v\x82\xB7\x82邱\x82ƂŃt\x83@\x83C\x83\x8B\x96\xBC\x82\xF0\x93\xFC\x97͂\xB7\x82邱\x82Ƃ\xE0\x82ł\xAB\x82܂\xB7\x81B
+ - Tera Term 4 \x82Ɠ\xAF\x82\xB6\x95\xFB\x96@\x82ő\x97\x90M
+ -
+
+ - Tera Term 4 \x82Ɠ\xAF\x82\xB6\x95\xFB\x96@(\x83`\x83F\x83b\x83N\x82\xF0\x93\xFC\x82ꂽ\x82Ƃ\xAB)
+ -
+ \x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE7\x93ǂݍ\x9E\x82݂Ȃ\xAA\x82瑗\x90M\x82\xB5\x82܂\xB7\x81B
+ \x83e\x83L\x83X\x83g\x83t\x83@\x83C\x83\x8B\x82\xCDACP\x82Ƃ\xB5\x82ēǂݍ\x9E\x82݁A\x83G\x83\x93\x83R\x81[\x83h\x82͎\xA9\x93\xAE\x94\xBB\x92肳\x82\xEA\x82܂\xB9\x82\xF1\x81B
+
+ - \x83`\x83F\x83b\x83N\x82\xF0\x8AO\x82\xB5\x82\xBD\x8E\x9E
+ -
+ \x83t\x83@\x83C\x83\x8B\x82\xF0\x83\x81\x83\x82\x83\x8A\x82ɓǂݍ\x9E\x82\xF1\x82ł\xA9\x82瑗\x90M\x82\xB5\x82܂\xB7\x81B
+ \x83e\x83L\x83X\x83g\x83t\x83@\x83C\x83\x8B\x82̃G\x83\x93\x83R\x81[\x83h\x82͎\xA9\x93\xAE\x94\xBB\x92肵\x82܂\xB7\x81B
+
+
+
- Binary
-
\x83t\x83@\x83C\x83\x8B\x82̓\xE0\x97e\x82\xF0\x82\xBB\x82̂܂ܑ\x97\x90M\x82\xB5\x82\xBD\x82\xA2\x8Fꍇ\x82͑I\x91\xF0\x82\xB5\x82Ă\xAD\x82\xBE\x82\xB3\x82\xA2\x81B
Modified: trunk/installer/release/lang_utf8/Japanese.lng
===================================================================
--- trunk/installer/release/lang_utf8/Japanese.lng 2021-06-12 15:29:57 UTC (rev 9309)
+++ trunk/installer/release/lang_utf8/Japanese.lng 2021-06-18 16:05:01 UTC (rev 9310)
@@ -546,7 +546,7 @@
; sendfile
DLG_SENDFILE_TERATERM4=Tera Term 4と同じ方法で送信
-DLG_SENDFILE_TERATERM4_TOOLTIP=Tera Term 4の場合\n・ファイルから読み込みながら送信する\n・テキストファイルのエンコードは自動判定されない\nTera Term 5の場合\n・ファイルをメモリに読み込んでから送信する\n・テキストファイルのエンコードは自動判定される
+DLG_SENDFILE_TERATERM4_TOOLTIP=Tera Term 4の場合\n・ファイルから読み込みながら送信する\n・テキストファイルはACPとして読み込み,エンコードは自動判定されない\nTera Term 5の場合\n・ファイルをメモリに読み込んでから送信する\n・テキストファイルのエンコードは自動判定される
[TTSSH]
; font
Modified: trunk/teraterm/teraterm/filesys.cpp
===================================================================
--- trunk/teraterm/teraterm/filesys.cpp 2021-06-12 15:29:57 UTC (rev 9309)
+++ trunk/teraterm/teraterm/filesys.cpp 2021-06-18 16:05:01 UTC (rev 9310)
@@ -41,20 +41,10 @@
#include "vtterm.h"
#include "layer_for_unicode.h"
#include "asprintf.h"
+#include "codeconv.h"
#include "filesys.h"
-typedef struct {
- wchar_t *FullName;
-
- HANDLE FileHandle;
- LONG FileSize, ByteCount;
-
- DWORD StartTime;
- BOOL FilePause;
-} TFileVar;
-typedef TFileVar *PFileVar;
-
typedef enum {
FS_BRACKET_NONE,
FS_BRACKET_START,
@@ -61,11 +51,6 @@
FS_BRACKET_END,
} FileBracketMode_t;
-static PFileVar SendVar = NULL;
-
-static BOOL FileRetrySend, FileRetryEcho, FileCRSend, FileReadEOF, BinaryMode;
-static BYTE FileByte;
-
#define FILE_SEND_BUF_SIZE 8192
struct FileSendHandler {
CHAR buf[FILE_SEND_BUF_SIZE];
@@ -72,17 +57,36 @@
int pos;
int end;
};
-static struct FileSendHandler FileSendHandler;
-static int FileDlgRefresh;
-static FileBracketMode_t FileBracketMode = FS_BRACKET_NONE;
-static int FileBracketPtr = 0;
-static char BracketStartStr[] = "\033[200~";
-static char BracketEndStr[] = "\033[201~";
+typedef struct {
+ wchar_t *FullName;
+ HANDLE FileHandle;
+ LONG FileSize; // uint64_t FileSize; TODO
+ LONG ByteCount; // uint64_t ByteCount;
+
+ DWORD StartTime;
+ BOOL FilePause;
+
+ BOOL FileRetrySend, FileRetryEcho, FileCRSend, FileReadEOF, BinaryMode;
+
+ FileBracketMode_t FileBracketMode;
+ int FileBracketPtr;
+
+ PFileTransDlg SendDlg;
+ int FileDlgRefresh; // ?
+
+ wchar_t SendChar;
+
+ struct FileSendHandler FileSendHandler;
+} TFileVar;
+typedef TFileVar *PFileVar;
+
+static PFileVar SendVar = NULL;
static BOOL FSend = FALSE;
-static PFileTransDlg SendDlg = NULL;
+static const char BracketStartStr[] = "\033[200~";
+static const char BracketEndStr[] = "\033[201~";
static BOOL OpenFTDlg(PFileVar fv)
{
@@ -114,7 +118,7 @@
fv->FilePause = FALSE;
fv->StartTime = GetTickCount();
- SendDlg = FTDlg; /* File send */
+ fv->SendDlg = FTDlg; /* File send */
return TRUE;
}
@@ -122,9 +126,9 @@
#if 0
static void ShowFTDlg(WORD OpId)
{
- if (SendDlg != NULL) {
- SendDlg->ShowWindow(SW_SHOWNORMAL);
- SetForegroundWindow(SendDlg->GetSafeHwnd());
+ if (fv->SendDlg != NULL) {
+ fv->SendDlg->ShowWindow(SW_SHOWNORMAL);
+ SetForegroundWindow(fv->SendDlg->GetSafeHwnd());
}
}
#endif
@@ -201,25 +205,25 @@
return FALSE;
}
SendVar->ByteCount = 0;
- SendVar->FileSize = (LONG)GetFSize64H(SendVar->FileHandle);
+ SendVar->FileSize = GetFSize64H(SendVar->FileHandle);
TalkStatus = IdTalkFile;
- FileRetrySend = FALSE;
- FileRetryEcho = FALSE;
- FileCRSend = FALSE;
- FileReadEOF = FALSE;
- FileSendHandler.pos = 0;
- FileSendHandler.end = 0;
- FileDlgRefresh = 0;
+ fv->FileRetrySend = FALSE;
+ fv->FileRetryEcho = FALSE;
+ fv->FileCRSend = FALSE;
+ fv->FileReadEOF = FALSE;
+ fv->FileSendHandler.pos = 0;
+ fv->FileSendHandler.end = 0;
+ fv->FileDlgRefresh = 0;
if (BracketedPasteMode()) {
- FileBracketMode = FS_BRACKET_START;
- FileBracketPtr = 0;
- BinaryMode = TRUE;
+ fv->FileBracketMode = FS_BRACKET_START;
+ fv->FileBracketPtr = 0;
+ fv->BinaryMode = TRUE;
}
else {
- FileBracketMode = FS_BRACKET_NONE;
- BinaryMode = ts.TransBin;
+ fv->FileBracketMode = FS_BRACKET_NONE;
+ fv->BinaryMode = ts.TransBin;
}
if (! OpenFTDlg(SendVar)) {
@@ -233,12 +237,13 @@
void FileSendEnd(void)
{
if (FSend) {
+ PFileVar fv = SendVar;
FSend = FALSE;
TalkStatus = IdTalkKeyb;
- if (SendDlg!=NULL)
+ if (fv->SendDlg!=NULL)
{
- SendDlg->DestroyWindow();
- SendDlg = NULL;
+ fv->SendDlg->DestroyWindow();
+ fv->SendDlg = NULL;
}
FreeFileVar(&SendVar);
}
@@ -257,22 +262,31 @@
}
}
-static int FSOut1(BYTE b)
+static int FSOut1(PFileVar fv)
{
- if (BinaryMode)
- return CommBinaryOut(&cv,(PCHAR)&b,1);
- else if ((b>=0x20) || (b==0x09) || (b==0x0A) || (b==0x0D))
- return CommTextOut(&cv,(PCHAR)&b,1);
- else
- return 1;
+ if (fv->BinaryMode) {
+ BYTE b = (BYTE)fv->SendChar;
+ return CommBinaryOut(&cv, (PCHAR)&b, 1);
+ }
+ else {
+ wchar_t wc = fv->SendChar;
+ if ((wc >= 0x20) || (wc == 0x09) || (wc == 0x0A) || (wc == 0x0D)) {
+ return CommTextOutW(&cv, &wc, 1);
+ }
+ else {
+ return 1;
+ }
+ }
}
-static int FSEcho1(BYTE b)
+static int FSEcho1(PFileVar fv)
{
- if (BinaryMode)
+ if (fv->BinaryMode) {
+ BYTE b = (BYTE)fv->SendChar;
return CommBinaryEcho(&cv,(PCHAR)&b,1);
- else
- return CommTextEcho(&cv,(PCHAR)&b,1);
+ } else {
+ return CommTextEchoW(&cv, &fv->SendChar, 1);
+ }
}
// \x88ȉ\xBA\x82̎\x9E\x82͂\xB1\x82\xBF\x82\xE7\x82̊\x94\x82\xF0\x8Eg\x82\xA4
@@ -287,48 +301,48 @@
DWORD read_bytes;
PFileVar fv = SendVar;
- if ((SendDlg == NULL) || (fv->FilePause == TRUE))
+ if ((fv->SendDlg == NULL) || (fv->FilePause == TRUE))
return;
BCOld = SendVar->ByteCount;
- if (FileRetrySend)
+ if (fv->FileRetrySend)
{
- c = CommRawOut(&cv, &(FileSendHandler.buf[FileSendHandler.pos]),
- FileSendHandler.end - FileSendHandler.pos);
- FileSendHandler.pos += c;
- FileRetrySend = (FileSendHandler.end != FileSendHandler.pos);
- if (FileRetrySend)
+ c = CommRawOut(&cv, &(fv->FileSendHandler.buf[fv->FileSendHandler.pos]),
+ fv->FileSendHandler.end - fv->FileSendHandler.pos);
+ fv->FileSendHandler.pos += c;
+ fv->FileRetrySend = (fv->FileSendHandler.end != fv->FileSendHandler.pos);
+ if (fv->FileRetrySend)
return;
}
do {
- if (FileSendHandler.pos == FileSendHandler.end) {
- ReadFile(SendVar->FileHandle, &(FileSendHandler.buf[0]), sizeof(FileSendHandler.buf), &read_bytes, NULL);
+ if (fv->FileSendHandler.pos == fv->FileSendHandler.end) {
+ ReadFile(SendVar->FileHandle, &(fv->FileSendHandler.buf[0]), sizeof(fv->FileSendHandler.buf), &read_bytes, NULL);
fc = LOWORD(read_bytes);
- FileSendHandler.pos = 0;
- FileSendHandler.end = fc;
+ fv->FileSendHandler.pos = 0;
+ fv->FileSendHandler.end = fc;
} else {
- fc = FileSendHandler.end - FileSendHandler.end;
+ fc = fv->FileSendHandler.end - fv->FileSendHandler.end;
}
if (fc != 0)
{
- c = CommRawOut(&cv, &(FileSendHandler.buf[FileSendHandler.pos]),
- FileSendHandler.end - FileSendHandler.pos);
- FileSendHandler.pos += c;
- FileRetrySend = (FileSendHandler.end != FileSendHandler.pos);
+ c = CommRawOut(&cv, &(fv->FileSendHandler.buf[fv->FileSendHandler.pos]),
+ fv->FileSendHandler.end - fv->FileSendHandler.pos);
+ fv->FileSendHandler.pos += c;
+ fv->FileRetrySend = (fv->FileSendHandler.end != fv->FileSendHandler.pos);
SendVar->ByteCount = SendVar->ByteCount + c;
- if (FileRetrySend)
+ if (fv->FileRetrySend)
{
if (SendVar->ByteCount != BCOld) {
- SendDlg->RefreshNum(SendVar->StartTime, SendVar->FileSize, SendVar->ByteCount);
+ fv->SendDlg->RefreshNum(SendVar->StartTime, SendVar->FileSize, SendVar->ByteCount);
}
return;
}
}
- FileDlgRefresh = SendVar->ByteCount;
- SendDlg->RefreshNum(SendVar->StartTime, SendVar->FileSize, SendVar->ByteCount);
+ fv->FileDlgRefresh = SendVar->ByteCount;
+ fv->SendDlg->RefreshNum(SendVar->StartTime, SendVar->FileSize, SendVar->ByteCount);
BCOld = SendVar->ByteCount;
if (fc != 0)
return;
@@ -344,69 +358,87 @@
PFileVar fv = SendVar;
if (cv.PortType == IdSerial && ts.FileSendHighSpeedMode &&
- BinaryMode && FileBracketMode == FS_BRACKET_NONE && !cv.TelFlag &&
+ fv->BinaryMode && fv->FileBracketMode == FS_BRACKET_NONE && !cv.TelFlag &&
(ts.LocalEcho == 0) && (ts.Baud >= 115200)) {
return FileSendBinayBoost();
}
- if ((SendDlg == NULL) || (fv->FilePause == TRUE))
+ if ((fv->SendDlg == NULL) || (fv->FilePause == TRUE))
return;
BCOld = SendVar->ByteCount;
- if (FileRetrySend)
+ if (fv->FileRetrySend)
{
- FileRetryEcho = (ts.LocalEcho>0);
- c = FSOut1(FileByte);
- FileRetrySend = (c==0);
- if (FileRetrySend)
+ fv->FileRetryEcho = (ts.LocalEcho>0);
+ c = FSOut1(fv);
+ fv->FileRetrySend = (c==0);
+ if (fv->FileRetrySend)
return;
}
- if (FileRetryEcho)
+ if (fv->FileRetryEcho)
{
- c = FSEcho1(FileByte);
- FileRetryEcho = (c==0);
- if (FileRetryEcho)
+ c = FSEcho1(fv);
+ fv->FileRetryEcho = (c==0);
+ if (fv->FileRetryEcho)
return;
}
do {
- if (FileBracketMode == FS_BRACKET_START) {
- FileByte = BracketStartStr[FileBracketPtr++];
+ if (fv->FileBracketMode == FS_BRACKET_START) {
+ fv->SendChar = BracketStartStr[fv->FileBracketPtr++];
fc = 1;
- if (FileBracketPtr >= sizeof(BracketStartStr) - 1) {
- FileBracketMode = FS_BRACKET_END;
- FileBracketPtr = 0;
- BinaryMode = ts.TransBin;
+ if (fv->FileBracketPtr >= sizeof(BracketStartStr) - 1) {
+ fv->FileBracketMode = FS_BRACKET_END;
+ fv->FileBracketPtr = 0;
+ fv->BinaryMode = ts.TransBin;
}
}
- else if (! FileReadEOF) {
+ else if (!fv->FileReadEOF) {
DWORD read_bytes;
+ BYTE FileByte;
ReadFile(SendVar->FileHandle, &FileByte, 1, &read_bytes, NULL);
fc = LOWORD(read_bytes);
SendVar->ByteCount = SendVar->ByteCount + fc;
- if (FileCRSend && (fc==1) && (FileByte==0x0A)) {
+ if (FileByte==0x0A && fc == 1 && fv->FileCRSend) {
+ // CR \x82𑗂\xC1\x82\xBD\x92\xBC\x8C\xE3 0x0A \x82\xBE\x82\xC1\x82\xBD -> \x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE71\x83o\x83C\x83g\x93ǂ\xDE
ReadFile(SendVar->FileHandle, &FileByte, 1, &read_bytes, NULL);
fc = LOWORD(read_bytes);
SendVar->ByteCount = SendVar->ByteCount + fc;
}
+
+ if (IsDBCSLeadByte(FileByte)) {
+ // DBCS\x82\xCC1byte\x96ڂ\xBE\x82\xC1\x82\xBD -> \x83t\x83@\x83C\x83\x8B\x82\xA9\x82\xE71\x83o\x83C\x83g\x93ǂ\xF1\x82\xC5 Unicode \x82Ƃ\xB7\x82\xE9
+ char dbcs[2];
+ dbcs[0] = FileByte;
+
+ ReadFile(SendVar->FileHandle, &dbcs[1], 1, &read_bytes ,NULL);
+ fc = LOWORD(read_bytes);
+ SendVar->ByteCount = SendVar->ByteCount + fc;
+
+ unsigned int u32;
+ MBCPToUTF32(dbcs, 2, CP_ACP, &u32);
+ fv->SendChar = u32;
+ } else {
+ fv->SendChar = FileByte;
+ }
}
else {
fc = 0;
}
- if (fc == 0 && FileBracketMode == FS_BRACKET_END) {
- FileReadEOF = TRUE;
- FileByte = BracketEndStr[FileBracketPtr++];
+ if (fc == 0 && fv->FileBracketMode == FS_BRACKET_END) {
+ fv->FileReadEOF = TRUE;
+ fv->SendChar = BracketEndStr[fv->FileBracketPtr++];
fc = 1;
- BinaryMode = TRUE;
+ fv->BinaryMode = TRUE;
- if (FileBracketPtr >= sizeof(BracketEndStr) - 1) {
- FileBracketMode = FS_BRACKET_NONE;
- FileBracketPtr = 0;
+ if (fv->FileBracketPtr >= sizeof(BracketEndStr) - 1) {
+ fv->FileBracketMode = FS_BRACKET_NONE;
+ fv->FileBracketPtr = 0;
}
}
@@ -413,26 +445,26 @@
if (fc!=0)
{
- c = FSOut1(FileByte);
- FileCRSend = (ts.TransBin==0) && (FileByte==0x0D);
- FileRetrySend = (c==0);
- if (FileRetrySend)
+ c = FSOut1(fv);
+ fv->FileCRSend = (ts.TransBin == 0) && (fv->SendChar == 0x0D);
+ fv->FileRetrySend = (c == 0);
+ if (fv->FileRetrySend)
{
if (SendVar->ByteCount != BCOld) {
- SendDlg->RefreshNum(SendVar->StartTime, SendVar->FileSize, SendVar->ByteCount);
+ fv->SendDlg->RefreshNum(SendVar->StartTime, SendVar->FileSize, SendVar->ByteCount);
}
return;
}
if (ts.LocalEcho>0)
{
- c = FSEcho1(FileByte);
- FileRetryEcho = (c==0);
- if (FileRetryEcho)
+ c = FSEcho1(fv);
+ fv->FileRetryEcho = (c==0);
+ if (fv->FileRetryEcho)
return;
}
}
- if ((fc==0) || ((SendVar->ByteCount % 100 == 0) && (FileBracketPtr == 0))) {
- SendDlg->RefreshNum(SendVar->StartTime, SendVar->FileSize, SendVar->ByteCount);
+ if ((fc==0) || ((SendVar->ByteCount % 100 == 0) && (fv->FileBracketPtr == 0))) {
+ fv->SendDlg->RefreshNum(SendVar->StartTime, SendVar->FileSize, SendVar->ByteCount);
BCOld = SendVar->ByteCount;
if (fc!=0)
return;
From scmnotify @ osdn.net Sat Jun 19 01:05:11 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sat, 19 Jun 2021 01:05:11 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMTFdIEFOU0npgIHkv6HplqLmlbDjgpI=?=
=?utf-8?b?5YmK6Zmk?=
Message-ID: <1624032311.131443.6110.nullmailer@users.osdn.me>
Revision: 9311
https://osdn.net/projects/ttssh2/scm/svn/commits/9311
Author: zmatsuo
Date: 2021-06-19 01:05:10 +0900 (Sat, 19 Jun 2021)
Log Message:
-----------
ANSI送信関数を削除
- 出力をすべて Unicode に置き換えて、使用されなくなったので削除
- CommTextOut()
- CommTextEcho()
- 未使用となる変数を削除
Modified Paths:
--------------
trunk/teraterm/common/ttcommon.h
trunk/teraterm/common/tttypes.h
trunk/teraterm/teraterm/commlib.c
trunk/teraterm/teraterm/vtterm.c
trunk/teraterm/teraterm/vtwin.cpp
trunk/teraterm/ttpcmn/ttcmn.c
trunk/teraterm/ttpcmn/ttpcmn.def
-------------- next part --------------
Modified: trunk/teraterm/common/ttcommon.h
===================================================================
--- trunk/teraterm/common/ttcommon.h 2021-06-18 16:05:01 UTC (rev 9310)
+++ trunk/teraterm/common/ttcommon.h 2021-06-18 16:05:10 UTC (rev 9311)
@@ -69,10 +69,8 @@
DllExport int PASCAL CommRawOut(PComVar cv, PCHAR B, int C);
DllExport int PASCAL CommBinaryOut(PComVar cv, PCHAR B, int C);
DllExport int PASCAL CommBinaryBuffOut(PComVar cv, PCHAR B, int C);
-DllExport int PASCAL CommTextOut(PComVar cv, PCHAR B, int C);
DllExport int PASCAL CommTextOutW(PComVar cv, const wchar_t *B, int C);
DllExport int PASCAL CommBinaryEcho(PComVar cv, PCHAR B, int C);
-DllExport int PASCAL CommTextEcho(PComVar cv, PCHAR B, int C);
DllExport int PASCAL CommTextEchoW(PComVar cv, const wchar_t *B, int C);
DllExport void PASCAL CreateNotifyIcon(PComVar cv);
Modified: trunk/teraterm/common/tttypes.h
===================================================================
--- trunk/teraterm/common/tttypes.h 2021-06-18 16:05:01 UTC (rev 9310)
+++ trunk/teraterm/common/tttypes.h 2021-06-18 16:05:10 UTC (rev 9311)
@@ -891,12 +891,12 @@
HANDLE ComID;
BOOL CanSend, RRQ;
- BOOL SendKanjiFlag;
- BOOL EchoKanjiFlag;
+ BOOL reserve_SendKanjiFlag;
+ BOOL reserve_EchoKanjiFlag;
int SendCode;
int EchoCode;
- BYTE SendKanjiFirst;
- BYTE EchoKanjiFirst;
+ BYTE reserve_SendKanjiFirst;
+ BYTE reserve_EchoKanjiFirst;
/* from VTSet */
WORD Language;
@@ -909,7 +909,7 @@
WORD KanjiIn;
WORD KanjiOut;
WORD RussHost;
- WORD RussClient;
+ WORD reserve_RussClient;
/* from PortSet */
WORD DelayPerChar;
WORD DelayPerLine;
Modified: trunk/teraterm/teraterm/commlib.c
===================================================================
--- trunk/teraterm/teraterm/commlib.c 2021-06-18 16:05:01 UTC (rev 9310)
+++ trunk/teraterm/teraterm/commlib.c 2021-06-18 16:05:10 UTC (rev 9311)
@@ -307,9 +307,7 @@
cv->ComID = INVALID_HANDLE_VALUE;
cv->CanSend = TRUE;
cv->RRQ = FALSE;
- cv->SendKanjiFlag = FALSE;
cv->SendCode = IdASCII;
- cv->EchoKanjiFlag = FALSE;
cv->EchoCode = IdASCII;
cv->Language = ts->Language;
cv->CRSend = ts->CRSend;
@@ -320,7 +318,6 @@
cv->KanjiIn = ts->KanjiIn;
cv->KanjiOut = ts->KanjiOut;
cv->RussHost = ts->RussHost;
- cv->RussClient = ts->RussClient;
cv->DelayFlag = TRUE;
cv->DelayPerChar = ts->DelayPerChar;
cv->DelayPerLine = ts->DelayPerLine;
Modified: trunk/teraterm/teraterm/vtterm.c
===================================================================
--- trunk/teraterm/teraterm/vtterm.c 2021-06-18 16:05:01 UTC (rev 9310)
+++ trunk/teraterm/teraterm/vtterm.c 2021-06-18 16:05:10 UTC (rev 9311)
@@ -388,9 +388,7 @@
Glr[0] = 0;
Glr[1] = 0;
cv.SendCode = IdASCII;
- cv.SendKanjiFlag = FALSE;
cv.EchoCode = IdASCII;
- cv.EchoKanjiFlag = FALSE;
}
/* Kanji flag */
KanjiIn = FALSE;
Modified: trunk/teraterm/teraterm/vtwin.cpp
===================================================================
--- trunk/teraterm/teraterm/vtwin.cpp 2021-06-18 16:05:01 UTC (rev 9310)
+++ trunk/teraterm/teraterm/vtwin.cpp 2021-06-18 16:05:10 UTC (rev 9311)
@@ -1239,7 +1239,6 @@
// for russian mode
cv.RussHost = ts.RussHost;
- cv.RussClient = ts.RussClient;
if (cv.Ready) {
if (cv.TelFlag && (ts.TelEcho>0)) {
Modified: trunk/teraterm/ttpcmn/ttcmn.c
===================================================================
--- trunk/teraterm/ttpcmn/ttcmn.c 2021-06-18 16:05:01 UTC (rev 9310)
+++ trunk/teraterm/ttpcmn/ttcmn.c 2021-06-18 16:05:10 UTC (rev 9311)
@@ -918,295 +918,6 @@
return i;
}
-// \x93\xE0\x95\x94\x83R\x81[\x83h(CodePage)\x82\xF0UTF-8\x82֏o\x97͂\xB7\x82\xE9
-static int OutputTextUTF8(WORD K, char *TempStr, PComVar cv)
-{
- int CodePage = *cv->CodePage;
- unsigned int code;
- int outlen;
-
- code = MBCP_UTF32(K, CodePage);
- if (code == 0) {
- // \x95ϊ\xB7\x8E\xB8\x94s
- code = 0xfffd; // U+FFFD: Replacement Character
- }
- outlen = UTF32ToUTF8(code, TempStr, 4);
- return outlen;
-}
-
-static int __isleadbyte_l(int d, PComVar cv)
-{
- int CodePage = *cv->CodePage;
- return IsDBCSLeadByteEx(CodePage, d);
-}
-
-//
-// MBCS\x82\xA9\x82\xE7\x8Ae\x8E튿\x8E\x9A\x83R\x81[\x83h\x82֕ϊ\xB7\x82\xB5\x82ďo\x97͂\xB7\x82\xE9\x81B
-//
-static int TextOutMBCS(PComVar cv, PCHAR B, int C)
-{
- int i, TempLen;
- WORD K;
- char TempStr[12];
- BYTE d;
- BOOL Full;
- int SendCodeNew; // \x91\x97\x90M\x83R\x81[\x83h
- BOOL KanjiFlagNew; // TRUE=\x8E\x9F\x82̕\xB6\x8E\x9A\x82ƍ\x87\x82킹\x82Ċ\xBF\x8E\x9A\x82Ƃ\xB7\x82\xE9
-
- Full = FALSE;
- i = 0;
- while (! Full && (i < C)) {
- TempLen = 0;
- d = (BYTE)B[i];
- SendCodeNew = cv->SendCode;
- KanjiFlagNew = FALSE;
-
- if (cv->SendKanjiFlag) {
- SendCodeNew = IdKanji;
-
- K = (cv->SendKanjiFirst << 8) + d;
-
- // UTF-8\x82ւ̕ϊ\xB7\x82\xF0\x8Ds\x82\xA4\x81B1\x81`3\x83o\x83C\x83g\x82܂ł̑Ή\x9E\x82Ȃ̂Œ\x8D\x88ӁB
- if (cv->KanjiCodeSend == IdUTF8 || cv->Language == IdUtf8) {
- TempLen += OutputTextUTF8(K, TempStr, cv);
- }
- else {
- switch (cv->Language) {
- case IdJapanese:
- switch (cv->KanjiCodeSend) {
- case IdEUC:
- K = SJIS2EUC(K);
- break;
- case IdJIS:
- K = SJIS2JIS(K);
- if ((cv->SendCode==IdKatakana) &&
- (cv->JIS7KatakanaSend==1)) {
- TempStr[TempLen++] = SI;
- }
- break;
- case IdSJIS:
- /* nothing to do */
- break;
- }
- break;
- case IdKorean:
- break;
- }
- TempStr[TempLen++] = HIBYTE(K);
- TempStr[TempLen++] = LOBYTE(K);
- }
- }
- else if (__isleadbyte_l(d, cv)) {
- KanjiFlagNew = TRUE;
- cv->SendKanjiFirst = d;
- SendCodeNew = IdKanji;
-
- if (cv->Language == IdJapanese) {
- if ((cv->SendCode!=IdKanji) && (cv->KanjiCodeSend==IdJIS)) {
- TempStr[0] = 0x1B;
- TempStr[1] = '$';
- if (cv->KanjiIn == IdKanjiInB) {
- TempStr[2] = 'B';
- }
- else {
- TempStr[2] = '@';
- }
- TempLen = 3;
- }
- }
- }
- else {
- if (cv->Language == IdJapanese) {
- if ((cv->SendCode==IdKanji) && (cv->KanjiCodeSend==IdJIS)) {
- TempStr[0] = 0x1B;
- TempStr[1] = '(';
- switch (cv->KanjiOut) {
- case IdKanjiOutJ:
- TempStr[2] = 'J';
- break;
- case IdKanjiOutH:
- TempStr[2] = 'H';
- break;
- default:
- TempStr[2] = 'B';
- }
- TempLen = 3;
- }
-
- if ((0xa0SendCode!=IdKatakana) &&
- (cv->KanjiCodeSend==IdJIS) &&
- (cv->JIS7KatakanaSend==1)) {
- TempStr[TempLen++] = SO;
- }
- }
- else {
- SendCodeNew = IdASCII;
- if ((cv->SendCode==IdKatakana) &&
- (cv->KanjiCodeSend==IdJIS) &&
- (cv->JIS7KatakanaSend==1)) {
- TempStr[TempLen++] = SI;
- }
- }
- }
-
- if (d==CR) {
- TempStr[TempLen++] = 0x0d;
- if (cv->CRSend==IdCRLF) {
- TempStr[TempLen++] = 0x0a;
- }
- else if ((cv->CRSend==IdCR) &&
- cv->TelFlag && ! cv->TelBinSend) {
- TempStr[TempLen++] = 0;
- }
- else if (cv->CRSend == IdLF) {
- TempStr[TempLen-1] = 0x0a;
- }
- if (cv->TelLineMode) {
- cv->Flush = TRUE;
- }
- }
- else if (d==BS) {
- if (cv->TelLineMode) {
- if (cv->FlushLen < cv->LineModeBuffCount) {
- cv->LineModeBuffCount--;
- }
- }
- else {
- TempStr[TempLen++] = d;
- }
- }
- else if (d==0x15) { // Ctrl-U
- if (cv->TelLineMode) {
- cv->LineModeBuffCount = cv->FlushLen;
- }
- else {
- TempStr[TempLen++] = d;
- }
- }
- else if ((d>=0x80) && (cv->KanjiCodeSend==IdUTF8 || cv->Language==IdUtf8)) {
- TempLen += OutputTextUTF8((WORD)d, TempStr, cv);
- }
- else if ((d>=0xa1) && (d<=0xe0) && (cv->Language == IdJapanese)) {
- /* Katakana */
- if (cv->KanjiCodeSend==IdEUC) {
- TempStr[TempLen++] = (char)SS2;
- }
- if ((cv->KanjiCodeSend==IdJIS) &&
- (cv->JIS7KatakanaSend==1)) {
- TempStr[TempLen++] = d & 0x7f;
- }
- else {
- TempStr[TempLen++] = d;
- }
- }
- else {
- TempStr[TempLen++] = d;
- if (cv->TelFlag && (d==0xff)) {
- TempStr[TempLen++] = (char)0xff;
- }
- }
- } // if (cv->SendKanjiFlag) else if ... else ... end
-
- if (WriteOutBuff(cv, TempStr, TempLen)) {
- i++; // 1\x95\xB6\x8E\x9A\x8F\x88\x97\x9D\x82\xB5\x82\xBD
- // \x8A\xBF\x8E\x9A\x82̏\xF3\x91Ԃ\xF0\x95ۑ\xB6\x82\xB7\x82\xE9
- cv->SendCode = SendCodeNew;
- cv->SendKanjiFlag = KanjiFlagNew;
- } else {
- Full = TRUE;
- }
-
- } // end of "while {}"
-
- return i;
-}
-
-int WINAPI CommTextOut(PComVar cv, PCHAR B, int C)
-{
- int i, TempLen;
- char TempStr[12];
- BYTE d;
- BOOL Full;
-
- if (! cv->Ready ) {
- return C;
- }
-
- switch (cv->Language) {
- case IdUtf8:
- case IdJapanese:
- case IdKorean:
- return TextOutMBCS(cv, B, C);
- break;
- }
-
- Full = FALSE;
- i = 0;
- while (! Full && (i < C)) {
- TempLen = 0;
- d = (BYTE)B[i];
-
- switch (d) {
- case CR:
- TempStr[TempLen] = 0x0d;
- TempLen++;
- if (cv->CRSend==IdCRLF) {
- TempStr[TempLen++] = 0x0a;
- }
- else if (cv->CRSend==IdCR && cv->TelFlag && ! cv->TelBinSend) {
- TempStr[TempLen++] = 0;
- }
- else if (cv->CRSend == IdLF) {
- TempStr[TempLen-1] = 0x0a;
- }
- if (cv->TelLineMode) {
- cv->Flush = TRUE;
- }
- break;
-
- case BS:
- if (cv->TelLineMode) {
- if (cv->FlushLen < cv->LineModeBuffCount) {
- cv->LineModeBuffCount--;
- }
- }
- else {
- TempStr[TempLen++] = d;
- }
- break;
-
- case 0x15: // Ctrl-U
- if (cv->TelLineMode) {
- cv->LineModeBuffCount = cv->FlushLen;
- }
- else {
- TempStr[TempLen++] = d;
- }
- break;
-
- default:
- if ((cv->Language==IdRussian) && (d>=128)) {
- d = RussConv(cv->RussClient, cv->RussHost, d);
- }
- TempStr[TempLen++] = d;
- if (cv->TelFlag && (d==0xff)) {
- TempStr[TempLen++] = (char)0xff;
- }
- }
-
- if (WriteOutBuff(cv, TempStr, TempLen)) {
- i++; // 1\x95\xB6\x8E\x9A\x8F\x88\x97\x9D\x82\xB5\x82\xBD
- } else {
- Full = TRUE;
- }
-
- } // end of while {}
-
- return i;
-}
-
/**
* @retval true \x93\xFA\x96{\x8C\xEA\x82̔\xBC\x8Ap\x83J\x83^\x83J\x83i
* @retval false \x82\xBB\x82̑\xBC
@@ -1631,246 +1342,6 @@
return i;
}
-static int WINAPI TextEchoMBCS(PComVar cv, PCHAR B, int C)
-{
- int i, TempLen;
- WORD K;
- char TempStr[12];
- int EchoCodeNew;
- BYTE d;
- BOOL Full, KanjiFlagNew;
-
- Full = FALSE;
- i = 0;
- while (! Full && (i < C)) {
- TempLen = 0;
- d = (BYTE)B[i];
- EchoCodeNew = cv->EchoCode;
- KanjiFlagNew = FALSE;
-
- if (cv->EchoKanjiFlag) {
- EchoCodeNew = IdKanji;
-
- K = (cv->EchoKanjiFirst << 8) + d;
-
- // UTF-8\x82ւ̕ϊ\xB7\x82\xF0\x8Ds\x82\xA4\x81B1\x81`3\x83o\x83C\x83g\x82܂ł̑Ή\x9E\x82Ȃ̂Œ\x8D\x88ӁB
- if (cv->KanjiCodeEcho == IdUTF8 || cv->Language==IdUtf8) {
- TempLen += OutputTextUTF8(K, TempStr, cv);
- }
- else {
- switch (cv->Language) {
- case IdJapanese:
- switch (cv->KanjiCodeEcho) {
- case IdEUC:
- K = SJIS2EUC(K);
- break;
- case IdJIS:
- K = SJIS2JIS(K);
- if ((cv->EchoCode==IdKatakana) &&
- (cv->JIS7KatakanaEcho==1)) {
- TempStr[TempLen++] = SI;
- }
- break;
- case IdSJIS:
- /* nothing to do */
- break;
- }
- break;
- case IdKorean:
- break;
- }
- TempStr[TempLen++] = HIBYTE(K);
- TempStr[TempLen++] = LOBYTE(K);
- }
- }
- else if (__isleadbyte_l(d, cv)) {
- KanjiFlagNew = TRUE;
- cv->EchoKanjiFirst = d;
- EchoCodeNew = IdKanji;
-
- if (cv->Language == IdJapanese) {
- if ((cv->EchoCode!=IdKanji) && (cv->KanjiCodeEcho==IdJIS)) {
- TempStr[0] = 0x1B;
- TempStr[1] = '$';
- if (cv->KanjiIn == IdKanjiInB) {
- TempStr[2] = 'B';
- }
- else {
- TempStr[2] = '@';
- }
- TempLen = 3;
- }
- }
- }
- else {
- if (cv->Language == IdJapanese) {
- if ((cv->EchoCode==IdKanji) && (cv->KanjiCodeEcho==IdJIS)) {
- TempStr[0] = 0x1B;
- TempStr[1] = '(';
- switch (cv->KanjiOut) {
- case IdKanjiOutJ:
- TempStr[2] = 'J';
- break;
- case IdKanjiOutH:
- TempStr[2] = 'H';
- break;
- default:
- TempStr[2] = 'B';
- }
- TempLen = 3;
- }
-
- if ((0xa0EchoCode!=IdKatakana) &&
- (cv->KanjiCodeEcho==IdJIS) &&
- (cv->JIS7KatakanaEcho==1)) {
- TempStr[TempLen++] = SO;
- }
- }
- else {
- EchoCodeNew = IdASCII;
- if ((cv->EchoCode==IdKatakana) &&
- (cv->KanjiCodeEcho==IdJIS) &&
- (cv->JIS7KatakanaEcho==1)) {
- TempStr[TempLen++] = SI;
- }
- }
- }
-
- if (d==CR) {
- TempStr[TempLen++] = 0x0d;
- if (cv->CRSend==IdCRLF) {
- TempStr[TempLen++] = 0x0a;
- }
- else if ((cv->CRSend==IdCR) &&
- cv->TelFlag && ! cv->TelBinSend) {
- TempStr[TempLen++] = 0;
- }
- else if (cv->CRSend == IdLF) {
- TempStr[TempLen-1] = 0x0a;
- }
- }
- else if (d==0x15) { // Ctrl-U
- if (cv->TelLineMode) {
- // Move to top of line (CHA "\033[G") and erase line (EL "\033[K")
- strncpy_s(TempStr, sizeof(TempStr), "\033[G\033[K", _TRUNCATE);
- TempLen += 6;
- }
- else {
- TempStr[TempLen++] = d;
- }
- }
- else if ((d>=0x80) && (cv->KanjiCodeEcho==IdUTF8 || cv->Language==IdUtf8)) {
- TempLen += OutputTextUTF8((WORD)d, TempStr, cv);
- }
- else if ((d>=0xa1) && (d<=0xe0) && (cv->Language == IdJapanese)) {
- /* Katakana */
- if (cv->KanjiCodeEcho==IdEUC) {
- TempStr[TempLen++] = (char)SS2;
- }
- if ((cv->KanjiCodeEcho==IdJIS) &&
- (cv->JIS7KatakanaEcho==1)) {
- TempStr[TempLen++] = d & 0x7f;
- }
- else {
- TempStr[TempLen++] = d;
- }
- }
- else {
- TempStr[TempLen++] = d;
- if (cv->TelFlag && (d==0xff)) {
- TempStr[TempLen++] = (char)0xff;
- }
- }
- } // if (cv->EchoKanjiFlag) else if ... else ... end
-
- if (WriteInBuff(cv, TempStr, TempLen)) {
- i++;
- cv->EchoCode = EchoCodeNew;
- cv->EchoKanjiFlag = KanjiFlagNew;
- } else {
- Full = FALSE;
- }
-
- } // end of "while {}"
-
- return i;
-}
-
-int WINAPI CommTextEcho(PComVar cv, PCHAR B, int C)
-{
- int i, TempLen;
- char TempStr[11];
- BYTE d;
- BOOL Full;
-
- if ( ! cv->Ready ) {
- return C;
- }
-
- PackInBuff(cv);
-
- switch (cv->Language) {
- case IdUtf8:
- case IdJapanese:
- case IdKorean:
- return TextEchoMBCS(cv,B,C);
- break;
- }
-
- Full = FALSE;
- i = 0;
- while (! Full && (i < C)) {
- TempLen = 0;
- d = (BYTE)B[i];
-
- switch (d) {
- case CR:
- TempStr[TempLen] = 0x0d;
- TempLen++;
- if (cv->CRSend==IdCRLF) {
- TempStr[TempLen++] = 0x0a;
- }
- else if (cv->CRSend==IdCR && cv->TelFlag && ! cv->TelBinSend) {
- TempStr[TempLen++] = 0;
- }
- else if (cv->CRSend == IdLF) {
- TempStr[TempLen-1] = 0x0a;
- }
- break;
-
- case 0x15: // Ctrl-U
- if (cv->TelLineMode) {
- // Move to top of line (CHA "\033[G") and erase line (EL "\033[K")
- strncpy_s(TempStr, sizeof(TempStr), "\033[G\033[K", _TRUNCATE);
- TempLen += 6;
- }
- else {
- TempStr[TempLen++] = d;
- }
- break;
-
- default:
- if ((cv->Language==IdRussian) && (d>=128)) {
- d = RussConv(cv->RussClient,cv->RussHost,d);
- }
- TempStr[TempLen++] = d;
- if (cv->TelFlag && (d==0xff)) {
- TempStr[TempLen++] = (char)0xff;
- }
- }
-
- if(WriteInBuff(cv, TempStr,TempLen)) {
- i++;
- } else {
- Full = TRUE;
- }
- } // end of while {}
-
- return i;
-}
-
/*
* @return \x83G\x83\x89\x81[\x82\xAA\x97L\x82\xE9\x8Fꍇ FALSE
* @param[in] BOOL first_instance
Modified: trunk/teraterm/ttpcmn/ttpcmn.def
===================================================================
--- trunk/teraterm/ttpcmn/ttpcmn.def 2021-06-18 16:05:01 UTC (rev 9310)
+++ trunk/teraterm/ttpcmn/ttpcmn.def 2021-06-18 16:05:10 UTC (rev 9311)
@@ -18,10 +18,8 @@
CommRawOut @23
CommBinaryOut @24
CommBinaryBuffOut @52
- CommTextOut @25
CommTextOutW
CommBinaryEcho @26
- CommTextEcho @27
CommTextEchoW
DetectComPorts @42
GetDefaultFName @47
From scmnotify @ osdn.net Sun Jun 20 10:07:22 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 20 Jun 2021 10:07:22 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMTJdIOODh+ODkOOCsOeUqOOCs+ODvA==?=
=?utf-8?b?44OJ44KS44Kz44Of44OD44OI44GX44Gm44GE44Gf44Gu44Gn5L+u5q2j?=
Message-ID: <1624151242.955426.1829.nullmailer@users.osdn.me>
Revision: 9312
https://osdn.net/projects/ttssh2/scm/svn/commits/9312
Author: zmatsuo
Date: 2021-06-20 10:07:22 +0900 (Sun, 20 Jun 2021)
Log Message:
-----------
デバグ用コードをコミットしていたので修正
- r9307 でコミット
Revision Links:
--------------
https://osdn.net/projects/ttssh2/scm/svn/commits/9307
Modified Paths:
--------------
trunk/teraterm/common/compat_win.cpp
-------------- next part --------------
Modified: trunk/teraterm/common/compat_win.cpp
===================================================================
--- trunk/teraterm/common/compat_win.cpp 2021-06-18 16:05:10 UTC (rev 9311)
+++ trunk/teraterm/common/compat_win.cpp 2021-06-20 01:07:22 UTC (rev 9312)
@@ -38,7 +38,7 @@
#include "ttlib.h"
// for debug
-#define UNICODE_API_DISABLE 1
+//#define UNICODE_API_DISABLE 1
ATOM (WINAPI *pRegisterClassW)(const WNDCLASSW *lpWndClass);
HWND (WINAPI *pCreateWindowExW)(DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, int X, int Y, int nWidth, int nHeight,
From scmnotify @ osdn.net Sun Jun 20 10:07:40 2021
From: scmnotify @ osdn.net (scmnotify @ osdn.net)
Date: Sun, 20 Jun 2021 10:07:40 +0900
Subject: [Ttssh2-commit] =?utf-8?b?WzkzMTNdIGxvY2FsZeioreWumuOCkuWJig==?=
=?utf-8?b?6Zmk?=
Message-ID: <1624151260.653046.2039.nullmailer@users.osdn.me>
Revision: 9313
https://osdn.net/projects/ttssh2/scm/svn/commits/9313
Author: zmatsuo
Date: 2021-06-20 10:07:40 +0900 (Sun, 20 Jun 2021)
Log Message:
-----------
locale設定を削除
- Cランタイムの文字コードの設定
- 従来Cランタイムの文字コード変換関数を使用していたため必要だった
- wctomb()
- 現在Cランタイムの文字コード変換は使用していないため不要
- OSのAPI WideCharToMultiByte(), MultiByteToWideChar() を使用
- setlocale()を削除
- 不要な locale.h の include を削除
- 設定ダイアログの locale 設定を削除
- IDC_LOCALE_LABEL 削除
- lng 内の DLG_TERM_LOCALE 削除
- ドキュメント locale 設定個所を削除
- iniファイルのlocale読み書きを削除
- r9145
Revision Links:
--------------
https://osdn.net/projects/ttssh2/scm/svn/commits/9145
Modified Paths:
--------------
trunk/doc/en/html/menu/setup-terminal_ja.html
trunk/doc/en/html/menu/setup-terminal_ko.html
trunk/doc/en/html/menu/setup-terminal_utf8.html
trunk/doc/en/html/setup/teraterm-ini.html
trunk/doc/ja/html/menu/setup-terminal.html
trunk/doc/ja/html/menu/setup-terminal_ko.html
trunk/doc/ja/html/menu/setup-terminal_utf8.html
trunk/doc/ja/html/setup/teraterm-ini.html
trunk/installer/release/lang_utf8/English.lng
trunk/installer/release/lang_utf8/French.lng
trunk/installer/release/lang_utf8/German.lng
trunk/installer/release/lang_utf8/Japanese.lng
trunk/installer/release/lang_utf8/Korean.lng
trunk/installer/release/lang_utf8/Russian.lng
trunk/installer/release/lang_utf8/Simplified Chinese.lng
trunk/installer/release/lang_utf8/Traditional Chinese.lng
trunk/teraterm/common/tttypes.h
trunk/teraterm/teraterm/commlib.c
trunk/teraterm/teraterm/vtterm.c
trunk/teraterm/teraterm/vtwin.cpp
trunk/teraterm/ttpcmn/language.c
trunk/teraterm/ttpcmn/ttcmn.c
trunk/teraterm/ttpdlg/dlg_res.h
trunk/teraterm/ttpdlg/ttdlg.c
trunk/teraterm/ttpdlg/ttpdlg.rc
trunk/teraterm/ttpset/ttset.c
-------------- next part --------------
Modified: trunk/doc/en/html/menu/setup-terminal_ja.html
===================================================================
--- trunk/doc/en/html/menu/setup-terminal_ja.html 2021-06-20 01:07:22 UTC (rev 9312)
+++ trunk/doc/en/html/menu/setup-terminal_ja.html 2021-06-20 01:07:40 UTC (rev 9313)
@@ -153,12 +153,6 @@
- locale
-
- Locale setting.
- Refer to Unicode for details.
-
-