diff --git a/src/SharpCompress/Common/SevenZip/SevenZipFilePart.cs b/src/SharpCompress/Common/SevenZip/SevenZipFilePart.cs index 7e6ad5b0f..156d3e711 100644 --- a/src/SharpCompress/Common/SevenZip/SevenZipFilePart.cs +++ b/src/SharpCompress/Common/SevenZip/SevenZipFilePart.cs @@ -67,6 +67,7 @@ public CompressionType CompressionType } } + private const uint K_COPY = 0x0; private const uint K_LZMA2 = 0x21; private const uint K_LZMA = 0x030101; private const uint K_PPMD = 0x030401; @@ -82,6 +83,7 @@ private CompressionType GetCompression() var coder = Folder.NotNull()._coders.First(); return coder._methodId._id switch { + K_COPY => CompressionType.None, K_LZMA or K_LZMA2 => CompressionType.LZMA, K_PPMD => CompressionType.PPMd, K_B_ZIP2 => CompressionType.BZip2, diff --git a/src/SharpCompress/packages.lock.json b/src/SharpCompress/packages.lock.json index 9ebb16774..904860ce8 100644 --- a/src/SharpCompress/packages.lock.json +++ b/src/SharpCompress/packages.lock.json @@ -335,9 +335,9 @@ "net8.0": { "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.17, )", - "resolved": "8.0.17", - "contentHash": "x5/y4l8AtshpBOrCZdlE4txw8K3e3s9meBFeZeR3l8hbbku2V7kK6ojhXvrbjg1rk3G+JqL1BI26gtgc1ZrdUw==" + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "B3etT5XQ2nlWkZGO2m/ytDYrOmSsQG1XNBaM6ZYlX5Ch/tDrMFadr0/mK6gjZwaQc55g+5+WZMw4Cz3m8VEF7g==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/tests/SharpCompress.Test/SevenZip/SevenZipArchiveTests.cs b/tests/SharpCompress.Test/SevenZip/SevenZipArchiveTests.cs index b52d4bc23..829195864 100644 --- a/tests/SharpCompress.Test/SevenZip/SevenZipArchiveTests.cs +++ b/tests/SharpCompress.Test/SevenZip/SevenZipArchiveTests.cs @@ -122,6 +122,25 @@ public void SevenZipArchive_BZip2_Split_FirstFileRead() => //"7Zip.BZip2.split.006", //"7Zip.BZip2.split.007" + [Fact] + public void SevenZipArchive_Copy_StreamRead() => ArchiveStreamRead("7Zip.Copy.7z"); + + [Fact] + public void SevenZipArchive_Copy_PathRead() => ArchiveFileRead("7Zip.Copy.7z"); + + [Fact] + public void SevenZipArchive_Copy_CompressionType() + { + using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "7Zip.Copy.7z"))) + using (var archive = SevenZipArchive.Open(stream)) + { + foreach (var entry in archive.Entries.Where(e => !e.IsDirectory)) + { + Assert.Equal(CompressionType.None, entry.CompressionType); + } + } + } + [Fact] public void SevenZipArchive_ZSTD_StreamRead() => ArchiveStreamRead("7Zip.ZSTD.7z"); diff --git a/tests/TestArchives/Archives/7Zip.Copy.7z b/tests/TestArchives/Archives/7Zip.Copy.7z new file mode 100644 index 000000000..6143ec0d4 Binary files /dev/null and b/tests/TestArchives/Archives/7Zip.Copy.7z differ