Revision: 7674 https://osdn.net/projects/ttssh2/scm/svn/commits/7674 Author: zmatsuo Date: 2019-05-14 00:14:30 +0900 (Tue, 14 May 2019) Log Message: ----------- GetHomeDir(),GetUILanguageFileFull()#ttlib.cを追加、同様な処理は関数を使用するようにした Modified Paths: -------------- trunk/teraterm/common/ttlib.c trunk/teraterm/common/ttlib.h trunk/teraterm/ttpcmn/ttcmn.c trunk/teraterm/ttpdlg/ttdlg.c trunk/teraterm/ttpmacro/ttmacro.cpp trunk/teraterm/ttpmacro/ttmdlg.cpp trunk/teraterm/ttpmacro/ttmdlg.h trunk/teraterm/ttpset/ttset.c -------------- next part -------------- Modified: trunk/teraterm/common/ttlib.c =================================================================== --- trunk/teraterm/common/ttlib.c 2019-05-13 14:58:13 UTC (rev 7673) +++ trunk/teraterm/common/ttlib.c 2019-05-13 15:14:30 UTC (rev 7674) @@ -916,38 +916,69 @@ strncat_s(dest, destlen, file, _TRUNCATE); } +/* + * Get home(exe,dll) directory + * @param[in] hInst WinMain()\x82\xCC HINSTANCE \x82܂\xBD\x82\xCD NULL + * @param[in,out] HomeDir + * @param[out] HomeDirLen + */ +void GetHomeDir(HINSTANCE hInst, char *HomeDir, size_t HomeDirLen) +{ + char Temp[MAX_PATH]; + DWORD result = GetModuleFileName(NULL,Temp,sizeof(Temp)); + if (result == 0 || result == _countof(Temp)) { + // \x83p\x83X\x82̎擾\x82Ɏ\xB8\x94s\x82\xB5\x82\xBD\x81B\x92v\x96\xBD\x93I\x81Aabort() \x82\xB7\x82\xE9\x81B + abort(); + // \x82\xB1\x82\xB1\x82\xC5return\x82\xB5\x82Ă\xE0\x83v\x83\x89\x83O\x83C\x83\x93(ttpset.dll)\x82̃\x8D\x81[\x83h\x82Ɏ\xB8\x94s\x82\xB5\x82\xC4abort()\x82\xB7\x82\xE9 + } + ExtractDirName(Temp, Temp); + strncpy_s(HomeDir, HomeDirLen, Temp, _TRUNCATE); +} + // \x83f\x83t\x83H\x83\x8B\x83g\x82\xCC TERATERM.INI \x82̃t\x83\x8B\x83p\x83X\x82\xF0 ttpmacro \x82\xA9\x82\xE7\x82\xE0 // \x8E擾\x82\xB7\x82邽\x82߂ɒlj\xC1\x82\xB5\x82\xBD\x81B(2007.2.18 maya) -void GetDefaultSetupFName(char *home, char *dest, int destlen) +void GetDefaultSetupFName(const char *home, char *dest, int destlen) { GetDefaultFName(home, "TERATERM.INI", dest, destlen); } +/* + * UILanguageFile\x82̃t\x83\x8B\x83p\x83X\x82\xF0\x8E擾\x82\xB7\x82\xE9 + * + * @param[in] HomeDir exe,dll\x82̑\xB6\x8D݂\xB7\x82\xE9\x83t\x83H\x83\x8B\x83_ GetHomeDir()\x82Ŏ擾\x82ł\xAB\x82\xE9 + * @param[in] UILanguageFileRel lng\x83t\x83@\x83C\x83\x8B\x81AHomeDir\x82\xA9\x82\xE7\x82̑\x8A\x91p\x83X + * @param[in,out] UILanguageFileFull lng\x83t\x83@\x83C\x83\x8Bptr\x81A\x83t\x83\x8B\x83p\x83X + * @param[in] UILanguageFileFullLen lng\x83t\x83@\x83C\x83\x8Blen\x81A\x83t\x83\x8B\x83p\x83X + */ +void GetUILanguageFileFull(const char *HomeDir, const char *UILanguageFileRel, + char *UILanguageFileFull, size_t UILanguageFileFullLen) +{ + char CurDir[MAX_PATH]; + + /* Get UILanguageFile Full Path */ + GetCurrentDirectory(sizeof(CurDir), CurDir); + SetCurrentDirectory(HomeDir); + _fullpath(UILanguageFileFull, UILanguageFileRel, UILanguageFileFullLen); + SetCurrentDirectory(CurDir); +} + void GetUILanguageFile(char *buf, int buflen) { char HomeDir[MAX_PATH]; char Temp[MAX_PATH]; char SetupFName[MAX_PATH]; - char CurDir[MAX_PATH]; /* Get home directory */ - if (GetModuleFileName(NULL,Temp,sizeof(Temp)) == 0) { - memset(buf, 0, buflen); - return; - } - ExtractDirName(Temp, HomeDir); + GetHomeDir(NULL, HomeDir, sizeof(HomeDir)); /* Get SetupFName */ GetDefaultSetupFName(HomeDir, SetupFName, sizeof(SetupFName)); - + /* Get LanguageFile name */ - GetPrivateProfileString("Tera Term", "UILanguageFile", "", + GetPrivateProfileString("Tera Term", "UILanguageFile", "lang\\Default.lng", Temp, sizeof(Temp), SetupFName); - GetCurrentDirectory(sizeof(CurDir), CurDir); - SetCurrentDirectory(HomeDir); - _fullpath(buf, Temp, buflen); - SetCurrentDirectory(CurDir); + GetUILanguageFileFull(HomeDir, Temp, buf, buflen); } // \x8Ew\x92肵\x82\xBD\x83G\x83\x93\x83g\x83\x8A\x82\xF0 teraterm.ini \x82\xA9\x82\xE7\x93ǂݎ\xE6\x82\xE9 (2009.3.23 yutaka) @@ -958,11 +989,7 @@ char SetupFName[MAX_PATH]; /* Get home directory */ - if (GetModuleFileName(NULL,Temp,sizeof(Temp)) == 0) { - strncpy_s(buf, buflen, "off", _TRUNCATE); - return; - } - ExtractDirName(Temp, HomeDir); + GetHomeDir(NULL, HomeDir, sizeof(HomeDir)); /* Get SetupFName */ GetDefaultSetupFName(HomeDir, SetupFName, sizeof(SetupFName)); Modified: trunk/teraterm/common/ttlib.h =================================================================== --- trunk/teraterm/common/ttlib.h 2019-05-13 14:58:13 UTC (rev 7673) +++ trunk/teraterm/common/ttlib.h 2019-05-13 15:14:30 UTC (rev 7674) @@ -71,9 +71,12 @@ void GetNthNum(PCHAR Source, int Nth, int far *Num); int GetNthNum2(PCHAR Source, int Nth, int defval); void GetDownloadFolder(char *dest, int destlen); +void GetHomeDir(HINSTANCE hInst, char *HomeDir, size_t HomeDirLen); void GetDefaultFName(const char *home, const char *file, char *dest, int destlen); -void GetDefaultSetupFName(char *home, char *dest, int destlen); +void GetDefaultSetupFName(const char *home, char *dest, int destlen); void GetUILanguageFile(char *buf, int buflen); +void GetUILanguageFileFull(const char *HomeDir, const char *UILanguageFileRel, + char *UILanguageFileFull, size_t UILanguageFileFullLen); void GetOnOffEntryInifile(char *entry, char *buf, int buflen); void get_lang_msg(const char *key, PCHAR buf, int buf_len, const char *def, const char *iniFile); #if defined(UNICODE) Modified: trunk/teraterm/ttpcmn/ttcmn.c =================================================================== --- trunk/teraterm/ttpcmn/ttcmn.c 2019-05-13 14:58:13 UTC (rev 7673) +++ trunk/teraterm/ttpcmn/ttcmn.c 2019-05-13 15:14:30 UTC (rev 7674) @@ -103,8 +103,6 @@ BOOL WINAPI StartTeraTerm(PTTSet ts) { - char Temp[MAX_PATH]; - if (FirstInstance) { // init window list pm->NWin = 0; @@ -122,10 +120,7 @@ // if (FirstInstance) { \x82̕\x94\x95\xAA\x82\xA9\x82\xE7\x88ړ\xAE (2008.3.13 maya) // \x8BN\x93\xAE\x8E\x9E\x82ɂ́A\x8B\xA4\x97L\x83\x81\x83\x82\x83\x8A\x82\xCC HomeDir \x82\xC6 SetupFName \x82͋\xF3\x82ɂȂ\xE9 /* Get home directory */ - if (GetModuleFileName(hInst,Temp,sizeof(Temp)) == 0) { - return TRUE; - } - ExtractDirName(Temp, ts->HomeDir); + GetHomeDir(hInst, ts->HomeDir, sizeof(ts->HomeDir)); _chdir(ts->HomeDir); GetDefaultSetupFName(ts->HomeDir, ts->SetupFName, sizeof(ts->SetupFName)); Modified: trunk/teraterm/ttpdlg/ttdlg.c =================================================================== --- trunk/teraterm/ttpdlg/ttdlg.c 2019-05-13 14:58:13 UTC (rev 7673) +++ trunk/teraterm/ttpdlg/ttdlg.c 2019-05-13 15:14:30 UTC (rev 7674) @@ -2644,15 +2644,11 @@ // \x8C\xBE\x8C\xEA\x83t\x83@\x83C\x83\x8B\x82\xAA\x95ύX\x82\xB3\x82\xEA\x82Ă\xA2\x82\xBD\x8Fꍇ w = (WORD)GetCurSel(Dialog, IDC_GENLANG_UI); if (1 <= w && w <= uilist_count && w != langui_sel) { - char CurDir[MAX_PATH]; - _snprintf_s(ts->UILanguageFile_ini, sizeof(ts->UILanguageFile_ini), _TRUNCATE, "%s\\%s", LANG_PATH, LangUIList[w - 1]); - GetCurrentDirectory(sizeof(CurDir), CurDir); - SetCurrentDirectory(ts->HomeDir); - _fullpath(ts->UILanguageFile, ts->UILanguageFile_ini, sizeof(ts->UILanguageFile)); - SetCurrentDirectory(CurDir); + GetUILanguageFileFull(ts->HomeDir, ts->UILanguageFile_ini, + ts->UILanguageFile, sizeof(ts->UILanguageFile)); // \x83^\x83C\x83g\x83\x8B\x82̍X\x90V\x82\xF0\x8Ds\x82\xA4\x81B(2014.2.23 yutaka) PostMessage(GetParent(Dialog),WM_USER_CHANGETITLE,0,0); Modified: trunk/teraterm/ttpmacro/ttmacro.cpp =================================================================== --- trunk/teraterm/ttpmacro/ttmacro.cpp 2019-05-13 14:58:13 UTC (rev 7673) +++ trunk/teraterm/ttpmacro/ttmacro.cpp 2019-05-13 15:14:30 UTC (rev 7674) @@ -71,26 +71,17 @@ return CtrlWnd; } -static void GetDefaultSetupFName2(char *dest, int destlen) +static void init() { - char HomeDir[MAX_PATH]; - char Temp[MAX_PATH]; + char UILanguageFileRel[MAX_PATH]; - /* Get home directory */ - if (GetModuleFileName(NULL,Temp,sizeof(Temp)) == 0) { - memset(dest, 0, destlen); - return; - } - ExtractDirName(Temp, HomeDir); + GetHomeDir(hInst, HomeDir, sizeof(HomeDir)); + GetDefaultFName(HomeDir, "TERATERM.INI", SetupFName, sizeof(SetupFName)); + GetPrivateProfileString("Tera Term", "UILanguageFile", "lang\\Default.lng", + UILanguageFileRel, sizeof(UILanguageFileRel), SetupFName); + GetUILanguageFileFull(HomeDir, UILanguageFileRel, + UILanguageFile, sizeof(UILanguageFile)); - GetDefaultFName(HomeDir, "TERATERM.INI", dest, destlen); -} - -static void init() -{ - GetDefaultSetupFName2(SetupFName, sizeof(SetupFName)); - GetUILanguageFile(UILanguageFile, sizeof(UILanguageFile)); - DLLInit(); WinCompatInit(); Modified: trunk/teraterm/ttpmacro/ttmdlg.cpp =================================================================== --- trunk/teraterm/ttpmacro/ttmdlg.cpp 2019-05-13 14:58:13 UTC (rev 7673) +++ trunk/teraterm/ttpmacro/ttmdlg.cpp 2019-05-13 15:14:30 UTC (rev 7674) @@ -59,7 +59,7 @@ #define _strdup(s) _strdup_dbg((s), _NORMAL_BLOCK, __FILE__, __LINE__) #endif -char HomeDir[MAXPATHLEN]; +char HomeDir[MAX_PATH]; char FileName[MAX_PATH]; char TopicName[11]; char ShortName[MAX_PATH]; @@ -80,11 +80,7 @@ char Temp[MaxStrLen]; PCHAR start, cur, next; - // Get home directory - if (GetModuleFileName(GetInstance(), FileName,sizeof(FileName)) == 0) { - return; - } - ExtractDirName(FileName,HomeDir); + // go home directory _chdir(HomeDir); // Get command line parameters Modified: trunk/teraterm/ttpmacro/ttmdlg.h =================================================================== --- trunk/teraterm/ttpmacro/ttmdlg.h 2019-05-13 14:58:13 UTC (rev 7673) +++ trunk/teraterm/ttpmacro/ttmdlg.h 2019-05-13 15:14:30 UTC (rev 7674) @@ -50,7 +50,7 @@ int OpenListDlg(PCHAR Text, PCHAR Caption, CHAR **Lists, int Selected); -extern char HomeDir[MAXPATHLEN]; +extern char HomeDir[MAX_PATH]; extern char FileName[MAX_PATH]; extern char TopicName[11]; extern char ShortName[MAX_PATH]; Modified: trunk/teraterm/ttpset/ttset.c =================================================================== --- trunk/teraterm/ttpset/ttset.c 2019-05-13 14:58:13 UTC (rev 7673) +++ trunk/teraterm/ttpset/ttset.c 2019-05-13 15:14:30 UTC (rev 7674) @@ -1591,21 +1591,14 @@ Temp, sizeof(Temp), FName); strncpy_s(ts->Locale, sizeof(ts->Locale), Temp, _TRUNCATE); - // UI language message file + // UI language message file (\x91\x8A\x91p\x83X) GetPrivateProfileString(Section, "UILanguageFile", "lang\\Default.lng", - Temp, sizeof(Temp), FName); - { - char CurDir[MAX_PATH]; + ts->UILanguageFile_ini, sizeof(ts->UILanguageFile_ini), FName); - // \x83t\x83\x8B\x83p\x83X\x89\xBB\x82\xB7\x82\xE9\x91O\x82ɓǂݍ\x9E\x82ݎ\x9E\x82̐ݒ\xE8\x82\xF0\x8E\xE6\x82\xC1\x82Ă\xA8\x82\xAD - strncpy_s(ts->UILanguageFile_ini, sizeof(ts->UILanguageFile_ini), Temp, _TRUNCATE); + // UI language message file (full path) + GetUILanguageFileFull(ts->HomeDir, ts->UILanguageFile_ini, + ts->UILanguageFile, sizeof(ts->UILanguageFile)); - GetCurrentDirectory(sizeof(CurDir), CurDir); - SetCurrentDirectory(ts->HomeDir); - _fullpath(ts->UILanguageFile, Temp, sizeof(ts->UILanguageFile)); - SetCurrentDirectory(CurDir); - } - // Broadcast Command History (2007.3.3 maya) ts->BroadcastCommandHistory = GetOnOff(Section, "BroadcastCommandHistory", FName, FALSE);