magpie/disk_unix.go
Maxfield Luke ddbd19f153 Initial commit on Forgejo
Fresh repository history for elektrine/magpie hosted at
https://git.elektrine.com/elektrine/magpie.
2026-07-29 04:56:34 -04:00

21 lines
496 B
Go

//go:build !windows
package main
import (
"fmt"
"syscall"
)
func (s *FileStore) DiskStatus() (DiskStatus, error) {
var stat syscall.Statfs_t
if err := syscall.Statfs(s.root, &stat); err != nil {
return DiskStatus{}, err
}
if stat.Bsize <= 0 {
return DiskStatus{}, fmt.Errorf("invalid filesystem block size")
}
total := stat.Blocks * uint64(stat.Bsize)
free := stat.Bavail * uint64(stat.Bsize)
return DiskStatus{TotalBytes: total, FreeBytes: free, UsedBytes: total - free}, nil
}