2015-12-30 11:19:42 +00:00
|
|
|
|
using System.IO;
|
|
|
|
|
|
using SharpCompress.Common.Tar.Headers;
|
|
|
|
|
|
using SharpCompress.IO;
|
|
|
|
|
|
|
|
|
|
|
|
namespace SharpCompress.Common.Tar
|
|
|
|
|
|
{
|
2020-05-23 16:27:55 -07:00
|
|
|
|
internal sealed class TarFilePart : FilePart
|
2015-12-30 11:19:42 +00:00
|
|
|
|
{
|
2017-07-17 10:53:20 -04:00
|
|
|
|
private readonly Stream _seekableStream;
|
2015-12-30 11:19:42 +00:00
|
|
|
|
|
|
|
|
|
|
internal TarFilePart(TarHeader header, Stream seekableStream)
|
2017-07-17 10:53:20 -04:00
|
|
|
|
: base(header.ArchiveEncoding)
|
2015-12-30 11:19:42 +00:00
|
|
|
|
{
|
2018-05-05 19:35:58 +01:00
|
|
|
|
_seekableStream = seekableStream;
|
2015-12-30 11:19:42 +00:00
|
|
|
|
Header = header;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2016-09-26 10:55:52 +01:00
|
|
|
|
internal TarHeader Header { get; }
|
2015-12-30 11:19:42 +00:00
|
|
|
|
|
2017-05-19 10:52:49 +01:00
|
|
|
|
internal override string FilePartName => Header.Name;
|
2015-12-30 11:19:42 +00:00
|
|
|
|
|
|
|
|
|
|
internal override Stream GetCompressedStream()
|
|
|
|
|
|
{
|
2017-07-17 10:53:20 -04:00
|
|
|
|
if (_seekableStream != null)
|
2015-12-30 11:19:42 +00:00
|
|
|
|
{
|
2020-05-23 16:27:55 -07:00
|
|
|
|
_seekableStream.Position = Header.DataStartPosition!.Value;
|
2020-07-20 12:57:39 -04:00
|
|
|
|
return new TarReadOnlySubStream(_seekableStream, Header.Size);
|
2015-12-30 11:19:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
return Header.PackedStream;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-05-23 16:27:55 -07:00
|
|
|
|
internal override Stream? GetRawStream()
|
2015-12-30 11:19:42 +00:00
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2013-04-28 12:32:55 +01:00
|
|
|
|
}
|