1 |
commit: 6b9a29652474f1139dc088322cf68f22f37e5fed |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Dec 2 02:34:08 2011 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Dec 2 02:34:08 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=6b9a2965 |
7 |
|
8 |
PipeReader: use os.read/write |
9 |
|
10 |
--- |
11 |
pym/_emerge/PipeReader.py | 30 +++++++++++------------------- |
12 |
1 files changed, 11 insertions(+), 19 deletions(-) |
13 |
|
14 |
diff --git a/pym/_emerge/PipeReader.py b/pym/_emerge/PipeReader.py |
15 |
index 888c609..67144c3 100644 |
16 |
--- a/pym/_emerge/PipeReader.py |
17 |
+++ b/pym/_emerge/PipeReader.py |
18 |
@@ -4,8 +4,8 @@ |
19 |
from portage import os |
20 |
from _emerge.AbstractPollTask import AbstractPollTask |
21 |
from _emerge.PollConstants import PollConstants |
22 |
+import errno |
23 |
import fcntl |
24 |
-import array |
25 |
|
26 |
class PipeReader(AbstractPollTask): |
27 |
|
28 |
@@ -59,26 +59,18 @@ class PipeReader(AbstractPollTask): |
29 |
|
30 |
if event & PollConstants.POLLIN: |
31 |
|
32 |
- for f in self.input_files.values(): |
33 |
- if fd == f.fileno(): |
34 |
- break |
35 |
- |
36 |
- buf = array.array('B') |
37 |
+ data = None |
38 |
try: |
39 |
- buf.fromfile(f, self._bufsize) |
40 |
- except (EOFError, IOError): |
41 |
- pass |
42 |
- |
43 |
- if buf: |
44 |
- try: |
45 |
- # Python >=3.2 |
46 |
- data = buf.tobytes() |
47 |
- except AttributeError: |
48 |
- data = buf.tostring() |
49 |
- self._read_data.append(data) |
50 |
+ data = os.read(fd, self._bufsize) |
51 |
+ except IOError as e: |
52 |
+ if e.errno not in (errno.EAGAIN,): |
53 |
+ raise |
54 |
else: |
55 |
- self._unregister() |
56 |
- self.wait() |
57 |
+ if data: |
58 |
+ self._read_data.append(data) |
59 |
+ else: |
60 |
+ self._unregister() |
61 |
+ self.wait() |
62 |
|
63 |
self._unregister_if_appropriate(event) |