From 5b86c40d5b8ff493e701b9b8170b934b6451cc56 Mon Sep 17 00:00:00 2001 From: Brendan Grant Date: Sat, 13 Feb 2021 13:34:57 -0600 Subject: [PATCH] Properly detect if RAR is complete at the end or not --- src/SharpCompress/Archives/Rar/RarArchiveEntry.cs | 2 +- src/SharpCompress/Common/Rar/Headers/FileHeader.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/SharpCompress/Archives/Rar/RarArchiveEntry.cs b/src/SharpCompress/Archives/Rar/RarArchiveEntry.cs index c695a8b97..dbdbd8064 100644 --- a/src/SharpCompress/Archives/Rar/RarArchiveEntry.cs +++ b/src/SharpCompress/Archives/Rar/RarArchiveEntry.cs @@ -72,7 +72,7 @@ public bool IsComplete { get { - return parts.Select(fp => fp.FileHeader).Any(fh => !fh.IsSplitAfter); + return parts.Select(fp => fp.FileHeader).Any(fh => !fh.IsSplitBefore && !fh.IsSplitAfter); } } diff --git a/src/SharpCompress/Common/Rar/Headers/FileHeader.cs b/src/SharpCompress/Common/Rar/Headers/FileHeader.cs index 11d7883f3..2c361a09c 100644 --- a/src/SharpCompress/Common/Rar/Headers/FileHeader.cs +++ b/src/SharpCompress/Common/Rar/Headers/FileHeader.cs @@ -437,6 +437,7 @@ internal uint FileCrc internal long DataStartPosition { get; set; } public Stream PackedStream { get; set; } + public bool IsSplitBefore => IsRar5 ? HasHeaderFlag(HeaderFlagsV5.SPLIT_BEFORE) : HasFlag(FileFlagsV4.SPLIT_BEFORE); public bool IsSplitAfter => IsRar5 ? HasHeaderFlag(HeaderFlagsV5.SPLIT_AFTER) : HasFlag(FileFlagsV4.SPLIT_AFTER); public bool IsDirectory => HasFlag(IsRar5 ? FileFlagsV5.DIRECTORY : FileFlagsV4.DIRECTORY);