見過ごしてきたツケ

C言語での文字列処理は、つくづく面倒なことが起こりやすいということは(HTTPサーバ作りでも)常々実感しているのですが、るぱんでもやってしまいました。
なにをやってしまったかというと、デコードのミス。GNU Tarは、Tarアーカイブの内部ファイルを一覧表示するときに、ファイル名がUTF-8エンコードされていると、エスケープ文字(%のあとに3文字の8進法で0xFFまでを表わす)を出力するので、それをデコードしたやらねばならないわけですが、この文字列が%のあとが3文字に足りなくて、デコードできない場合があります。これをいままでは考慮していなかったので、デコード失敗の条件設定&失敗したときには途中までのデータを保存しておいて次に追加データが来たときにそれと組み合わせてデコード再挑戦、を行うようにしました。ふぅ。