Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/
Date: Fri, 02 Dec 2011 02:34:31
Message-Id: 6b9a29652474f1139dc088322cf68f22f37e5fed.zmedico@gentoo
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)