Revision: 9837 https://osdn.net/projects/ttssh2/scm/svn/commits/9837 Author: zmatsuo Date: 2022-03-25 22:38:49 +0900 (Fri, 25 Mar 2022) Log Message: ----------- refactoring, コメント追記 Modified Paths: -------------- trunk/cygwin/cyglaunch/cyglaunch.c trunk/cygwin/cyglib/cyglib.c -------------- next part -------------- Modified: trunk/cygwin/cyglaunch/cyglaunch.c =================================================================== --- trunk/cygwin/cyglaunch/cyglaunch.c 2022-03-25 13:38:40 UTC (rev 9836) +++ trunk/cygwin/cyglaunch/cyglaunch.c 2022-03-25 13:38:49 UTC (rev 9837) @@ -66,7 +66,6 @@ int wmain(int argc, wchar_t *argv[]) { - wchar_t *CygwinDir; wchar_t *Cmdline; int i; DWORD e; @@ -98,15 +97,16 @@ } } - // cygwin\x82\xAA\x83C\x83\x93\x83X\x83g\x81[\x83\x8B\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x83t\x83H\x83\x8B\x83_ - CygwinDir = GetCygwinDir(); // cygterm\x82\xF0\x8E\xC0\x8Ds\x82\xB7\x82\xE9 if (msys2term) { - e = Msys2Connect(CygwinDir, Cmdline); + e = Msys2Connect(L"c:\\msys64", Cmdline); } else { + // cygwin\x82\xAA\x83C\x83\x93\x83X\x83g\x81[\x83\x8B\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9\x83t\x83H\x83\x8B\x83_ + wchar_t *CygwinDir = GetCygwinDir(); e = CygwinConnect(CygwinDir, Cmdline); + free(CygwinDir); } switch(e) { @@ -128,6 +128,5 @@ } free(Cmdline); - free(CygwinDir); return 0; } Modified: trunk/cygwin/cyglib/cyglib.c =================================================================== --- trunk/cygwin/cyglib/cyglib.c 2022-03-25 13:38:40 UTC (rev 9836) +++ trunk/cygwin/cyglib/cyglib.c 2022-03-25 13:38:49 UTC (rev 9837) @@ -41,8 +41,9 @@ /** * cygwin1.dll / msys-2.0.dll\x82\xF0\x92T\x82\xB7 * - * @param[in] dll_base dll\x83t\x83@\x83C\x83\x8B\x96\xBC + * @param[in] dll_base "cygwin1", "msys-2.0" \x82ȂǁA"dll" \x82\xF0\x8F\x9C\x82\xA2\x82\xBD\x83x\x81[\x83X * @param[in] cygwin_dir (\x91\xB6\x8D݂\xB7\x82\xE9\x82ł\xA0\x82낤)\x83t\x83H\x83\x8B\x83_(*1) + * \x8Ew\x92\xE8\x82Ȃ\xB5\x82̏ꍇ\x82\xCD NULL \x82\xF0\x93n\x82\xB7 * @param[in] search_paths (*1)\x82\xAA\x8C\xA9\x82\xA9\x82\xE7\x82Ȃ\xA9\x82\xC1\x82\xBD\x82Ƃ\xAB\x82ɒT\x82\xB7\x83p\x83X * @param[out] find_dir \x8C\xA9\x82\xA9\x82\xC1\x82\xBD\x83t\x83H\x83\x8B\x83_ free() \x82\xB7\x82邱\x82\xC6 * @param[out] find_in_path \x8A\xAB\x95ϐ\x94 PATH \x93\xE0\x82Ɍ\xA9\x82\xA9\x82\xC1\x82\xBD @@ -64,26 +65,33 @@ // \x8Ew\x92肳\x82ꂽ\x83t\x83H\x83\x8B\x83_\x82ɑ\xB6\x8D݂\xB7\x82邩? if (cygwin_dir != NULL && cygwin_dir[0] != 0) { - // SearchPathW() \x82ŒT\x82\xB7 - dll = NULL; - awcscats(&dll, L"bin\\", dll_base, NULL); - r = SearchPathW(cygwin_dir, dll, L".dll", _countof(file), file, &filename); - free(dll); - if (r > 0) { - goto found_dll; - } + static const wchar_t *dll_paths[] = { + L"bin\\", // cygwin\x82\xCD bin/ \x82̉\xBA\x82\xC9dll\x82\xAA\x82\xA0\x82\xE9 + L"usr\\bin\\" // msys2\x82\xCD usr/bin/ \x82̉\xBA\x82\xC9dll\x82\xAA\x82\xA0\x82\xE9 + }; + for (i = 0; i < _countof(dll_paths); i++) { + // SearchPathW() \x82ŒT\x82\xB7 + dll = NULL; + awcscats(&dll, dll_paths[i], dll_base, NULL); + r = SearchPathW(cygwin_dir, dll, L".dll", _countof(file), file, &filename); + free(dll); + if (r > 0) { + goto found_dll; + } - // SearchPathW() \x82\xBE\x82\xC6 "msys-2.0.dll" \x82\xAA\x8C\xA9\x82\xAF\x82邱\x82Ƃ\xAA\x82ł\xAB\x82Ȃ\xA2 (Windows 10) - dll = NULL; - awcscats(&dll, cygwin_dir, L"\\bin\\", dll_base, L".dll", NULL); - r = GetFileAttributesW(dll); - if (r != INVALID_FILE_ATTRIBUTES) { - // \x8C\xA9\x82\xA9\x82\xC1\x82\xBD + // \x8C\xA9\x82\xA9\x82\xE7\x82Ȃ\xA9\x82\xC1\x82\xBD\x82\xE7 GetFileAttributesW() \x82ł\xB3\x82\xE7\x82ɒ\xB2\x82ׂ\xE9 + // SearchPathW() \x82\xAA"msys-2.0.dll" \x82\xAA\x8C\xA9\x82\xAF\x82邱\x82Ƃ\xAA\x82ł\xAB\x82Ȃ\xA2 + // "." \x82\xAA\x93\xFC\x82\xC1\x82Ă\xA2\x82邩\x82炩? + dll = NULL; + awcscats(&dll, cygwin_dir, L"\\", dll_paths[i], dll_base, L".dll", NULL); wcscpy_s(file, _countof(file), dll); free(dll); - goto found_dll; + r = GetFileAttributesW(file); + if (r != INVALID_FILE_ATTRIBUTES) { + // \x8C\xA9\x82\xA9\x82\xC1\x82\xBD + goto found_dll; + } } - free(dll); } // PATH \x82\xA9\x82\xE7\x92T\x82\xB7 @@ -179,8 +187,10 @@ /** * Connect to local cygwin * cygterm\x82\xF0\x8E\xC0\x8Ds - * - * @param[in] CygwinDirectory Cygwin\x82\xAA\x83C\x83\x93\x83X\x83g\x81[\x83\x8B\x82\xB5\x82Ă\xA0\x82\xE9\x83t\x83H\x83\x8B\x83_ + + * @param[in] dll_base "cygwin1", "msys-2.0" \x82ȂǁA"dll" \x82\xF0\x8F\x9C\x82\xA2\x82\xBD\x83x\x81[\x83X + * @param[in] CygwinDirectory Cygwin(msys2)\x82\xAA\x83C\x83\x93\x83X\x83g\x81[\x83\x8B\x82\xB5\x82Ă\xA0\x82\xE9\x83t\x83H\x83\x8B\x83_ + * \x8Ew\x92\xE8\x82Ȃ\xB5\x82̏ꍇ\x82\xCD NULL \x82\xF0\x93n\x82\xB7 * \x8C\xA9\x82\xA9\x82\xE7\x82Ȃ\xAF\x82\xEA\x82f\x83t\x83H\x83\x8B\x83g\x83t\x83H\x83\x8B\x83_\x82Ȃǂ\xF0\x92T\x82\xB7 * @param[in] cmdline cygterm\x82ɓn\x82\xB7\x83R\x83}\x83\x93\x83h\x83\x89\x83C\x83\x93\x88\xF8\x90\x94 * NULL\x82̂Ƃ\xAB\x88\xF8\x90\x94\x82Ȃ\xB5