diff options
Diffstat (limited to 'pym/portage/cache/flat_hash.py')
-rw-r--r-- | pym/portage/cache/flat_hash.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/pym/portage/cache/flat_hash.py b/pym/portage/cache/flat_hash.py index 6be0fe4b2..b6bc0744e 100644 --- a/pym/portage/cache/flat_hash.py +++ b/pym/portage/cache/flat_hash.py @@ -1,21 +1,26 @@ -# Copyright: 2005 Gentoo Foundation +# Copyright: 2005-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 # Author(s): Brian Harring (ferringb@gentoo.org) -# License: GPL2 -import codecs from portage.cache import fs_template from portage.cache import cache_errors import errno +import io import stat import sys import os as _os from portage import os from portage import _encodings +from portage import _unicode_decode from portage import _unicode_encode if sys.hexversion >= 0x3000000: long = int +# Coerce to unicode, in order to prevent TypeError when writing +# raw bytes to TextIOWrapper with python2. +_setitem_fmt = _unicode_decode("%s=%s\n") + class database(fs_template.FsBased): autocommits = True @@ -35,7 +40,7 @@ class database(fs_template.FsBased): # Don't use os.path.join, for better performance. fp = self.location + _os.sep + cpv try: - myf = codecs.open(_unicode_encode(fp, + myf = io.open(_unicode_encode(fp, encoding=_encodings['fs'], errors='strict'), mode='r', encoding=_encodings['repo.content'], errors='replace') @@ -68,7 +73,7 @@ class database(fs_template.FsBased): s = cpv.rfind("/") fp = os.path.join(self.location,cpv[:s],".update.%i.%s" % (os.getpid(), cpv[s+1:])) try: - myf = codecs.open(_unicode_encode(fp, + myf = io.open(_unicode_encode(fp, encoding=_encodings['fs'], errors='strict'), mode='w', encoding=_encodings['repo.content'], errors='backslashreplace') @@ -76,7 +81,7 @@ class database(fs_template.FsBased): if errno.ENOENT == e.errno: try: self._ensure_dirs(cpv) - myf = codecs.open(_unicode_encode(fp, + myf = io.open(_unicode_encode(fp, encoding=_encodings['fs'], errors='strict'), mode='w', encoding=_encodings['repo.content'], errors='backslashreplace') @@ -90,7 +95,7 @@ class database(fs_template.FsBased): v = values.get(k) if not v: continue - myf.write("%s=%s\n" % (k, v)) + myf.write(_setitem_fmt % (k, v)) finally: myf.close() self._ensure_access(fp) |