public static ParseOctal ( byte header, int offset, int length ) : long | ||
header | byte | The header buffer from which to parse. |
offset | int | The offset into the buffer from which to parse. |
length | int | The number of header bytes to parse. |
Результат | long |
/// <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) { if (header == null) { throw new ArgumentNullException("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... isChecksumValid = Checksum == TarHeader.MakeCheckSum(header); }
private static long ParseBinaryOrOctal(byte[] header, int offset, int length) { if (header[offset] >= 128) { long num = 0L; for (int i = length - 8; i < length; i++) { num = (num << 8 | (long)header[offset + i]); } return(num); } return(TarHeader.ParseOctal(header, offset, length)); }
/// <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); 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); offset += TarHeader.NAMELEN; magic = TarHeader.ParseName(header, offset, TarHeader.MAGICLEN); offset += TarHeader.MAGICLEN; version = TarHeader.ParseName(header, offset, TarHeader.VERSIONLEN); offset += TarHeader.VERSIONLEN; userName = TarHeader.ParseName(header, offset, TarHeader.UNAMELEN); offset += TarHeader.UNAMELEN; groupName = TarHeader.ParseName(header, offset, TarHeader.GNAMELEN); 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... }
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)); }