From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1MYzGQ-0000gj-QU for garchives@archives.gentoo.org; Thu, 06 Aug 2009 09:27:58 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 46BEDE032F; Thu, 6 Aug 2009 09:27:58 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 25B47E032F for ; Thu, 6 Aug 2009 09:27:58 +0000 (UTC) Received: from stork.gentoo.org (stork.gentoo.org [64.127.104.133]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTP id D21EC67407 for ; Thu, 6 Aug 2009 09:27:57 +0000 (UTC) Received: from zmedico by stork.gentoo.org with local (Exim 4.69) (envelope-from ) id 1MYzGP-0005ZY-9s for gentoo-commits@lists.gentoo.org; Thu, 06 Aug 2009 09:27:57 +0000 To: gentoo-commits@lists.gentoo.org From: "Zac Medico (zmedico)" Subject: [gentoo-commits] portage r13932 - main/trunk/pym/_emerge X-VCS-Repository: portage X-VCS-Revision: 13932 X-VCS-Files: main/trunk/pym/_emerge/JobStatusDisplay.py X-VCS-Directories: main/trunk/pym/_emerge X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico Content-Type: text/plain; charset=UTF-8 Message-Id: Sender: Zac Medico Date: Thu, 06 Aug 2009 09:27:57 +0000 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: d75a88ff-a8d0-416a-bfac-7de7e93b273e X-Archives-Hash: 5477b3459bc63b5da6e83bd60b71c31e Author: zmedico Date: 2009-08-06 09:27:54 +0000 (Thu, 06 Aug 2009) New Revision: 13932 Modified: main/trunk/pym/_emerge/JobStatusDisplay.py Log: Convert unicode if necessary before writing to stdout. Modified: main/trunk/pym/_emerge/JobStatusDisplay.py =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- main/trunk/pym/_emerge/JobStatusDisplay.py 2009-08-06 09:18:49 UTC (r= ev 13931) +++ main/trunk/pym/_emerge/JobStatusDisplay.py 2009-08-06 09:27:54 UTC (r= ev 13932) @@ -73,6 +73,13 @@ temporarily overridden stdout.""" return sys.stdout =20 + def _write(self, s): + if sys.hexversion < 0x3000000 and isinstance(s, unicode): + # avoid potential UnicodeEncodeError + s =3D s.encode('utf_8', 'replace') + self.out.write(s) + self.out.flush() + def _init_term(self): """ Initialize term control codes. @@ -110,23 +117,19 @@ return ">>> %s" % msg =20 def _erase(self): - self.out.write( + self._write( self._term_codes['carriage_return'] + \ self._term_codes['clr_eol']) - self.out.flush() self._displayed =3D False =20 def _display(self, line): - self.out.write(line) - self.out.flush() + self._write(line) self._displayed =3D True =20 def _update(self, msg): =20 - out =3D self.out if not self._isatty: - out.write(self._format_msg(msg) + self._term_codes['newline']) - self.out.flush() + self._write(self._format_msg(msg) + self._term_codes['newline']) self._displayed =3D True return =20 @@ -142,8 +145,7 @@ if self._isatty and self._displayed: self._erase() =20 - self.out.write(self._format_msg(msg) + self._term_codes['newline']) - self.out.flush() + self._write(self._format_msg(msg) + self._term_codes['newline']) self._displayed =3D False =20 if was_displayed: @@ -157,8 +159,7 @@ object.__setattr__(self, name, 0) =20 if self._displayed: - self.out.write(self._term_codes['newline']) - self.out.flush() + self._write(self._term_codes['newline']) self._displayed =3D False =20 def __setattr__(self, name, value):