mercurial/util.py
changeset 34295 3bb2a9f25fe9
parent 34139 be00af4a1ac5
child 34357 c41444a39de2
equal deleted inserted replaced
34294:05131c963767 34295:3bb2a9f25fe9
    24 import datetime
    24 import datetime
    25 import errno
    25 import errno
    26 import gc
    26 import gc
    27 import hashlib
    27 import hashlib
    28 import imp
    28 import imp
       
    29 import mmap
    29 import os
    30 import os
    30 import platform as pyplatform
    31 import platform as pyplatform
    31 import re as remod
    32 import re as remod
    32 import shutil
    33 import shutil
    33 import signal
    34 import signal
   404         if not data:
   405         if not data:
   405             self._eof = True
   406             self._eof = True
   406         else:
   407         else:
   407             self._lenbuf += len(data)
   408             self._lenbuf += len(data)
   408             self._buffer.append(data)
   409             self._buffer.append(data)
       
   410 
       
   411 def mmapread(fp):
       
   412     try:
       
   413         fd = getattr(fp, 'fileno', lambda: fp)()
       
   414         return mmap.mmap(fd, 0, access=mmap.ACCESS_READ)
       
   415     except ValueError:
       
   416         # Empty files cannot be mmapped, but mmapread should still work.  Check
       
   417         # if the file is empty, and if so, return an empty buffer.
       
   418         if os.fstat(fd).st_size == 0:
       
   419             return ''
       
   420         raise
   409 
   421 
   410 def popen2(cmd, env=None, newlines=False):
   422 def popen2(cmd, env=None, newlines=False):
   411     # Setting bufsize to -1 lets the system decide the buffer size.
   423     # Setting bufsize to -1 lets the system decide the buffer size.
   412     # The default for bufsize is 0, meaning unbuffered. This leads to
   424     # The default for bufsize is 0, meaning unbuffered. This leads to
   413     # poor performance on Mac OS X: http://bugs.python.org/issue4194
   425     # poor performance on Mac OS X: http://bugs.python.org/issue4194