Revision: 9521 https://osdn.net/projects/ttssh2/scm/svn/commits/9521 Author: zmatsuo Date: 2021-11-10 22:02:18 +0900 (Wed, 10 Nov 2021) Log Message: ----------- cyglaunch から msys2term を起動できるようにした - cyglaunch に -msys2 オプションを追加 Modified Paths: -------------- trunk/cygwin/README.md trunk/cygwin/cyglaunch/README.md trunk/cygwin/cyglaunch/cyglaunch.c Added Paths: ----------- trunk/cygwin/cyglaunch/cygterm_here_reg_sample.txt -------------- next part -------------- Modified: trunk/cygwin/README.md =================================================================== --- trunk/cygwin/README.md 2021-11-10 13:02:08 UTC (rev 9520) +++ trunk/cygwin/README.md 2021-11-10 13:02:18 UTC (rev 9521) @@ -1,7 +1,7 @@ # cygwin に関連するプログラムなど - cyglaunch - - cygterm を実行するプログラム + - cygterm(または msys2term) を実行するプログラム - cygterm - cygwin(msys2)のシェルとTera Termの橋渡しをするプログラム - cygwin用64bit, 32bit, msys2用(msys2term) をビルド可能 Modified: trunk/cygwin/cyglaunch/README.md =================================================================== --- trunk/cygwin/cyglaunch/README.md 2021-11-10 13:02:08 UTC (rev 9520) +++ trunk/cygwin/cyglaunch/README.md 2021-11-10 13:02:18 UTC (rev 9521) @@ -1,6 +1,34 @@ # cyglaunch -- cygterm を起動するプログラム -- cyglaunch は普通のexeファイル - - cygwin上で動作する必要はない - - Visual Studio で普通にビルドできる +cygterm を起動するプログラム + +## コマンドラインオプション + +cyglaunch で解釈されない引数は cygterm(又は msys2term)へ渡される + +-msys2 + cygterm ではなく msys2term を起動する + 次のオプションを付けることで msys2の環境を設定できる + + -v MSYSTEM=MSYS + msys + -v MSYSTEM=MINGW32 + mingw32 + -v MSYSTEM=MINGW64 + mingw64 + + msys2の起動については次のURLを参照 + https://www.msys2.org/wiki/Launchers/ + +## from explorer + +レジストリに設定することで、エクスプローラーのコンテキストメニューからターミナルをオープンできる + +cygterm_here_reg_sample.txt 参照 + +## 歴史 + +- cyglaunch は通常のexeファイル +- Visual Studio で普通にビルドできる +- cygwin上で動作する必要はない +- 従来は cygterm フォルダに存在し MinGW でビルドされていた Modified: trunk/cygwin/cyglaunch/cyglaunch.c =================================================================== --- trunk/cygwin/cyglaunch/cyglaunch.c 2021-11-10 13:02:08 UTC (rev 9520) +++ trunk/cygwin/cyglaunch/cyglaunch.c 2021-11-10 13:02:18 UTC (rev 9521) @@ -37,6 +37,7 @@ #include "ttlib.h" #include "asprintf.h" +#include "win32helper.h" #include "cyglib.h" #define Section L"Tera Term" @@ -48,7 +49,7 @@ { wchar_t *HomeDir; wchar_t *teraterm_ini; - wchar_t CygwinDir[256]; + wchar_t *CygwinDir; HomeDir = GetHomeDirW(NULL); teraterm_ini = NULL; @@ -56,14 +57,11 @@ free(HomeDir); // Cygwin install path - GetPrivateProfileStringW(Section, L"CygwinDirectory", L"", - CygwinDir, _countof(CygwinDir), teraterm_ini); + hGetPrivateProfileStringW(Section, L"CygwinDirectory", L"", + teraterm_ini, &CygwinDir); free(teraterm_ini); - if (CygwinDir[0] == 0) { - return NULL; - } - return _wcsdup(CygwinDir); + return CygwinDir; } int wmain(int argc, wchar_t *argv[]) @@ -71,8 +69,8 @@ wchar_t *CygwinDir; wchar_t *Cmdline; int i; - BOOL d_opt=FALSE; DWORD e; + BOOL msys2term = FALSE; setlocale(LC_ALL, ""); @@ -82,16 +80,21 @@ if (i != 1) { awcscat(&Cmdline, L" "); } - if (d_opt && wcsncmp(L"\"\\\\", argv[i], 3) == 0) { - argv[i][1] = '/'; - argv[i][2] = '/'; + if (wcscmp(argv[i], L"-d") == 0 && *(argv+1) != NULL) { + i++; + if (wcsncmp(L"\"\\\\", argv[i], 3) == 0) { + // -d "\\path\..." \x82\xF0\x8F\x91\x82\xAB\x8A\xB7\x82\xA6 + argv[i][1] = '/'; + argv[i][2] = '/'; + } + awcscat(&Cmdline, L"-d "); + awcscat(&Cmdline, argv[i]); } - awcscat(&Cmdline, argv[i]); - if (wcscmp(argv[i], L"-d") == 0) { - d_opt = TRUE; + else if (wcscmp(argv[i], L"-msys2") == 0) { + msys2term = TRUE; } else { - d_opt = FALSE; + awcscat(&Cmdline, argv[i]); } } @@ -99,7 +102,13 @@ CygwinDir = GetCygwinDir(); // cygterm\x82\xF0\x8E\xC0\x8Ds\x82\xB7\x82\xE9 - e = CygwinConnect(CygwinDir, Cmdline); + if (msys2term) { + e = Msys2Connect(CygwinDir, Cmdline); + } + else { + e = CygwinConnect(CygwinDir, Cmdline); + } + switch(e) { case NO_ERROR: break; @@ -110,10 +119,15 @@ MessageBox(NULL, "Can't allocate memory.", "ERROR", MB_OK | MB_ICONWARNING); break; case ERROR_OPEN_FAILED: - default: - MessageBox(NULL, "Can't execute Cygterm.", "ERROR", MB_OK | MB_ICONWARNING); + default: { + const char *msg = msys2term ? "Can't execute msys2term." : + "Can't execute Cygterm."; + MessageBox(NULL, msg, "ERROR", MB_OK | MB_ICONWARNING); break; } + } + free(Cmdline); + free(CygwinDir); return 0; } Added: trunk/cygwin/cyglaunch/cygterm_here_reg_sample.txt =================================================================== --- trunk/cygwin/cyglaunch/cygterm_here_reg_sample.txt (rev 0) +++ trunk/cygwin/cyglaunch/cygterm_here_reg_sample.txt 2021-11-10 13:02:18 UTC (rev 9521) @@ -0,0 +1,27 @@ +\xFF\xFEW i n d o w s R e g i s t r y E d i t o r V e r s i o n 5 . 0 0 + + + + [ H K E Y _ C U R R E N T _ U S E R \ S O F T W A R E \ C l a s s e s \ F o l d e r \ s h e l l \ c y g t e r m ] + + @ = " C y & g t e r m H e r e " + + + + [ H K E Y _ C U R R E N T _ U S E R \ S O F T W A R E \ C l a s s e s \ F o l d e r \ s h e l l \ c y g t e r m \ c o m m a n d ] + + @ = " \ " D : \ \ P a t h \ \ T o \ \ c y g l a u n c h . e x e \ " - n o c d - v C H E R E _ I N V O K I N G = y - d \ " \ \ \ " % L \ \ \ " \ " " + + + + [ H K E Y _ C U R R E N T _ U S E R \ S O F T W A R E \ C l a s s e s \ F o l d e r \ s h e l l \ m s y s 2 t e r m _ m s y s ] + + @ = " m s y s 2 g t e r m ( m s y s ) H e r e " + + + + [ H K E Y _ C U R R E N T _ U S E R \ S O F T W A R E \ C l a s s e s \ F o l d e r \ s h e l l \ m s y s 2 t e r m _ m s y s \ c o m m a n d ] + + @ = " \ " D : \ \ P a t h \ \ T o \ \ c y g l a u n c h . e x e \ " - m s y s 2 - n o c d - v C H E R E _ I N V O K I N G = y - d \ " \ \ \ " % L \ \ \ " \ " - v M S Y S T E M = M S Y S " + + \ No newline at end of file