mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
[AppleSingle] Use new source generator based big endian marshaller
This commit is contained in:
@@ -35,6 +35,7 @@ using System.Diagnostics.CodeAnalysis;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using Aaru.CommonTypes.Attributes;
|
||||||
using Aaru.CommonTypes.Enums;
|
using Aaru.CommonTypes.Enums;
|
||||||
using Aaru.CommonTypes.Interfaces;
|
using Aaru.CommonTypes.Interfaces;
|
||||||
using Aaru.Helpers;
|
using Aaru.Helpers;
|
||||||
@@ -46,7 +47,7 @@ namespace Aaru.Filters;
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
/// <summary>Decodes AppleSingle files</summary>
|
/// <summary>Decodes AppleSingle files</summary>
|
||||||
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
||||||
public sealed class AppleSingle : IFilter
|
public sealed partial class AppleSingle : IFilter
|
||||||
{
|
{
|
||||||
const uint MAGIC = 0x00051600;
|
const uint MAGIC = 0x00051600;
|
||||||
const uint VERSION = 0x00010000;
|
const uint VERSION = 0x00010000;
|
||||||
@@ -164,7 +165,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
Array.Copy(buffer, 0, hdrB, 0, 26);
|
Array.Copy(buffer, 0, hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
||||||
|
|
||||||
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
||||||
}
|
}
|
||||||
@@ -177,7 +178,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
stream.Seek(0, SeekOrigin.Begin);
|
stream.Seek(0, SeekOrigin.Begin);
|
||||||
stream.EnsureRead(hdrB, 0, 26);
|
stream.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
||||||
|
|
||||||
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
return _header is { magic: MAGIC, version: VERSION or VERSION2 };
|
||||||
}
|
}
|
||||||
@@ -193,7 +194,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
fstream.EnsureRead(hdrB, 0, 26);
|
fstream.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
||||||
|
|
||||||
fstream.Close();
|
fstream.Close();
|
||||||
|
|
||||||
@@ -208,7 +209,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
ms.EnsureRead(hdrB, 0, 26);
|
ms.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
||||||
|
|
||||||
var entries = new Entry[_header.entries];
|
var entries = new Entry[_header.entries];
|
||||||
|
|
||||||
@@ -216,7 +217,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
{
|
{
|
||||||
var entry = new byte[12];
|
var entry = new byte[12];
|
||||||
ms.EnsureRead(entry, 0, 12);
|
ms.EnsureRead(entry, 0, 12);
|
||||||
entries[i] = Marshal.ByteArrayToStructureBigEndian<Entry>(entry);
|
entries[i] = Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreationTime = DateTime.UtcNow;
|
CreationTime = DateTime.UtcNow;
|
||||||
@@ -235,7 +236,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
var datesB = new byte[16];
|
var datesB = new byte[16];
|
||||||
ms.EnsureRead(datesB, 0, 16);
|
ms.EnsureRead(datesB, 0, 16);
|
||||||
|
|
||||||
FileDates dates = Marshal.ByteArrayToStructureBigEndian<FileDates>(datesB);
|
FileDates dates = Marshal.ByteArrayToStructureBigEndianGenerated<FileDates>(datesB);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(dates.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(dates.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(dates.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(dates.modificationDate);
|
||||||
@@ -248,28 +249,29 @@ public sealed class AppleSingle : IFilter
|
|||||||
|
|
||||||
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndian<MacFileInfo>(finfo);
|
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndianGenerated<MacFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
ProDOSFileInfo prodosinfo = Marshal.ByteArrayToStructureBigEndian<ProDOSFileInfo>(finfo);
|
ProDOSFileInfo prodosinfo =
|
||||||
|
Marshal.ByteArrayToStructureBigEndianGenerated<ProDOSFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndian<UnixFileInfo>(finfo);
|
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndianGenerated<UnixFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndian<DOSFileInfo>(finfo);
|
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndianGenerated<DOSFileInfo>(finfo);
|
||||||
|
|
||||||
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
||||||
}
|
}
|
||||||
@@ -296,7 +298,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
stream.EnsureRead(hdrB, 0, 26);
|
stream.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
||||||
|
|
||||||
var entries = new Entry[_header.entries];
|
var entries = new Entry[_header.entries];
|
||||||
|
|
||||||
@@ -304,7 +306,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
{
|
{
|
||||||
var entry = new byte[12];
|
var entry = new byte[12];
|
||||||
stream.EnsureRead(entry, 0, 12);
|
stream.EnsureRead(entry, 0, 12);
|
||||||
entries[i] = Marshal.ByteArrayToStructureBigEndian<Entry>(entry);
|
entries[i] = Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreationTime = DateTime.UtcNow;
|
CreationTime = DateTime.UtcNow;
|
||||||
@@ -323,7 +325,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
var datesB = new byte[16];
|
var datesB = new byte[16];
|
||||||
stream.EnsureRead(datesB, 0, 16);
|
stream.EnsureRead(datesB, 0, 16);
|
||||||
|
|
||||||
FileDates dates = Marshal.ByteArrayToStructureBigEndian<FileDates>(datesB);
|
FileDates dates = Marshal.ByteArrayToStructureBigEndianGenerated<FileDates>(datesB);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(dates.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(dates.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(dates.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(dates.modificationDate);
|
||||||
@@ -336,28 +338,29 @@ public sealed class AppleSingle : IFilter
|
|||||||
|
|
||||||
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndian<MacFileInfo>(finfo);
|
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndianGenerated<MacFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
ProDOSFileInfo prodosinfo = Marshal.ByteArrayToStructureBigEndian<ProDOSFileInfo>(finfo);
|
ProDOSFileInfo prodosinfo =
|
||||||
|
Marshal.ByteArrayToStructureBigEndianGenerated<ProDOSFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndian<UnixFileInfo>(finfo);
|
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndianGenerated<UnixFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndian<DOSFileInfo>(finfo);
|
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndianGenerated<DOSFileInfo>(finfo);
|
||||||
|
|
||||||
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
||||||
}
|
}
|
||||||
@@ -385,7 +388,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
|
|
||||||
var hdrB = new byte[26];
|
var hdrB = new byte[26];
|
||||||
fs.EnsureRead(hdrB, 0, 26);
|
fs.EnsureRead(hdrB, 0, 26);
|
||||||
_header = Marshal.ByteArrayToStructureBigEndian<Header>(hdrB);
|
_header = Marshal.ByteArrayToStructureBigEndianGenerated<Header>(hdrB);
|
||||||
|
|
||||||
var entries = new Entry[_header.entries];
|
var entries = new Entry[_header.entries];
|
||||||
|
|
||||||
@@ -393,7 +396,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
{
|
{
|
||||||
var entry = new byte[12];
|
var entry = new byte[12];
|
||||||
fs.EnsureRead(entry, 0, 12);
|
fs.EnsureRead(entry, 0, 12);
|
||||||
entries[i] = Marshal.ByteArrayToStructureBigEndian<Entry>(entry);
|
entries[i] = Marshal.ByteArrayToStructureBigEndianGenerated<Entry>(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreationTime = DateTime.UtcNow;
|
CreationTime = DateTime.UtcNow;
|
||||||
@@ -412,7 +415,7 @@ public sealed class AppleSingle : IFilter
|
|||||||
var datesB = new byte[16];
|
var datesB = new byte[16];
|
||||||
fs.EnsureRead(datesB, 0, 16);
|
fs.EnsureRead(datesB, 0, 16);
|
||||||
|
|
||||||
FileDates dates = Marshal.ByteArrayToStructureBigEndian<FileDates>(datesB);
|
FileDates dates = Marshal.ByteArrayToStructureBigEndianGenerated<FileDates>(datesB);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(dates.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(dates.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(dates.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(dates.modificationDate);
|
||||||
@@ -425,28 +428,29 @@ public sealed class AppleSingle : IFilter
|
|||||||
|
|
||||||
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
if(_macintoshHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndian<MacFileInfo>(finfo);
|
MacFileInfo macinfo = Marshal.ByteArrayToStructureBigEndianGenerated<MacFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(macinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(macinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_proDosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
ProDOSFileInfo prodosinfo = Marshal.ByteArrayToStructureBigEndian<ProDOSFileInfo>(finfo);
|
ProDOSFileInfo prodosinfo =
|
||||||
|
Marshal.ByteArrayToStructureBigEndianGenerated<ProDOSFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
CreationTime = DateHandlers.MacToDateTime(prodosinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
LastWriteTime = DateHandlers.MacToDateTime(prodosinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
else if(_unixHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndian<UnixFileInfo>(finfo);
|
UnixFileInfo unixinfo = Marshal.ByteArrayToStructureBigEndianGenerated<UnixFileInfo>(finfo);
|
||||||
|
|
||||||
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
CreationTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.creationDate);
|
||||||
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
LastWriteTime = DateHandlers.UnixUnsignedToDateTime(unixinfo.modificationDate);
|
||||||
}
|
}
|
||||||
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
else if(_dosHome.SequenceEqual(_header.homeFilesystem))
|
||||||
{
|
{
|
||||||
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndian<DOSFileInfo>(finfo);
|
DOSFileInfo dosinfo = Marshal.ByteArrayToStructureBigEndianGenerated<DOSFileInfo>(finfo);
|
||||||
|
|
||||||
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
LastWriteTime = DateHandlers.DosToDateTime(dosinfo.modificationDate, dosinfo.modificationTime);
|
||||||
}
|
}
|
||||||
@@ -495,11 +499,12 @@ public sealed class AppleSingle : IFilter
|
|||||||
#region Nested type: DOSFileInfo
|
#region Nested type: DOSFileInfo
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||||
readonly struct DOSFileInfo
|
[SwapEndian]
|
||||||
|
struct DOSFileInfo
|
||||||
{
|
{
|
||||||
public readonly ushort modificationDate;
|
public ushort modificationDate;
|
||||||
public readonly ushort modificationTime;
|
public ushort modificationTime;
|
||||||
public readonly ushort attributes;
|
public ushort attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -507,11 +512,12 @@ public sealed class AppleSingle : IFilter
|
|||||||
#region Nested type: Entry
|
#region Nested type: Entry
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||||
readonly struct Entry
|
[SwapEndian]
|
||||||
|
struct Entry
|
||||||
{
|
{
|
||||||
public readonly uint id;
|
public uint id;
|
||||||
public readonly uint offset;
|
public uint offset;
|
||||||
public readonly uint length;
|
public uint length;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -519,12 +525,13 @@ public sealed class AppleSingle : IFilter
|
|||||||
#region Nested type: FileDates
|
#region Nested type: FileDates
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||||
readonly struct FileDates
|
[SwapEndian]
|
||||||
|
struct FileDates
|
||||||
{
|
{
|
||||||
public readonly uint creationDate;
|
public uint creationDate;
|
||||||
public readonly uint modificationDate;
|
public uint modificationDate;
|
||||||
public readonly uint backupDate;
|
public uint backupDate;
|
||||||
public readonly uint accessDate;
|
public uint accessDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -532,13 +539,14 @@ public sealed class AppleSingle : IFilter
|
|||||||
#region Nested type: Header
|
#region Nested type: Header
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||||
readonly struct Header
|
[SwapEndian]
|
||||||
|
struct Header
|
||||||
{
|
{
|
||||||
public readonly uint magic;
|
public uint magic;
|
||||||
public readonly uint version;
|
public uint version;
|
||||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
|
||||||
public readonly byte[] homeFilesystem;
|
public byte[] homeFilesystem;
|
||||||
public readonly ushort entries;
|
public ushort entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -546,12 +554,13 @@ public sealed class AppleSingle : IFilter
|
|||||||
#region Nested type: MacFileInfo
|
#region Nested type: MacFileInfo
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||||
readonly struct MacFileInfo
|
[SwapEndian]
|
||||||
|
struct MacFileInfo
|
||||||
{
|
{
|
||||||
public readonly uint creationDate;
|
public uint creationDate;
|
||||||
public readonly uint modificationDate;
|
public uint modificationDate;
|
||||||
public readonly uint backupDate;
|
public uint backupDate;
|
||||||
public readonly uint accessDate;
|
public uint accessDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -559,14 +568,15 @@ public sealed class AppleSingle : IFilter
|
|||||||
#region Nested type: ProDOSFileInfo
|
#region Nested type: ProDOSFileInfo
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||||
readonly struct ProDOSFileInfo
|
[SwapEndian]
|
||||||
|
struct ProDOSFileInfo
|
||||||
{
|
{
|
||||||
public readonly uint creationDate;
|
public uint creationDate;
|
||||||
public readonly uint modificationDate;
|
public uint modificationDate;
|
||||||
public readonly uint backupDate;
|
public uint backupDate;
|
||||||
public readonly ushort access;
|
public ushort access;
|
||||||
public readonly ushort fileType;
|
public ushort fileType;
|
||||||
public readonly uint auxType;
|
public uint auxType;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -574,11 +584,12 @@ public sealed class AppleSingle : IFilter
|
|||||||
#region Nested type: UnixFileInfo
|
#region Nested type: UnixFileInfo
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
||||||
readonly struct UnixFileInfo
|
[SwapEndian]
|
||||||
|
struct UnixFileInfo
|
||||||
{
|
{
|
||||||
public readonly uint creationDate;
|
public uint creationDate;
|
||||||
public readonly uint accessDate;
|
public uint accessDate;
|
||||||
public readonly uint modificationDate;
|
public uint modificationDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
Reference in New Issue
Block a user