public void ParseBuffer(byte[] header) { if (header == null) { throw new ArgumentNullException("header"); } int num = 0; this.name = TarHeader.ParseName(header, num, 100).ToString(); num += 100; this.mode = (int)TarHeader.ParseOctal(header, num, 8); num += 8; this.UserId = (int)TarHeader.ParseOctal(header, num, 8); num += 8; this.GroupId = (int)TarHeader.ParseOctal(header, num, 8); num += 8; this.Size = TarHeader.ParseBinaryOrOctal(header, num, 12); num += 12; this.ModTime = TarHeader.GetDateTimeFromCTime(TarHeader.ParseOctal(header, num, 12)); num += 12; this.checksum = (int)TarHeader.ParseOctal(header, num, 8); num += 8; this.TypeFlag = header[num++]; this.LinkName = TarHeader.ParseName(header, num, 100).ToString(); num += 100; this.Magic = TarHeader.ParseName(header, num, 6).ToString(); num += 6; if (this.Magic == "ustar") { this.Version = TarHeader.ParseName(header, num, 2).ToString(); num += 2; this.UserName = TarHeader.ParseName(header, num, 32).ToString(); num += 32; this.GroupName = TarHeader.ParseName(header, num, 32).ToString(); num += 32; this.DevMajor = (int)TarHeader.ParseOctal(header, num, 8); num += 8; this.DevMinor = (int)TarHeader.ParseOctal(header, num, 8); num += 8; string text = TarHeader.ParseName(header, num, 155).ToString(); if (!string.IsNullOrEmpty(text)) { this.Name = text + '/' + this.Name; } } this.isChecksumValid = (this.Checksum == TarHeader.MakeCheckSum(header)); }