Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
        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))