using System.IO; using System.Text; using Aaru.CommonTypes.Interfaces; using Aaru.Helpers; namespace Aaru.Archives; public sealed partial class Ha { #region IArchive Members /// public bool Identify(IFilter filter) { if(filter.DataForkLength < Marshal.SizeOf()) return false; Stream stream = filter.GetDataForkStream(); stream.Position = 0; var hdr = new byte[Marshal.SizeOf()]; stream.ReadExactly(hdr, 0, hdr.Length); HaHeader header = Marshal.ByteArrayToStructureLittleEndian(hdr); // Not a valid magic return header.magic == HA_MAGIC; } /// public void GetInformation(IFilter filter, Encoding encoding, out string information) { information = ""; if(filter.DataForkLength < Marshal.SizeOf()) return; Stream stream = filter.GetDataForkStream(); stream.Position = 0; var hdr = new byte[Marshal.SizeOf()]; stream.ReadExactly(hdr, 0, hdr.Length); HaHeader header = Marshal.ByteArrayToStructureLittleEndian(hdr); // Not a valid magic if(header.magic != HA_MAGIC) return; var sb = new StringBuilder(); sb.AppendLine(Localization.HA_archive); int vertype = stream.ReadByte(); sb.AppendFormat(Localization.Created_with_HA_version_0, vertype >> 4).AppendLine(); sb.AppendFormat(Localization.Archive_contains_0_files, header.count).AppendLine(); information = sb.ToString(); } #endregion }