private bool IsOpenable(bool needToUncompress, bool needToLoadIntoMemory, out string message)
{
message = null;
if (this._originallyInArchive)
{
if (needToUncompress && this.CompressionMethod != ZipArchiveEntry.CompressionMethodValues.Stored && this.CompressionMethod != ZipArchiveEntry.CompressionMethodValues.Deflate)
{
message = Messages.UnsupportedCompression;
return(false);
}
if ((long)this._diskNumberStart != (ulong)this._archive.NumberOfThisDisk)
{
message = Messages.SplitSpanned;
return(false);
}
if (this._offsetOfLocalHeader > this._archive.ArchiveStream.Length)
{
message = Messages.LocalFileHeaderCorrupt;
return(false);
}
this._archive.ArchiveStream.Seek(this._offsetOfLocalHeader, SeekOrigin.Begin);
if (!ZipLocalFileHeader.TrySkipBlock(this._archive.ArchiveReader))
{
message = Messages.LocalFileHeaderCorrupt;
return(false);
}
if (this.OffsetOfCompressedData + this._compressedSize > this._archive.ArchiveStream.Length)
{
message = Messages.LocalFileHeaderCorrupt;
return(false);
}
if (needToLoadIntoMemory && this._compressedSize > (long)2147483647)
{
message = Messages.EntryTooLarge;
return(false);
}
}
return(true);
}