diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-07-12 07:32:55 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-07-12 07:32:55 +0000 |
commit | 529a4762cfd8b650b8567be2f1423926d6cbaf9e (patch) | |
tree | ae53a1d524b538a6c031753f10f5cbabf4f77555 /pym/_emerge/__init__.py | |
parent | 31b18e72b3ed4077f31be583d9a83ad2de53df29 (diff) | |
download | portage-529a4762cfd8b650b8567be2f1423926d6cbaf9e.tar.gz portage-529a4762cfd8b650b8567be2f1423926d6cbaf9e.tar.bz2 portage-529a4762cfd8b650b8567be2f1423926d6cbaf9e.zip |
Derive a PtyReaderTestCase from PipeReaderTestCase. This test is expected to
fail on some operating systems such as Darwin that do not support poll() on
pty devices.
svn path=/main/trunk/; revision=11023
Diffstat (limited to 'pym/_emerge/__init__.py')
-rw-r--r-- | pym/_emerge/__init__.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 6f975449a..b111157ea 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -1594,6 +1594,8 @@ class PipeReader(AsynchronousTask): __slots__ = ("input_files", "scheduler",) + \ ("pid", "registered", "_reg_ids", "_read_data") + _bufsize = 4096 + def _start(self): self._reg_ids = set() self._read_data = [] @@ -1628,8 +1630,16 @@ class PipeReader(AsynchronousTask): for f in files.itervalues(): if fd == f.fileno(): break - self._read_data.append(f.read()) - if not self._read_data[-1]: + + buf = array.array('B') + try: + buf.fromfile(f, self._bufsize) + except EOFError: + pass + + if buf: + self._read_data.append(buf.tostring()) + else: for f in files.values(): f.close() self.registered = False |