かべ。

To: <freewnn@tomo.gr.jp>
Newsgroups: fj.comp.input-method

※まだ修正したいところはたくさんありますが、現状放出。

NetBSD-1.6.1 (x86)/Solaris 2.6 で、FreeWnnのuumを動かそうとしてみましたが
そのままでは pty の取得まわりがうまくいかないので、

以前 ftp.tohoku.ac.jp に置いてもらっていた
Solaris/HPUX用パッチをベースに
ごりごりと Wnn/uum/jhlp.c を書き換えてみました。

一応、ちゃんと立ち上がってジョブコントールも効きます。
設定ファイルを少し細工すればWnn6のjserverにつなげて変換もできます。

動作確認:Solaris 2.6/SPARC Ultra1, NetBSD 1.6.1/x86

たぶんこの記事はJISになっているので、
パッチを当てる際はEUCに戻してください。


pty回りは昔からの建て増しをすると究極に汚くなるので、
思いきって
・sgi
・/dev/ptmx (ptm(7D))
・openpty(3)
・伝統的 /dev/ttyXXスキャン

の4通りに整理してあります。
TODO: configureでちゃんとどれを使うか検出する。
(NetBSD-1.6では伝統式とopenpty()両方動くようだ)

==
懸案というか疑問:

ptyで何かを動かすにあたっては、普通は
・ptyのmaster と slaveを取得
・fork()
・子供側で slave をつなぎ替える
・親は masterに入出力

なんですが、main() ではなぜか linuxだけは
fork()した「後」にslaveを開いて(open_ttyp())います。

fork後に開かないと動かなかった理由でもあるんですかね?

かなり昔からこのまんまになっているようですが、
可能ならfork前slave取得に統一した方がいいような…

(openpty(3) なんかはfork前slave取得しかできないので、
 fork前に統一すると open_pty() と open_ttyp() が合体できてすっきりする)

-- 
kabe