From 1867fdaef4b0b602e24c7a6bc070dd21c05526d8 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sat, 1 Aug 2020 19:26:42 +0200 Subject: v2api: move helpers from node.go to node_helpers.go --- internal/fusefrontend/node.go | 52 ------------------------------------------- 1 file changed, 52 deletions(-) (limited to 'internal/fusefrontend/node.go') diff --git a/internal/fusefrontend/node.go b/internal/fusefrontend/node.go index 7505f92..fb38362 100644 --- a/internal/fusefrontend/node.go +++ b/internal/fusefrontend/node.go @@ -3,7 +3,6 @@ package fusefrontend import ( "context" "os" - "path/filepath" "syscall" "golang.org/x/sys/unix" @@ -22,40 +21,6 @@ type Node struct { fs.Inode } -// Path returns the relative plaintext path of this node -func (n *Node) Path() string { - return n.Inode.Path(n.Root()) -} - -// rootNode returns the Root Node of the filesystem. -func (n *Node) rootNode() *RootNode { - return n.Root().Operations().(*RootNode) -} - -// prepareAtSyscall returns a (dirfd, cName) pair that can be used -// with the "___at" family of system calls (openat, fstatat, unlinkat...) to -// access the backing encrypted directory. -// -// If you pass a `child` file name, the (dirfd, cName) pair will refer to -// a child of this node. -// If `child` is empty, the (dirfd, cName) pair refers to this node itself. -func (n *Node) prepareAtSyscall(child string) (dirfd int, cName string, errno syscall.Errno) { - p := n.Path() - if child != "" { - p = filepath.Join(p, child) - } - rn := n.rootNode() - if rn.isFiltered(p) { - errno = syscall.EPERM - return - } - dirfd, cName, err := rn.openBackingDir(p) - if err != nil { - errno = fs.ToErrno(err) - } - return -} - // Lookup - FUSE call for discovering a file. func (n *Node) Lookup(ctx context.Context, name string, out *fuse.EntryOut) (ch *fs.Inode, errno syscall.Errno) { dirfd, cName, errno := n.prepareAtSyscall(name) @@ -113,23 +78,6 @@ func (n *Node) Getattr(ctx context.Context, f fs.FileHandle, out *fuse.AttrOut) return 0 } -// newChild attaches a new child inode to n. -// The passed-in `st` will be modified to get a unique inode number. -func (n *Node) newChild(ctx context.Context, st *syscall.Stat_t, out *fuse.EntryOut) *fs.Inode { - // Get unique inode number - rn := n.rootNode() - rn.inoMap.TranslateStat(st) - out.Attr.FromStat(st) - // Create child node - id := fs.StableAttr{ - Mode: uint32(st.Mode), - Gen: 1, - Ino: st.Ino, - } - node := &Node{} - return n.NewInode(ctx, node, id) -} - // Create - FUSE call. Creates a new file. // // Symlink-safe through the use of Openat(). -- cgit v1.2.3