From 529a4762cfd8b650b8567be2f1423926d6cbaf9e Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 12 Jul 2008 07:32:55 +0000 Subject: 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 --- pym/_emerge/__init__.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'pym/_emerge') 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 -- cgit v1.2.3-1-g7c22