mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00: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()
|
||
|
}
|