Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        /// <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);
            }
        }