mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-12-16 03:29:01 +08:00
43 lines
694 B
Go
43 lines
694 B
Go
package mount
|
|
|
|
import (
|
|
"bytes"
|
|
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
|
|
"github.com/hanwen/go-fuse/v2/fs"
|
|
"strings"
|
|
)
|
|
|
|
type Directory struct {
|
|
fs.Inode
|
|
|
|
name string
|
|
wfs *WFS
|
|
entry *filer_pb.Entry
|
|
parent *Directory
|
|
id uint64
|
|
}
|
|
|
|
func (dir *Directory) FullPath() string {
|
|
var parts []string
|
|
for p := dir; p != nil; p = p.parent {
|
|
if strings.HasPrefix(p.name, "/") {
|
|
if len(p.name) > 1 {
|
|
parts = append(parts, p.name[1:])
|
|
}
|
|
} else {
|
|
parts = append(parts, p.name)
|
|
}
|
|
}
|
|
|
|
if len(parts) == 0 {
|
|
return "/"
|
|
}
|
|
|
|
var buf bytes.Buffer
|
|
for i := len(parts) - 1; i >= 0; i-- {
|
|
buf.WriteString("/")
|
|
buf.WriteString(parts[i])
|
|
}
|
|
return buf.String()
|
|
}
|