[ttssh2-commit] [9532] 起動時初期設定ファイルを %APPDATA%/teraterm5/ にコピー

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2021年 11月 16日 (火) 23:17:00 JST


Revision: 9532
          https://osdn.net/projects/ttssh2/scm/svn/commits/9532
Author:   zmatsuo
Date:     2021-11-16 23:16:59 +0900 (Tue, 16 Nov 2021)
Log Message:
-----------
起動時初期設定ファイルを %APPDATA%/teraterm5/ にコピー

- %APPDATA%/teraterm5/TERATERM.INI が存在しないとき
- ttermpro.exe が存在するフォルダの設定ファイルを
- %APPDATA%/teraterm5/ へコピー
- 次の3ファイル
  - TERATERM.INI
  - KEYBOARD.CNF
  - cygterm.cfg

Modified Paths:
--------------
    trunk/teraterm/ttpcmn/ttcmn.c

-------------- next part --------------
Modified: trunk/teraterm/ttpcmn/ttcmn.c
===================================================================
--- trunk/teraterm/ttpcmn/ttcmn.c	2021-11-14 15:09:24 UTC (rev 9531)
+++ trunk/teraterm/ttpcmn/ttcmn.c	2021-11-16 14:16:59 UTC (rev 9532)
@@ -109,6 +109,33 @@
 	memcpy(&pm->ts, ts, sizeof(TTTSet));
 }
 
+static void CopyFiles(const wchar_t *file_list[], const wchar_t *src_dir, const wchar_t *dest_dir)
+{
+	for (;;) {
+		const wchar_t *filename = *file_list;
+		file_list++;
+		if (filename == NULL) {
+			break;
+		}
+
+		wchar_t *dest = NULL;
+		awcscats(&dest, dest_dir, L"\\", filename, NULL);
+
+		size_t len = wcslen(dest);
+		if (dest[len - 1] == '\\') {
+			// \x83t\x83H\x83\x8B\x83_\x8D쐬
+			CreateDirectoryW(dest, NULL);
+		}
+		else {
+			wchar_t *src = NULL;
+			awcscats(&src, src_dir, L"\\", filename, NULL);
+			CopyFileW(src, dest, TRUE);		// TRUE = do not copy if exists
+			free(src);
+		}
+		free(dest);
+	}
+}
+
 BOOL WINAPI StartTeraTerm(PTTSet ts)
 {
 	if (FirstInstance) {
@@ -140,49 +167,41 @@
 	CreateDirectoryW(ts->HomeDirW, NULL);
 	SetCurrentDirectoryW(ts->HomeDirW);		// TODO \x95K\x97v??
 
-#if 1
-	{
-		// TERATERM.INI \x82̃t\x83\x8B\x83p\x83X
-		wchar_t *setup = NULL;
-		awcscats(&setup, ts->HomeDirW, L"\\TERATERM.INI", NULL);
+	// TERATERM.INI \x82̃t\x83\x8B\x83p\x83X
+	ts->SetupFNameW = NULL;
+	awcscats(&ts->SetupFNameW, ts->HomeDirW, L"\\TERATERM.INI", NULL);
+	WideCharToACP_t(ts->SetupFNameW, ts->SetupFName, _countof(ts->SetupFName));
 
-		// \x83t\x83@\x83C\x83\x8B\x82\xA0\x82\xE9?
-		if (GetFileAttributesW(setup) == INVALID_FILE_ATTRIBUTES) {
-			// exe\x83t\x83H\x83\x8B\x83_\x82\xA9\x82\xE7\x83R\x83s\x81[\x82\xB7\x82\xE9
-			wchar_t *src_ini = NULL;
-			awcscats(&src_ini, ts->ExeDirW, L"\\TERATERM.INI", NULL);
-			CopyFileW(src_ini, setup, TRUE);
-			free(src_ini);
-		}
+	// KEYBOARD.CNF \x82̃t\x83\x8B\x83p\x83X
+	ts->KeyCnfFNW = NULL;
+	awcscats(&ts->KeyCnfFNW, ts->HomeDirW, L"\\KEYBOARD.CNF", NULL);
+	WideCharToACP_t(ts->KeyCnfFNW, ts->KeyCnfFN, _countof(ts->KeyCnfFN));
 
-		ts->SetupFNameW = setup;
-	}
-#else
-	ts->SetupFNameW = GetDefaultSetupFNameW(ts->HomeDirW);
+	// TERATERM.INI \x82\xAA\x91\xB6\x8D݂\xB7\x82\xE9?
+	if (GetFileAttributesW(ts->SetupFNameW) == INVALID_FILE_ATTRIBUTES) {
+		// \x91\xB6\x8D݂\xB5\x82Ȃ\xA2\x8Fꍇ\x81A\x90ݒ\xE8\x83t\x83@\x83C\x83\x8B\x82\xF0\x8Cl\x83t\x83H\x83\x8B\x83_\x82փR\x83s\x81[\x82\xB7\x82\xE9
+		// TODO \x90ݒ\xE8\x83t\x83@\x83C\x83\x8B\x82\xCC unicode, ansi\x95ϊ\xB7
+		static const wchar_t *filelist[] = {
+			L"TERATERM.INI",
+			L"KEYBOARD.CNF",
+			L"cygterm.cfg",
+#if 0
+			L"theme\\",
+			L"theme\\Advanced.sample",
+			L"theme\\ImageFile.INI",
+			L"theme\\scale\\",
+			L"theme\\scale\\23.jpg",
+			L"theme\\scale\\43.jpg",
+			L"theme\\Scale.INI",
+			L"theme\\tile\\",
+			L"theme\\tile\\03.jpg",
+			L"theme\\tile\\44.jpg",
+			L"theme\\Tile.INI",
 #endif
-	WideCharToACP_t(ts->SetupFNameW, ts->SetupFName, _countof(ts->SetupFName));
-
-#if 1
-	{
-		// KEYBOARD.CNF \x82̃t\x83\x8B\x83p\x83X
-		wchar_t *keycnf = NULL;
-		awcscats(&keycnf, ts->HomeDirW, L"\\KEYBOARD.CNF", NULL);
-
-		// \x83t\x83@\x83C\x83\x8B\x82\xA0\x82\xE9?
-		if (GetFileAttributesW(keycnf) == INVALID_FILE_ATTRIBUTES) {
-			// exe\x83t\x83H\x83\x8B\x83_\x82\xA9\x82\xE7\x83R\x83s\x81[\x82\xB7\x82\xE9
-			wchar_t *src_ini = NULL;
-			awcscats(&src_ini, ts->ExeDirW, L"\\KEYBOARD.CNF", NULL);
-			CopyFileW(src_ini, keycnf, TRUE);
-			free(src_ini);
-		}
-
-		ts->KeyCnfFNW = keycnf;
+			NULL,
+		};
+		CopyFiles(filelist, ts->ExeDirW, ts->HomeDirW);
 	}
-#else
-	ts->KeyCnfFNW = GetDefaultFNameW(ts->HomeDirW, L"KEYBOARD.CNF");
-#endif
-	WideCharToACP_t(ts->KeyCnfFNW, ts->KeyCnfFN, _countof(ts->KeyCnfFN));
 
 	if (FirstInstance) {
 		FirstInstance = FALSE;


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