diff options
author | Zac Medico <zmedico@gentoo.org> | 2013-01-05 07:43:20 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2013-01-05 07:43:20 -0800 |
commit | d916da77dfc94eb30c6f512f9d7d727a8f28600c (patch) | |
tree | 235996cc941a3ac64a62c19f66b066574153e6f9 | |
parent | e893125da2f260c73ac728c5f027113ef9aa2f73 (diff) | |
download | portage-d916da77dfc94eb30c6f512f9d7d727a8f28600c.tar.gz portage-d916da77dfc94eb30c6f512f9d7d727a8f28600c.tar.bz2 portage-d916da77dfc94eb30c6f512f9d7d727a8f28600c.zip |
Handle os.write() return code with loop.
-rw-r--r-- | pym/portage/dbapi/vartree.py | 4 | ||||
-rw-r--r-- | pym/portage/util/_async/PipeLogger.py | 10 |
2 files changed, 7 insertions, 7 deletions
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index beff5bdc6..ba149b745 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -3463,7 +3463,9 @@ class dblink(object): str_buffer.append(' '.join(fields)) str_buffer.append('\n') if str_buffer: - os.write(self._pipe, _unicode_encode(''.join(str_buffer))) + str_buffer = _unicode_encode(''.join(str_buffer)) + while str_buffer: + str_buffer = str_buffer[os.write(self._pipe, str_buffer):] def _emerge_log(self, msg): emergelog(False, msg) diff --git a/pym/portage/util/_async/PipeLogger.py b/pym/portage/util/_async/PipeLogger.py index 376ebfef7..5464879ff 100644 --- a/pym/portage/util/_async/PipeLogger.py +++ b/pym/portage/util/_async/PipeLogger.py @@ -86,14 +86,12 @@ class PipeLogger(AbstractPollTask): else: if not background and stdout_fd is not None: - write_successful = False failures = 0 - while True: + stdout_buf = buf + while stdout_buf: try: - if not write_successful: - os.write(stdout_fd, buf) - write_successful = True - break + stdout_buf = \ + stdout_buf[os.write(stdout_fd, stdout_buf):] except OSError as e: if e.errno != errno.EAGAIN: raise |