mirror of https://github.com/coder/coder.git
37 lines
682 B
Go
37 lines
682 B
Go
package clistat
|
|
|
|
import (
|
|
"golang.org/x/sys/windows"
|
|
"tailscale.com/types/ptr"
|
|
)
|
|
|
|
// Disk returns the disk usage of the given path.
|
|
// If path is empty, it defaults to C:\
|
|
func (*Statter) Disk(p Prefix, path string) (*Result, error) {
|
|
if path == "" {
|
|
path = `C:\`
|
|
}
|
|
|
|
pathPtr, err := windows.UTF16PtrFromString(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var freeBytes, totalBytes, availBytes uint64
|
|
if err := windows.GetDiskFreeSpaceEx(
|
|
pathPtr,
|
|
&freeBytes,
|
|
&totalBytes,
|
|
&availBytes,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var r Result
|
|
r.Total = ptr.To(float64(totalBytes))
|
|
r.Used = float64(totalBytes - freeBytes)
|
|
r.Unit = "B"
|
|
r.Prefix = p
|
|
return &r, nil
|
|
}
|