私が書いているプログラムがgzipヘッダーを正しく解析していて、FEXTRA、FNAME、およびFCOMMENTフィールドの読み込みをテストする必要があります。しかし、gzip
は、FEXTRAフィールドとFCOMMENTフィールド(FNAMEのみ)でアーカイブを作成することをサポートしていないようです。これらの3つすべてを実行できる既存のツールはありますか?FEXTRAフィールドとFCOMMENTフィールドを持つgzipファイルを作成する方法
-1
A
答えて
2
PerlモジュールIO::Compress::Gzipは、必要に応じて、あなたがでintrestedている三つのフィールドを設定することができます(フェア開示:私はモジュールの作者だ)。ここで
」は、FNAMEを設定し、いくつかのサンプルコードですファイル名 "、FCOMMENTを"これはコメントです "とし、FEXTRAフィールドにID" ab "と値" cde "の1つのサブフィールドを作成します。
use IO::Compress::Gzip qw(gzip $GzipError);
gzip \"payload" => "/tmp/test.gz",
Name => "filename",
Comment => "This is a comment",
ExtraField => [ "ab" => "cde"]
or die "Cannot create gzip file: $GzipError" ;
ここで作成したファイルの16進数です。
00000000 1f 8b 08 1c cb 3b 3a 5a 00 03 07 00 61 62 03 00 |.....;:Z....ab..|
00000010 63 64 65 66 69 6c 65 6e 61 6d 65 00 54 68 69 73 |cdefilename.This|
00000020 20 69 73 20 61 20 63 6f 6d 6d 65 6e 74 00 2b 48 | is a comment.+H|
00000030 ac cc c9 4f 4c 01 00 15 6a 2c 42 07 00 00 00 |...OL...j,B....|
0000003f
+0
この機能をサポートしている実際のユーティリティ(例:gzip)があればいいと思います。悲しいことに、ghexで生成されたgzipファイルを開いて、統合テストを作成するために直接16進数のデータを変更する必要がありました。それにもかかわらず、私のC/Rustプログラムは、これらのヘッダーを正しく読み取っています。 – mmstick
関連する問題
- 1. PocoDynamoでnullフィールドを持つQueryExpressionを作成する方法
- 2. 複数のフィールドを持つ別名を作成する方法
- 3. factory_boyでインスタンスのリストを持つフィールドを作成する方法
- 4. SUMとCOUNT個のフィールドを持つ計算フィールドの作成ピボットテーブル
- 5. Plone 5のフィールドにフィールドとアクションを作成する方法は?
- 6. 入力フィールドを持つポップアップメッセージボックスの作成
- 7. nullと空白のフィールドを持つdjangoフォームを作成する
- 8. djangoフィールド依存フィールドの作成方法
- 9. MYSQLで一意の識別子フィールドを持つテーブルを作成する方法
- 10. 両方のユニークな2つのフィールドを持つテーブルを作成する
- 11. INTEGERフィールドとFLOATフィールドのMySQL交差キーの作成方法は?
- 12. 多くのフィールドを持つテーブルのデータベースヘルパークラスを作成する
- 13. mysqlにチェックボックスのフィールドを持つテーブルを作成するには?
- 14. 多対多のフィールドを持つオブジェクトを作成するDjangoエラー
- 15. 配列のフィールド名を持つ構造体を作成する
- 16. オプション値のフィールドを持つスティッキフォームを作成する
- 17. クラスの作成方法:特定の(一意の)フィールドを持つオブジェクトを1つだけ作成できます!
- 18. コマンドラインからTar GZipファイルを作成する方法
- 19. 2つのフィールドとN行のファイルでXMLファイルを作成する
- 20. djangoで新しいモデルとフィールドを作成する方法は?
- 21. 小数フィールドを持つファイルからテーブルを更新する方法は?
- 22. Javaで繰り返しフィールドを持つXMLファイルを処理する方法
- 23. 3つの異なるテーブルのフィールドを持つテーブルを作成する
- 24. 2つの異なるテーブルのフィールドを持つテーブルを作成する
- 25. FsCheckでは、負でないフィールドを持つテストレコードを生成する方法は?
- 26. djangoでリレーションを持つフィールドをフィルタリングする変更リストを持つ方法は?
- 27. ソルで単位を持つ多数のフィールドのインデックスを作成
- 28. Django:関連フィールドの関連フィールドでorder_byを作成する方法
- 29. フィールド(日付)から1日前にフィールドを作成する方法SQLサーバー
- 30. ROWIDデータ型のフィールドを持つテーブルをアンロードする方法は?
スタックオーバーフローは、プログラミングおよび開発の質問のサイトです。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[Super User](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。 – jww
Crypto ++ライブラリは、[Gzip class](https://www.cryptopp.com/wiki/Gzip)の3つのフィールドをすべて尊重します。 [Super User](http://superuser.com/)の[Gzipは、解凍時に元のファイル名を保持すると思われますか?](https://superuser.com/q/859785/173513)も参照してください。多くの(ほとんどの)ツールは、文字セットの問題のためにデフォルトでファイル名を尊重しません。 – jww
@jww説明を読み直してください。 Gzipは、FNAMEフィールドの設定のみをサポートしています。私が書いているプログラムもFEXTRAとFCOMMENTフィールドを解析する必要がありますが、これらのフィールドを持つgzipでテストファイルを作成できない場合、これらのフィールドをテストすることはできません。 [RFCを参照](http://www.zlib.org/rfc-gzip.html#specification) – mmstick