From 54edd46223e0f5adb01b6c785d62b19ba61b005a Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 2 Mar 2018 12:27:53 +0000 Subject: [PATCH] Add MagiC operating system detection. --- libexeinfo/AtariST/AtariST.cs | 15 +++++++++------ libexeinfo/MZ/MZ.cs | 7 ++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libexeinfo/AtariST/AtariST.cs b/libexeinfo/AtariST/AtariST.cs index 2fdafe6..51049be 100644 --- a/libexeinfo/AtariST/AtariST.cs +++ b/libexeinfo/AtariST/AtariST.cs @@ -109,9 +109,8 @@ namespace libexeinfo public bool Recognized { get; private set; } public string Type { get; private set; } public IEnumerable Architectures => new[] {Architecture.M68K}; - public OperatingSystem RequiredOperatingSystem => - new OperatingSystem {Name = Header.mint == MINT_SIGNATURE ? "MiNT" : "Atari TOS"}; - public IEnumerable Strings { get; private set; } + public OperatingSystem RequiredOperatingSystem { get; private set; } + public IEnumerable 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(buffer); - Recognized = Header.signature == SIGNATURE; + Header = BigEndianMarshal.ByteArrayToStructureBigEndian(buffer); + Recognized = Header.signature == SIGNATURE; List strings = new List(); 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(buffer); + ResourceHeader = + BigEndianMarshal.ByteArrayToStructureBigEndian(buffer); + RequiredOperatingSystem = new OperatingSystem {Name = "MagiC"}; } else ResourceHeader = GEM.GemToMagiC(gemResourceHeader); diff --git a/libexeinfo/MZ/MZ.cs b/libexeinfo/MZ/MZ.cs index 29eddf7..32b200e 100644 --- a/libexeinfo/MZ/MZ.cs +++ b/libexeinfo/MZ/MZ.cs @@ -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(buffer); + ResourceHeader = + BigEndianMarshal.ByteArrayToStructureLittleEndian(buffer); + RequiredOperatingSystem = new OperatingSystem {Name = "MagiC"}; } else ResourceHeader = GEM.GemToMagiC(gemResourceHeader);