| 109 |
memcpy(&pm->ts, ts, sizeof(TTTSet)); |
memcpy(&pm->ts, ts, sizeof(TTTSet)); |
| 110 |
} |
} |
| 111 |
|
|
|
static wchar_t* GetLogDirW() |
|
|
{ |
|
|
wchar_t *local_app_data; |
|
|
wchar_t *log; |
|
|
_SHGetKnownFolderPath(&FOLDERID_LocalAppData, 0, NULL, &local_app_data); |
|
|
aswprintf(&log, L"%s\\%s", local_app_data, L"teraterm5"); |
|
|
free(local_app_data); |
|
|
CreateDirectoryW(log, NULL); |
|
|
return log; |
|
|
} |
|
|
|
|
| 112 |
BOOL WINAPI StartTeraTerm(PTTSet ts) |
BOOL WINAPI StartTeraTerm(PTTSet ts) |
| 113 |
{ |
{ |
| 114 |
if (FirstInstance) { |
if (FirstInstance) { |
| 128 |
// if (FirstInstance) { の部分から移動 (2008.3.13 maya) |
// if (FirstInstance) { の部分から移動 (2008.3.13 maya) |
| 129 |
// 起動時には、共有メモリの HomeDir と SetupFName は空になる |
// 起動時には、共有メモリの HomeDir と SetupFName は空になる |
| 130 |
/* Get home directory (ttermpro.exeのフォルダ) */ |
/* Get home directory (ttermpro.exeのフォルダ) */ |
| 131 |
ts->ExeDirW = GetHomeDirW(hInst); |
ts->ExeDirW = GetExeDirW(hInst); |
| 132 |
|
|
| 133 |
|
// LogDir |
| 134 |
ts->LogDirW = GetLogDirW(); |
ts->LogDirW = GetLogDirW(); |
| 135 |
|
CreateDirectoryW(ts->LogDirW, NULL); |
| 136 |
|
|
| 137 |
|
// HomeDir |
| 138 |
ts->HomeDirW = GetHomeDirW(hInst); |
ts->HomeDirW = GetHomeDirW(hInst); |
| 139 |
WideCharToACP_t(ts->HomeDirW, ts->HomeDir, _countof(ts->HomeDir)); |
WideCharToACP_t(ts->HomeDirW, ts->HomeDir, _countof(ts->HomeDir)); |
| 140 |
SetCurrentDirectoryW(ts->HomeDirW); |
CreateDirectoryW(ts->HomeDirW, NULL); |
| 141 |
|
SetCurrentDirectoryW(ts->HomeDirW); // TODO 必要?? |
| 142 |
|
|
| 143 |
|
#if 1 |
| 144 |
|
{ |
| 145 |
|
// TERATERM.INI のフルパス |
| 146 |
|
wchar_t *setup = NULL; |
| 147 |
|
awcscats(&setup, ts->HomeDirW, L"\\TERATERM.INI", NULL); |
| 148 |
|
|
| 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 |
|
} |
| 157 |
|
|
| 158 |
|
ts->SetupFNameW = setup; |
| 159 |
|
} |
| 160 |
|
#else |
| 161 |
ts->SetupFNameW = GetDefaultSetupFNameW(ts->HomeDirW); |
ts->SetupFNameW = GetDefaultSetupFNameW(ts->HomeDirW); |
| 162 |
|
#endif |
| 163 |
WideCharToACP_t(ts->SetupFNameW, ts->SetupFName, _countof(ts->SetupFName)); |
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; |
| 181 |
|
} |
| 182 |
|
#else |
| 183 |
ts->KeyCnfFNW = GetDefaultFNameW(ts->HomeDirW, L"KEYBOARD.CNF"); |
ts->KeyCnfFNW = GetDefaultFNameW(ts->HomeDirW, L"KEYBOARD.CNF"); |
| 184 |
|
#endif |
| 185 |
WideCharToACP_t(ts->KeyCnfFNW, ts->KeyCnfFN, _countof(ts->KeyCnfFN)); |
WideCharToACP_t(ts->KeyCnfFNW, ts->KeyCnfFN, _countof(ts->KeyCnfFN)); |
| 186 |
|
|
| 187 |
if (FirstInstance) { |
if (FirstInstance) { |