Files
Aaru/Aaru.Archives/Amg/Structs.cs

68 lines
1.8 KiB
C#
Raw Normal View History

2025-09-05 03:07:50 +01:00
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace Aaru.Archives;
public sealed partial class Amg
{
#region Nested type: ArcHeader
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
readonly struct ArcHeader
{
public readonly ushort magic;
public readonly byte version;
public readonly byte padding;
public readonly ushort files;
public readonly uint size;
public readonly ushort commentLength;
}
2025-09-05 03:07:50 +01:00
#endregion
#region Nested type: FileEntry
struct FileEntry
{
public uint Uncompressed;
public uint Compressed;
public DateTime LastWrite;
public FileAttributes Attributes;
public byte Flags;
public uint Crc;
public string Filename;
public string Comment;
public long Offset;
public override string ToString() => Filename;
}
#endregion
#region Nested type: FileHeader
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
readonly struct FileHeader
{
public readonly ushort magic;
public readonly uint compressed;
public readonly uint uncompressed;
public readonly ushort time;
public readonly ushort date;
public readonly byte attr;
public readonly byte flags;
// Something changes in processing when 0x80 is set
public readonly byte unknown;
public readonly uint crc;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public readonly byte[] filename;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public readonly byte[] extension;
public readonly byte pathLength;
public readonly ushort commentLength;
}
#endregion
}