From: Araki K. <j00...@ip...> - 2002-02-20 09:46:53
|
荒木です:-) Subject: Re: [Mlterm-dev-ja] commit log [2002/02/20] From: MINAMI Hirokazu <mi...@ch...> Message-ID: <200...@ch...> Date: Wed, 20 Feb 2002 15:23:55 +0900 > stdout(stderr?)が端末でないところから起動すると端末名にゴミが入ることに気付きました。 > 手元では gnome panel や sawfish のメニュー から mlterm を起動したとき > > $ w > 15:13:14 up 6 days, 19:57, 6 users, load average: 1.07, 1.13, 1.14 > USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT > minami 倔&@I@@ :0.0 15:13 8:31m 0.00s ? - > > となって、TTYの中身が怪しげになります。 > > kik_utmp_login.c 内で受け取った *tty を検査してから使うようにするか、 > kik_pty_fork で回避するか判断しかねたのですが、どうするのがいいでしょうか? kik_utmp_login.c 内で、受け取った *tty を検査ということですが、 if( strncmp( tty, "/dev/", K_MIN(5,strlen(tty))) == 0) { /* skip /dev/ prefix */ tty += 5 ; } if( strncmp( tty, "pts", K_MIN(3,strlen(tty))) != 0 && strncmp( tty, "pty", K_MIN(3,strlen(tty))) != 0 && strncmp( tty, "tty", K_MIN(3,strlen(tty))) != 0) { free(utmp); return NULL; } これを通過しているということは、kik_utmp_login.c が受けとった tty 変数 には正しい値が入っているのではないでしょうか? にも関わらず、login() の結果、TTY 名が化けちゃう、というなると、回避する ことはできないように思うのですが、何か勘違いしてますでしょうか? 結局、どう対処すべきか、わたしもわからないのですが、案外、 #ifndef HAVE_SETUTENT /* ut.ut_line must be filled before login() on bsd. */ memcpy( ut.ut_line , tty , K_MIN(sizeof(ut.ut_line),strlen(tty))) ; #endif この #ifndef HAVE_SETUTENT を外してやると上手くいったりしないかな、とか 思ったりもします。 それから、別件の高橋全さんの問題ですが、use_bidi = false することで解決 できたそうです。 # ちなみに、Fribidi をリンクしていない mlterm での話です。 gcc 2.95 でも問題が発生したそうですので、bidi の処理周りに問題があるのか もしれません。 # が、根本的な原因は、未だ分からず.... では -- kiken j00...@ip... |