diff --git a/internal/sysinfo/sysinfo.go b/internal/sysinfo/sysinfo.go index c4e2e4c..70daac0 100644 --- a/internal/sysinfo/sysinfo.go +++ b/internal/sysinfo/sysinfo.go @@ -295,7 +295,8 @@ func ReadDisk(path string) (Disk, error) { if err := syscall.Statfs(path, &stats); err != nil { return Disk{}, fmt.Errorf("sysinfo.disk: %w", err) } - blockSize := toInt64From32(stats.Bsize) + // Bsize в Linux — int64, в Darwin — uint32: приведение безопасно в обоих случаях. + blockSize := int64(stats.Bsize) total := saturatingMul(toInt64(stats.Blocks), blockSize) free := saturatingMul(toInt64(stats.Bavail), blockSize) return Disk{UsedBytes: total - free, TotalBytes: total, FreeBytes: free}, nil @@ -324,11 +325,6 @@ func toInt64(value uint64) int64 { return int64(value) } -// toInt64From32 переводит 32-битное беззнаковое значение (размер блока statfs). -func toInt64From32(value uint32) int64 { - return int64(value) -} - // saturatingMul умножает с насыщением: размер раздела не должен переполняться. func saturatingMul(a, b int64) int64 { if a <= 0 || b <= 0 {