Use _unicode_decode() on the string returned from time.strftime(), in order
authorZac Medico <zmedico@gentoo.org>
Sat, 5 Sep 2009 22:01:43 +0000 (22:01 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 5 Sep 2009 22:01:43 +0000 (22:01 -0000)
to avoid a potential UnicodeDecodeError later. Thanks to Markus Duft
<mduft@gentoo.org> for reporting.

svn path=/main/trunk/; revision=14201

pym/_emerge/main.py
pym/portage/__init__.py
pym/portage/elog/mod_mail_summary.py
pym/portage/elog/mod_save.py
pym/portage/glsa.py

index db57f2985e6641970cb159ea9503a419974fa098..57277ecfbc04ab2b5e56ac92586d2b3f358269bd 100644 (file)
@@ -9,6 +9,8 @@ import textwrap
 import platform
 import portage
 from portage import os
+from portage import _encodings
+from portage import _unicode_decode
 import _emerge.help
 import portage.xpak, commands, errno, re, time
 from portage.output import colorize, xtermTitle, xtermTitleReset
@@ -1297,7 +1299,9 @@ def emerge_main():
 
        if not "--pretend" in myopts:
                emergelog(xterm_titles, "Started emerge on: "+\
-                       time.strftime("%b %d, %Y %H:%M:%S", time.localtime()))
+                       _unicode_decode(
+                               time.strftime("%b %d, %Y %H:%M:%S", time.localtime()),
+                               encoding=_encodings['content'], errors='replace'))
                myelogstr=""
                if myopts:
                        myelogstr=" ".join(myopts)
index dfb9c0fefbdd9810eb624a021fe1e93c3608ea61..f6cf25f53898b5d8483beef3a21b45039c552d91 100644 (file)
@@ -6267,8 +6267,9 @@ def _prepare_workdir(mysettings):
                logid_path = os.path.join(mysettings["PORTAGE_BUILDDIR"], ".logid")
                if not os.path.exists(logid_path):
                        open(_unicode_encode(logid_path), 'w')
-               logid_time = time.strftime("%Y%m%d-%H%M%S",
-                       time.gmtime(os.stat(logid_path).st_mtime))
+               logid_time = _unicode_decode(time.strftime("%Y%m%d-%H%M%S",
+                       time.gmtime(os.stat(logid_path).st_mtime)),
+                       encoding=_encodings['content'], errors='replace')
                mysettings["PORTAGE_LOG_FILE"] = os.path.join(
                        mysettings["PORT_LOGDIR"], "%s:%s:%s.log" % \
                        (mysettings["CATEGORY"], mysettings["PF"], logid_time))
index adffd4640941c53167e01106229b19d9bad2b3da..e642dc044726203f4a4ccecbdc7c162c1aa1e851 100644 (file)
@@ -8,6 +8,8 @@ from portage.exception import PortageException
 from portage.localization import _
 from portage.util import writemsg
 from portage import os
+from portage import _encodings
+from portage import _unicode_decode
 
 import socket
 import time
@@ -15,8 +17,11 @@ import time
 _items = {}
 def process(mysettings, key, logentries, fulltext):
        global _items
+       time_str = _unicode_decode(
+               time.strftime("%Y%m%d-%H%M%S %Z", time.localtime(time.time())),
+               encoding=_encodings['content'], errors='replace')
        header = _(">>> Messages generated for package %(pkg)s by process %(pid)d on %(time)s:\n\n") % \
-               {"pkg": key, "pid": os.getpid(), "time": time.strftime("%Y%m%d-%H%M%S %Z", time.localtime(time.time()))}
+               {"pkg": key, "pid": os.getpid(), "time": time_str}
        config_root = mysettings["PORTAGE_CONFIGROOT"]
        mysettings, items = _items.setdefault(config_root, (mysettings, {}))
        items[key] = header + fulltext
index 0707b00f8860d39422b563488a1b173ab5802565..89de71c86b46b5720697f708b340f4a99dafd017 100644 (file)
@@ -7,6 +7,7 @@ import codecs
 import time
 from portage import os
 from portage import _encodings
+from portage import _unicode_decode
 from portage import _unicode_encode
 from portage.data import portage_uid, portage_gid
 from portage.util import ensure_dirs
@@ -20,7 +21,9 @@ def process(mysettings, key, logentries, fulltext):
                elogdir = os.path.join(os.sep, "var", "log", "portage", "elog")
        ensure_dirs(elogdir, uid=portage_uid, gid=portage_gid, mode=02770)
 
-       elogfilename = elogdir+"/"+path+":"+time.strftime("%Y%m%d-%H%M%S", time.gmtime(time.time()))+".log"
+       elogfilename = os.path.join(elogdir, path + ":" + _unicode_decode(
+               time.strftime("%Y%m%d-%H%M%S", time.gmtime(time.time())),
+               encoding=_encodings['content'], errors='replace') + ".log")
        elogfile = codecs.open(_unicode_encode(elogfilename,
                encoding=_encodings['fs'], errors='strict'),
                mode='w', encoding=_encodings['content'], errors='backslashreplace')
index 6dc73ac67eb38a6564a5d7d9d7272be15929a7c6..95c3c813c13e96a755f93f1d3f763bbe7b0fc32a 100644 (file)
@@ -404,7 +404,8 @@ def format_date(datestr):
                return datestr
        
        # TODO We could format to local date format '%x' here?
-       return d.strftime("%B %d, %Y")
+       return _unicode_decode(d.strftime("%B %d, %Y"),
+               encoding=_encodings['content'], errors='replace')
 
 # simple Exception classes to catch specific errors
 class GlsaTypeException(Exception):