From: Araki K. <j00...@ip...> - 2001-12-01 11:47:08
|
荒木です:-) # すみません、久保田さんには、直接メールを返してしまいました_o_ # 以下の内容は、そのメールと同様のものです。 Subject: [Mlterm-dev-ja] A few problems on 2.0.0 From: Tomohiro KUBOTA <tk...@ri...> Message-ID: <200...@si...> Date: Sat, 01 Dec 2001 15:28:27 +0900 > - 他のターミナルエミュレータの場合、起動すると、who を実行した > ときに表示されるユーザが増えていきます。これは、-ls なしで > 起動してもそうなります。ところが、mlterm ではそうなりません。 setsid するつもりはありませんでしたので、utmp には対応しておりません。 rxvt のコードを見てみます。 > - LANG=C XMODIFIER=@im=skkinput mlterm で実行すると、 > Space-Shift を押した瞬間に segfault します。これは、 > skkinput の代わりに kinput2 や ami でも同じですが、 > LANG=en_US とすると問題ありません。さらに、 > LANG=C XMODIFIERS= mlterm と実行しても、同様の問題が起こります。 坂本さんが指摘された、 LC_CTYPE=C mlterm -X した場合に Shift+Space でcore dumpする問題は、バグでしたので、添付のパッチ を当てていただければ解決すると思います。 ただ、 LANG=C XMODIFIERS=@im=kinput2 mlterm -X LANG=C XMODIFIERS=@im=skkinput mlterm -X LANG=C XMODIFIERS= mlterm の場合には再現できませんでした。 nl_langinfo()の実装の違い?だけで、いずれにせよ、これで core dumpしなくな るのではないかな、と期待しています。 > - これはバグじゃなくて要望ですが、0x07 BEL がサポートされていません。 わたしのPCは、音声周りが壊れていて、全く音がなりませんので、確認はできま せんが、XBell() を使った BEL に対応するコードを書いてみました。 添付のパッチでよいか、お試し下さい。 # Visual Bell(?) は今から調べます。 Subject: Re: [Mlterm-dev-ja] A few problems on 2.0.0 From: Tomohiro KUBOTA <tk...@ri...> Message-ID: <200...@si...> Date: Sat, 01 Dec 2001 16:15:11 +0900 > kill = ^U ですが、werase = @ となっていました。ちなみに、 > rxvt,kterm,eterm,xterm などでは、werase = ^W となっています。 > ml_pty_fork_{bsd,streams},c の ml_pty_fork() に WERASE を > 追加すればいいのでしょうか。 添付のパッチ(ml_pty_fork_{bsd,streams}.c)で直りますでしょうか? VWERSE というのは、rxvt 2.7.7 のをそのままいただいてきたものですが、調べ てみますと、VWERASE が正しいようです。 では -- kiken j00...@ip... Index: ml_encoding.c =================================================================== RCS file: /home/ken/cvsroot/mlterm/src/ml_encoding.c,v retrieving revision 1.6 diff -u -r1.6 ml_encoding.c --- ml_encoding.c 2001/11/08 15:47:34 1.6 +++ ml_encoding.c 2001/12/01 10:41:51 @@ -108,6 +108,10 @@ /* * alternative names.(these are not used in ml_{parser|conv}_new) */ + + /* XXX nl_langinfo(CODESET) may return 646. is this ok ? */ + { ML_ISO8859_1 , "646" , mkf_iso8859_1_parser_new , mkf_iso8859_1_conv_new , } , + #if 0 /* XXX necessary ? */ { ML_EUCJP , "EXTENDEDUNIXCODEPACKEDFORMATFORJAPANESE" } , /* MIME */ Index: ml_pty_fork_bsd.c =================================================================== RCS file: /home/ken/cvsroot/mlterm/src/ml_pty_fork_bsd.c,v retrieving revision 1.6 diff -u -r1.6 ml_pty_fork_bsd.c --- ml_pty_fork_bsd.c 2001/11/25 17:36:46 1.6 +++ ml_pty_fork_bsd.c 2001/12/01 10:30:57 @@ -191,8 +191,8 @@ #ifdef VDISCRD tio.c_cc[VDISCRD] = CFLUSH ; #endif - #ifdef VWERSE - tio.c_cc[VWERSE] = CWERASE ; + #ifdef VWERASE + tio.c_cc[VWERASE] = CWERASE ; #endif #ifdef VLNEXT tio.c_cc[VLNEXT] = CLNEXT ; Index: ml_pty_fork_streams.c =================================================================== RCS file: /home/ken/cvsroot/mlterm/src/ml_pty_fork_streams.c,v retrieving revision 1.8 diff -u -r1.8 ml_pty_fork_streams.c --- ml_pty_fork_streams.c 2001/11/25 17:36:46 1.8 +++ ml_pty_fork_streams.c 2001/12/01 10:30:34 @@ -100,8 +100,8 @@ #ifdef VDISCRD tio.c_cc[VDISCRD] = CFLUSH ; #endif - #ifdef VWERSE - tio.c_cc[VWERSE] = CWERASE ; + #ifdef VWERASE + tio.c_cc[VWERASE] = CWERASE ; #endif #ifdef VLNEXT tio.c_cc[VLNEXT] = CLNEXT ; Index: ml_term_screen.c =================================================================== RCS file: /home/ken/cvsroot/mlterm/src/ml_term_screen.c,v retrieving revision 1.193 diff -u -r1.193 ml_term_screen.c --- ml_term_screen.c 2001/11/26 19:00:33 1.193 +++ ml_term_screen.c 2001/12/01 10:03:45 @@ -3847,6 +3847,16 @@ ) { return ml_image_get_rows( termscr->image) ; +} + +int +ml_term_screen_bel( + ml_term_screen_t * termscr + ) +{ + XBell( termscr->window.display , 0) ; + + return 1 ; } int Index: ml_term_screen.h =================================================================== RCS file: /home/ken/cvsroot/mlterm/src/ml_term_screen.h,v retrieving revision 1.69 diff -u -r1.69 ml_term_screen.h --- ml_term_screen.h 2001/11/23 14:27:17 1.69 +++ ml_term_screen.h 2001/12/01 10:03:06 @@ -236,6 +236,8 @@ u_int ml_term_screen_get_cols( ml_term_screen_t * termscr) ; u_int ml_term_screen_get_rows( ml_term_screen_t * termscr) ; + +int ml_term_screen_bel( ml_term_screen_t * termscr) ; int ml_term_screen_set_app_keypad( ml_term_screen_t * termscr) ; Index: ml_vt100_parser.c =================================================================== RCS file: /home/ken/cvsroot/mlterm/src/ml_vt100_parser.c,v retrieving revision 1.140 diff -u -r1.140 ml_vt100_parser.c --- ml_vt100_parser.c 2001/11/26 13:49:43 1.140 +++ ml_vt100_parser.c 2001/12/01 10:12:54 @@ -1528,8 +1528,8 @@ #ifdef ESCSEQ_DEBUG kik_debug_printf( KIK_DEBUG_TAG " receiving BEL\n") ; #endif - - /* ingored */ + + ml_term_screen_bel( vt100_parser->termscr) ; } else { Index: ml_xim.c =================================================================== RCS file: /home/ken/cvsroot/mlterm/src/ml_xim.c,v retrieving revision 1.49 diff -u -r1.49 ml_xim.c --- ml_xim.c 2001/11/26 13:49:43 1.49 +++ ml_xim.c 2001/12/01 10:40:25 @@ -147,13 +147,17 @@ ml_xim_t * xim ; XIMCallback callback = { NULL , xim_server_destroyed } ; - xim = &xims[num_of_xims++] ; + xim = &xims[num_of_xims] ; memset( xim , 0 , sizeof( ml_xim_t)) ; xim->im = im ; xim->num_of_xic_wins = 0 ; - xim->encoding = ml_get_encoding( ml_get_codeset()) ; + + if( ( xim->encoding = ml_get_encoding( ml_get_codeset())) == ML_UNKNOWN_ENCODING) + { + goto error ; + } if( ( xim->parser = ml_parser_new( xim->encoding)) == NULL) { @@ -172,6 +176,8 @@ XSetIMValues( im , XNDestroyCallback , &callback , NULL) ; + num_of_xims ++ ; + return xim ; error: @@ -189,6 +195,8 @@ { free( xim->locale) ; } + + XCloseIM( xim->im) ; } return NULL ; では -- kiken j00...@ip... |