diff options
author | Jakob Unterwurzacher | 2018-11-11 18:32:48 +0100 |
---|---|---|
committer | Jakob Unterwurzacher | 2019-01-01 16:24:25 +0100 |
commit | 1d5500c3db3b4b1f5a5fbc49c7934d3665739a0a (patch) | |
tree | f32fbbd2b29d8afc5af586a914d475410207aa37 /internal/fusefrontend/xattr_darwin.go | |
parent | c3adf9729de82bba52405e9f20f235b6a009308f (diff) |
fusefrontend: only compile getBackingPath() on Darwin
This function is NOT symlink-safe. Darwin needs it because it lacks
fgetxattr(2) and friends.
Diffstat (limited to 'internal/fusefrontend/xattr_darwin.go')
-rw-r--r-- | internal/fusefrontend/xattr_darwin.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/internal/fusefrontend/xattr_darwin.go b/internal/fusefrontend/xattr_darwin.go index ad81320..c756486 100644 --- a/internal/fusefrontend/xattr_darwin.go +++ b/internal/fusefrontend/xattr_darwin.go @@ -4,9 +4,13 @@ package fusefrontend import ( + "path/filepath" + "github.com/pkg/xattr" "github.com/hanwen/go-fuse/fuse" + + "github.com/rfjakob/gocryptfs/internal/tlog" ) func disallowedXAttrName(attr string) bool { @@ -67,3 +71,18 @@ func (fs *FS) listXAttr(relPath string, context *fuse.Context) ([]string, fuse.S } return cNames, fuse.OK } + +// getBackingPath - get the absolute encrypted path of the backing file +// from the relative plaintext path "relPath" +// +// This function is NOT symlink-safe. Darwin needs it because it lacks +// fgetxattr(2) and friends. +func (fs *FS) getBackingPath(relPath string) (string, error) { + cPath, err := fs.encryptPath(relPath) + if err != nil { + return "", err + } + cAbsPath := filepath.Join(fs.args.Cipherdir, cPath) + tlog.Debug.Printf("getBackingPath: %s + %s -> %s", fs.args.Cipherdir, relPath, cAbsPath) + return cAbsPath, nil +} |