package recovery import ( "errors" "os" "path/filepath" ) // determineAvailableBytes ermittelt den freien Platz eines Pfades. // // Ist der Pfad selbst noch nicht vorhanden, gilt das erste vorhandene // uebergeordnete Verzeichnis — dorthin wird geschrieben. // // Die eigentliche Abfrage steht plattformabhaengig daneben: Windows kennt kein // statfs, und bis Phase 5 liess sich der Control-Server deshalb nicht fuer // Windows uebersetzen. func determineAvailableBytes(targetPath string) (int64, error) { existingPath := targetPath for { if _, statError := os.Stat(existingPath); statError == nil { break } parentPath := filepath.Dir(existingPath) if parentPath == existingPath { return 0, errors.New("es war kein vorhandenes verzeichnis zu finden") } existingPath = parentPath } return availableBytesOfFilesystem(existingPath) }