Skip to content

Commit 8be4a87

Browse files
committed
cgofuse: SymlinkFS -> LinkMaker, LinkReader
1 parent b4738c5 commit 8be4a87

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

internal/filesystem/cgofuse/fuse.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ func (gw *goWrapper) Unlink(path string) errNo {
156156

157157
func (gw *goWrapper) Symlink(target, newpath string) errNo {
158158
defer gw.systemLock.CreateOrDelete(newpath)()
159-
if linker, ok := gw.FS.(filesystem.SymlinkFS); ok {
159+
if linker, ok := gw.FS.(filesystem.LinkMaker); ok {
160160
goTarget, goNewPath, err := fuseToGoPair(target, newpath)
161161
if err != nil {
162162
gw.logError(newpath+"->"+target, err)
@@ -179,7 +179,7 @@ func (gw *goWrapper) Readlink(path string) (errNo, string) {
179179
case "":
180180
return -fuse.ENOENT, ""
181181
default:
182-
if extractor, ok := gw.FS.(filesystem.SymlinkFS); ok {
182+
if extractor, ok := gw.FS.(filesystem.LinkReader); ok {
183183
goPath, err := fuseToGo(path)
184184
if err != nil {
185185
gw.logError(path, err)

internal/filesystem/cgofuse/stat.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package cgofuse
22

33
import (
4+
"errors"
45
"io/fs"
56

7+
"github.com/djdv/go-filesystem-utils/internal/filesystem"
68
"github.com/winfsp/cgofuse/fuse"
79
)
810

@@ -56,6 +58,11 @@ func (gw *goWrapper) infoFromPath(path string) (fs.FileInfo, error) {
5658
if err != nil {
5759
return nil, err
5860
}
61+
if stat, err := filesystem.Lstat(gw.FS, goPath); err == nil {
62+
return stat, nil
63+
} else if !errors.Is(err, errors.ErrUnsupported) {
64+
return nil, err
65+
}
5966
return fs.Stat(gw.FS, goPath)
6067
}
6168

0 commit comments

Comments
 (0)