diff options
author | Sascha Silbe <sascha-pgp@silbe.org> | 2011-10-11 17:26:50 (GMT) |
---|---|---|
committer | Sascha Silbe <sascha-pgp@silbe.org> | 2011-10-11 17:26:50 (GMT) |
commit | 6388c5c5272c818edd6d92caa7437f39f19d7818 (patch) | |
tree | 8928dae8257f6b0a1c1d37eba38b89d1e60842fa | |
parent | 3915c391918b48cfd9085bf02de3ae9ef59ea2a5 (diff) |
Fix '.' and '..' directory entries
When using generators, we can't simply call the parent method. Instead we
need to iterate over the iterator it returns and yield each entry
individually.
Also fixes a missing assignment.
-rwxr-xr-x | datastore-fuse.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/datastore-fuse.py b/datastore-fuse.py index d127fed..90ea326 100755 --- a/datastore-fuse.py +++ b/datastore-fuse.py @@ -97,6 +97,7 @@ class Symlink(fuse.Stat): class Directory(fuse.Stat): def __init__(self, path, parent_path, filesystem, mode): self._path = path + self._parent_path = parent_path self._filesystem = filesystem fuse.Stat.__init__(self, st_mode=stat.S_IFDIR | mode, st_nlink=2, st_uid=os.getuid(), st_gid=os.getgid(), @@ -147,7 +148,8 @@ class ByTitleDirectory(Directory): Directory.__init__(self, path, parent_path, filesystem, 0750) def readdir(self, offset): - Directory.readdir(self, offset) + for entry in Directory.readdir(self, offset): + yield entry for entry in self._find_entries(): if 'uid' not in entry: @@ -229,7 +231,8 @@ class ByIdDirectory(Directory): self._filesystem.get_inode_number(path)) def readdir(self, offset): - Directory.readdir(self, offset) + for entry in Directory.readdir(self, offset): + yield entry for entry in self._filesystem.find({}, {'metadata': ['uid']}): if 'uid' not in entry: @@ -276,7 +279,8 @@ class ByTagsDirectory(Directory): self._tag_dirs = {} def readdir(self, offset): - Directory.readdir(self, offset) + for entry in Directory.readdir(self, offset): + yield entry for tag in self._get_tags(): if '/' in tag: |