From 90d73801c09c56b36068bdf90e071dd12a0c5b8d Mon Sep 17 00:00:00 2001 From: cielavenir Date: Mon, 23 Sep 2019 13:52:16 +0900 Subject: [PATCH] Changed stream format to make compatible with MiGz --- mgzip/multiProcGzip.py | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/mgzip/multiProcGzip.py b/mgzip/multiProcGzip.py index 55f17ef..ae0facd 100644 --- a/mgzip/multiProcGzip.py +++ b/mgzip/multiProcGzip.py @@ -16,7 +16,7 @@ __version__ = "0.1.0" -SID = b'IG' # subfield ID of indexed gzip file +SID = b'MZ' # subfield ID of indexed gzip file def open(filename, mode="rb", compresslevel=9, encoding=None, errors=None, newline=None, @@ -300,7 +300,7 @@ def _write_member_header(self, compressed_size, raw_size): # write extra flag for indexing # XLEN, 20 bytes - self.fileobj.write(b'\x14\x00') # extra flag len, 2 bytes + self.fileobj.write(b'\x08\x00') # extra flag len, 2 bytes # EXTRA FLAG FORMAT: # +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ # |SI1|SI2| LEN | MEMBER SIZE (8 Bytes) | RAW SIZE (8 Bytes) | @@ -311,28 +311,29 @@ def _write_member_header(self, compressed_size, raw_size): # RAW SIZE: Raw text size in uint64 (since raw size is not able to represent >4GB file) self.fileobj.write(SID) # subfield ID (IG), 2 bytes # LEN: 16 bytes - self.fileobj.write(b'\x10\x00') # subfield len (16), 2 bytes + self.fileobj.write(b'\x04\x00') # subfield len (16), 2 bytes # compressed data size: 16 + 8 + 8 + len(fname) + 1 + data + 8 - member_size = 32 + len(fname) + 1 + compressed_size + 8 + member_size = 20 + len(fname) + 1 + compressed_size + 8 if not fname: member_size -= 1 - self.fileobj.write(struct.pack("