From a4b594121e34a9ffa589b9205b7ee0a9b9b4b229 Mon Sep 17 00:00:00 2001 From: Kenneth Skovhede Date: Thu, 4 Feb 2016 10:35:36 +0100 Subject: [PATCH 1/3] Added code to forward the compression info to the stream, such that it is possible to override the compression level and method on a per-stream basis. --- SharpCompress/Writer/Zip/ZipWriter.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/SharpCompress/Writer/Zip/ZipWriter.cs b/SharpCompress/Writer/Zip/ZipWriter.cs index 1831db22..989a2922 100644 --- a/SharpCompress/Writer/Zip/ZipWriter.cs +++ b/SharpCompress/Writer/Zip/ZipWriter.cs @@ -75,7 +75,7 @@ namespace SharpCompress.Writer.Zip var headersize = (uint)WriteHeader(entryPath, modificationTime, compressionInfo); streamPosition += headersize; - return new ZipWritingStream(this, OutputStream, entry); + return new ZipWritingStream(this, OutputStream, entry, compressionInfo); } private string NormalizeFilename(string filename) @@ -154,16 +154,18 @@ namespace SharpCompress.Writer.Zip private readonly Stream originalStream; private readonly Stream writeStream; private readonly ZipWriter writer; + private readonly ZipCompressionInfo compressionInfo; private CountingWritableSubStream counting; private uint decompressed; - internal ZipWritingStream(ZipWriter writer, Stream originalStream, ZipCentralDirectoryEntry entry) + internal ZipWritingStream(ZipWriter writer, Stream originalStream, ZipCentralDirectoryEntry entry, CompressionInfo compressionInfo = null) { this.writer = writer; this.originalStream = originalStream; writeStream = GetWriteStream(originalStream); this.writer = writer; this.entry = entry; + this.compressionInfo = compressionInfo == null ? writer.zipCompressionInfo : new ZipCompressionInfo(compressionInfo); } public override bool CanRead @@ -196,7 +198,7 @@ namespace SharpCompress.Writer.Zip { counting = new CountingWritableSubStream(writeStream); Stream output = counting; - switch (writer.zipCompressionInfo.Compression) + switch (compressionInfo.Compression) { case ZipCompressionMethod.None: { @@ -204,7 +206,7 @@ namespace SharpCompress.Writer.Zip } case ZipCompressionMethod.Deflate: { - return new DeflateStream(counting, CompressionMode.Compress, writer.zipCompressionInfo.DeflateCompressionLevel, + return new DeflateStream(counting, CompressionMode.Compress, compressionInfo.DeflateCompressionLevel, true); } case ZipCompressionMethod.BZip2: @@ -230,7 +232,7 @@ namespace SharpCompress.Writer.Zip } default: { - throw new NotSupportedException("CompressionMethod: " + writer.zipCompressionInfo.Compression); + throw new NotSupportedException("CompressionMethod: " + compressionInfo.Compression); } } } From ed7f140364b72925783f08d444ec2d368773aab1 Mon Sep 17 00:00:00 2001 From: Kenneth Skovhede Date: Thu, 4 Feb 2016 10:39:02 +0100 Subject: [PATCH 2/3] Whitespace fix --- SharpCompress/Writer/Zip/ZipWriter.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SharpCompress/Writer/Zip/ZipWriter.cs b/SharpCompress/Writer/Zip/ZipWriter.cs index 989a2922..ce69be1e 100644 --- a/SharpCompress/Writer/Zip/ZipWriter.cs +++ b/SharpCompress/Writer/Zip/ZipWriter.cs @@ -75,7 +75,7 @@ namespace SharpCompress.Writer.Zip var headersize = (uint)WriteHeader(entryPath, modificationTime, compressionInfo); streamPosition += headersize; - return new ZipWritingStream(this, OutputStream, entry, compressionInfo); + return new ZipWritingStream(this, OutputStream, entry, compressionInfo); } private string NormalizeFilename(string filename) @@ -158,7 +158,7 @@ namespace SharpCompress.Writer.Zip private CountingWritableSubStream counting; private uint decompressed; - internal ZipWritingStream(ZipWriter writer, Stream originalStream, ZipCentralDirectoryEntry entry, CompressionInfo compressionInfo = null) + internal ZipWritingStream(ZipWriter writer, Stream originalStream, ZipCentralDirectoryEntry entry, CompressionInfo compressionInfo = null) { this.writer = writer; this.originalStream = originalStream; From a05b692fc3594eb2f6143a1e5ce21a58f2230139 Mon Sep 17 00:00:00 2001 From: Kenneth Skovhede Date: Thu, 4 Feb 2016 10:39:58 +0100 Subject: [PATCH 3/3] More whitespace fix --- SharpCompress/Writer/Zip/ZipWriter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SharpCompress/Writer/Zip/ZipWriter.cs b/SharpCompress/Writer/Zip/ZipWriter.cs index ce69be1e..96067796 100644 --- a/SharpCompress/Writer/Zip/ZipWriter.cs +++ b/SharpCompress/Writer/Zip/ZipWriter.cs @@ -154,7 +154,7 @@ namespace SharpCompress.Writer.Zip private readonly Stream originalStream; private readonly Stream writeStream; private readonly ZipWriter writer; - private readonly ZipCompressionInfo compressionInfo; + private readonly ZipCompressionInfo compressionInfo; private CountingWritableSubStream counting; private uint decompressed;