def symlink(self, parent_inode, name, target, ctx):
assert self._initialized
assert_or_errno(self.access(parent_inode, WX_OK, ctx),
EPERM, 'no wx perm to parent inode')
n = self._lookup(parent_inode, name, ctx, noref=True)
assert_or_errno(not n, EEXIST, 'link target exists')
try:
self.unlink(parent_inode, name, ctx)
except llfuse.FUSEError as e:
if e.errno != ENOENT:
raise
fd, a = self.create(parent_inode, name, stat.S_IFLNK | 0o777,
os.O_WRONLY, ctx)
try:
self.write(fd, 0, target)
return a
finally:
self.release(fd)
评论列表
文章目录