feat(ui): complete Avalonia UI port with 7 main pages, tool settings & top MenuBar

This commit is contained in:
Richard
2026-08-10 10:48:34 +02:00
parent a0e18d2a57
commit b5bf97ae74
187 changed files with 20054 additions and 882 deletions
+4 -5
View File
@@ -377,11 +377,10 @@ public sealed class BackupService
var root = Path.GetFullPath(targetDir);
var full = Path.GetFullPath(Path.Combine(root, relative));
var rootWithSeparator = root.EndsWith(Path.DirectorySeparatorChar)
? root
: root + Path.DirectorySeparatorChar;
if (!full.StartsWith(rootWithSeparator, StringComparison.OrdinalIgnoreCase))
// Der Vergleich muss dem Dateisystem folgen: Unter Linux sind "Ziel" und "ziel"
// zwei Verzeichnisse, und ein Eintrag darf auch nicht über eine symbolische
// Verknüpfung hinauszeigen. Beides steckt in PathBoundary.
if (!PathBoundary.IsInside(full, root))
throw new BackupException($"Eintrag '{relative}' zeigt aus dem Zielverzeichnis heraus.");
return full;