sftp/server_statvfs_linux.go

29 lines
726 B
Go

// +build linux
package sftp
import (
"syscall"
)
func statvfsFromStatfst(stat *syscall.Statfs_t) (*StatVFS, error) {
frsize := stat.Frsize
if frsize == 0 {
frsize = stat.Bsize // just in case
}
return &StatVFS{
Bsize: uint64(stat.Bsize),
Frsize: uint64(frsize),
Blocks: stat.Blocks,
Bfree: stat.Bfree,
Bavail: stat.Bavail,
Files: stat.Files,
Ffree: stat.Ffree,
Favail: stat.Ffree, // not sure how to calculate
Fsid: uint64(stat.Fsid.X__val[1])<<32 | uint64(stat.Fsid.X__val[0]), // endianness?
Flag: uint64(stat.Flags), // assuming POSIX?
Namemax: uint64(stat.Namelen),
}, nil
}