- assert(str(self.map[0:8]) == 'MIDX\0\0\0\1')
- self.bits = struct.unpack('!I', self.map[8:12])[0]
- self.entries = 2**self.bits
- self.fanout = buffer(self.map, 12, self.entries*8)
- shaofs = 12 + self.entries*8
- nsha = self._fanget(self.entries-1)
- self.shalist = buffer(self.map, shaofs, nsha*20)
- self.idxnames = str(self.map[shaofs + 20*nsha:]).split('\0')
+ if str(self.map[0:8]) == 'MIDX\0\0\0\1':
+ log('Warning: ignoring old-style midx %r\n' % filename)
+ self.bits = 0
+ self.entries = 1
+ self.fanout = buffer('\0\0\0\0')
+ self.shalist = buffer('\0'*20)
+ self.idxnames = []
+ else:
+ assert(str(self.map[0:8]) == 'MIDX\0\0\0\2')
+ self.bits = struct.unpack('!I', self.map[8:12])[0]
+ self.entries = 2**self.bits
+ self.fanout = buffer(self.map, 12, self.entries*4)
+ shaofs = 12 + self.entries*4
+ nsha = self._fanget(self.entries-1)
+ self.shalist = buffer(self.map, shaofs, nsha*20)
+ self.idxnames = str(self.map[shaofs + 20*nsha:]).split('\0')