Merge pull request #1296 from enkore/issue/1295

fuse: fix directories being shadowed when contained paths where also …
This commit is contained in:
enkore 2016-07-09 17:49:50 +02:00 committed by GitHub
commit 9b4bf8d799
1 changed files with 10 additions and 0 deletions

View File

@ -76,6 +76,16 @@ class FuseOperations(llfuse.Operations):
data = self.key.decrypt(key, chunk) data = self.key.decrypt(key, chunk)
unpacker.feed(data) unpacker.feed(data)
for item in unpacker: for item in unpacker:
try:
# This can happen if an archive was created with a command line like
# $ borg create ... dir1/file dir1
# In this case the code below will have created a default_dir inode for dir1 already.
inode = self._find_inode(item[b'path'], prefix)
except KeyError:
pass
else:
self.items[inode] = item
continue
segments = prefix + os.fsencode(os.path.normpath(item[b'path'])).split(b'/') segments = prefix + os.fsencode(os.path.normpath(item[b'path'])).split(b'/')
del item[b'path'] del item[b'path']
num_segments = len(segments) num_segments = len(segments)