summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-06-25 04:50:48 +0000
committerZac Medico <zmedico@gentoo.org>2007-06-25 04:50:48 +0000
commit4fbcaef8d7ff602606bcf26d1c3ce1a30da6c9a4 (patch)
treedb4c1b54c37e5b2808f2e628948499083251fad8 /pym
parent62fbee1b50d3f63756f7832fff275722b2466364 (diff)
downloadportage-4fbcaef8d7ff602606bcf26d1c3ce1a30da6c9a4.tar.gz
portage-4fbcaef8d7ff602606bcf26d1c3ce1a30da6c9a4.tar.bz2
portage-4fbcaef8d7ff602606bcf26d1c3ce1a30da6c9a4.zip
Fix file_get_lib() so it behaves the same way with sftp as it does with other protocols. (trunk r7023:7024)
svn path=/main/branches/2.1.2/; revision=7026
Diffstat (limited to 'pym')
-rw-r--r--pym/getbinpkg.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/pym/getbinpkg.py b/pym/getbinpkg.py
index 8bd43f29c..9484d1d16 100644
--- a/pym/getbinpkg.py
+++ b/pym/getbinpkg.py
@@ -419,7 +419,24 @@ def file_get_lib(baseurl,dest,conn=None):
elif protocol in ["ftp"]:
data,rc,msg = make_ftp_request(conn, address, dest=dest)
elif protocol == "sftp":
- conn.get(address, dest)
+ rc = 0
+ try:
+ f = conn.open(address)
+ except SystemExit:
+ raise
+ except Exception:
+ rc = 1
+ else:
+ try:
+ if dest:
+ bufsize = 8192
+ while True:
+ data = f.read(bufsize)
+ if not data:
+ break
+ dest.write(data)
+ finally:
+ f.close()
else:
raise TypeError, "Unknown protocol. '%s'" % protocol