summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/PipeReader.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-12-01 18:34:08 -0800
committerZac Medico <zmedico@gentoo.org>2011-12-01 18:34:08 -0800
commit6b9a29652474f1139dc088322cf68f22f37e5fed (patch)
tree140d7aa31c99447d679b49cc1362fa8601d4d6e2 /pym/_emerge/PipeReader.py
parent1776d5db74e7065b409b7e2d521323e8d7ea2bb5 (diff)
downloadportage-6b9a29652474f1139dc088322cf68f22f37e5fed.tar.gz
portage-6b9a29652474f1139dc088322cf68f22f37e5fed.tar.bz2
portage-6b9a29652474f1139dc088322cf68f22f37e5fed.zip
PipeReader: use os.read/write
Diffstat (limited to 'pym/_emerge/PipeReader.py')
-rw-r--r--pym/_emerge/PipeReader.py30
1 files changed, 11 insertions, 19 deletions
diff --git a/pym/_emerge/PipeReader.py b/pym/_emerge/PipeReader.py
index 888c60963..67144c393 100644
--- a/pym/_emerge/PipeReader.py
+++ b/pym/_emerge/PipeReader.py
@@ -4,8 +4,8 @@
from portage import os
from _emerge.AbstractPollTask import AbstractPollTask
from _emerge.PollConstants import PollConstants
+import errno
import fcntl
-import array
class PipeReader(AbstractPollTask):
@@ -59,26 +59,18 @@ class PipeReader(AbstractPollTask):
if event & PollConstants.POLLIN:
- for f in self.input_files.values():
- if fd == f.fileno():
- break
-
- buf = array.array('B')
+ data = None
try:
- buf.fromfile(f, self._bufsize)
- except (EOFError, IOError):
- pass
-
- if buf:
- try:
- # Python >=3.2
- data = buf.tobytes()
- except AttributeError:
- data = buf.tostring()
- self._read_data.append(data)
+ data = os.read(fd, self._bufsize)
+ except IOError as e:
+ if e.errno not in (errno.EAGAIN,):
+ raise
else:
- self._unregister()
- self.wait()
+ if data:
+ self._read_data.append(data)
+ else:
+ self._unregister()
+ self.wait()
self._unregister_if_appropriate(event)