comparison mercurial/revlog.py @ 1667:daff3ef0de8d

verify: notice extra data in indices
author Matt Mackall <mpm@selenic.com>
date Mon, 30 Jan 2006 19:34:35 +1300
parents b2df93c56ac4
children c21b54f7f7b8 8959700c2b19
comparison
equal deleted inserted replaced
1666:0fc1b588976f 1667:daff3ef0de8d
211 l = len(i) / s 211 l = len(i) / s
212 self.index = [None] * l 212 self.index = [None] * l
213 m = [None] * l 213 m = [None] * l
214 214
215 n = 0 215 n = 0
216 for f in xrange(0, len(i), s): 216 for f in xrange(0, l * s, s):
217 # offset, size, base, linkrev, p1, p2, nodeid 217 # offset, size, base, linkrev, p1, p2, nodeid
218 e = struct.unpack(indexformat, i[f:f + s]) 218 e = struct.unpack(indexformat, i[f:f + s])
219 m[n] = (e[6], n) 219 m[n] = (e[6], n)
220 self.index[n] = e 220 self.index[n] = e
221 n += 1 221 n += 1
839 839
840 def checksize(self): 840 def checksize(self):
841 expected = 0 841 expected = 0
842 if self.count(): 842 if self.count():
843 expected = self.end(self.count() - 1) 843 expected = self.end(self.count() - 1)
844
844 try: 845 try:
845 f = self.opener(self.datafile) 846 f = self.opener(self.datafile)
846 f.seek(0, 2) 847 f.seek(0, 2)
847 actual = f.tell() 848 actual = f.tell()
848 return expected - actual 849 dd = actual - expected
849 except IOError, inst: 850 except IOError, inst:
850 if inst.errno == errno.ENOENT: 851 if inst.errno != errno.ENOENT:
851 return 0 852 raise
852 raise 853 dd = 0
853 854
854 855 try:
856 f = self.opener(self.indexfile)
857 f.seek(0, 2)
858 actual = f.tell()
859 s = struct.calcsize(indexformat)
860 i = actual / s
861 di = actual - (i * s)
862 except IOError, inst:
863 if inst.errno != errno.ENOENT:
864 raise
865 di = 0
866
867 return (dd, di)
868
869