いつもmltermを使わせてもらっているおおしまと申します。
さて、現在のmltermでは新しくterminalを開いたとき(posix_openpt()
等で確保したptyの)termiosの初期設定でc_cc[VSTATUS]を何も設定し
ていないため、mlterm起動直後stty statusの初期値がNULL値(=0x00,
Control-@)になってしまいます。
c_cc[VSTATUS], stty statusは*BSD系OSでの独自のControl Character
で、これを入力するとカレントプロセスに対してSIGINFO signalを送信
するという機能を持ち、例えばtar 展開やddの実行状況を確認できるの
で個人的に便利で良く使う機能です。
xtermやgetty等のアプリケーションでは、defaultでtermios.h内に設定
されたCSTATUS(0x14, Control-T: NetBSDの場合)に初期化されます。
確認はしていませんが man pageを見るとおそらくmacOS-Xでも同様だと
思います。
https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man4/termios.4.html
の、Special Characters -> STATUS の項目
もちろん、現状でも開いた後にstty status ^T 等と入力すれば良いだけ
なのですが、できればソース内で対応いただけると嬉しいのですがどうで
しょうか。
手元のNetBSD 7.0_STABLE環境では以下のような追加でうまく機能してい
ます。
mlterm 3.7.2の場合:
--- kiklib/src/kik_pty_streams.c.orig 2016-08-14 17:21:06.000000000 +0900
+++ kiklib/src/kik_pty_streams.c 2017-01-01 22:42:50.000000000 +0900
@@ -230,6 +230,9 @@
#ifdef VSWTCH
tio.c_cc[VSWTCH] = VDISABLE ;
#endif
+#ifdef VSTATUS
+ tio.c_cc[VSTATUS] = CSTATUS ;
+#endif
/*
* VMIN == VEOF and VTIME == VEOL on old System V.
*/
(注: NetBSD 7.xではposix_openpt()に対応しているためpty_streams.c
が使われます。古い*BSDではpty_bsd.cが使われるかもしれません)
開発版ソースではbaselib/src/bi_pty_streams.cに同様の追加で対応でき
ると思います。
*BSD以外のOS環境によってはCSTATUSのdefine追加が必要かもしれません
(本ソース内でAndroidの場合Cxxのdefineを行うソースがありますが、他
のOS環境での対応状況は把握できていません)。
--
おおしま やすし
|