def create_block_file(self): """create a HunkBlockFile from the segments given""" # setup header block self.hdr_blk = HunkHeaderBlock() blks = [self.hdr_blk] sizes = [] for seg in self.segments: size = seg.create(blks) sizes.append(size) # add HUNK_END blks.append(HunkEndBlock()) # finally setup header self.hdr_blk.setup(sizes) # create HunkBlockFile return HunkBlockFile(blks)
for seg in self.segments: size = seg.create(blks) sizes.append(size) # add HUNK_END blks.append(HunkEndBlock()) # finally setup header self.hdr_blk.setup(sizes) # create HunkBlockFile return HunkBlockFile(blks) # mini test if __name__ == '__main__': import sys for a in sys.argv[1:]: bf = HunkBlockFile() bf.read_path(a, isLoadSeg=True) print(bf.get_block_type_names()) lsf = HunkLoadSegFile() lsf.parse_block_file(bf) print(lsf.get_segments()) # write back new_bf = lsf.create_block_file() new_bf.write_path("a.out") # compare read and written stream with open(a, "rb") as fh: data = fh.read() with open("a.out", "rb") as fh: new_data = fh.read() if len(data) != len(new_data): print("MISMATCH", len(data), len(new_data))