//go:build !windows package repository import ( "fmt" "golang.org/x/sys/unix" ) // diskCapacity ermittelt Gesamt- und freien Speicherplatz eines Pfads. // // Die Trennung nach Plattform ist keine Formalie: Bis Phase 5 stand dieser Code // ungetrennt in health.go, und der Agent liess sich fuer Windows **gar nicht // uebersetzen** — `unix.Statfs` gibt es dort nicht. Der Windows-Dienst galt // als „geschrieben, aber ungeprueft"; tatsaechlich haette er sich nicht einmal // bauen lassen. func diskCapacity(targetPath string) (capacityBytes int64, freeBytes int64, capacityError error) { var filesystemStatistics unix.Statfs_t if statfsError := unix.Statfs(targetPath, &filesystemStatistics); statfsError != nil { return 0, 0, fmt.Errorf("die kapazität konnte nicht ermittelt werden: %w", statfsError) } blockSize := int64(filesystemStatistics.Bsize) // Bavail ist der für nicht privilegierte Nutzer verfügbare Platz und damit // der ehrlichere Wert als Bfree, das reservierte Blöcke mitzählt. return int64(filesystemStatistics.Blocks) * blockSize, int64(filesystemStatistics.Bavail) * blockSize, nil }