32bit UNIX全盛期の頃のコードを64bit環境に持ってきてそれなりに動くと良いよねという改造を一日かけてやってたんだけど…
unsigned long/longの扱いをどうするか、というのは本当に難しいですね。とりあえずuint32_t/int32_tに置き換えちゃいましたけど。
単純なコードであればlongのままにして64bitの恩恵を受けるのが良いのでしょうが、LONG_MAXとかの類を自前で定義しちゃっている以上(ヘッダファイルの定義を使わずに、ってそういうのが無かった時代なのかも)、longは32bitのままでいた方が安全かなー?という判断でそうしています。
(おかげでtime_tとの整合性をどう取るんだ問題が…)