recpt1ctl --channel に対する recpt1 の動作を改良

してみた.
http://d.hatena.ne.jp/eagletmt/20110307/1299492620 で recpt1 が死んでいたのは,/dev/pt1video* を close(2) した直後に open(2) すると,終了処理に時間がかかっているのかそのデバイスが使用中のときと同じように EIO で失敗するのが原因だった.それに加えてデバイスファイルから read(2) できなかった場合に,確保したバッファの解放を忘れているためにメモリを食い潰して殺される,というかんじだったようだ.
いろいろ試してみると close(2) せずに SET_CHANNEL してもチャンネルを変えられるっぽかったので,デバイスファイルを使い回せる,つまり地デジ同士か衛星放送同士のチャンネルの切り替えなら SET_CHANNEL するようにした.ただし残念なことに自分は衛星放送を視聴できる環境にないので,これで本当に問題が無いのか検証できていない.
https://gist.github.com/890635