Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/ttpcmn/ttcmn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 9501 by zmatsuo, Wed Oct 27 12:48:49 2021 UTC revision 9532 by zmatsuo, Tue Nov 16 14:16:59 2021 UTC
# Line 109  void WINAPI CopyTTSetToShmem(PTTSet ts) Line 109  void WINAPI CopyTTSetToShmem(PTTSet ts)
109          memcpy(&pm->ts, ts, sizeof(TTTSet));          memcpy(&pm->ts, ts, sizeof(TTTSet));
110  }  }
111    
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    
139  BOOL WINAPI StartTeraTerm(PTTSet ts)  BOOL WINAPI StartTeraTerm(PTTSet ts)
140  {  {
141          if (FirstInstance) {          if (FirstInstance) {
# Line 140  BOOL WINAPI StartTeraTerm(PTTSet ts) Line 167  BOOL WINAPI StartTeraTerm(PTTSet ts)
167          CreateDirectoryW(ts->HomeDirW, NULL);          CreateDirectoryW(ts->HomeDirW, NULL);
168          SetCurrentDirectoryW(ts->HomeDirW);             // TODO 必要??          SetCurrentDirectoryW(ts->HomeDirW);             // TODO 必要??
169    
170  #if 1          // TERATERM.INI のフルパス
171          {          ts->SetupFNameW = NULL;
172                  // TERATERM.INI のフルパス          awcscats(&ts->SetupFNameW, ts->HomeDirW, L"\\TERATERM.INI", NULL);
                 wchar_t *setup = NULL;  
                 awcscats(&setup, ts->HomeDirW, L"\\TERATERM.INI", NULL);  
   
                 // ファイルある?  
                 if (GetFileAttributesW(setup) == INVALID_FILE_ATTRIBUTES) {  
                         // exeフォルダからコピーする  
                         wchar_t *src_ini = NULL;  
                         awcscats(&src_ini, ts->ExeDirW, L"\\TERATERM.INI", NULL);  
                         CopyFileW(src_ini, setup, TRUE);  
                         free(src_ini);  
                 }  
   
                 ts->SetupFNameW = setup;  
         }  
 #else  
         ts->SetupFNameW = GetDefaultSetupFNameW(ts->HomeDirW);  
 #endif  
173          WideCharToACP_t(ts->SetupFNameW, ts->SetupFName, _countof(ts->SetupFName));          WideCharToACP_t(ts->SetupFNameW, ts->SetupFName, _countof(ts->SetupFName));
174    
175  #if 1          // KEYBOARD.CNF のフルパス
176          {          ts->KeyCnfFNW = NULL;
177                  // KEYBOARD.CNF のフルパス          awcscats(&ts->KeyCnfFNW, ts->HomeDirW, L"\\KEYBOARD.CNF", NULL);
178                  wchar_t *keycnf = NULL;          WideCharToACP_t(ts->KeyCnfFNW, ts->KeyCnfFN, _countof(ts->KeyCnfFN));
                 awcscats(&keycnf, ts->HomeDirW, L"\\KEYBOARD.CNF", NULL);  
   
                 // ファイルある?  
                 if (GetFileAttributesW(keycnf) == INVALID_FILE_ATTRIBUTES) {  
                         // exeフォルダからコピーする  
                         wchar_t *src_ini = NULL;  
                         awcscats(&src_ini, ts->ExeDirW, L"\\KEYBOARD.CNF", NULL);  
                         CopyFileW(src_ini, keycnf, TRUE);  
                         free(src_ini);  
                 }  
179    
180                  ts->KeyCnfFNW = keycnf;          // TERATERM.INI が存在する?
181          }          if (GetFileAttributesW(ts->SetupFNameW) == INVALID_FILE_ATTRIBUTES) {
182  #else                  // 存在しない場合、設定ファイルを個人フォルダへコピーする
183          ts->KeyCnfFNW = GetDefaultFNameW(ts->HomeDirW, L"KEYBOARD.CNF");                  // 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",
200  #endif  #endif
201          WideCharToACP_t(ts->KeyCnfFNW, ts->KeyCnfFN, _countof(ts->KeyCnfFN));                          NULL,
202                    };
203                    CopyFiles(filelist, ts->ExeDirW, ts->HomeDirW);
204            }
205    
206          if (FirstInstance) {          if (FirstInstance) {
207                  FirstInstance = FALSE;                  FirstInstance = FALSE;

Legend:
Removed from v.9501  
changed lines
  Added in v.9532

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26