メインコンテンツまでスキップ

global 変数をメンバー変数に変える

スレッドセーフにするべく global 変数をメンバー変数などに変えていきます。

w3m には、大量のグローバル変数があります。 大別すると rc からアクセスされるアプリ設定系の変数と、 http get や html parser で使われる状態変数です。

スレッドセーフ

複数tab を独立して処理するために、 http get と html parser の状態変数がグローバルなのは都合が悪い。 libuv を使う予定なのでスレッドにはならないかもしれないが、 状態は tab ごとに独立している必要があります。 http get は量的に大したことがないので既にグローバルから、 オブジェクトのメンバーに移し替えが完了しています。

html parser の方はまだ手付かずなのでこれから作業します。 元々 7000 行くらいの file.c に http get と html parser が詰めこまれていたのだけど、 http get は整理済みで、残りの 4000 行程度が html parser になっています。 あと table.c が 3500 行くらいあって大変そうです。

まだ読んでいないが、table の方が難解そう。table の中に、table がネストする場合に対応しているようで構造体スタックでを積み上げる処理がありそうです。