Open new items in text mode (unicode), and safely handle unicode in news item
names.
svn path=/main/trunk/; revision=13975
diff --git a/pym/portage/news.py b/pym/portage/news.py
index 750df3d..c6bd9ea 100644
--- a/pym/portage/news.py
+++ b/pym/portage/news.py
@@ -7,6 +7,7 @@
"DisplayProfileRestriction", "DisplayKeywordRestriction",
"DisplayInstalledRestriction"]
+import codecs
import logging
import os
import re
@@ -116,6 +117,8 @@
itemid + "." + self.language_id + ".txt")
if not os.path.isfile(filename):
continue
+ if not isinstance(itemid, unicode):
+ itemid = unicode(itemid, encoding='utf_8', errors='replace')
item = NewsItem(filename, itemid)
if not item.isValid():
continue
@@ -224,7 +227,8 @@
return self._valid
def parse(self):
- lines = open(self.path).readlines()
+ lines = codecs.open(self.path, mode='r',
+ encoding='utf_8', errors='replace').readlines()
self.restrictions = []
invalids = []
for i, line in enumerate(lines):