def set_blocksize(self, blocksize): """ docstring """ self.blocksize = int_to_iso711(int(math.log(blocksize, 2)))
def set_alg(self, algorithm): """ docstring """ self.alg_id = int_to_iso711(algorithm.value)
class ZISOFS(commonZisofs): # HEADER hdr_magic = b'\x37\xE4\x53\x96\xC9\xDB\xD6\x07' # Magick Header size = None # Uncompressed size hdr_size = int_to_iso711(4) # Header size # Array pointers_size = 4 @staticmethod def from_header(header): """ docstring """ header = header[0:ZISOFS.get_header_size()] # Make sure is bytes if not isinstance(header, (bytes, bytearray)): raise ValueError # Header magic if header[0:8] != ZISOFS.hdr_magic: raise NotCompressedFile # Correct size if len(header) != 4 * iso711_to_int(ZISOFS.hdr_size): raise IllegalZisofsFormat # Header size if header[12:13] != ZISOFS.hdr_size: raise IllegalZisofsFormat zisofs_obj = ZISOFS() # File size zisofs_obj.size = header[8:12] # Blocksize if iso711_to_int(header[13:14]) not in default_block_sizes: raise IllegalZisofsFormat zisofs_obj.blocksize = header[13:14] return zisofs_obj def set_size(self, size): """ docstring """ self.size = int_to_iso731(size) def get_size(self): """ docstring """ return iso731_to_int(self.size) def set_blocksize(self, blocksize): """ docstring """ self.blocksize = int_to_iso711(int(math.log(blocksize, 2))) def get_algorithm(self): """ docstring """ return Algorithm(1) # Force return ZLIB compressor def __bytes__(self): header = bytearray() header.extend(self.hdr_magic) # 8 header.extend(self.size) # 4 header.extend(self.hdr_size) # 1 header.extend(self.blocksize) # 1 header.extend(bytearray(2)) # 2 return bytes(header)
class ZISOFSv2(commonZisofs): # Header hdr_magic = b'\xEF\x22\x55\xA1\xBC\x1B\x95\xA0' # Magick Header hdr_version = int_to_iso711(0) hdr_size = int_to_iso711(6) # 24 bytes size alg_id = None size = None # Array pointers_size = 8 @staticmethod def from_header(header): """ docstring """ header = header[0:ZISOFSv2.get_header_size()] # Make sure is bytes if not isinstance(header, (bytes, bytearray)): raise ValueError # Header magic if header[0:8] != ZISOFSv2.hdr_magic: raise NotCompressedFile # Correct size if len(header) != 4 * iso711_to_int(ZISOFSv2.hdr_size): raise IllegalZisofsFormat # Header size if header[9:10] != ZISOFSv2.hdr_size: raise IllegalZisofsFormat zisofs_obj = ZISOFSv2() # Algorithm if iso711_to_int(header[10:11]) == 0: raise IllegalZisofsFormat zisofs_obj.alg_id = header[10:11] # Blocksize if iso711_to_int(header[11:12]) not in default_block_sizes: raise IllegalZisofsFormat zisofs_obj.blocksize = header[11:12] # File size zisofs_obj.size = header[12:20] return zisofs_obj def set_size(self, size): """ docstring """ self.size = int_to_uint64(size) def get_size(self): """ docstring """ return uint64_to_int(self.size) def set_blocksize(self, blocksize): """ docstring """ self.blocksize = int_to_iso711(int(math.log(blocksize, 2))) def set_alg(self, algorithm): """ docstring """ self.alg_id = int_to_iso711(algorithm.value) def get_algorithm(self): """ docstring """ return Algorithm(iso711_to_int(self.alg_id)) def __bytes__(self): header = bytearray() header.extend(self.hdr_magic) # 8 header.extend(self.hdr_version) # 1 header.extend(self.hdr_size) # 1 header.extend(self.alg_id) # 1 header.extend(self.blocksize) # 1 header.extend(self.size) # 8 header.extend(bytearray(4)) # 4 return bytes(header)