D476: util: add an mmapread method
mbthomas (Mark Thomas)
phabricator at mercurial-scm.org
Thu Sep 21 12:56:54 UTC 2017
mbthomas updated this revision to Diff 1963.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D476?vs=1785&id=1963
REVISION DETAIL
https://phab.mercurial-scm.org/D476
AFFECTED FILES
mercurial/util.py
CHANGE DETAILS
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,17 @@
self._lenbuf += len(data)
self._buffer.append(data)
+def mmapread(fp):
+ try:
+ fd = getattr(fp, 'fileno', lambda: fp)()
+ return mmap.mmap(fd, 0, access=mmap.ACCESS_READ)
+ except ValueError:
+ # Empty files cannot be mmapped, but mmapread should still work. Check
+ # if the file is empty, and if so, return an empty buffer.
+ if os.fstat(fd).st_size == 0:
+ return ''
+ raise
+
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
To: mbthomas, #fbhgext, #hg-reviewers, quark, durin42
Cc: durin42, quark, indygreg, simonfar, mercurial-devel
More information about the Mercurial-devel
mailing list