[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: kinput2



とりあえず私の環境(NetBSD/i386 1.4K)では解決しました。

>  > しました。あー、なんか/tmp/jd_sockVがないとか言ってるなあ。
>  > むりやり/tmp/jd_sockV -> jd_sockV4とすると
>  > Warning: file "/usr/local/lib/wnn/wnnenvrc"が open できません。
>  > とか言いながら、仮名が出るようにはなりました。
> 
> wnnenvrcの件は直したと思っていたけど気のせいだったか(^^;

あ、作り直したらちゃんとなってました。

> /tmp/jd_sockVの件は今まで遭遇したことがないです。

これが原因だったんですけど、他の方はほんとにおかしくなりません?

>  > 今、どうしてjd_sockVとかいうファイルを見にいくのか
>  > 追いかけてますが、さっぱりわけがわかりません。
> 
> /usr/pkg/share/wnn/serverdefs で、
> ja_JP           jserver         /tmp/jd_sockV4          wnn4            22273
> japanese        jserver         /tmp/jd_sockV4          wnn4            22273
> を使うと思うのですが、違うserverdefsを見てたりしてませんか?

他にwnnを入れたことがあるマシンではないし、serverdefsは
これをちゃんと見てました。

原因は、freewnn-libのjs.cの中で、UNIXドメインのソケットの
connectの引数に間違った長さを渡していたためでした。
sizeof(sockaddr_un.sun_len)==sizeof(uchar)分だけ足りないので、
ソケットの最後の一文字が欠けてconnectに失敗していたようです。

以下のパッチで直りました。
-- 
iかわもと よしひさ!                   kawamoto@es.osaka-u.ac.jp


*** ./Wnn/jlib/js.c-	Mon May 17 12:04:45 1999
--- ./Wnn/jlib/js.c	Tue Sep 21 14:07:23 1999
***************
*** 220,230 ****
  #endif
  	return -1;
      }
- #if !(defined(BSD) && (BSD >= 199306)) /* !4.4BSD-Lite */
-     if (connect(sd,(struct sockaddr *)&saddr,strlen(saddr.sun_path)+sizeof(saddr.sun_family)) == ERROR) {
- #else /* 4.4BSD-Lite */
      if (connect(sd,(struct sockaddr *)&saddr,SUN_LEN(&saddr)) == ERROR) {
- #endif /* 4.4BSD-Lite */
  
  #if DEBUG
  	xerror("jslib:Can't connect socket.\n");
--- 220,226 ----