diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -26,6 +26,7 @@ import gc import hashlib import imp +import mmap import os import platform as pyplatform import re as remod @@ -407,6 +408,12 @@ self._lenbuf += len(data) self._buffer.append(data) +def mmapread(fp): + try: + return mmap.mmap(fp.fileno(), 0, access=mmap.ACCESS_READ) + except ValueError: # cannot mmap an empty file + return '' + def popen2(cmd, env=None, newlines=False): # Setting bufsize to -1 lets the system decide the buffer size. # The default for bufsize is 0, meaning unbuffered. This leads to