summaryrefslogtreecommitdiffstats
path: root/pym/portage/repository/config.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-10-27 23:48:44 -0700
committerZac Medico <zmedico@gentoo.org>2011-10-27 23:48:44 -0700
commit0902b4094895a91d6784eab93eb5016987177f04 (patch)
tree6512fcfa270d3da32a917a14437e61df7d7a49ba /pym/portage/repository/config.py
parent5d67d1adeed7a6d0c7a9cc00a54a303401f20f8a (diff)
downloadportage-0902b4094895a91d6784eab93eb5016987177f04.tar.gz
portage-0902b4094895a91d6784eab93eb5016987177f04.tar.bz2
portage-0902b4094895a91d6784eab93eb5016987177f04.zip
RepoConfigLoader: use readfp for unicode
Diffstat (limited to 'pym/portage/repository/config.py')
-rw-r--r--pym/portage/repository/config.py25
1 files changed, 21 insertions, 4 deletions
diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py
index 15c7ec5dd..d6a648ea0 100644
--- a/pym/portage/repository/config.py
+++ b/pym/portage/repository/config.py
@@ -326,10 +326,27 @@ class RepoConfigLoader(object):
def _parse(paths, prepos, ignored_map, ignored_location_map):
"""Parse files in paths to load config"""
parser = SafeConfigParser()
- try:
- parser.read(paths)
- except ParsingError as e:
- writemsg(_("!!! Error while reading repo config file: %s\n") % e, noiselevel=-1)
+ # use readfp in order to control decoding of unicode
+ for p in paths:
+ f = None
+ try:
+ f = io.open(_unicode_encode(p,
+ encoding=_encodings['fs'], errors='strict'),
+ mode='r', encoding=_encodings['repo.content'],
+ errors='replace')
+ except EnvironmentError:
+ pass
+ else:
+ try:
+ parser.readfp(f)
+ except ParsingError as e:
+ writemsg(_unicode_decode(
+ _("!!! Error while reading repo config file: %s\n")
+ ) % e, noiselevel=-1)
+ finally:
+ if f is not None:
+ f.close()
+
prepos['DEFAULT'] = RepoConfig("DEFAULT", parser.defaults())
for sname in parser.sections():
optdict = {}