• R/O
  • SSH
  • HTTPS

ttssh2: コミット


コミットメタ情報

リビジョン9532 (tree)
日時2021-11-16 23:16:59
作者zmatsuo

ログメッセージ

起動時初期設定ファイルを %APPDATA%/teraterm5/ にコピー

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

- TERATERM.INI
- KEYBOARD.CNF
- cygterm.cfg

変更サマリ

差分

--- trunk/teraterm/ttpcmn/ttcmn.c (revision 9531)
+++ trunk/teraterm/ttpcmn/ttcmn.c (revision 9532)
@@ -109,6 +109,33 @@
109109 memcpy(&pm->ts, ts, sizeof(TTTSet));
110110 }
111111
112+static void CopyFiles(const wchar_t *file_list[], const wchar_t *src_dir, const wchar_t *dest_dir)
113+{
114+ for (;;) {
115+ const wchar_t *filename = *file_list;
116+ file_list++;
117+ if (filename == NULL) {
118+ break;
119+ }
120+
121+ wchar_t *dest = NULL;
122+ awcscats(&dest, dest_dir, L"\\", filename, NULL);
123+
124+ size_t len = wcslen(dest);
125+ if (dest[len - 1] == '\\') {
126+ // フォルダ作成
127+ CreateDirectoryW(dest, NULL);
128+ }
129+ else {
130+ wchar_t *src = NULL;
131+ awcscats(&src, src_dir, L"\\", filename, NULL);
132+ CopyFileW(src, dest, TRUE); // TRUE = do not copy if exists
133+ free(src);
134+ }
135+ free(dest);
136+ }
137+}
138+
112139 BOOL WINAPI StartTeraTerm(PTTSet ts)
113140 {
114141 if (FirstInstance) {
@@ -140,49 +167,41 @@
140167 CreateDirectoryW(ts->HomeDirW, NULL);
141168 SetCurrentDirectoryW(ts->HomeDirW); // TODO 必要??
142169
143-#if 1
144- {
145- // TERATERM.INI のフルパス
146- wchar_t *setup = NULL;
147- awcscats(&setup, ts->HomeDirW, L"\\TERATERM.INI", NULL);
170+ // TERATERM.INI のフルパス
171+ ts->SetupFNameW = NULL;
172+ awcscats(&ts->SetupFNameW, ts->HomeDirW, L"\\TERATERM.INI", NULL);
173+ WideCharToACP_t(ts->SetupFNameW, ts->SetupFName, _countof(ts->SetupFName));
148174
149- // ファイルある?
150- if (GetFileAttributesW(setup) == INVALID_FILE_ATTRIBUTES) {
151- // exeフォルダからコピーする
152- wchar_t *src_ini = NULL;
153- awcscats(&src_ini, ts->ExeDirW, L"\\TERATERM.INI", NULL);
154- CopyFileW(src_ini, setup, TRUE);
155- free(src_ini);
156- }
175+ // KEYBOARD.CNF のフルパス
176+ ts->KeyCnfFNW = NULL;
177+ awcscats(&ts->KeyCnfFNW, ts->HomeDirW, L"\\KEYBOARD.CNF", NULL);
178+ WideCharToACP_t(ts->KeyCnfFNW, ts->KeyCnfFN, _countof(ts->KeyCnfFN));
157179
158- ts->SetupFNameW = setup;
159- }
160-#else
161- ts->SetupFNameW = GetDefaultSetupFNameW(ts->HomeDirW);
180+ // TERATERM.INI が存在する?
181+ if (GetFileAttributesW(ts->SetupFNameW) == INVALID_FILE_ATTRIBUTES) {
182+ // 存在しない場合、設定ファイルを個人フォルダへコピーする
183+ // TODO 設定ファイルの unicode, ansi変換
184+ static const wchar_t *filelist[] = {
185+ L"TERATERM.INI",
186+ L"KEYBOARD.CNF",
187+ L"cygterm.cfg",
188+#if 0
189+ L"theme\\",
190+ L"theme\\Advanced.sample",
191+ L"theme\\ImageFile.INI",
192+ L"theme\\scale\\",
193+ L"theme\\scale\\23.jpg",
194+ L"theme\\scale\\43.jpg",
195+ L"theme\\Scale.INI",
196+ L"theme\\tile\\",
197+ L"theme\\tile\\03.jpg",
198+ L"theme\\tile\\44.jpg",
199+ L"theme\\Tile.INI",
162200 #endif
163- WideCharToACP_t(ts->SetupFNameW, ts->SetupFName, _countof(ts->SetupFName));
164-
165-#if 1
166- {
167- // KEYBOARD.CNF のフルパス
168- wchar_t *keycnf = NULL;
169- awcscats(&keycnf, ts->HomeDirW, L"\\KEYBOARD.CNF", NULL);
170-
171- // ファイルある?
172- if (GetFileAttributesW(keycnf) == INVALID_FILE_ATTRIBUTES) {
173- // exeフォルダからコピーする
174- wchar_t *src_ini = NULL;
175- awcscats(&src_ini, ts->ExeDirW, L"\\KEYBOARD.CNF", NULL);
176- CopyFileW(src_ini, keycnf, TRUE);
177- free(src_ini);
178- }
179-
180- ts->KeyCnfFNW = keycnf;
201+ NULL,
202+ };
203+ CopyFiles(filelist, ts->ExeDirW, ts->HomeDirW);
181204 }
182-#else
183- ts->KeyCnfFNW = GetDefaultFNameW(ts->HomeDirW, L"KEYBOARD.CNF");
184-#endif
185- WideCharToACP_t(ts->KeyCnfFNW, ts->KeyCnfFN, _countof(ts->KeyCnfFN));
186205
187206 if (FirstInstance) {
188207 FirstInstance = FALSE;
旧リポジトリブラウザで表示