equal
deleted
inserted
replaced
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 |