From db7252b66f008d7bb9d842cfdff9a6ee18a6d3d2 Mon Sep 17 00:00:00 2001 From: Carl Johnsen Date: Mon, 23 Feb 2026 20:56:10 +0100 Subject: [PATCH] Tweaked MacOS partition table information helper --- .../DiskImage/MacOSDiskImageHelper.cs | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/Duplicati/UnitTest/DiskImage/MacOSDiskImageHelper.cs b/Duplicati/UnitTest/DiskImage/MacOSDiskImageHelper.cs index 26d017252..b1848b766 100644 --- a/Duplicati/UnitTest/DiskImage/MacOSDiskImageHelper.cs +++ b/Duplicati/UnitTest/DiskImage/MacOSDiskImageHelper.cs @@ -471,9 +471,9 @@ namespace Duplicati.UnitTest.DiskImage var parts = line.Split([':'], 2); switch (parts[0].Trim()) { - case "Device Node": - if (!string.Equals(parts[1].Trim(), diskIdentifier, StringComparison.OrdinalIgnoreCase)) - throw new InvalidOperationException($"Disk identifier mismatch in diskutil info output: expected {diskIdentifier}, got {parts[1].Trim()}"); + case "Device Identifier": + if (!diskIdentifier.EndsWith(parts[1].Trim(), StringComparison.OrdinalIgnoreCase)) + throw new InvalidOperationException($"Disk identifier mismatch in diskutil info output: {diskIdentifier} doesn't end with {parts[1].Trim()}"); break; case "Content (IOContent)": tableType = parts[1].Trim() switch @@ -484,23 +484,9 @@ namespace Duplicati.UnitTest.DiskImage }; break; case "Disk Size": - var sizePart = parts[1].Trim().Split(' ').FirstOrDefault(); - var unitPart = parts[1].Trim().Split(' ').Skip(1).FirstOrDefault(); - if (sizePart != null && unitPart != null) - { - if (long.TryParse(sizePart, out long parsedSize)) - { - size = unitPart switch - { - "TB" => parsedSize * 1_000_000_000_000, - "GB" => parsedSize * 1_000_000_000, - "MB" => parsedSize * 1_000_000, - "KB" => parsedSize * 1_000, - "B" => parsedSize, - _ => -1 - }; - } - } + var totalbytesPart = parts[1].Trim().Split(' ').Skip(2).FirstOrDefault()?.TrimStart('(').TrimEnd(')'); + if (totalbytesPart is not null) + size = long.TryParse(totalbytesPart, out long parsedSize) ? parsedSize : -1; break; case "Device Block Size": var sectorSizePart = parts[1].Trim().Split(' ').FirstOrDefault();