mirror of
https://github.com/claunia/libexeinfo.git
synced 2025-12-16 19:14:24 +00:00
Add MagiC operating system detection.
This commit is contained in:
@@ -109,9 +109,8 @@ namespace libexeinfo
|
||||
public bool Recognized { get; private set; }
|
||||
public string Type { get; private set; }
|
||||
public IEnumerable<Architecture> Architectures => new[] {Architecture.M68K};
|
||||
public OperatingSystem RequiredOperatingSystem =>
|
||||
new OperatingSystem {Name = Header.mint == MINT_SIGNATURE ? "MiNT" : "Atari TOS"};
|
||||
public IEnumerable<string> Strings { get; private set; }
|
||||
public OperatingSystem RequiredOperatingSystem { get; private set; }
|
||||
public IEnumerable<string> Strings { get; private set; }
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
@@ -122,8 +121,8 @@ namespace libexeinfo
|
||||
byte[] buffer = new byte[Marshal.SizeOf(typeof(AtariHeader))];
|
||||
BaseStream.Position = 0;
|
||||
BaseStream.Read(buffer, 0, buffer.Length);
|
||||
Header = BigEndianMarshal.ByteArrayToStructureBigEndian<AtariHeader>(buffer);
|
||||
Recognized = Header.signature == SIGNATURE;
|
||||
Header = BigEndianMarshal.ByteArrayToStructureBigEndian<AtariHeader>(buffer);
|
||||
Recognized = Header.signature == SIGNATURE;
|
||||
List<string> strings = new List<string>();
|
||||
|
||||
if(!Recognized) return;
|
||||
@@ -145,6 +144,8 @@ namespace libexeinfo
|
||||
}
|
||||
}
|
||||
|
||||
RequiredOperatingSystem = new OperatingSystem {Name = Header.mint == MINT_SIGNATURE ? "MiNT" : "Atari TOS"};
|
||||
|
||||
if(ResourceStream == null) return;
|
||||
|
||||
buffer = new byte[Marshal.SizeOf(typeof(GEM.GemResourceHeader))];
|
||||
@@ -161,7 +162,9 @@ namespace libexeinfo
|
||||
buffer = new byte[Marshal.SizeOf(typeof(GEM.MagiCResourceHeader))];
|
||||
ResourceStream.Position = 0;
|
||||
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);
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using Claunia.Encoding;
|
||||
|
||||
namespace libexeinfo
|
||||
@@ -135,7 +134,7 @@ namespace libexeinfo
|
||||
|
||||
if(!Recognized) return;
|
||||
|
||||
Type = "DOS Executable (MZ)";
|
||||
Type = "DOS Executable (MZ)";
|
||||
RequiredOperatingSystem = new OperatingSystem {Name = "DOS"};
|
||||
|
||||
if(ResourceStream == null) return;
|
||||
@@ -156,7 +155,9 @@ namespace libexeinfo
|
||||
buffer = new byte[Marshal.SizeOf(typeof(GEM.MagiCResourceHeader))];
|
||||
ResourceStream.Position = 0;
|
||||
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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user