From 0902b4094895a91d6784eab93eb5016987177f04 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 27 Oct 2011 23:48:44 -0700 Subject: RepoConfigLoader: use readfp for unicode --- pym/portage/repository/config.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'pym/portage/repository') 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 = {} -- cgit v1.2.3-1-g7c22