def dumpfree(self):
        """ list all free pages """
        fmt = "L" if self.version > 15 else "H"
        hdrsize = 8 if self.version > 15 else 4
        pn = self.firstfree
        if pn == 0:
            print("no free pages")
            return
        while pn:
            self.fh.seek(pn * self.pagesize)
            data = self.fh.read(self.pagesize)
            if len(data) == 0:
                print("could not read FREE data at page %06x" % pn)
                break
            count, nextfree = struct.unpack_from("<" + (fmt * 2), data)
            freepages = list(struct.unpack_from("<" + (fmt * count), data, hdrsize))
            freepages.insert(0, pn)
            for pn in freepages:
                self.fh.seek(pn * self.pagesize)
                data = self.fh.read(self.pagesize)
                print("%06x: free: %s" % (pn, hexdump(data[:64])))
            pn = nextfree
def dumpfree ( self ) : fmt = "L" if self . version > 15 else "H" hdrsize = 8 if self . version > 15 else 4 pn = self . firstfree if pn == 0 : print ( "no free pages" ) return while pn : self . fh . seek ( pn * self . pagesize ) data = self . fh . read ( self . pagesize ) if len ( data ) == 0 : print ( "could not read FREE data at page %06x" % pn ) break count , nextfree = struct . unpack_from ( "<" + ( fmt * 2 ) , data ) freepages = list ( struct . unpack_from ( "<" + ( fmt * count ) , data , hdrsize ) ) freepages . insert ( 0 , pn ) for pn in freepages : self . fh . seek ( pn * self . pagesize ) data = self . fh . read ( self . pagesize ) print ( "%06x: free: %s" % ( pn , hexdump ( data [ : 64 ] ) ) ) pn = nextfree
list all free pages