summaryrefslogtreecommitdiffstats
path: root/pym/portage/util/__init__.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-07-12 04:49:55 -0700
committerZac Medico <zmedico@gentoo.org>2010-07-12 04:49:55 -0700
commit0c71f83404d17e27b1fc319ad6979969c6205062 (patch)
tree1856dc53b02f9427e10d7a83ddfd2a1b1b2da98e /pym/portage/util/__init__.py
parentf9197545f7686d610d6d153fb2dbbb4d4d65bb7e (diff)
downloadportage-0c71f83404d17e27b1fc319ad6979969c6205062.tar.gz
portage-0c71f83404d17e27b1fc319ad6979969c6205062.tar.bz2
portage-0c71f83404d17e27b1fc319ad6979969c6205062.zip
Fix output handling for FEATURES="lafilefixing".
Diffstat (limited to 'pym/portage/util/__init__.py')
-rw-r--r--pym/portage/util/__init__.py12
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()