public static ArchiveMemberHeader From(IMAGE_ARCHIVE_MEMBER_HEADER old)
{
string name = Encoding.ASCII.GetString(old.Name).TrimEnd(' ');
string date = Encoding.ASCII.GetString(old.Date).Trim(' ');
string user = Encoding.ASCII.GetString(old.UserID).Trim(' ');
string group = Encoding.ASCII.GetString(old.GroupID).Trim(' ');
string mode = Encoding.ASCII.GetString(old.Mode).Trim(' ');
string size = Encoding.ASCII.GetString(old.Size).Trim(' ');
string endHeader = Encoding.ASCII.GetString(old.EndHeader);
if (endHeader != Constants.IMAGE_ARCHIVE_END)
{
throw new InvalidDataException();
}
ArchiveMemberHeader header = new ArchiveMemberHeader();
int dateSeconds = int.Parse(date);
header.Name = name;
header.Date = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(dateSeconds);
header.UserID = string.IsNullOrEmpty(user) ? null : (int?)int.Parse(user);
header.GroupID = string.IsNullOrEmpty(group) ? null : (int?)int.Parse(group);
header.Mode = (ST_MODE)Convert.ToInt32(mode, 8);
header.Size = string.IsNullOrEmpty(size) ? 0 : int.Parse(size);
return header;
}