Add MagiC operating system detection.

This commit is contained in:
2018-03-02 12:27:53 +00:00
parent 90f178d5dd
commit 54edd46223
2 changed files with 13 additions and 9 deletions

View File

@@ -109,8 +109,7 @@ namespace libexeinfo
public bool Recognized { get; private set; } public bool Recognized { get; private set; }
public string Type { get; private set; } public string Type { get; private set; }
public IEnumerable<Architecture> Architectures => new[] {Architecture.M68K}; public IEnumerable<Architecture> Architectures => new[] {Architecture.M68K};
public OperatingSystem RequiredOperatingSystem => public OperatingSystem RequiredOperatingSystem { get; private set; }
new OperatingSystem {Name = Header.mint == MINT_SIGNATURE ? "MiNT" : "Atari TOS"};
public IEnumerable<string> Strings { get; private set; } public IEnumerable<string> Strings { get; private set; }
void Initialize() void Initialize()
@@ -145,6 +144,8 @@ namespace libexeinfo
} }
} }
RequiredOperatingSystem = new OperatingSystem {Name = Header.mint == MINT_SIGNATURE ? "MiNT" : "Atari TOS"};
if(ResourceStream == null) return; if(ResourceStream == null) return;
buffer = new byte[Marshal.SizeOf(typeof(GEM.GemResourceHeader))]; buffer = new byte[Marshal.SizeOf(typeof(GEM.GemResourceHeader))];
@@ -161,7 +162,9 @@ namespace libexeinfo
buffer = new byte[Marshal.SizeOf(typeof(GEM.MagiCResourceHeader))]; buffer = new byte[Marshal.SizeOf(typeof(GEM.MagiCResourceHeader))];
ResourceStream.Position = 0; ResourceStream.Position = 0;
ResourceStream.Read(buffer, 0, buffer.Length); ResourceStream.Read(buffer, 0, buffer.Length);
ResourceHeader = BigEndianMarshal.ByteArrayToStructureBigEndian<GEM.MagiCResourceHeader>(buffer); ResourceHeader =
BigEndianMarshal.ByteArrayToStructureBigEndian<GEM.MagiCResourceHeader>(buffer);
RequiredOperatingSystem = new OperatingSystem {Name = "MagiC"};
} }
else ResourceHeader = GEM.GemToMagiC(gemResourceHeader); else ResourceHeader = GEM.GemToMagiC(gemResourceHeader);

View File

@@ -29,7 +29,6 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Security;
using Claunia.Encoding; using Claunia.Encoding;
namespace libexeinfo namespace libexeinfo
@@ -156,7 +155,9 @@ namespace libexeinfo
buffer = new byte[Marshal.SizeOf(typeof(GEM.MagiCResourceHeader))]; buffer = new byte[Marshal.SizeOf(typeof(GEM.MagiCResourceHeader))];
ResourceStream.Position = 0; ResourceStream.Position = 0;
ResourceStream.Read(buffer, 0, buffer.Length); ResourceStream.Read(buffer, 0, buffer.Length);
ResourceHeader = BigEndianMarshal.ByteArrayToStructureLittleEndian<GEM.MagiCResourceHeader>(buffer); ResourceHeader =
BigEndianMarshal.ByteArrayToStructureLittleEndian<GEM.MagiCResourceHeader>(buffer);
RequiredOperatingSystem = new OperatingSystem {Name = "MagiC"};
} }
else ResourceHeader = GEM.GemToMagiC(gemResourceHeader); else ResourceHeader = GEM.GemToMagiC(gemResourceHeader);