tar_file_sink

ustar形式とGNU形式での出力を実装しました。
ustar_file.hppの差分
tar_file.hppの差分


pax形式の出力はまだ実装していません。

  • GNU tarの既定フォーマットがgnuであること
  • TAR32.DLLがpax形式に対応していないこと

を考慮して、既定フォーマットはgnuにしました。
Google調べてもほとんどヒットしないところを見ると、pax形式はあまり使われていないみたいですね。


使い方は、サンプルを参照してください。
面倒なのでハードリンクには対応していません。
シンボリックリンクと違い、リンク元/先という概念は存在しないため、

  • stat::st_nlinkからハードリンクを割り出す
  • 書き込んだハードリンクの名前とiノードを覚えておく
  • 未登録のハードリンクは通常のファイルとして書き出す
  • 登録済みハードリンクは既に書き込んだファイルへのリンクとして書き出す

という作業が必要になります。