diff options
Diffstat (limited to 'pym/portage/util/__init__.py')
-rw-r--r-- | pym/portage/util/__init__.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py index 821428d12..6e7f5db9d 100644 --- a/pym/portage/util/__init__.py +++ b/pym/portage/util/__init__.py @@ -56,10 +56,14 @@ def writemsg(mystr,noiselevel=0,fd=None): fd = sys.stderr if noiselevel <= noiselimit: # avoid potential UnicodeEncodeError - mystr = _unicode_encode(mystr, - encoding=_encodings['stdio'], errors='backslashreplace') - if sys.hexversion >= 0x3000000 and fd in (sys.stdout, sys.stderr): - fd = fd.buffer + if isinstance(fd, StringIO): + mystr = _unicode_decode(mystr, + encoding=_encodings['content'], errors='replace') + else: + mystr = _unicode_encode(mystr, + encoding=_encodings['stdio'], errors='backslashreplace') + if sys.hexversion >= 0x3000000 and fd in (sys.stdout, sys.stderr): + fd = fd.buffer fd.write(mystr) fd.flush() |