From fc9fdba08b5ac46ffb8cdf34753624d6050d8052 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 20 Jan 2011 17:59:32 -0800 Subject: PtyEofTestCase: test unbuffered fdopen New development: It appears that array.fromfile() is usable with python3 as long as fdopen is called with a bufsize argument of 0. --- pym/portage/util/_pty.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'pym/portage/util/_pty.py') diff --git a/pym/portage/util/_pty.py b/pym/portage/util/_pty.py index 877430e96..7e769d204 100644 --- a/pym/portage/util/_pty.py +++ b/pym/portage/util/_pty.py @@ -28,11 +28,19 @@ def _can_test_pty_eof(): """ return platform.system() in ("Linux",) -def _test_pty_eof(): +def _test_pty_eof(fdopen_buffered=True): """ Returns True if this issues is fixed for the currently running version of python: http://bugs.python.org/issue5380 Raises an EnvironmentError from openpty() if it fails. + + NOTE: This issue is only problematic when array.fromfile() + is used, rather than os.read(). However, array.fromfile() + is preferred since it is approximatly 10% faster. + + New development: It appears that array.fromfile() is usable + with python3 as long as fdopen is called with a bufsize + argument of 0. """ use_fork = False @@ -78,7 +86,10 @@ def _test_pty_eof(): if pid is not None: os.waitpid(pid, 0) - master_file = os.fdopen(master_fd, 'rb') + if fdopen_buffered: + master_file = os.fdopen(master_fd, 'rb') + else: + master_file = os.fdopen(master_fd, 'rb', 0) eof = False data = [] iwtd = [master_file] -- cgit v1.2.3-1-g7c22