diff --git a/Duplicati/Library/Compression/Duplicati.Library.Compression.csproj b/Duplicati/Library/Compression/Duplicati.Library.Compression.csproj index 70923c721..37c70dd30 100644 --- a/Duplicati/Library/Compression/Duplicati.Library.Compression.csproj +++ b/Duplicati/Library/Compression/Duplicati.Library.Compression.csproj @@ -8,7 +8,7 @@ - + diff --git a/Duplicati/Library/Compression/ZipCompression/FileArchiveZip.cs b/Duplicati/Library/Compression/ZipCompression/FileArchiveZip.cs index 5a11d4a58..a9b6d4974 100644 --- a/Duplicati/Library/Compression/ZipCompression/FileArchiveZip.cs +++ b/Duplicati/Library/Compression/ZipCompression/FileArchiveZip.cs @@ -198,6 +198,7 @@ namespace Duplicati.Library.Compression.ZipCompression CompressionType.GZip.ToString(), CompressionType.Xz.ToString(), CompressionType.Deflate64.ToString(), + CompressionType.ZStandard.ToString() }; return new List([ diff --git a/Duplicati/Library/Compression/ZipCompression/SharpCompressZipArchive.cs b/Duplicati/Library/Compression/ZipCompression/SharpCompressZipArchive.cs index 85127e72f..96ea90201 100644 --- a/Duplicati/Library/Compression/ZipCompression/SharpCompressZipArchive.cs +++ b/Duplicati/Library/Compression/ZipCompression/SharpCompressZipArchive.cs @@ -115,14 +115,13 @@ public class SharpCompressZipArchive : IZipArchive if (mode == ArchiveMode.Write) { - var compression = new ZipWriterOptions(CompressionType.Deflate) + var compression = new ZipWriterOptions(m_compressionType) { - CompressionType = m_compressionType, - DeflateCompressionLevel = m_defaultCompressionLevel, + CompressionLevel = (int)m_defaultCompressionLevel, UseZip64 = USE_ZIP64 }; - m_writer = WriterFactory.Open(m_stream, ArchiveType.Zip, compression); + m_writer = WriterFactory.OpenWriter(m_stream, ArchiveType.Zip, compression); m_flushBufferSize = Constants.END_OF_CENTRAL_DIRECTORY_SIZE; } } @@ -134,7 +133,7 @@ public class SharpCompressZipArchive : IZipArchive if (m_archive == null) { m_stream.Position = 0; - m_archive = ArchiveFactory.Open(m_stream); + m_archive = ArchiveFactory.OpenArchive(m_stream, new ReaderOptions()); } return m_archive; } @@ -155,12 +154,8 @@ public class SharpCompressZipArchive : IZipArchive public Stream GetStreamFromReader(IEntry entry) { - SharpCompress.Readers.Zip.ZipReader? rd = null; - - try - { - rd = SharpCompress.Readers.Zip.ZipReader.Open(m_stream); + using (var rd = SharpCompress.Readers.Zip.ZipReader.OpenReader(m_stream, new ReaderOptions())) while (rd.MoveToNextEntry()) if (entry.Key == rd.Entry.Key) return new StreamWrapper(rd.OpenEntryStream(), stream => @@ -168,15 +163,7 @@ public class SharpCompressZipArchive : IZipArchive rd.Dispose(); }); - throw new Exception(string.Format("Stream not found: {0}", entry.Key)); - } - catch - { - if (rd != null) - rd.Dispose(); - - throw; - } + throw new Exception(string.Format("Stream not found: {0}", entry.Key)); } /// @@ -294,7 +281,7 @@ public class SharpCompressZipArchive : IZipArchive try { - using (var rd = SharpCompress.Readers.Zip.ZipReader.Open(m_stream, new ReaderOptions() { LookForHeader = false })) + using (var rd = SharpCompress.Readers.Zip.ZipReader.OpenReader(m_stream, new ReaderOptions() { LookForHeader = false })) while (rd.MoveToNextEntry()) { if (string.IsNullOrWhiteSpace(rd.Entry.Key)) @@ -362,7 +349,7 @@ public class SharpCompressZipArchive : IZipArchive return ((ZipWriter)m_writer!).WriteToStream(file, new ZipWriterEntryOptions() { - DeflateCompressionLevel = hint == CompressionHint.Noncompressible ? SharpCompress.Compressors.Deflate.CompressionLevel.None : m_defaultCompressionLevel, + CompressionLevel = hint == CompressionHint.Noncompressible ? (int)CompressionLevel.None : (int)m_defaultCompressionLevel, ModificationDateTime = lastWrite, CompressionType = m_compressionType });