package sftp import ( "syscall" ) func statvfsFromStatfst(stat *syscall.Statfs_t) (*StatVFS, error) { return &StatVFS{ Bsize: uint64(stat.Bsize), Frsize: uint64(stat.Bsize), // fragment size is a linux thing; use block size here Blocks: stat.Blocks, Bfree: stat.Bfree, Bavail: stat.Bavail, Files: stat.Files, Ffree: stat.Ffree, Favail: stat.Ffree, // not sure how to calculate Favail Fsid: uint64(uint64(stat.Fsid.Val[1])<<32 | uint64(stat.Fsid.Val[0])), // endianness? Flag: uint64(stat.Flags), // assuming POSIX? Namemax: 1024, // man 2 statfs shows: #define MAXPATHLEN 1024 }, nil }