484 return util.buffer(util.mmapread(fp, size)) |
483 return util.buffer(util.mmapread(fp, size)) |
485 if size is None: |
484 if size is None: |
486 return fp.read() |
485 return fp.read() |
487 else: |
486 else: |
488 return fp.read(size) |
487 return fp.read(size) |
489 except IOError as inst: |
488 except FileNotFoundError: |
490 if inst.errno != errno.ENOENT: |
|
491 raise |
|
492 return b'' |
489 return b'' |
493 |
490 |
494 def _loadindex(self, docket=None): |
491 def _loadindex(self, docket=None): |
495 |
492 |
496 new_header, mmapindexthreshold, force_nodemap = self._init_opts() |
493 new_header, mmapindexthreshold, force_nodemap = self._init_opts() |
699 if self._docket is None: |
696 if self._docket is None: |
700 f.seek(0, os.SEEK_END) |
697 f.seek(0, os.SEEK_END) |
701 else: |
698 else: |
702 f.seek(self._docket.index_end, os.SEEK_SET) |
699 f.seek(self._docket.index_end, os.SEEK_SET) |
703 return f |
700 return f |
704 except IOError as inst: |
701 except FileNotFoundError: |
705 if inst.errno != errno.ENOENT: |
|
706 raise |
|
707 return self.opener( |
702 return self.opener( |
708 self._indexfile, mode=b"w+", checkambig=self._checkambig |
703 self._indexfile, mode=b"w+", checkambig=self._checkambig |
709 ) |
704 ) |
710 |
705 |
711 def __index_new_fp(self): |
706 def __index_new_fp(self): |
2114 dfh = self._datafp(b"r+") |
2109 dfh = self._datafp(b"r+") |
2115 if self._docket is None: |
2110 if self._docket is None: |
2116 dfh.seek(0, os.SEEK_END) |
2111 dfh.seek(0, os.SEEK_END) |
2117 else: |
2112 else: |
2118 dfh.seek(self._docket.data_end, os.SEEK_SET) |
2113 dfh.seek(self._docket.data_end, os.SEEK_SET) |
2119 except IOError as inst: |
2114 except FileNotFoundError: |
2120 if inst.errno != errno.ENOENT: |
|
2121 raise |
|
2122 dfh = self._datafp(b"w+") |
2115 dfh = self._datafp(b"w+") |
2123 transaction.add(self._datafile, dsize) |
2116 transaction.add(self._datafile, dsize) |
2124 if self._sidedatafile is not None: |
2117 if self._sidedatafile is not None: |
2125 # revlog-v2 does not inline, help Pytype |
2118 # revlog-v2 does not inline, help Pytype |
2126 assert dfh is not None |
2119 assert dfh is not None |
2127 try: |
2120 try: |
2128 sdfh = self.opener(self._sidedatafile, mode=b"r+") |
2121 sdfh = self.opener(self._sidedatafile, mode=b"r+") |
2129 dfh.seek(self._docket.sidedata_end, os.SEEK_SET) |
2122 dfh.seek(self._docket.sidedata_end, os.SEEK_SET) |
2130 except IOError as inst: |
2123 except FileNotFoundError: |
2131 if inst.errno != errno.ENOENT: |
|
2132 raise |
|
2133 sdfh = self.opener(self._sidedatafile, mode=b"w+") |
2124 sdfh = self.opener(self._sidedatafile, mode=b"w+") |
2134 transaction.add( |
2125 transaction.add( |
2135 self._sidedatafile, self._docket.sidedata_end |
2126 self._sidedatafile, self._docket.sidedata_end |
2136 ) |
2127 ) |
2137 |
2128 |
2830 try: |
2821 try: |
2831 with self._datafp() as f: |
2822 with self._datafp() as f: |
2832 f.seek(0, io.SEEK_END) |
2823 f.seek(0, io.SEEK_END) |
2833 actual = f.tell() |
2824 actual = f.tell() |
2834 dd = actual - expected |
2825 dd = actual - expected |
2835 except IOError as inst: |
2826 except FileNotFoundError: |
2836 if inst.errno != errno.ENOENT: |
|
2837 raise |
|
2838 dd = 0 |
2827 dd = 0 |
2839 |
2828 |
2840 try: |
2829 try: |
2841 f = self.opener(self._indexfile) |
2830 f = self.opener(self._indexfile) |
2842 f.seek(0, io.SEEK_END) |
2831 f.seek(0, io.SEEK_END) |