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\x8Cl\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;