Merge pull request #436 from Numpsy/populate_zip_volume_comment

Changes to populate ZipArchive.ZipVolumne.Comment
This commit is contained in:
Adam Hathcock
2019-01-14 08:14:03 +00:00
committed by GitHub
2 changed files with 31 additions and 9 deletions

View File

@@ -17,7 +17,7 @@ namespace SharpCompress.Common.Zip
{
}
internal IEnumerable<DirectoryEntryHeader> ReadSeekableHeader(Stream stream)
internal IEnumerable<ZipHeader> ReadSeekableHeader(Stream stream)
{
var reader = new BinaryReader(stream);
@@ -51,16 +51,22 @@ namespace SharpCompress.Common.Zip
{
stream.Position = position;
uint signature = reader.ReadUInt32();
var directoryEntryHeader = ReadHeader(signature, reader, _zip64) as DirectoryEntryHeader;
var nextHeader = ReadHeader(signature, reader, _zip64);
position = stream.Position;
if (directoryEntryHeader == null)
{
yield break;
}
//entry could be zero bytes so we need to know that.
directoryEntryHeader.HasData = directoryEntryHeader.CompressedSize != 0;
yield return directoryEntryHeader;
if (nextHeader == null)
yield break;
if (nextHeader is DirectoryEntryHeader entryHeader)
{
//entry could be zero bytes so we need to know that.
entryHeader.HasData = entryHeader.CompressedSize != 0;
yield return entryHeader;
}
else if (nextHeader is DirectoryEndHeader endHeader)
{
yield return endHeader;
}
}
}

View File

@@ -357,6 +357,22 @@ namespace SharpCompress.Test.Zip
}
}
[Fact]
public void Zip_Read_Volume_Comment()
{
using (var reader = ZipArchive.Open(Path.Combine(TEST_ARCHIVES_PATH, "Zip.zip64.zip"), new ReaderOptions()
{
Password = "test"
}))
{
var isComplete = reader.IsComplete;
Assert.Equal(1, reader.Volumes.Count);
string expectedComment = "Encoding:utf-8 || Compression:Deflate levelDefault || Encrypt:None || ZIP64:Always\r\nCreated at 2017-Jan-23 14:10:43 || DotNetZip Tool v1.9.1.8\r\nTest zip64 archive";
Assert.Equal(expectedComment, reader.Volumes.First().Comment);
}
}
[Fact]
public void Zip_BZip2_Pkware_Read()
{