github.com/pkg/sftp@v1.13.6/server_statvfs_impl.go (about) 1 //go:build darwin || linux 2 // +build darwin linux 3 4 // fill in statvfs structure with OS specific values 5 // Statfs_t is different per-kernel, and only exists on some unixes (not Solaris for instance) 6 7 package sftp 8 9 import ( 10 "syscall" 11 ) 12 13 func (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { 14 retPkt, err := getStatVFSForPath(p.Path) 15 if err != nil { 16 return statusFromError(p.ID, err) 17 } 18 retPkt.ID = p.ID 19 20 return retPkt 21 } 22 23 func getStatVFSForPath(name string) (*StatVFS, error) { 24 var stat syscall.Statfs_t 25 if err := syscall.Statfs(name, &stat); err != nil { 26 return nil, err 27 } 28 29 return statvfsFromStatfst(&stat) 30 }