summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwillmcgugan@gmail.com <willmcgugan@gmail.com@67cdc799-7952-0410-af00-57a81ceafa0f>2014-10-18 11:03:26 +0000
committerwillmcgugan@gmail.com <willmcgugan@gmail.com@67cdc799-7952-0410-af00-57a81ceafa0f>2014-10-18 11:03:26 +0000
commit4ed850e83583a64e7d998f4f93f071bdbbb1dd21 (patch)
treea7e0debb96ab6e8e765a7f552047e7d9687b7132
parente103eb90c24901d06b8a8abc48201aa2dbba890c (diff)
downloadpyfilesystem-4ed850e83583a64e7d998f4f93f071bdbbb1dd21.tar.gz
opener fix
git-svn-id: http://pyfilesystem.googlecode.com/svn/trunk@900 67cdc799-7952-0410-af00-57a81ceafa0f
-rw-r--r--fs/filelike.py2
-rw-r--r--fs/opener.py25
2 files changed, 16 insertions, 11 deletions
diff --git a/fs/filelike.py b/fs/filelike.py
index 6714746..54b6519 100644
--- a/fs/filelike.py
+++ b/fs/filelike.py
@@ -465,7 +465,7 @@ class FileLikeBase(object):
sizeSoFar = len(newData)
while sizeSoFar < size:
newData = self._read(size-sizeSoFar)
- if newData is None:
+ if not newData:
break
data.append(newData)
sizeSoFar += len(newData)
diff --git a/fs/opener.py b/fs/opener.py
index 54cebe3..8500eac 100644
--- a/fs/opener.py
+++ b/fs/opener.py
@@ -121,14 +121,19 @@ def _split_url_path(url):
url = '%s://%s' % (scheme, netloc)
return url, path
-class _FSClosingFile(FileWrapper):
- """A file like object that closes its parent FS when closed itself"""
- def close(self):
- fs = getattr(self, '_closefs', None)
- ret = super(_FSClosingFile, self).close()
- if fs is not None:
- fs.close
- return ret
+
+def _FSClosingFile(fs, file_object, mode):
+ original_close = file_object.close
+
+ def close():
+ try:
+ fs.close()
+ except:
+ pass
+ return original_close()
+ file_object.close = close
+ return file_object
+
class OpenerRegistry(object):
@@ -267,8 +272,8 @@ class OpenerRegistry(object):
fs, path = self.parse(fs_url, writeable=writeable)
file_object = fs.open(path, mode)
- file_object = _FSClosingFile(file_object, mode)
- file_object.fs = fs
+ file_object = _FSClosingFile(fs, file_object, mode)
+ #file_object.fs = fs
return file_object
def getcontents(self, fs_url, mode='rb', encoding=None, errors=None, newline=None):