diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-10-27 23:48:44 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-10-27 23:48:44 -0700 |
commit | 0902b4094895a91d6784eab93eb5016987177f04 (patch) | |
tree | 6512fcfa270d3da32a917a14437e61df7d7a49ba | |
parent | 5d67d1adeed7a6d0c7a9cc00a54a303401f20f8a (diff) | |
download | portage-0902b4094895a91d6784eab93eb5016987177f04.tar.gz portage-0902b4094895a91d6784eab93eb5016987177f04.tar.bz2 portage-0902b4094895a91d6784eab93eb5016987177f04.zip |
RepoConfigLoader: use readfp for unicode
-rw-r--r-- | pym/portage/repository/config.py | 25 |
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 = {} |