GZIPファイルを解凍するCプログラムを学習目的で書いています。
GZIP仕様によると
gzip ファイルは、一連の「メンバー」(圧縮されたデータ セット) で構成されます。各メンバーの形式は、次のセクションで指定します。メンバーは、ファイル内で次々に出現するだけで、メンバーの前、間、後に追加情報はありません。
1 つのメンバーは、ヘッダー (いくつかのフラグ値に応じてオプションのフィールドを含む場合があります)、いくつかの圧縮ブロック (deflate アルゴリズムを使用)、および最後に CRC32 と元の圧縮されていないファイルのサイズで構成されます。
2 つの質問があります。
- メンバーを区切るにはどうすればよいですか? 実際には、1 つの gzip ファイルに複数のメンバーが含まれているのでしょうか。1つのメンバーが1つのファイルに対応しているようです(たとえば、ファイル名ヘッダー)
- トレーラーから最後のブロックを区切るにはどうすればよいですか (CRC + SIZE)?