Revision: 9348 https://osdn.net/projects/ttssh2/scm/svn/commits/9348 Author: zmatsuo Date: 2021-08-10 23:42:09 +0900 (Tue, 10 Aug 2021) Log Message: ----------- TERATERM.INI,KEYBOARD.CNFのファイルダイアログのファイル名の扱いを Unicode 化 Modified Paths: -------------- trunk/teraterm/teraterm/vtwin.cpp -------------- next part -------------- Modified: trunk/teraterm/teraterm/vtwin.cpp =================================================================== --- trunk/teraterm/teraterm/vtwin.cpp 2021-08-10 14:41:59 UTC (rev 9347) +++ trunk/teraterm/teraterm/vtwin.cpp 2021-08-10 14:42:09 UTC (rev 9348) @@ -4541,7 +4541,7 @@ if (FuncId==GSF_LOADKEY) { size_t i, j; - wchar_t *KeyCnfFNW = ToWcharA(ts->KeyCnfFN); + wchar_t *KeyCnfFNW = ts->KeyCnfFNW; GetFileNamePosW(KeyCnfFNW,&i,&j); wcsncpy_s(NameW, _countof(NameW),&KeyCnfFNW[j], _TRUNCATE); memcpy(DirW, KeyCnfFNW, sizeof(wchar_t) * i); @@ -4553,7 +4553,7 @@ } else { size_t i, j; - wchar_t *SetupFNameW = ToWcharA(ts->SetupFName); + wchar_t *SetupFNameW = ts->SetupFNameW; GetFileNamePosW(SetupFNameW,&i,&j); wcsncpy_s(NameW, _countof(NameW),&SetupFNameW[j], _TRUNCATE); memcpy(DirW, SetupFNameW, sizeof(wchar_t) * i); @@ -4598,6 +4598,8 @@ ofn.lpstrTitle = _get_lang_msg("FILEDLG_SAVE_SETUP_TITLE", L"Tera Term: Save setup", UILanguageFile); Ok = GetSaveFileNameW(&ofn); if (Ok) { + free(ts->SetupFNameW); + ts->SetupFNameW = _wcsdup(NameW); char *Name = ToCharW(NameW); strncpy_s(ts->SetupFName, sizeof(ts->SetupFName), Name, _TRUNCATE); free(Name); @@ -4609,6 +4611,8 @@ ofn.lpstrTitle = _get_lang_msg("FILEDLG_RESTORE_SETUP_TITLE", L"Tera Term: Restore setup", UILanguageFile); Ok = GetOpenFileNameW(&ofn); if (Ok) { + free(ts->SetupFNameW); + ts->SetupFNameW = _wcsdup(NameW); char *Name = ToCharW(NameW); strncpy_s(ts->SetupFName, sizeof(ts->SetupFName), Name, _TRUNCATE); free(Name); @@ -4620,6 +4624,8 @@ ofn.lpstrTitle = _get_lang_msg("FILEDLG_LOAD_KEYMAP_TITLE", L"Tera Term: Load key map", UILanguageFile); Ok = GetOpenFileNameW(&ofn); if (Ok) { + free(ts->KeyCnfFNW); + ts->KeyCnfFNW = _wcsdup(NameW); char *Name = ToCharW(NameW); strncpy_s(ts->KeyCnfFN, sizeof(ts->KeyCnfFN), Name, _TRUNCATE); free(Name); @@ -4650,14 +4656,11 @@ void CVTWindow::OnSetupSave() { - BOOL Ok; - char TmpSetupFN[MAX_PATH]; - int ret; - - strncpy_s(TmpSetupFN, sizeof(TmpSetupFN),ts.SetupFName, _TRUNCATE); + wchar_t *PrevSetupFNW = _wcsdup(ts.SetupFNameW); HelpId = HlpSetupSave; - Ok = _GetSetupFname(HVTWin,GSF_SAVE,&ts); + BOOL Ok = _GetSetupFname(HVTWin,GSF_SAVE,&ts); if (! Ok) { + free(PrevSetupFNW); return; } @@ -4687,12 +4690,16 @@ } #endif - CopyFile(TmpSetupFN, ts.SetupFName, TRUE); + CopyFileW(PrevSetupFNW, ts.SetupFNameW, TRUE); /* write current setup values to file */ - (*WriteIniFile)(ts.SetupFName,&ts); + (*WriteIniFile)(ts.SetupFName, &ts); /* copy host list */ - (*CopyHostList)(TmpSetupFN,ts.SetupFName); + char * PrevSetupFN = ToCharW(PrevSetupFNW); + (*CopyHostList)(PrevSetupFN, ts.SetupFName); + free(PrevSetupFN); FreeTTSET(); + free(PrevSetupFNW); + PrevSetupFNW = NULL; #ifdef WINDOW_MAXMIMUM_ENABLED if (::IsZoomed(m_hWnd)) { @@ -4701,23 +4708,12 @@ } #endif } - } void CVTWindow::OnSetupRestore() { - BOOL Ok; - HelpId = HlpSetupRestore; -#if 0 - if (! LoadTTFILE()) { - return; - } -#endif - Ok = _GetSetupFname(HVTWin,GSF_RESTORE,&ts); -#if 0 - FreeTTFILE(); -#endif + BOOL Ok = _GetSetupFname(HVTWin, GSF_RESTORE, &ts); if (Ok) { RestoreSetup(); } @@ -4727,8 +4723,6 @@ // \x8C\xBB\x8Dݓǂݍ\x9E\x82܂\xEA\x82Ă\xA2\x82\xE9 teraterm.ini \x83t\x83@\x83C\x83\x8B\x82\xAA\x8Ai\x94[\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9 // \x83t\x83H\x83\x8B\x83_\x82\xF0\x83G\x83N\x83X\x83v\x83\x8D\x81[\x83\x89\x82ŊJ\x82\xAD\x81B // -// (2015.2.28 yutaka) -// void CVTWindow::OnOpenSetupDirectory() { SetupDirectoryDialog(m_hInst, HVTWin, &ts); @@ -4736,18 +4730,8 @@ void CVTWindow::OnSetupLoadKeyMap() { - BOOL Ok; - HelpId = HlpSetupLoadKeyMap; -#if 0 - if (! LoadTTFILE()) { - return; - } -#endif - Ok = _GetSetupFname(HVTWin,GSF_LOADKEY,&ts); -#if 0 - FreeTTFILE(); -#endif + BOOL Ok = _GetSetupFname(HVTWin,GSF_LOADKEY,&ts); if (! Ok) { return; }