From f7bda8a085b3520afaffe1d61c31d9d069114cd9 Mon Sep 17 00:00:00 2001 From: mint Date: Tue, 7 Dec 2021 01:08:20 +0800 Subject: [PATCH 1/2] .Net 6, Base64 and Unix compatible paths --- ColorzCore/App.config | 6 - ColorzCore/ColorzCore.csproj | 134 ++---------------- ColorzCore/ColorzCore.sln | 44 +++--- ColorzCore/IO/IOUtility.cs | 19 ++- ColorzCore/Parser/EAParser.cs | 58 +++++--- .../Directives/IncludeDirective.cs | 18 +-- ColorzCore/Properties/AssemblyInfo.cs | 36 ----- ColorzCore/bin/Debug/ColorzCore.exe.config | 6 - ColorzCore/bin/Release/ColorzCore.exe | Bin 117760 -> 0 bytes 9 files changed, 82 insertions(+), 239 deletions(-) delete mode 100644 ColorzCore/App.config delete mode 100644 ColorzCore/Properties/AssemblyInfo.cs delete mode 100644 ColorzCore/bin/Debug/ColorzCore.exe.config delete mode 100644 ColorzCore/bin/Release/ColorzCore.exe diff --git a/ColorzCore/App.config b/ColorzCore/App.config deleted file mode 100644 index d740e88..0000000 --- a/ColorzCore/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ColorzCore/ColorzCore.csproj b/ColorzCore/ColorzCore.csproj index 842e13f..b9de063 100644 --- a/ColorzCore/ColorzCore.csproj +++ b/ColorzCore/ColorzCore.csproj @@ -1,124 +1,10 @@ - - - - - Debug - AnyCPU - {B98F7CCF-9CAA-406E-88D7-2040FA99F631} - Exe - ColorzCore - ColorzCore - v4.5.2 - 512 - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - bin\32bit\ - x86 - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + Exe + net6.0 + enable + enable + + + diff --git a/ColorzCore/ColorzCore.sln b/ColorzCore/ColorzCore.sln index f0a2e0f..65861dc 100644 --- a/ColorzCore/ColorzCore.sln +++ b/ColorzCore/ColorzCore.sln @@ -1,28 +1,16 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26430.6 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorzCore", "ColorzCore.csproj", "{B98F7CCF-9CAA-406E-88D7-2040FA99F631}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - 32bit|Any CPU = 32bit|Any CPU - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B98F7CCF-9CAA-406E-88D7-2040FA99F631}.32bit|Any CPU.ActiveCfg = 32bit|Any CPU - {B98F7CCF-9CAA-406E-88D7-2040FA99F631}.32bit|Any CPU.Build.0 = 32bit|Any CPU - {B98F7CCF-9CAA-406E-88D7-2040FA99F631}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B98F7CCF-9CAA-406E-88D7-2040FA99F631}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B98F7CCF-9CAA-406E-88D7-2040FA99F631}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B98F7CCF-9CAA-406E-88D7-2040FA99F631}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {21D63160-BE4B-46B7-995A-04D8AC7B4472} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorzCore", "ColorzCore.csproj", "{CFFB1609-2FCD-42E9-B335-C9C86F7DD5EC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CFFB1609-2FCD-42E9-B335-C9C86F7DD5EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CFFB1609-2FCD-42E9-B335-C9C86F7DD5EC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CFFB1609-2FCD-42E9-B335-C9C86F7DD5EC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CFFB1609-2FCD-42E9-B335-C9C86F7DD5EC}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/ColorzCore/IO/IOUtility.cs b/ColorzCore/IO/IOUtility.cs index 73c7c78..1c72d32 100644 --- a/ColorzCore/IO/IOUtility.cs +++ b/ColorzCore/IO/IOUtility.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; @@ -22,17 +23,13 @@ public static string UnescapePath(string param) return sb.Replace("\\ ", " ").Replace("\\\\", "\\").ToString(); } - public static string GetToolFileName(string name) - { - switch (Environment.OSVersion.Platform) - { - case PlatformID.Win32Windows: // Who knows, maybe someone runs EA on win 95 - case PlatformID.Win32NT: - return name + ".exe"; - - default: - return name; - } + public static string GetToolFileName(string name) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { + return name + ".exe"; + } else { + return name; + } } } } diff --git a/ColorzCore/Parser/EAParser.cs b/ColorzCore/Parser/EAParser.cs index 3ff8431..72417a4 100644 --- a/ColorzCore/Parser/EAParser.cs +++ b/ColorzCore/Parser/EAParser.cs @@ -278,49 +278,69 @@ private Maybe ParseStatement(MergeableGenerator tokens, Immuta }), () => { Error(parameters[0].MyLocation, "Expected atomic param to ALIGN"); } ); - break; + break; case "FILL": - if (parameters.Count > 2 || parameters.Count == 0) - { - Error(head.Location, "Incorrect number of parameters in FILL: " + parameters.Count); + if (parameters.Count > 2 || parameters.Count == 0) + { + Error(head.Location, "Incorrect number of parameters in FILL: " + parameters.Count); } - else + else { // FILL [value] int amount = 0; - int value = 0; - + int value = 0; + if (parameters.Count == 2) { // param 2 (if given) is fill value - + parameters[1].AsAtom().IfJust( - (IAtomNode atom) => atom.TryEvaluate((Exception e) => { Error(parameters[0].MyLocation, e.Message); }).IfJust( + (IAtomNode atom) => atom.TryEvaluate((Exception e) => { Error(parameters[0].MyLocation, e.Message); }).IfJust( (int val) => { value = val; }), () => { Error(parameters[0].MyLocation, "Expected atomic param to FILL"); }); - } + } - // param 1 is amount of bytes to fill + // param 1 is amount of bytes to fill parameters[0].AsAtom().IfJust( - (IAtomNode atom) => atom.TryEvaluate((Exception e) => { Error(parameters[0].MyLocation, e.Message); }).IfJust( - (int val) => { amount = val; }), - () => { Error(parameters[0].MyLocation, "Expected atomic param to FILL"); }); + (IAtomNode atom) => atom.TryEvaluate((Exception e) => { Error(parameters[0].MyLocation, e.Message); }).IfJust( + (int val) => { amount = val; }), + () => { Error(parameters[0].MyLocation, "Expected atomic param to FILL"); }); var data = new byte[amount]; for (int i = 0; i < amount; ++i) - data[i] = (byte) value; + data[i] = (byte) value; + + var node = new DataNode(CurrentOffset, data); - var node = new DataNode(CurrentOffset, data); - CheckDataWrite(amount); CurrentOffset += amount; - - return new Just(node); + + return new Just(node); } break; + case "BASE64": { + if (parameters.Count != 1) + { + Error(head.Location, "Incorrect number of parameters in BASE64: " + parameters.Count); + } + var paramStr = parameters[0].ToString(); + try { + if (string.IsNullOrWhiteSpace(paramStr)) { + throw new FormatException(); + } + var data = Convert.FromBase64String(paramStr); + var node = new DataNode(CurrentOffset, data); + CheckDataWrite(data.Length); + CurrentOffset += data.Length; + return new Just(node); + } catch (FormatException e) { + Error(head.Location, "Invalid base64 string: " + parameters[0].ToString()); + } + break; + } } return new Nothing(); } diff --git a/ColorzCore/Preprocessor/Directives/IncludeDirective.cs b/ColorzCore/Preprocessor/Directives/IncludeDirective.cs index e70f6c3..b14f419 100644 --- a/ColorzCore/Preprocessor/Directives/IncludeDirective.cs +++ b/ColorzCore/Preprocessor/Directives/IncludeDirective.cs @@ -8,8 +8,8 @@ using ColorzCore.Parser.AST; using System.IO; using ColorzCore.Parser; -using ColorzCore.IO; - +using ColorzCore.IO; + namespace ColorzCore.Preprocessor.Directives { class IncludeDirective : IDirective @@ -18,13 +18,13 @@ class IncludeDirective : IDirective public int? MaxParams { get { return 1; } } - public bool RequireInclusion { get { return true; } } - + public bool RequireInclusion { get { return true; } } + public IncludeFileSearcher FileSearcher { get; set; } - public Maybe Execute(EAParser p, Token self, IList parameters, MergeableGenerator tokens) - { - Maybe existantFile = FileSearcher.FindFile(Path.GetDirectoryName(self.FileName), parameters[0].ToString()); + public Maybe Execute(EAParser p, Token self, IList parameters, MergeableGenerator tokens) { + var file = parameters[0].ToString().Replace("\\", "/"); + Maybe existantFile = FileSearcher.FindFile(Path.GetDirectoryName(self.FileName), file); if (!existantFile.IsNothing) { @@ -38,12 +38,12 @@ public Maybe Execute(EAParser p, Token self, IList parame } catch(Exception) { - p.Error(self.Location, "Error reading file \"" + parameters[0].ToString() + "\"."); + p.Error(self.Location, "Error reading file \"" + file + "\"."); } } else { - p.Error(parameters[0].MyLocation, "Could not find file \"" + parameters[0].ToString() + "\"."); + p.Error(parameters[0].MyLocation, "Could not find file \"" + file + "\"."); } return new Nothing(); } diff --git a/ColorzCore/Properties/AssemblyInfo.cs b/ColorzCore/Properties/AssemblyInfo.cs deleted file mode 100644 index 4694981..0000000 --- a/ColorzCore/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ColorzCore")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ColorzCore")] -[assembly: AssemblyCopyright("Copyright © 2017")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("b98f7ccf-9caa-406e-88d7-2040fa99f631")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.0.2.*")] -[assembly: AssemblyFileVersion("0.0.1.0")] diff --git a/ColorzCore/bin/Debug/ColorzCore.exe.config b/ColorzCore/bin/Debug/ColorzCore.exe.config deleted file mode 100644 index d740e88..0000000 --- a/ColorzCore/bin/Debug/ColorzCore.exe.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/ColorzCore/bin/Release/ColorzCore.exe b/ColorzCore/bin/Release/ColorzCore.exe deleted file mode 100644 index 3f317c3fc87b284f27547a373da0422977f320b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117760 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 U{j-uFeIYcZ@PGO97mfq}2g49(jsO4v From dcc23cc642afb25b3d9666750a00714df7cbf2d7 Mon Sep 17 00:00:00 2001 From: mint Date: Tue, 7 Dec 2021 00:45:03 +0800 Subject: [PATCH 2/2] b64 --- ColorzCore/Parser/EAParser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ColorzCore/Parser/EAParser.cs b/ColorzCore/Parser/EAParser.cs index 72417a4..8e620b7 100644 --- a/ColorzCore/Parser/EAParser.cs +++ b/ColorzCore/Parser/EAParser.cs @@ -20,7 +20,7 @@ class EAParser public MacroCollection Macros { get; } public Dictionary Definitions { get; } public Dictionary> Raws { get; } - public static readonly HashSet SpecialCodes = new HashSet { "ORG", "PUSH", "POP", "MESSAGE", "WARNING", "ERROR", "ASSERT", "PROTECT", "ALIGN", "FILL" }; + public static readonly HashSet SpecialCodes = new HashSet { "ORG", "PUSH", "POP", "MESSAGE", "WARNING", "ERROR", "ASSERT", "PROTECT", "ALIGN", "FILL", "BASE64" }; //public static readonly HashSet BuiltInMacros = new HashSet { "String", "AddToPool" }; //TODO: Built in macros. //public static readonly Dictionary BuiltInMacros;