summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2013-01-03 22:08:56 -0800
committerZac Medico <zmedico@gentoo.org>2013-01-03 22:08:56 -0800
commit9d4fdf7ec5ccd4b78cbce2d7209ce91286fbbf26 (patch)
tree07282d7f9690be3b6f20856146e210611d2c7ad7 /pym/_emerge
parentfe1194b25031f40e51d1a82352bb7d79bcafe912 (diff)
downloadportage-9d4fdf7ec5ccd4b78cbce2d7209ce91286fbbf26.tar.gz
portage-9d4fdf7ec5ccd4b78cbce2d7209ce91286fbbf26.tar.bz2
portage-9d4fdf7ec5ccd4b78cbce2d7209ce91286fbbf26.zip
PipeReader: support plain fd without file obj
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/PipeReader.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/pym/_emerge/PipeReader.py b/pym/_emerge/PipeReader.py
index bb4e0dc1c..be93be323 100644
--- a/pym/_emerge/PipeReader.py
+++ b/pym/_emerge/PipeReader.py
@@ -35,9 +35,10 @@ class PipeReader(AbstractPollTask):
fcntl_flags |= fcntl.FD_CLOEXEC
for f in self.input_files.values():
- fcntl.fcntl(f.fileno(), fcntl.F_SETFL,
- fcntl.fcntl(f.fileno(), fcntl.F_GETFL) | fcntl_flags)
- self._reg_ids.add(self.scheduler.io_add_watch(f.fileno(),
+ fd = isinstance(f, int) and f or f.fileno()
+ fcntl.fcntl(fd, fcntl.F_SETFL,
+ fcntl.fcntl(fd, fcntl.F_GETFL) | fcntl_flags)
+ self._reg_ids.add(self.scheduler.io_add_watch(fd,
self._registered_events, output_handler))
self._registered = True
@@ -113,6 +114,9 @@ class PipeReader(AbstractPollTask):
if self.input_files is not None:
for f in self.input_files.values():
- f.close()
+ if isinstance(f, int):
+ os.close(f)
+ else:
+ f.close()
self.input_files = None