diff options
| author | Sebastian Lackner | 2017-11-28 01:28:29 +0100 | 
|---|---|---|
| committer | rfjakob | 2017-11-28 09:28:06 +0100 | 
| commit | 5d44a31b412e3db07313d3f7e839e2838cff67c0 (patch) | |
| tree | c5f6cf1e8ccd32b025e41954eadf3bac10d0416e | |
| parent | 2591900b6920a71f754779807bafeb01bfef5ab3 (diff) | |
fusefrontend: Use openBackingPath in Unlink and simplify code
| -rw-r--r-- | internal/fusefrontend/fs.go | 26 | 
1 files changed, 8 insertions, 18 deletions
| diff --git a/internal/fusefrontend/fs.go b/internal/fusefrontend/fs.go index 46787e2..08edd2b 100644 --- a/internal/fusefrontend/fs.go +++ b/internal/fusefrontend/fs.go @@ -382,33 +382,23 @@ func (fs *FS) Unlink(path string, context *fuse.Context) (code fuse.Status) {  	if fs.isFiltered(path) {  		return fuse.EPERM  	} -	cPath, err := fs.getBackingPath(path) +	dirfd, cName, err := fs.openBackingPath(path)  	if err != nil {  		return fuse.ToStatus(err)  	} - -	cName := filepath.Base(cPath) +	defer dirfd.Close() +	// Delete content +	err = syscallcompat.Unlinkat(int(dirfd.Fd()), cName) +	if err != nil { +		return fuse.ToStatus(err) +	} +	// Delete ".name" file  	if !fs.args.PlaintextNames && nametransform.IsLongContent(cName) { -		var dirfd *os.File -		dirfd, err = os.Open(filepath.Dir(cPath)) -		if err != nil { -			return fuse.ToStatus(err) -		} -		defer dirfd.Close() -		// Delete content -		err = syscallcompat.Unlinkat(int(dirfd.Fd()), cName) -		if err != nil { -			return fuse.ToStatus(err) -		} -		// Delete ".name"  		err = nametransform.DeleteLongName(dirfd, cName)  		if err != nil {  			tlog.Warn.Printf("Unlink: could not delete .name file: %v", err)  		} -		return fuse.ToStatus(err)  	} - -	err = syscall.Unlink(cPath)  	return fuse.ToStatus(err)  } | 
