fuse: refactor file versioning code

This commit is contained in:
Thomas Waldmann 2016-09-15 15:41:15 +02:00
parent 5d22078f35
commit 001500ab99
1 changed files with 5 additions and 4 deletions

View File

@ -162,17 +162,18 @@ class FuseOperations(llfuse.Operations):
self.process_leaf(segments[-1], item, parent, prefix, is_dir)
def process_leaf(self, name, item, parent, prefix, is_dir):
def version_name(name, item):
def file_version(item):
if 'chunks' in item:
ident = 0
for chunkid, _, _ in item.chunks:
ident = adler32(chunkid, ident)
name = name + safe_encode('.%08x' % ident)
return name
return ident
if self.versions and not is_dir:
parent = self.process_inner(name, parent)
name = version_name(name, item)
version = file_version(item)
if version is not None:
name += safe_encode('.%08x' % version)
if 'source' in item and stat.S_ISREG(item.mode):
inode = self._find_inode(item.source, prefix)