前田です。 Toru Hoshina <hoshina / best.com> writes: > 保科です。mailclient を使わせていただいてます(1.2.2ですが…) ども:-) > rskkserv も使い始めたのですが、どうも skkinput 2.01 との組合せですと > 不都合が出ました。辞書に登録されていない文字列でクエリすると、 > skkinput が固まるという症状です。登録ウィンドウが開く、というのが > 期待される動作なのですが、実際にはダンマリに(泣) うーん、それはまずいですね。 > skkinput のソースと jed の skk.sl を見くらべてみますと、どうやら > request した文字列にヒットしなかった場合の処理に違いがありまして、 > jed の skk.sl は skkserv に request した後、カウントを始め、100 を > 越えたらループから抜ける、という処理になっているのに対し、skkinput は > '\n' を受けとらない限りループを抜けないのでした。 > > ですので、 > > --- skkserv.rb.in~ Wed Jan 27 23:35:44 1999 > +++ skkserv.rb.in Sat Feb 20 15:53:09 1999 > @@ -111,9 +111,9 @@ > printf("message from client %s: WORD\n", s) if $OPT_d > kana = s.gets(" ") > if kanji = @dictionary.search(kana) > ret = "1" + kanji > else > - ret = "4" + kana > + ret = "4" + kana + "\n" > end > printf("send: %s\n", ret) if $OPT_d > s.write(ret) > > などとして、request された文字列がヒットしなかったときは '\n' を > 末尾に付けて返すようにすると、jed でも skkinput でも期待した動作を > するようになりました。 実は以前は"4eee\n"のような文字列を返していたのですが、 本家skkservの仕様に合わせて現在のように変更しました。 以下のようなスクリプトでrskkserv以前にお使いだったSKKサーバ の仕様を調べていただけないでしょうか。 -- skktest.rb -- require "socket" sock = TCPsocket.open("localhost", "skkserv") begin sock.write("2") p sock.gets(" ") sock.write("1eee ") sock.write("0") p sock.read ensure sock.close end -- studly[ruby]$ ruby skktest.rb "3.9.4 " "4eee " studly[ruby]$ ruby skktest.rb "rskkserv-2.0 " "4eee " もし本家skkservの仕様で動かないとなると、skkinputの方を修正 していただくのが筋かなという気がします。 -- 前田 修吾