ということでまたやりなおし。

libvaxis と合体する方法を考えたのでやってみる。

w3m は block する getch に強く依存した構造になっている。これを最初に置き換えるのは無理なので、 block する input を zig で提供するのはどうか。 ついでに signal のハンドリングを整理できそうな気がする。

できた

stdin と stdout を zig の libvaxis の支配下にすることができた。 sleep_till_anykey を止めてあるが、タイマーによる idle イベントを実装できれば 機能を復旧できると思う。

次は、vaxis の screen(cell) 経由で描画するようにしてみようかな。 これにより termcap(ncurses) 依存が外せるので Windows でも動くようにできる のではないか。

縦か横に画面を分割して、logger を仕込めるようにしたいのよね。 で、 HTTP-1.1 に対応して下のようなエラーおなおしたい。

gzip: stdin: not in gzip format

vaxis を参考に自前の tty 管理を実装する

vaxis に timer による idle event を追加したくて実装を見てみたのだが、 予測に反して epoll ではなかった。 なので、参考にしつつも自前で epoll, signalfd で入力イベントを enqueue するシステムを組んでみよう。 rawmode や mutex queue など参考にできる。