mirror of https://github.com/coder/coder.git
28 lines
586 B
Go
28 lines
586 B
Go
//go:build !windows
|
|
|
|
package clistat
|
|
|
|
import (
|
|
"syscall"
|
|
|
|
"tailscale.com/types/ptr"
|
|
)
|
|
|
|
// Disk returns the disk usage of the given path.
|
|
// If path is empty, it returns the usage of the root directory.
|
|
func (*Statter) Disk(p Prefix, path string) (*Result, error) {
|
|
if path == "" {
|
|
path = "/"
|
|
}
|
|
var stat syscall.Statfs_t
|
|
if err := syscall.Statfs(path, &stat); err != nil {
|
|
return nil, err
|
|
}
|
|
var r Result
|
|
r.Total = ptr.To(float64(stat.Blocks * uint64(stat.Bsize)))
|
|
r.Used = float64(stat.Blocks-stat.Bfree) * float64(stat.Bsize)
|
|
r.Unit = "B"
|
|
r.Prefix = p
|
|
return &r, nil
|
|
}
|