2015-12-30 11:19:42 +00:00
|
|
|
|
using System.IO;
|
|
|
|
|
|
using SharpCompress.Common.Tar.Headers;
|
|
|
|
|
|
using SharpCompress.IO;
|
|
|
|
|
|
|
|
|
|
|
|
namespace SharpCompress.Common.Tar
|
|
|
|
|
|
{
|
|
|
|
|
|
internal class TarFilePart : FilePart
|
|
|
|
|
|
{
|
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
|
|
|
|
{
|
2017-07-17 10:53:20 -04:00
|
|
|
|
this._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
|
|
|
|
{
|
2017-07-17 10:53:20 -04:00
|
|
|
|
_seekableStream.Position = Header.DataStartPosition.Value;
|
|
|
|
|
|
return new ReadOnlySubStream(_seekableStream, Header.Size);
|
2015-12-30 11:19:42 +00:00
|
|
|
|
}
|
|
|
|
|
|
return Header.PackedStream;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
internal override Stream GetRawStream()
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2013-04-28 12:32:55 +01:00
|
|
|
|
}
|