protected override byte[] GetBuffer() { byte[] buffer = new byte[TarHeader.Length]; TarHeader header = new TarHeader(); header.FileName = _fileName; header.FileLength = _fileLength; header.FileMode = _mode; header.OwnerId = _ownerId; header.GroupId = _groupId; header.ModificationTime = _modificationTime; header.WriteTo(buffer, 0); return buffer; }
/// <summary> /// Initializes a new instance of the TarFile class. /// </summary> /// <param name="fileStream">The Tar file.</param> public TarFile(Stream fileStream) { _fileStream = fileStream; _files = new Dictionary<string, FileRecord>(); TarHeader hdr = new TarHeader(); byte[] hdrBuf = Utilities.ReadFully(_fileStream, TarHeader.Length); hdr.ReadFrom(hdrBuf, 0); while (hdr.FileLength != 0 || !string.IsNullOrEmpty(hdr.FileName)) { FileRecord record = new FileRecord(hdr.FileName, _fileStream.Position, hdr.FileLength); _files.Add(record.Name, record); _fileStream.Position += ((hdr.FileLength + 511) / 512) * 512; hdrBuf = Utilities.ReadFully(_fileStream, TarHeader.Length); hdr.ReadFrom(hdrBuf, 0); } }