/// <summary> /// Parse TarHeader information from a header buffer. /// </summary> /// <param name="header">The tar entry header buffer to get information from.</param> public void ParseBuffer(byte[] header) { int offset = 0; name = TarHeader.ParseName(header, offset, TarHeader.NAMELEN).ToString(); offset += TarHeader.NAMELEN; mode = (int)TarHeader.ParseOctal(header, offset, TarHeader.MODELEN); offset += TarHeader.MODELEN; UserId = (int)TarHeader.ParseOctal(header, offset, TarHeader.UIDLEN); offset += TarHeader.UIDLEN; GroupId = (int)TarHeader.ParseOctal(header, offset, TarHeader.GIDLEN); offset += TarHeader.GIDLEN; Size = TarHeader.ParseOctal(header, offset, TarHeader.SIZELEN); offset += TarHeader.SIZELEN; ModTime = GetDateTimeFromCTime(TarHeader.ParseOctal(header, offset, TarHeader.MODTIMELEN)); offset += TarHeader.MODTIMELEN; checksum = (int)TarHeader.ParseOctal(header, offset, TarHeader.CHKSUMLEN); offset += TarHeader.CHKSUMLEN; TypeFlag = header[offset++]; LinkName = TarHeader.ParseName(header, offset, TarHeader.NAMELEN).ToString(); offset += TarHeader.NAMELEN; Magic = TarHeader.ParseName(header, offset, TarHeader.MAGICLEN).ToString(); offset += TarHeader.MAGICLEN; Version = TarHeader.ParseName(header, offset, TarHeader.VERSIONLEN).ToString(); offset += TarHeader.VERSIONLEN; UserName = TarHeader.ParseName(header, offset, TarHeader.UNAMELEN).ToString(); offset += TarHeader.UNAMELEN; GroupName = TarHeader.ParseName(header, offset, TarHeader.GNAMELEN).ToString(); offset += TarHeader.GNAMELEN; DevMajor = (int)TarHeader.ParseOctal(header, offset, TarHeader.DEVLEN); offset += TarHeader.DEVLEN; DevMinor = (int)TarHeader.ParseOctal(header, offset, TarHeader.DEVLEN); // Fields past this point not currently parsed or used... // TODO: prefix information. isChecksumValid = Checksum == TarHeader.MakeCheckSum(header); }