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  }