GZ_FLAG_ORIG_NAME = 0x08 # 0o10, default in gzip
GZ_DEFLATE_FLAGS = 0x00 # 0o00, never read (deflate.c)
GZ_OS_CODE = 0x03 # 0o03, default in gzip (tailor.h)
+GZ_MAGIC_BYTES = struct.pack ("<BB", GZ_MAGIC [0], GZ_MAGIC [1])
+GZ_MAGIC_DEFLATE = struct.pack ("<BBB", GZ_MAGIC [0], GZ_MAGIC [1],
+ GZ_METHOD_DEFLATE)
#---------------------------------------------------------
# tarfile constants
self.offset = pos
-
def gz_header (name=None):
timestamp = int(time.time())
flags = 0x0
return hdr + name
+
class _Stream:
"""Class that serves as an adapter between TarFile and
a stream-like object. The stream-like object only
# taken from gzip.GzipFile with some alterations
read2 = self.__read(2)
- if read2 != b"\037\213":
+ if read2 != GZ_MAGIC_BYTES:
raise ReadError("not a gzip file")
read1 = self.__read(1)
return self.buf
def getcomptype(self):
- if self.buf.startswith(b"\x1f\x8b\x08"):
+ if self.buf.startswith(GZ_MAGIC_DEFLATE):
return "gz"
elif self.buf[0:3] == b"BZh" and self.buf[4:10] == b"1AY&SY":
return "bz2"
# split in compressed chunks
for f in tar_files:
- filesplit.split_file(b'\x1f\x8b',
+ filesplit.split_file(tarfile.GZ_MAGIC_BYTES,
os.path.join(rescue_dir, base_name), f, new_gz)
# includes volumes already extracted with new_volume_handler
import os, unittest, hashlib, string
-from deltatar.tarfile import TarFile, GNU_FORMAT
+from deltatar.tarfile import TarFile, GNU_FORMAT, GZ_MAGIC_BYTES
import filesplit
from . import BaseTest, new_volume_handler
os.unlink("small")
os.unlink("small2")
- filesplit.split_file(b'\x1f\x8b', "sample.tar.gz.", "sample.tar.gz")
+ filesplit.split_file(GZ_MAGIC_BYTES, "sample.tar.gz.", "sample.tar.gz")
assert os.path.exists("sample.tar.gz.0") # beginning of the tar file
assert os.path.exists("sample.tar.gz.1") # first file
os.unlink("small2")
# equivalent to $ python filesplit.py -s $'\x1f\x8b' -p sample.tar.gz. sample.tar.gz
- filesplit.split_file(b'\x1f\x8b', "sample.tar.gz.", "sample.tar.gz")
+ filesplit.split_file(GZ_MAGIC_BYTES, "sample.tar.gz.", "sample.tar.gz")
assert os.path.exists("sample.tar.gz.0") # beginning of the tar file
assert os.path.exists("sample.tar.gz.1") # first file