[Ttssh2-commit] [7310] unicode系文字列取得関数を修正

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2018年 12月 10日 (月) 23:59:40 JST


Revision: 7310
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/7310
Author:   zmatsuo
Date:     2018-12-10 23:59:40 +0900 (Mon, 10 Dec 2018)
Log Message:
-----------
unicode系文字列取得関数を修正

Modified Paths:
--------------
    branches/cmake/CMakeLists.txt
    branches/cmake/teraterm/common/dlglib.c
    branches/cmake/teraterm/common/i18n.c
    branches/cmake/teraterm/common/i18n.h
    branches/cmake/teraterm/common/ttlib.c
    branches/cmake/teraterm/common/ttlib.h
    branches/cmake/teraterm/teraterm/CMakeLists.txt
    branches/cmake/ttpmenu/CMakeLists.txt

-------------- next part --------------
Modified: branches/cmake/CMakeLists.txt
===================================================================
--- branches/cmake/CMakeLists.txt	2018-12-10 14:41:18 UTC (rev 7309)
+++ branches/cmake/CMakeLists.txt	2018-12-10 14:59:40 UTC (rev 7310)
@@ -4,6 +4,8 @@
 project(teraterm_all)
 
 option(ENABLE_TTXSAMPLES "TTXSamples" ON)
+option(USE_UNICODE_API "unicode" ON)
+option(LINK_UNICOWS "unicode APIs for 9x" OFF)
 
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 
@@ -11,7 +13,7 @@
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
 
-if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+if(MSVC)
   string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
   string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
   string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})

Modified: branches/cmake/teraterm/common/dlglib.c
===================================================================
--- branches/cmake/teraterm/common/dlglib.c	2018-12-10 14:41:18 UTC (rev 7309)
+++ branches/cmake/teraterm/common/dlglib.c	2018-12-10 14:59:40 UTC (rev 7310)
@@ -391,7 +391,7 @@
 		const int nIDDlgItem = infos[i].nIDDlgItem;
 		const char *key = infos[i].key;
 		TCHAR uimsg[MAX_UIMSG];
- 		get_lang_msgT(key, uimsg, sizeof(uimsg), _T(""), UILanguageFile);
+		get_lang_msgT(key, uimsg, sizeof(uimsg), _T(""), UILanguageFile);
 		if (uimsg[0] != '\0') {
 			if (nIDDlgItem < 1000) {
 				ModifyMenu(hMenu, nIDDlgItem, MF_BYPOSITION, nIDDlgItem, uimsg);

Modified: branches/cmake/teraterm/common/i18n.c
===================================================================
--- branches/cmake/teraterm/common/i18n.c	2018-12-10 14:41:18 UTC (rev 7309)
+++ branches/cmake/teraterm/common/i18n.c	2018-12-10 14:59:40 UTC (rev 7310)
@@ -28,13 +28,7 @@
 
 #include "i18n.h"
 
-#include <assert.h>
-
-DllExport void GetI18nStrT(const char *section, const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile)
-{
-	assert(FALSE);
-}
-
+#if defined(UNICODE)
 DllExport void GetI18nStrW(const char *section, const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile)
 {
 	wchar_t sectionW[64];
@@ -46,6 +40,7 @@
 	GetPrivateProfileStringW(sectionW, keyW, def, buf, buf_len, iniFileW);
 	RestoreNewLineW(buf);
 }
+#endif
 
 DllExport void GetI18nStr(const char *section, const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile)
 {

Modified: branches/cmake/teraterm/common/i18n.h
===================================================================
--- branches/cmake/teraterm/common/i18n.h	2018-12-10 14:41:18 UTC (rev 7309)
+++ branches/cmake/teraterm/common/i18n.h	2018-12-10 14:59:40 UTC (rev 7310)
@@ -51,11 +51,18 @@
 #define DllExport	// direct link
 #endif
 
-DllExport void GetI18nStrT(const char *section, const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile);
+#if defined(UNICODE)
 DllExport void GetI18nStrW(const char *section, const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile);
+#endif
 DllExport void GetI18nStr(const char *section, const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile);
 DllExport int GetI18nLogfont(const char *section, const char *key, PLOGFONTA logfont, int ppi, const char *iniFile);
 
+#if defined(_UNICODE)
+#define	GetI18nStrT(p1, p2, p3, p4, p5, p6) GetI18nStrW(p1, p2, p3, p4, p5, p6)
+#else
+#define	GetI18nStrT(p1, p2, p3, p4, p5, p6) GetI18nStr(p1, p2, p3, p4, p5, p6)
+#endif
+
 #ifdef __cplusplus
 }
 #endif

Modified: branches/cmake/teraterm/common/ttlib.c
===================================================================
--- branches/cmake/teraterm/common/ttlib.c	2018-12-10 14:41:18 UTC (rev 7309)
+++ branches/cmake/teraterm/common/ttlib.c	2018-12-10 14:59:40 UTC (rev 7310)
@@ -45,7 +45,7 @@
 
                 dwMajorVersion   dwMinorVersion    dwPlatformId
 Windows95       4                0                 VER_PLATFORM_WIN32_WINDOWS
-Windows98       4                10                VER_PLATFORM_WIN32_WINDOWS 
+Windows98       4                10                VER_PLATFORM_WIN32_WINDOWS
 WindowsMe       4                90                VER_PLATFORM_WIN32_WINDOWS
 WindowsNT4.0    4                0                 VER_PLATFORM_WIN32_NT
 Windows2000     5                0                 VER_PLATFORM_WIN32_NT
@@ -75,7 +75,7 @@
 	"AUX", "CLOCK$", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9",
 	"CON", "CONFIG$", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9",
 	"NUL", "PRN",
-	".", "..", 
+	".", "..",
 	NULL
 };
 
@@ -101,6 +101,8 @@
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
 };
 
+static const char *lang_section = "Tera Term";
+
 void b64encode(PCHAR d, int dsize, PCHAR s, int len)
 {
 	unsigned int b = 0;
@@ -886,7 +888,7 @@
 	if (sscanf(T, "%d", &v) != 1) {
 		v = defval;
 	}
-	
+
 	return v;
 }
 
@@ -977,7 +979,7 @@
 
 	/* Get SetupFName */
 	GetDefaultSetupFName(HomeDir, SetupFName, sizeof(SetupFName));
-	
+
 	/* Get LanguageFile name */
 	GetPrivateProfileStringA("Tera Term", "UILanguageFile", "",
 	                        Temp, sizeof(Temp), SetupFName);
@@ -1004,7 +1006,7 @@
 
 	/* Get SetupFName */
 	GetDefaultSetupFName(HomeDir, SetupFName, sizeof(SetupFName));
-	
+
 	/* Get LanguageFile name */
 	GetPrivateProfileStringA("Tera Term", entry, "off",
 	                        Temp, sizeof(Temp), SetupFName);
@@ -1012,23 +1014,26 @@
 	strncpy_s(buf, buflen, Temp, _TRUNCATE);
 }
 
-void get_lang_msgT(const char *key, TCHAR *buf, int buf_len, const TCHAR *def, const char *iniFile)
+void set_lang_section(const char *section)
 {
+	lang_section = section;
+}
+
 #if defined(UNICODE)
-	GetI18nStrW("Tera Term", key, buf, buf_len, def, iniFile);
-#else	
-	GetI18nStr("Tera Term", key, buf, buf_len, def, iniFile);
+void get_lang_msgW(const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile)
+{
+	GetI18nStrW(lang_section, key, buf, buf_len, def, iniFile);
+}
 #endif
-}
 
 void get_lang_msg(const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile)
 {
-	GetI18nStr("Tera Term", key, buf, buf_len, def, iniFile);
+	GetI18nStr(lang_section, key, buf, buf_len, def, iniFile);
 }
 
 int get_lang_font(PCHAR key, HWND dlg, PLOGFONTA logfont, HFONT *font, const char *iniFile)
 {
-	if (GetI18nLogfont("Tera Term", key, logfont,
+	if (GetI18nLogfont(lang_section, key, logfont,
 	                   GetDeviceCaps(GetDC(dlg),LOGPIXELSY),
 	                   iniFile) == FALSE) {
 		return FALSE;
@@ -1078,9 +1083,9 @@
 	bi.ulFlags = 0;
 	bi.lpfn = setDefaultFolder;
 	bi.lParam = (LPARAM)def;
-	// \x83t\x83H\x83\x8B\x83_\x91I\x91\xF0\x83_\x83C\x83A\x83\x8D\x83O\x82̕\\x8E\xA6 
+	// \x83t\x83H\x83\x8B\x83_\x91I\x91\xF0\x83_\x83C\x83A\x83\x8D\x83O\x82̕\\x8E\xA6
 	pidlBrowse = SHBrowseForFolderA(&bi);
-	if (pidlBrowse != NULL) {  
+	if (pidlBrowse != NULL) {
 		// PIDL\x8C`\x8E\xAE\x82̖߂\xE8\x92l\x82̃t\x83@\x83C\x83\x8B\x83V\x83X\x83e\x83\x80\x82̃p\x83X\x82ɕϊ\xB7
 		if (SHGetPathFromIDListA(pidlBrowse, buf)) {
 			// \x8E擾\x90\xAC\x8C\xF7

Modified: branches/cmake/teraterm/common/ttlib.h
===================================================================
--- branches/cmake/teraterm/common/ttlib.h	2018-12-10 14:41:18 UTC (rev 7309)
+++ branches/cmake/teraterm/common/ttlib.h	2018-12-10 14:59:40 UTC (rev 7310)
@@ -83,8 +83,11 @@
 void GetDefaultSetupFName(char *home, char *dest, int destlen);
 void GetUILanguageFile(char *buf, int buflen);
 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_msgT(const char *key, TCHAR *buf, int buf_len, const TCHAR *def, const char *iniFile);
+DllExport void set_lang_section(const char *section);
+DllExport void get_lang_msg(const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile);
+#if defined(UNICODE)
+DllExport void get_lang_msgW(const char *key, wchar_t *buf, int buf_len, const wchar_t *def, const char *iniFile);
+#endif
 int get_lang_font(PCHAR key, HWND dlg, PLOGFONTA logfont, HFONT *font, const char *iniFile);
 DllExport BOOL doSelectFolder(HWND hWnd, char *path, int pathlen, char *def, char *msg);
 DllExport void OutputDebugPrintf(const char *fmt, ...);
@@ -122,6 +125,12 @@
 
 #define CheckFlag(var, flag)	(((var) & (flag)) != 0)
 
+#if defined(_UNICODE)
+#define	get_lang_msgT(p1, p2, p3, p4, p5) get_lang_msgW(p1, p2, p3, p4, p5)
+#else
+#define	get_lang_msgT(p1, p2, p3, p4, p5) get_lang_msg(p1, p2, p3, p4, p5)
+#endif
+
 #ifdef __cplusplus
 }
 #endif

Modified: branches/cmake/teraterm/teraterm/CMakeLists.txt
===================================================================
--- branches/cmake/teraterm/teraterm/CMakeLists.txt	2018-12-10 14:41:18 UTC (rev 7309)
+++ branches/cmake/teraterm/teraterm/CMakeLists.txt	2018-12-10 14:59:40 UTC (rev 7310)
@@ -1,8 +1,5 @@
 project(teraterm)
 
-option(USE_UNICODE_API "unicode" ON)
-option(LINK_UNICOWS "unicode APIs for 9x" OFF)
-
 include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_SFMT.cmake)
 include(${CMAKE_CURRENT_SOURCE_DIR}/../../libs/lib_oniguruma.cmake)
 

Modified: branches/cmake/ttpmenu/CMakeLists.txt
===================================================================
--- branches/cmake/ttpmenu/CMakeLists.txt	2018-12-10 14:41:18 UTC (rev 7309)
+++ branches/cmake/ttpmenu/CMakeLists.txt	2018-12-10 14:59:40 UTC (rev 7310)
@@ -1,13 +1,22 @@
-project(ttpmenu)
+project(ttpmenu)
 
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/")
 
-set(SRC
+set(COMMON_SRC
   ../teraterm/common/ttlib.c
+  ../teraterm/common/i18n.c
+  # TODO ↑ in dll
   ../teraterm/common/ttlib.h
-  ../teraterm/common/i18n.c
   ../teraterm/common/i18n.h
+  )
 
+source_group(
+  "common"
+  FILES
+  ${COMMON_SRC}
+  )
+
+set(SRC
   resource.h
   registry.cpp
   ttpmenu.cpp
@@ -27,6 +36,7 @@
 add_executable(
   ttpmenu WIN32
   ${SRC}
+  ${COMMON_SRC}
   )
 
 target_link_libraries(


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