diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-09-27 21:07:38 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-09-27 21:07:38 +0000 |
commit | bea2e46fe5a942f492c495eaca2e31f4e56c8c53 (patch) | |
tree | 4672c4f1a5ff9ff325021acbcb412db3395e7187 | |
parent | 8da67a5dd3eea67ac10f4c5b24ca73aec19d27ae (diff) | |
download | portage-bea2e46fe5a942f492c495eaca2e31f4e56c8c53.tar.gz portage-bea2e46fe5a942f492c495eaca2e31f4e56c8c53.tar.bz2 portage-bea2e46fe5a942f492c495eaca2e31f4e56c8c53.zip |
Try to avoid blocking on Darwin in _test_pty_eof() by using slave_fd directly
instead of fdopen.
svn path=/main/trunk/; revision=14453
-rw-r--r-- | pym/portage/__init__.py | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index b00047027..b8bd4343b 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -3754,9 +3754,6 @@ def _test_pty_eof(): # may raise EnvironmentError master_fd, slave_fd = pty.openpty() - master_file = os.fdopen(master_fd, 'rb') - slave_file = os.fdopen(slave_fd, 'wb') - # Non-blocking mode is required for Darwin kernel. fcntl.fcntl(master_fd, fcntl.F_SETFL, fcntl.fcntl(master_fd, fcntl.F_GETFL) | os.O_NONBLOCK) @@ -3769,17 +3766,18 @@ def _test_pty_eof(): # Simulate a subprocess writing some data to the # slave end of the pipe, and then exiting. Do a - # real fork here since otherwise slave_file.close() + # real fork here since otherwise os.close(slave_fd) # would block on some platforms such as Darwin. pid = os.fork() if pid == 0: - slave_file.write(_unicode_encode(test_string, + os.write(slave_fd, _unicode_encode(test_string, encoding='utf_8', errors='strict')) - slave_file.close() + os.close(slave_fd) os._exit(os.EX_OK) else: - slave_file.close() + os.close(slave_fd) + master_file = os.fdopen(master_fd, 'rb') eof = False data = [] iwtd = [master_file] |