1 |
Author: zmedico |
2 |
Date: 2009-08-06 09:18:49 +0000 (Thu, 06 Aug 2009) |
3 |
New Revision: 13931 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/Scheduler.py |
7 |
main/trunk/pym/_emerge/emergelog.py |
8 |
main/trunk/pym/portage/elog/messages.py |
9 |
Log: |
10 |
Add unicode conversions in various logging code. |
11 |
|
12 |
|
13 |
Modified: main/trunk/pym/_emerge/Scheduler.py |
14 |
=================================================================== |
15 |
--- main/trunk/pym/_emerge/Scheduler.py 2009-08-06 08:25:23 UTC (rev 13930) |
16 |
+++ main/trunk/pym/_emerge/Scheduler.py 2009-08-06 09:18:49 UTC (rev 13931) |
17 |
@@ -477,6 +477,10 @@ |
18 |
return self._pkg(cpv, type_name, root_config, installed=installed) |
19 |
|
20 |
def _append_to_log_path(self, log_path, msg): |
21 |
+ |
22 |
+ if not isinstance(msg, unicode): |
23 |
+ msg = unicode(msg, encoding='utf_8', errors='replace') |
24 |
+ |
25 |
f = codecs.open(log_path, mode='a', |
26 |
encoding='utf_8', errors='replace') |
27 |
try: |
28 |
|
29 |
Modified: main/trunk/pym/_emerge/emergelog.py |
30 |
=================================================================== |
31 |
--- main/trunk/pym/_emerge/emergelog.py 2009-08-06 08:25:23 UTC (rev 13930) |
32 |
+++ main/trunk/pym/_emerge/emergelog.py 2009-08-06 09:18:49 UTC (rev 13931) |
33 |
@@ -19,6 +19,13 @@ |
34 |
_emerge_log_dir = '/var/log' |
35 |
|
36 |
def emergelog(xterm_titles, mystr, short_msg=None): |
37 |
+ |
38 |
+ if not isinstance(mystr, unicode): |
39 |
+ mystr = unicode(mystr, encoding='utf_8', errors='replace') |
40 |
+ |
41 |
+ if short_msg is not None and not isinstance(short_msg, unicode): |
42 |
+ short_msg = unicode(short_msg, encoding='utf_8', errors='replace') |
43 |
+ |
44 |
if xterm_titles and short_msg: |
45 |
if "HOSTNAME" in os.environ: |
46 |
short_msg = os.environ["HOSTNAME"]+": "+short_msg |
47 |
|
48 |
Modified: main/trunk/pym/portage/elog/messages.py |
49 |
=================================================================== |
50 |
--- main/trunk/pym/portage/elog/messages.py 2009-08-06 08:25:23 UTC (rev 13930) |
51 |
+++ main/trunk/pym/portage/elog/messages.py 2009-08-06 09:18:49 UTC (rev 13931) |
52 |
@@ -79,16 +79,24 @@ |
53 |
|
54 |
global _msgbuffer |
55 |
|
56 |
- if color == None: |
57 |
+ if out is None: |
58 |
+ out = sys.stdout |
59 |
+ |
60 |
+ if color is None: |
61 |
color = "GOOD" |
62 |
|
63 |
+ if not isinstance(msg, unicode): |
64 |
+ msg = unicode(msg, encoding='utf_8', errors='replace') |
65 |
+ |
66 |
formatted_msg = colorize(color, " * ") + msg + "\n" |
67 |
|
68 |
- if out is None: |
69 |
- sys.stdout.write(formatted_msg) |
70 |
- else: |
71 |
- out.write(formatted_msg) |
72 |
+ if sys.hexversion < 0x3000000 and \ |
73 |
+ out in (sys.stdout, sys.stderr) and isinstance(formatted_msg, unicode): |
74 |
+ # avoid potential UnicodeEncodeError |
75 |
+ formatted_msg = formatted_msg.encode('utf_8', 'replace') |
76 |
|
77 |
+ out.write(formatted_msg) |
78 |
+ |
79 |
if key not in _msgbuffer: |
80 |
_msgbuffer[key] = {} |
81 |
if phase not in _msgbuffer[key]: |