[ArchiveTools] Fix 7z archive handling

This commit is contained in:
Matt Nadareski
2016-08-18 15:48:45 -07:00
parent 1837c16969
commit 88edc5afa3

View File

@@ -1,6 +1,8 @@
using SharpCompress.Archive;
using SharpCompress.Archive.Zip;
using SharpCompress.Archive.SevenZip;
using SharpCompress.Common;
using SharpCompress.Common.SevenZip;
using SharpCompress.Reader;
using SharpCompress.Reader.Zip;
using SharpCompress.Writer;
@@ -170,13 +172,27 @@ namespace SabreTools.Helper
}
IReader reader = null;
SevenZipArchive sza = null;
try
{
if (at == ArchiveType.SevenZip && sevenzip != ArchiveScanLevel.External)
{
sza = SevenZipArchive.Open(File.OpenRead(input));
logger.Log("Found archive of type: " + at);
// Create the temp directory
Directory.CreateDirectory(tempdir);
// Extract all files to the temp directory
sza.WriteToDirectory(tempdir, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
encounteredErrors = false;
}
else
{
reader = ReaderFactory.Open(File.OpenRead(input));
logger.Log("Found archive of type: " + at);
if ((at == ArchiveType.Zip && zip != ArchiveScanLevel.External) ||
(at == ArchiveType.SevenZip && sevenzip != ArchiveScanLevel.External) ||
(at == ArchiveType.Rar && rar != ArchiveScanLevel.External))
{
// Create the temp directory
@@ -207,6 +223,7 @@ namespace SabreTools.Helper
encounteredErrors = false;
}
}
}
catch (EndOfStreamException)
{
// Catch this but don't count it as an error because SharpCompress is unsafe
@@ -223,6 +240,7 @@ namespace SabreTools.Helper
finally
{
reader?.Dispose();
sza?.Dispose();
}
return encounteredErrors;