From: Zac Medico Date: Fri, 28 Oct 2011 06:48:44 +0000 (-0700) Subject: RepoConfigLoader: use readfp for unicode X-Git-Tag: v2.2.0_alpha72~38 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=0902b4094895a91d6784eab93eb5016987177f04;p=portage.git RepoConfigLoader: use readfp for unicode --- 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 = {}