summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-12-10 01:03:49 +0000
committerZac Medico <zmedico@gentoo.org>2009-12-10 01:03:49 +0000
commita260d2d9f61968e08750455092dc429fbb1ebdcb (patch)
tree99fceaebe23ec85a4c8a6c9214e6c387151d0f86
parentUse OrderedDict in portdbapi.getFetchMap() so that order in $A corresponds (diff)
downloadportage-a260d2d9f61968e08750455092dc429fbb1ebdcb.tar.gz
portage-a260d2d9f61968e08750455092dc429fbb1ebdcb.tar.bz2
portage-a260d2d9f61968e08750455092dc429fbb1ebdcb.zip
When reading the remote Packages file for --getbinpkg, use codecs.iterdecode
to decode the stream. Also, don't use finally to close the atomic_ofstream when writing the file since we want it to abort if an exception is raised. (trunk r14969) svn path=/main/branches/2.1.7/; revision=15003
-rw-r--r--pym/portage/dbapi/bintree.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/pym/portage/dbapi/bintree.py b/pym/portage/dbapi/bintree.py
index 4df2020b5..cd5d0b6eb 100644
--- a/pym/portage/dbapi/bintree.py
+++ b/pym/portage/dbapi/bintree.py
@@ -711,8 +711,10 @@ class binarytree(object):
# protocols and requires the base url to have a trailing
# slash, so join manually...
f = urllib_request_urlopen(base_url.rstrip("/") + "/Packages")
+ f_dec = codecs.iterdecode(f,
+ _encodings['repo.content'], errors='replace')
try:
- rmt_idx.readHeader(f)
+ rmt_idx.readHeader(f_dec)
remote_timestamp = rmt_idx.header.get("TIMESTAMP", None)
if not remote_timestamp:
# no timestamp in the header, something's wrong
@@ -724,7 +726,7 @@ class binarytree(object):
rmt_idx.header.get("VERSION"), noiselevel=-1)
pkgindex = None
elif local_timestamp != remote_timestamp:
- rmt_idx.readBody(f)
+ rmt_idx.readBody(f_dec)
pkgindex = rmt_idx
finally:
f.close()
@@ -739,10 +741,8 @@ class binarytree(object):
from portage.util import atomic_ofstream, ensure_dirs
ensure_dirs(os.path.dirname(pkgindex_file))
f = atomic_ofstream(pkgindex_file)
- try:
- pkgindex.write(f)
- finally:
- f.close()
+ pkgindex.write(f)
+ f.close()
if pkgindex:
self._remotepkgs = {}
for d in pkgindex.packages: