sftp/server_statvfs_impl.go

30 lines
611 B
Go

// +build darwin linux
// fill in statvfs structure with OS specific values
// Statfs_t is different per-kernel, and only exists on some unixes (not Solaris for instance)
package sftp
import (
"syscall"
)
func (p sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket {
retPkt, err := getStatVFSForPath(p.Path)
if err != nil {
return statusFromError(p, err)
}
retPkt.ID = p.ID
return retPkt
}
func getStatVFSForPath(name string) (*StatVFS, error) {
stat := &syscall.Statfs_t{}
if err := syscall.Statfs(name, stat); err != nil {
return nil, err
}
return statvfsFromStatfst(stat)
}