diff --git a/Aaru.Decoders/SCSI/EVPD.cs b/Aaru.Decoders/SCSI/EVPD.cs
index ae312dac6..2fb68016e 100644
--- a/Aaru.Decoders/SCSI/EVPD.cs
+++ b/Aaru.Decoders/SCSI/EVPD.cs
@@ -49,7 +49,7 @@ namespace Aaru.Decoders.SCSI;
[SuppressMessage("ReSharper", "NotAccessedField.Global")]
[SuppressMessage("ReSharper", "UnassignedField.Global")]
[SuppressMessage("ReSharper", "UnusedMember.Global")]
-public static class EVPD
+public static partial class EVPD
{
/// Decodes VPD page 0x00: Supported VPD pages
/// A byte array containing all supported VPD pages.
@@ -60,7 +60,7 @@ public static class EVPD
if(page.Length != page[3] + 4) return null;
- byte[] decoded = new byte[page.Length - 4];
+ var decoded = new byte[page.Length - 4];
Array.Copy(page, 4, decoded, 0, page.Length - 4);
@@ -78,7 +78,7 @@ public static class EVPD
if(page.Length != page[3] + 4) return null;
- byte[] ascii = new byte[page[4]];
+ var ascii = new byte[page[4]];
Array.Copy(page, 5, ascii, 0, page[4]);
@@ -94,11 +94,11 @@ public static class EVPD
if(page.Length != page[3] + 4) return null;
- byte[] ascii = new byte[page.Length - 4];
+ var ascii = new byte[page.Length - 4];
Array.Copy(page, 4, ascii, 0, page.Length - 4);
- for(int i = 0; i < ascii.Length - 1; i++)
+ for(var i = 0; i < ascii.Length - 1; i++)
{
if(ascii[i] == 0x00) break;
@@ -117,7 +117,7 @@ public static class EVPD
if(page.Length != page[3] + 4) return null;
- byte[] ascii = new byte[page.Length - 4];
+ var ascii = new byte[page.Length - 4];
Array.Copy(page, 4, ascii, 0, page.Length - 4);
@@ -132,7 +132,7 @@ public static class EVPD
if(page.Length != page[3] + 4) return null;
- byte[] ascii = new byte[page.Length - 4];
+ var ascii = new byte[page.Length - 4];
Array.Copy(page, 4, ascii, 0, page.Length - 4);
@@ -149,7 +149,7 @@ public static class EVPD
if(page.Length != 12) return 0;
- byte[] bitmap = new byte[8];
+ var bitmap = new byte[8];
Array.Copy(page, 4, bitmap, 0, 8);
@@ -166,7 +166,7 @@ public static class EVPD
if(page.Length != page[3] + 4) return null;
- byte[] ascii = new byte[page.Length - 4];
+ var ascii = new byte[page.Length - 4];
Array.Copy(page, 4, ascii, 0, page.Length - 4);
@@ -183,8 +183,8 @@ public static class EVPD
if(page.Length != page[3] + 4) return null;
- byte[] element = new byte[page.Length - 4];
- var sb = new StringBuilder();
+ var element = new byte[page.Length - 4];
+ var sb = new StringBuilder();
foreach(byte b in element) sb.Append($"{b:X2}");
@@ -231,7 +231,7 @@ public static class EVPD
Default = (ScsiDefinitions)(pageResponse[5] & 0x7F)
};
- int position = 6;
+ var position = 6;
List definitions = [];
while(position < pageResponse.Length)
@@ -387,7 +387,7 @@ public static class EVPD
PageLength = (byte)(pageResponse[3] + 4)
};
- int position = 4;
+ var position = 4;
List descriptors = [];
while(position < pageResponse.Length)
@@ -565,7 +565,7 @@ public static class EVPD
sb.AppendFormat($"\t[slateblue1]{Localization.IEEE_EUI_64_0_X2}",
$"[teal]{descriptor.Binary[0]}");
- for(int i = 1; i < descriptor.Binary.Length; i++) sb.Append($":{descriptor.Binary[i]:X2}");
+ for(var i = 1; i < descriptor.Binary.Length; i++) sb.Append($":{descriptor.Binary[i]:X2}");
sb.AppendLine("[/][/]");
}
@@ -582,7 +582,7 @@ public static class EVPD
{
sb.AppendFormat($"\t[slateblue1]{Localization.NAA_0_X2}", $"[teal]{descriptor.Binary[0]}");
- for(int i = 1; i < descriptor.Binary.Length; i++) sb.Append($":{descriptor.Binary[i]:X2}");
+ for(var i = 1; i < descriptor.Binary.Length; i++) sb.Append($":{descriptor.Binary[i]:X2}");
sb.AppendLine("[/][/]");
}
@@ -646,7 +646,7 @@ public static class EVPD
sb.AppendFormat($"\t[slateblue1]{Localization.MD5_logical_unit_identifier_0_x2}",
$"[teal]{descriptor.Binary[0]}");
- for(int i = 1; i < descriptor.Binary.Length; i++) sb.Append($"{descriptor.Binary[i]:x2}");
+ for(var i = 1; i < descriptor.Binary.Length; i++) sb.Append($"{descriptor.Binary[i]:x2}");
sb.AppendLine("[/][/]");
}
@@ -866,7 +866,7 @@ public static class EVPD
PageLength = (byte)(pageResponse[3] + 4)
};
- int position = 4;
+ var position = 4;
List identifiers = [];
while(position < pageResponse.Length)
@@ -908,7 +908,7 @@ public static class EVPD
{
sb.AppendFormat("\t" + "{0:X2}", identifier.Identifier[0]);
- for(int i = 1; i < identifier.Identifier.Length; i++) sb.Append($":{identifier.Identifier[i]:X2}");
+ for(var i = 1; i < identifier.Identifier.Length; i++) sb.Append($":{identifier.Identifier[i]:X2}");
sb.AppendLine();
}
@@ -975,7 +975,7 @@ public static class EVPD
PageLength = (ushort)((pageResponse[2] << 8) + pageResponse[3] + 4)
};
- int position = 4;
+ var position = 4;
List descriptors = [];
while(position < pageResponse.Length)
@@ -1796,7 +1796,7 @@ public static class EVPD
CartridgeSerialNumber = new byte[32]
};
- byte[] buf = new byte[8];
+ var buf = new byte[8];
Array.Copy(pageResponse, 24, buf, 0, 8);
decoded.InitiatorID = BitConverter.ToUInt64(buf.Reverse().ToArray(), 0);
Array.Copy(pageResponse, 32, decoded.CartridgeSerialNumber, 0, 32);
@@ -2205,15 +2205,11 @@ public static class EVPD
List array = [];
- const string fwRegExStr = @"Firmware Rev\s+=\s+(?\d+\.\d+)\s+Build date\s+=\s+(?(\w|\d|\s*.)*)\s*$";
+ Regex fwRegEx = HpFirmwareRegex();
+ Regex fwcRegEx = HpFirmwareConfigurationRegex();
+ Regex servoRegEx = HpServoRevisionRegex();
- const string fwcRegExStr = @"FW_CONF\s+=\s+(?0x[0-9A-Fa-f]{8})\s*$";
- const string servoRegExStr = @"Servo\s+Rev\s+=\s+(?\d+\.\d+)\s*$";
- var fwRegEx = new Regex(fwRegExStr);
- var fwcRegEx = new Regex(fwcRegExStr);
- var servoRegEx = new Regex(servoRegExStr);
-
- for(int pos = 5; pos < pageResponse.Length; pos++)
+ for(var pos = 5; pos < pageResponse.Length; pos++)
{
if(pageResponse[pos] == 0x00)
{
@@ -2383,5 +2379,14 @@ public static class EVPD
return sb.ToString();
}
+ [GeneratedRegex(@"Firmware Rev\s+=\s+(?\d+\.\d+)\s+Build date\s+=\s+(?(\w|\d|\s*.)*)\s*$")]
+ private static partial Regex HpFirmwareRegex();
+
+ [GeneratedRegex(@"FW_CONF\s+=\s+(?0x[0-9A-Fa-f]{8})\s*$")]
+ private static partial Regex HpFirmwareConfigurationRegex();
+
+ [GeneratedRegex(@"Servo\s+Rev\s+=\s+(?\d+\.\d+)\s*$")]
+ private static partial Regex HpServoRevisionRegex();
+
#endregion EVPD Page 0xC0 (Seagate): Firmware numbers page
}
\ No newline at end of file
diff --git a/Aaru.Images/ByteAddressable/NES.cs b/Aaru.Images/ByteAddressable/NES.cs
index e00825042..9fb49302a 100644
--- a/Aaru.Images/ByteAddressable/NES.cs
+++ b/Aaru.Images/ByteAddressable/NES.cs
@@ -19,7 +19,7 @@ using Aaru.Logging;
namespace Aaru.Images;
[SuppressMessage("ReSharper", "UnusedType.Global")]
-public class Nes : IByteAddressableImage
+public partial class Nes : IByteAddressableImage
{
int _chrLen;
int _chrNvramLen;
@@ -740,7 +740,7 @@ public class Nes : IByteAddressableImage
break;
case LinearMemoryType.Mapper when !foundMapper:
- regex = new Regex(@"NES Mapper ?(\d+)");
+ regex = MapperRegex();
match = regex.Match(map.Description);
if(match.Success)
@@ -758,7 +758,7 @@ public class Nes : IByteAddressableImage
break;
case LinearMemoryType.Mapper when !foundSubMapper:
- regex = new Regex(@"NES Sub-Mapper ?(\d+)");
+ regex = SubmapperRegex();
match = regex.Match(map.Description);
if(match.Success)
@@ -869,5 +869,11 @@ public class Nes : IByteAddressableImage
return ErrorNumber.NoError;
}
+ [GeneratedRegex(@"NES Mapper ?(\d+)")]
+ private static partial Regex MapperRegex();
+
+ [GeneratedRegex(@"NES Sub-Mapper ?(\d+)")]
+ private static partial Regex SubmapperRegex();
+
#endregion
}
\ No newline at end of file
diff --git a/Aaru.Images/CDRDAO/Constants.cs b/Aaru.Images/CDRDAO/Constants.cs
index ec8c2d07e..59b33283f 100644
--- a/Aaru.Images/CDRDAO/Constants.cs
+++ b/Aaru.Images/CDRDAO/Constants.cs
@@ -30,6 +30,8 @@
// Copyright © 2011-2025 Natalia Portillo
// ****************************************************************************/
+using System.Text.RegularExpressions;
+
namespace Aaru.Images;
public sealed partial class Cdrdao
@@ -106,4 +108,88 @@ public sealed partial class Cdrdao
const string REGEX_LANGUAGE = @"^\s*LANGUAGE\s*(?\d+)\s*\{";
const string REGEX_LANGUAGE_MAP = @"^\s*LANGUAGE_MAP\s*\{";
const string REGEX_LANGUAGE_MAPPING = @"^\s*(?\d+)\s?\:\s?(?\d+|\w+)";
+
+ [GeneratedRegex(REGEX_COMMENT)]
+ private static partial Regex CommentRegex();
+
+ [GeneratedRegex(REGEX_DISCTYPE)]
+ private static partial Regex DiscTypeRegex();
+
+ [GeneratedRegex(REGEX_MCN)]
+ private static partial Regex McnRegex();
+
+ [GeneratedRegex(REGEX_TRACK)]
+ private static partial Regex TrackRegex();
+
+ [GeneratedRegex(REGEX_COPY)]
+ private static partial Regex CopyRegex();
+
+ [GeneratedRegex(REGEX_EMPHASIS)]
+ private static partial Regex EmphasisRegex();
+
+ [GeneratedRegex(REGEX_STEREO)]
+ private static partial Regex StereoRegex();
+
+ [GeneratedRegex(REGEX_ISRC)]
+ private static partial Regex IsrcRegex();
+
+ [GeneratedRegex(REGEX_INDEX)]
+ private static partial Regex IndexRegex();
+
+ [GeneratedRegex(REGEX_PREGAP)]
+ private static partial Regex PregapRegex();
+
+ [GeneratedRegex(REGEX_ZERO_PREGAP)]
+ private static partial Regex ZeroPregapRegex();
+
+ [GeneratedRegex(REGEX_ZERO_DATA)]
+ private static partial Regex ZeroDataRegex();
+
+ [GeneratedRegex(REGEX_ZERO_AUDIO)]
+ private static partial Regex ZeroAudioRegex();
+
+ [GeneratedRegex(REGEX_FILE_AUDIO)]
+ private static partial Regex FileAudioRegex();
+
+ [GeneratedRegex(REGEX_FILE_DATA)]
+ private static partial Regex FileDataRegex();
+
+ [GeneratedRegex(REGEX_TITLE)]
+ private static partial Regex TitleRegex();
+
+ [GeneratedRegex(REGEX_PERFORMER)]
+ private static partial Regex PerformerRegex();
+
+ [GeneratedRegex(REGEX_SONGWRITER)]
+ private static partial Regex SongwriterRegex();
+
+ [GeneratedRegex(REGEX_COMPOSER)]
+ private static partial Regex ComposerRegex();
+
+ [GeneratedRegex(REGEX_ARRANGER)]
+ private static partial Regex ArrangerRegex();
+
+ [GeneratedRegex(REGEX_MESSAGE)]
+ private static partial Regex MessageRegex();
+
+ [GeneratedRegex(REGEX_DISC_ID)]
+ private static partial Regex DiscIdRegex();
+
+ [GeneratedRegex(REGEX_UPC)]
+ private static partial Regex UpcRegex();
+
+ [GeneratedRegex(REGEX_CD_TEXT)]
+ private static partial Regex CdTextRegex();
+
+ [GeneratedRegex(REGEX_LANGUAGE)]
+ private static partial Regex LanguageRegex();
+
+ [GeneratedRegex(REGEX_CLOSURE)]
+ private static partial Regex ClosureRegex();
+
+ [GeneratedRegex(REGEX_LANGUAGE_MAP)]
+ private static partial Regex LanguageMapRegex();
+
+ [GeneratedRegex(REGEX_LANGUAGE_MAPPING)]
+ private static partial Regex LanguageMappingRegex();
}
\ No newline at end of file
diff --git a/Aaru.Images/CDRDAO/Identify.cs b/Aaru.Images/CDRDAO/Identify.cs
index 8784f489b..33cd9e4d2 100644
--- a/Aaru.Images/CDRDAO/Identify.cs
+++ b/Aaru.Images/CDRDAO/Identify.cs
@@ -49,14 +49,14 @@ public sealed partial class Cdrdao
try
{
imageFilter.GetDataForkStream().Seek(0, SeekOrigin.Begin);
- byte[] testArray = new byte[512];
+ var testArray = new byte[512];
imageFilter.GetDataForkStream().EnsureRead(testArray, 0, 512);
imageFilter.GetDataForkStream().Seek(0, SeekOrigin.Begin);
// Check for unexpected control characters that shouldn't be present in a text file and can crash this plugin
- bool twoConsecutiveNulls = false;
+ var twoConsecutiveNulls = false;
- for(int i = 0; i < 512; i++)
+ for(var i = 0; i < 512; i++)
{
if(i >= imageFilter.GetDataForkStream().Length) break;
@@ -75,8 +75,8 @@ public sealed partial class Cdrdao
_tocStream = new StreamReader(imageFilter.GetDataForkStream());
- var cr = new Regex(REGEX_COMMENT);
- var dr = new Regex(REGEX_DISCTYPE);
+ Regex cr = CommentRegex();
+ Regex dr = DiscTypeRegex();
while(_tocStream.Peek() >= 0)
{
diff --git a/Aaru.Images/CDRDAO/Read.cs b/Aaru.Images/CDRDAO/Read.cs
index c44f22b04..cdcbae99c 100644
--- a/Aaru.Images/CDRDAO/Read.cs
+++ b/Aaru.Images/CDRDAO/Read.cs
@@ -64,34 +64,34 @@ public sealed partial class Cdrdao
var inTrack = false;
// Initialize all RegExs
- var regexComment = new Regex(REGEX_COMMENT);
- var regexDiskType = new Regex(REGEX_DISCTYPE);
- var regexMcn = new Regex(REGEX_MCN);
- var regexTrack = new Regex(REGEX_TRACK);
- var regexCopy = new Regex(REGEX_COPY);
- var regexEmphasis = new Regex(REGEX_EMPHASIS);
- var regexStereo = new Regex(REGEX_STEREO);
- var regexIsrc = new Regex(REGEX_ISRC);
- var regexIndex = new Regex(REGEX_INDEX);
- var regexPregap = new Regex(REGEX_PREGAP);
- var regexZeroPregap = new Regex(REGEX_ZERO_PREGAP);
- var regexZeroData = new Regex(REGEX_ZERO_DATA);
- var regexZeroAudio = new Regex(REGEX_ZERO_AUDIO);
- var regexAudioFile = new Regex(REGEX_FILE_AUDIO);
- var regexFile = new Regex(REGEX_FILE_DATA);
- var regexTitle = new Regex(REGEX_TITLE);
- var regexPerformer = new Regex(REGEX_PERFORMER);
- var regexSongwriter = new Regex(REGEX_SONGWRITER);
- var regexComposer = new Regex(REGEX_COMPOSER);
- var regexArranger = new Regex(REGEX_ARRANGER);
- var regexMessage = new Regex(REGEX_MESSAGE);
- var regexDiscId = new Regex(REGEX_DISC_ID);
- var regexUpc = new Regex(REGEX_UPC);
- var regexCdText = new Regex(REGEX_CD_TEXT);
- var regexLanguage = new Regex(REGEX_LANGUAGE);
- var regexClosure = new Regex(REGEX_CLOSURE);
- var regexLanguageMap = new Regex(REGEX_LANGUAGE_MAP);
- var regexLanguageMapping = new Regex(REGEX_LANGUAGE_MAPPING);
+ Regex regexComment = CommentRegex();
+ Regex regexDiskType = DiscTypeRegex();
+ Regex regexMcn = McnRegex();
+ Regex regexTrack = TrackRegex();
+ Regex regexCopy = CopyRegex();
+ Regex regexEmphasis = EmphasisRegex();
+ Regex regexStereo = StereoRegex();
+ Regex regexIsrc = IsrcRegex();
+ Regex regexIndex = IndexRegex();
+ Regex regexPregap = PregapRegex();
+ Regex regexZeroPregap = ZeroPregapRegex();
+ Regex regexZeroData = ZeroDataRegex();
+ Regex regexZeroAudio = ZeroAudioRegex();
+ Regex regexAudioFile = FileAudioRegex();
+ Regex regexFile = FileDataRegex();
+ Regex regexTitle = TitleRegex();
+ Regex regexPerformer = PerformerRegex();
+ Regex regexSongwriter = SongwriterRegex();
+ Regex regexComposer = ComposerRegex();
+ Regex regexArranger = ArrangerRegex();
+ Regex regexMessage = MessageRegex();
+ Regex regexDiscId = DiscIdRegex();
+ Regex regexUpc = UpcRegex();
+ Regex regexCdText = CdTextRegex();
+ Regex regexLanguage = LanguageRegex();
+ Regex regexClosure = ClosureRegex();
+ Regex regexLanguageMap = LanguageMapRegex();
+ Regex regexLanguageMapping = LanguageMappingRegex();
// Initialize all RegEx matches
Match matchComment;
diff --git a/Aaru.Images/CDRWin/Constants.cs b/Aaru.Images/CDRWin/Constants.cs
index 7db40a2f6..477b11acf 100644
--- a/Aaru.Images/CDRWin/Constants.cs
+++ b/Aaru.Images/CDRWin/Constants.cs
@@ -30,6 +30,8 @@
// Copyright © 2011-2025 Natalia Portillo
// ****************************************************************************/
+using System.Text.RegularExpressions;
+
namespace Aaru.Images;
public sealed partial class CdrWin
@@ -181,4 +183,118 @@ public sealed partial class CdrWin
const string REGEX_APPLICATION_VERSION = @"\bREM\s+Ripping Tool Version:\s+(?.+)$";
const string REGEX_DUMP_EXTENT =
@"\bREM\s+METADATA DUMP EXTENT:\s+(?.+)\s+\|\s+(?.+)\s+\|\s+(?.+)\s+\|\s+(?.+)\s+\|\s+(?.+)\s+\|\s+(?.+)\s+\|\s+(?.+)\s+\|\s+(?\d+):(?\d+)$";
+
+ [GeneratedRegex(REGEX_SESSION)]
+ private static partial Regex SessionRegex();
+
+ [GeneratedRegex(REGEX_COMMENT)]
+ private static partial Regex CommentRegex();
+
+ [GeneratedRegex(REGEX_MCN)]
+ private static partial Regex McnRegex();
+
+ [GeneratedRegex(REGEX_FILE)]
+ private static partial Regex FileRegex();
+
+ [GeneratedRegex(REGEX_CDTEXT)]
+ private static partial Regex CdtextRegex();
+
+ [GeneratedRegex(REGEX_MEDIA_TYPE)]
+ private static partial Regex MediaTypeRegex();
+
+ [GeneratedRegex(REGEX_LEAD_OUT)]
+ private static partial Regex LeadOutRegex();
+
+ [GeneratedRegex(REGEX_LBA)]
+ private static partial Regex LbaRegex();
+
+ [GeneratedRegex(REGEX_DISC_ID)]
+ private static partial Regex DiscIdRegex();
+
+ [GeneratedRegex(REGEX_BARCODE)]
+ private static partial Regex BarcodeRegex();
+
+ [GeneratedRegex(REGEX_TITLE)]
+ private static partial Regex TitleRegex();
+
+ [GeneratedRegex(REGEX_GENRE)]
+ private static partial Regex GenreRegex();
+
+ [GeneratedRegex(REGEX_ARRANGER)]
+ private static partial Regex ArrangerRegex();
+
+ [GeneratedRegex(REGEX_COMPOSER)]
+ private static partial Regex ComposerRegex();
+
+ [GeneratedRegex(REGEX_PERFORMER)]
+ private static partial Regex PerformerRegex();
+
+ [GeneratedRegex(REGEX_SONGWRITER)]
+ private static partial Regex SongwriterRegex();
+
+ [GeneratedRegex(REGEX_TRACK)]
+ private static partial Regex TrackRegex();
+
+ [GeneratedRegex(REGEX_ISRC)]
+ private static partial Regex IsrcRegex();
+
+ [GeneratedRegex(REGEX_INDEX)]
+ private static partial Regex IndexRegex();
+
+ [GeneratedRegex(REGEX_PREGAP)]
+ private static partial Regex PregapRegex();
+
+ [GeneratedRegex(REGEX_POSTGAP)]
+ private static partial Regex PostgapRegex();
+
+ [GeneratedRegex(REGEX_FLAGS)]
+ private static partial Regex FlagsRegex();
+
+ [GeneratedRegex(REGEX_APPLICATION)]
+ private static partial Regex ApplicationRegex();
+
+ [GeneratedRegex(REGEX_TRURIP_DISC_HASHES)]
+ private static partial Regex TruripDiscHashesRegex();
+
+ [GeneratedRegex(REGEX_TRURIP_DISC_CRC32)]
+ private static partial Regex TruripDiscCrc32Regex();
+
+ [GeneratedRegex(REGEX_TRURIP_DISC_MD5)]
+ private static partial Regex TruripDiscMd5Regex();
+
+ [GeneratedRegex(REGEX_TRURIP_DISC_SHA1)]
+ private static partial Regex TruripDiscSha1Regex();
+
+ [GeneratedRegex(REGEX_TRURIP_TRACK_METHOD)]
+ private static partial Regex TruripTrackMethodRegex();
+
+ [GeneratedRegex(REGEX_TRURIP_TRACK_CRC32)]
+ private static partial Regex TruripTrackCrc32Regex();
+
+ [GeneratedRegex(REGEX_TRURIP_TRACK_MD5)]
+ private static partial Regex TruripTrackMd5Regex();
+
+ [GeneratedRegex(REGEX_TRURIP_TRACK_SHA1)]
+ private static partial Regex TruripTrackSha1Regex();
+
+ [GeneratedRegex(REGEX_TRURIP_TRACK_UNKNOWN)]
+ private static partial Regex TruripTrackUnknownRegex();
+
+ [GeneratedRegex(REGEX_DIC_MEDIA_TYPE)]
+ private static partial Regex DicMediaTypeRegex();
+
+ [GeneratedRegex(REGEX_APPLICATION_VERSION)]
+ private static partial Regex ApplicationVersionRegex();
+
+ [GeneratedRegex(REGEX_DUMP_EXTENT)]
+ private static partial Regex DumpExtentRegex();
+
+ [GeneratedRegex(REGEX_AARU_MEDIA_TYPE)]
+ private static partial Regex AaruMediaTypeRegex();
+
+ [GeneratedRegex(REGEX_REDUMP_SD_AREA)]
+ private static partial Regex RedumpSdAreaRegex();
+
+ [GeneratedRegex(REGEX_REDUMP_HD_AREA)]
+ private static partial Regex RedumpHdAreaRegex();
}
\ No newline at end of file
diff --git a/Aaru.Images/CDRWin/Identify.cs b/Aaru.Images/CDRWin/Identify.cs
index bffd31e73..1ee7bf8fe 100644
--- a/Aaru.Images/CDRWin/Identify.cs
+++ b/Aaru.Images/CDRWin/Identify.cs
@@ -52,14 +52,14 @@ public sealed partial class CdrWin
try
{
imageFilter.GetDataForkStream().Seek(0, SeekOrigin.Begin);
- byte[] testArray = new byte[512];
+ var testArray = new byte[512];
imageFilter.GetDataForkStream().EnsureRead(testArray, 0, 512);
imageFilter.GetDataForkStream().Seek(0, SeekOrigin.Begin);
// Check for unexpected control characters that shouldn't be present in a text file and can crash this plugin
- bool twoConsecutiveNulls = false;
+ var twoConsecutiveNulls = false;
- for(int i = 0; i < 512; i++)
+ for(var i = 0; i < 512; i++)
{
if(i >= imageFilter.GetDataForkStream().Length) break;
@@ -82,11 +82,11 @@ public sealed partial class CdrWin
{
string line = _cueStream.ReadLine();
- var sr = new Regex(REGEX_SESSION);
- var rr = new Regex(REGEX_COMMENT);
- var cr = new Regex(REGEX_MCN);
- var fr = new Regex(REGEX_FILE);
- var tr = new Regex(REGEX_CDTEXT);
+ Regex sr = SessionRegex();
+ Regex rr = CommentRegex();
+ Regex cr = McnRegex();
+ Regex fr = FileRegex();
+ Regex tr = CdtextRegex();
// First line must be SESSION, REM, CATALOG, FILE or CDTEXTFILE.
Match sm = sr.Match(line ?? "");
diff --git a/Aaru.Images/CDRWin/Read.cs b/Aaru.Images/CDRWin/Read.cs
index af1f7c198..7cba29d38 100644
--- a/Aaru.Images/CDRWin/Read.cs
+++ b/Aaru.Images/CDRWin/Read.cs
@@ -70,44 +70,44 @@ public sealed partial class CdrWin
byte currentSession = 1;
// Initialize all RegExs
- var regexSession = new Regex(REGEX_SESSION);
- var regexDiskType = new Regex(REGEX_MEDIA_TYPE);
- var regexLeadOut = new Regex(REGEX_LEAD_OUT);
- var regexLba = new Regex(REGEX_LBA);
- var regexDiskId = new Regex(REGEX_DISC_ID);
- var regexBarCode = new Regex(REGEX_BARCODE);
- var regexComment = new Regex(REGEX_COMMENT);
- var regexCdText = new Regex(REGEX_CDTEXT);
- var regexMcn = new Regex(REGEX_MCN);
- var regexTitle = new Regex(REGEX_TITLE);
- var regexGenre = new Regex(REGEX_GENRE);
- var regexArranger = new Regex(REGEX_ARRANGER);
- var regexComposer = new Regex(REGEX_COMPOSER);
- var regexPerformer = new Regex(REGEX_PERFORMER);
- var regexSongWriter = new Regex(REGEX_SONGWRITER);
- var regexFile = new Regex(REGEX_FILE);
- var regexTrack = new Regex(REGEX_TRACK);
- var regexIsrc = new Regex(REGEX_ISRC);
- var regexIndex = new Regex(REGEX_INDEX);
- var regexPregap = new Regex(REGEX_PREGAP);
- var regexPostgap = new Regex(REGEX_POSTGAP);
- var regexFlags = new Regex(REGEX_FLAGS);
- var regexApplication = new Regex(REGEX_APPLICATION);
- var regexTruripDisc = new Regex(REGEX_TRURIP_DISC_HASHES);
- var regexTruripDiscCrc32 = new Regex(REGEX_TRURIP_DISC_CRC32);
- var regexTruripDiscMd5 = new Regex(REGEX_TRURIP_DISC_MD5);
- var regexTruripDiscSha1 = new Regex(REGEX_TRURIP_DISC_SHA1);
- var regexTruripTrack = new Regex(REGEX_TRURIP_TRACK_METHOD);
- var regexTruripTrackCrc32 = new Regex(REGEX_TRURIP_TRACK_CRC32);
- var regexTruripTrackMd5 = new Regex(REGEX_TRURIP_TRACK_MD5);
- var regexTruripTrackSha1 = new Regex(REGEX_TRURIP_TRACK_SHA1);
- var regexTruripTrackUnknownHash = new Regex(REGEX_TRURIP_TRACK_UNKNOWN);
- var regexDicMediaType = new Regex(REGEX_DIC_MEDIA_TYPE);
- var regexApplicationVersion = new Regex(REGEX_APPLICATION_VERSION);
- var regexDumpExtent = new Regex(REGEX_DUMP_EXTENT);
- var regexAaruMediaType = new Regex(REGEX_AARU_MEDIA_TYPE);
- var regexRedumpSdArea = new Regex(REGEX_REDUMP_SD_AREA);
- var regexRedumpHdArea = new Regex(REGEX_REDUMP_HD_AREA);
+ Regex regexSession = SessionRegex();
+ Regex regexDiskType = MediaTypeRegex();
+ Regex regexLeadOut = LeadOutRegex();
+ Regex regexLba = LbaRegex();
+ Regex regexDiskId = DiscIdRegex();
+ Regex regexBarCode = BarcodeRegex();
+ Regex regexComment = CommentRegex();
+ Regex regexCdText = CdtextRegex();
+ Regex regexMcn = McnRegex();
+ Regex regexTitle = TitleRegex();
+ Regex regexGenre = GenreRegex();
+ Regex regexArranger = ArrangerRegex();
+ Regex regexComposer = ComposerRegex();
+ Regex regexPerformer = PerformerRegex();
+ Regex regexSongWriter = SongwriterRegex();
+ Regex regexFile = FileRegex();
+ Regex regexTrack = TrackRegex();
+ Regex regexIsrc = IsrcRegex();
+ Regex regexIndex = IndexRegex();
+ Regex regexPregap = PregapRegex();
+ Regex regexPostgap = PostgapRegex();
+ Regex regexFlags = FlagsRegex();
+ Regex regexApplication = ApplicationRegex();
+ Regex regexTruripDisc = TruripDiscHashesRegex();
+ Regex regexTruripDiscCrc32 = TruripDiscCrc32Regex();
+ Regex regexTruripDiscMd5 = TruripDiscMd5Regex();
+ Regex regexTruripDiscSha1 = TruripDiscSha1Regex();
+ Regex regexTruripTrack = TruripTrackMethodRegex();
+ Regex regexTruripTrackCrc32 = TruripTrackCrc32Regex();
+ Regex regexTruripTrackMd5 = TruripTrackMd5Regex();
+ Regex regexTruripTrackSha1 = TruripTrackSha1Regex();
+ Regex regexTruripTrackUnknownHash = TruripTrackUnknownRegex();
+ Regex regexDicMediaType = DicMediaTypeRegex();
+ Regex regexApplicationVersion = ApplicationVersionRegex();
+ Regex regexDumpExtent = DumpExtentRegex();
+ Regex regexAaruMediaType = AaruMediaTypeRegex();
+ Regex regexRedumpSdArea = RedumpSdAreaRegex();
+ Regex regexRedumpHdArea = RedumpHdAreaRegex();
// Initialize all RegEx matches
Match matchTrack;
diff --git a/Aaru.Images/CHD/Constants.cs b/Aaru.Images/CHD/Constants.cs
index cbac4862e..08d8d702c 100644
--- a/Aaru.Images/CHD/Constants.cs
+++ b/Aaru.Images/CHD/Constants.cs
@@ -31,6 +31,7 @@
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
+using System.Text.RegularExpressions;
namespace Aaru.Images;
@@ -92,4 +93,16 @@ public sealed partial class Chd
const string TRACK_TYPE_AUDIO = "AUDIO";
// ReSharper restore InconsistentNaming
+
+ [GeneratedRegex(REGEX_METADATA_HDD)]
+ private static partial Regex MetadataHddRegex();
+
+ [GeneratedRegex(REGEX_METADATA_CDROM)]
+ private static partial Regex MetadataCdromRegex();
+
+ [GeneratedRegex(REGEX_METADATA_CDROM2)]
+ private static partial Regex MetadataCdrom2Regex();
+
+ [GeneratedRegex(REGEX_METADATA_GDROM)]
+ private static partial Regex MetadataGdromRegex();
}
\ No newline at end of file
diff --git a/Aaru.Images/CHD/Read.cs b/Aaru.Images/CHD/Read.cs
index 481e2a4db..2096098b7 100644
--- a/Aaru.Images/CHD/Read.cs
+++ b/Aaru.Images/CHD/Read.cs
@@ -498,7 +498,7 @@ public sealed partial class Chd
}
string gddd = StringHandlers.CToString(meta);
- var gdddRegEx = new Regex(REGEX_METADATA_HDD);
+ Regex gdddRegEx = MetadataHddRegex();
Match gdddMatch = gdddRegEx.Match(gddd);
if(gdddMatch.Success)
@@ -671,7 +671,7 @@ public sealed partial class Chd
}
string chtr = StringHandlers.CToString(meta);
- var chtrRegEx = new Regex(REGEX_METADATA_CDROM);
+ Regex chtrRegEx = MetadataCdromRegex();
Match chtrMatch = chtrRegEx.Match(chtr);
if(chtrMatch.Success)
@@ -816,7 +816,7 @@ public sealed partial class Chd
}
string cht2 = StringHandlers.CToString(meta);
- var cht2RegEx = new Regex(REGEX_METADATA_CDROM2);
+ Regex cht2RegEx = MetadataCdrom2Regex();
Match cht2Match = cht2RegEx.Match(cht2);
if(cht2Match.Success)
@@ -1001,7 +1001,7 @@ public sealed partial class Chd
}
string chgd = StringHandlers.CToString(meta);
- var chgdRegEx = new Regex(REGEX_METADATA_GDROM);
+ Regex chgdRegEx = MetadataGdromRegex();
Match chgdMatch = chgdRegEx.Match(chgd);
if(chgdMatch.Success)
diff --git a/Aaru.Images/CloneCD/Constants.cs b/Aaru.Images/CloneCD/Constants.cs
index fb8bbf453..9f8858878 100644
--- a/Aaru.Images/CloneCD/Constants.cs
+++ b/Aaru.Images/CloneCD/Constants.cs
@@ -30,6 +30,8 @@
// Copyright © 2011-2025 Natalia Portillo
// ****************************************************************************/
+using System.Text.RegularExpressions;
+
namespace Aaru.Images;
public sealed partial class CloneCd
@@ -66,4 +68,100 @@ public sealed partial class CloneCd
const string CDTEXT_ENTRY = @"^\s*Entry\s*(?\d+)\s*=\s*(?([0-9a-fA-F]+\s*)+)";
const string TRACK_MODE = @"^\s*MODE\s*=\s*(?\d+)";
const string TRACK_INDEX = @"^\s*INDEX\s*(?\d+)\s*=\s*(?\d+)";
+
+ [GeneratedRegex(CCD_IDENTIFIER)]
+ private static partial Regex CcdIdentifierRegex();
+
+ [GeneratedRegex(DISC_IDENTIFIER)]
+ private static partial Regex DiscIdentifierRegex();
+
+ [GeneratedRegex(SESSION_IDENTIFIER)]
+ private static partial Regex SessionIdentifierRegex();
+
+ [GeneratedRegex(ENTRY_IDENTIFIER)]
+ private static partial Regex EntryIdentifierRegex();
+
+ [GeneratedRegex(TRACK_IDENTIFIER)]
+ private static partial Regex TrackIdentifierRegex();
+
+ [GeneratedRegex(CDTEXT_IDENTIFIER)]
+ private static partial Regex CdtextIdentifierRegex();
+
+ [GeneratedRegex(CCD_VERSION)]
+ private static partial Regex CcdVersionRegex();
+
+ [GeneratedRegex(DISC_ENTRIES)]
+ private static partial Regex DiscEntriesRegex();
+
+ [GeneratedRegex(DISC_SESSIONS)]
+ private static partial Regex DiscSessionsRegex();
+
+ [GeneratedRegex(DISC_SCRAMBLED)]
+ private static partial Regex DiscScrambledRegex();
+
+ [GeneratedRegex(CDTEXT_LENGTH)]
+ private static partial Regex CdtextLengthRegex();
+
+ [GeneratedRegex(DISC_CATALOG)]
+ private static partial Regex DiscCatalogRegex();
+
+ [GeneratedRegex(SESSION_PREGAP)]
+ private static partial Regex SesionPregapRegex();
+
+ [GeneratedRegex(SESSION_SUBCHANNEL)]
+ private static partial Regex SessionSubchannelRegex();
+
+ [GeneratedRegex(ENTRY_SESSION)]
+ private static partial Regex EntrySessionRegex();
+
+ [GeneratedRegex(ENTRY_POINT)]
+ private static partial Regex EntryPointRegex();
+
+ [GeneratedRegex(ENTRY_ADR)]
+ private static partial Regex EntryAdrRegex();
+
+ [GeneratedRegex(ENTRY_CONTROL)]
+ private static partial Regex EntryControlRegex();
+
+ [GeneratedRegex(ENTRY_TRACKNO)]
+ private static partial Regex EntryTracknoRegex();
+
+ [GeneratedRegex(ENTRY_AMIN)]
+ private static partial Regex EntryAminRegex();
+
+ [GeneratedRegex(ENTRY_ASEC)]
+ private static partial Regex EntryAsecRegex();
+
+ [GeneratedRegex(ENTRY_AFRAME)]
+ private static partial Regex EntryAframeRegex();
+
+ [GeneratedRegex(ENTRY_ALBA)]
+ private static partial Regex EntryAlbaRegex();
+
+ [GeneratedRegex(ENTRY_ZERO)]
+ private static partial Regex EntryZeroRegex();
+
+ [GeneratedRegex(ENTRY_PMIN)]
+ private static partial Regex EntryPminRegex();
+
+ [GeneratedRegex(ENTRY_PSEC)]
+ private static partial Regex EntryPsecRegex();
+
+ [GeneratedRegex(ENTRY_PFRAME)]
+ private static partial Regex EntryPframeRegex();
+
+ [GeneratedRegex(ENTRY_PLBA)]
+ private static partial Regex EntryPlbaRegex();
+
+ [GeneratedRegex(CDTEXT_ENTRIES)]
+ private static partial Regex CdtextEntriesRegex();
+
+ [GeneratedRegex(CDTEXT_ENTRY)]
+ private static partial Regex CdtextEntryRegex();
+
+ [GeneratedRegex(TRACK_MODE)]
+ private static partial Regex TrackModeRegex();
+
+ [GeneratedRegex(TRACK_INDEX)]
+ private static partial Regex TrackIndexRegex();
}
\ No newline at end of file
diff --git a/Aaru.Images/CloneCD/Identify.cs b/Aaru.Images/CloneCD/Identify.cs
index 0d8fa668b..f3238c60c 100644
--- a/Aaru.Images/CloneCD/Identify.cs
+++ b/Aaru.Images/CloneCD/Identify.cs
@@ -51,14 +51,14 @@ public sealed partial class CloneCd
try
{
imageFilter.GetDataForkStream().Seek(0, SeekOrigin.Begin);
- byte[] testArray = new byte[512];
+ var testArray = new byte[512];
imageFilter.GetDataForkStream().EnsureRead(testArray, 0, 512);
imageFilter.GetDataForkStream().Seek(0, SeekOrigin.Begin);
// Check for unexpected control characters that shouldn't be present in a text file and can crash this plugin
- bool twoConsecutiveNulls = false;
+ var twoConsecutiveNulls = false;
- for(int i = 0; i < 512; i++)
+ for(var i = 0; i < 512; i++)
{
if(i >= imageFilter.GetDataForkStream().Length) break;
@@ -79,7 +79,7 @@ public sealed partial class CloneCd
string line = _cueStream.ReadLine();
- var hdr = new Regex(CCD_IDENTIFIER);
+ Regex hdr = CcdIdentifierRegex();
Match hdm = hdr.Match(line ?? "");
diff --git a/Aaru.Images/CloneCD/Read.cs b/Aaru.Images/CloneCD/Read.cs
index 47d0649f3..4a9633664 100644
--- a/Aaru.Images/CloneCD/Read.cs
+++ b/Aaru.Images/CloneCD/Read.cs
@@ -64,38 +64,38 @@ public sealed partial class CloneCd
_cueStream = new StreamReader(imageFilter.GetDataForkStream());
var lineNumber = 0;
- var ccdIdRegex = new Regex(CCD_IDENTIFIER);
- var discIdRegex = new Regex(DISC_IDENTIFIER);
- var sessIdRegex = new Regex(SESSION_IDENTIFIER);
- var entryIdRegex = new Regex(ENTRY_IDENTIFIER);
- var trackIdRegex = new Regex(TRACK_IDENTIFIER);
- var cdtIdRegex = new Regex(CDTEXT_IDENTIFIER);
- var ccdVerRegex = new Regex(CCD_VERSION);
- var discEntRegex = new Regex(DISC_ENTRIES);
- var discSessRegex = new Regex(DISC_SESSIONS);
- var discScrRegex = new Regex(DISC_SCRAMBLED);
- var cdtLenRegex = new Regex(CDTEXT_LENGTH);
- var discCatRegex = new Regex(DISC_CATALOG);
- var sessPregRegex = new Regex(SESSION_PREGAP);
- var sessSubcRegex = new Regex(SESSION_SUBCHANNEL);
- var entSessRegex = new Regex(ENTRY_SESSION);
- var entPointRegex = new Regex(ENTRY_POINT);
- var entAdrRegex = new Regex(ENTRY_ADR);
- var entCtrlRegex = new Regex(ENTRY_CONTROL);
- var entTnoRegex = new Regex(ENTRY_TRACKNO);
- var entAMinRegex = new Regex(ENTRY_AMIN);
- var entASecRegex = new Regex(ENTRY_ASEC);
- var entAFrameRegex = new Regex(ENTRY_AFRAME);
- var entAlbaRegex = new Regex(ENTRY_ALBA);
- var entZeroRegex = new Regex(ENTRY_ZERO);
- var entPMinRegex = new Regex(ENTRY_PMIN);
- var entPSecRegex = new Regex(ENTRY_PSEC);
- var entPFrameRegex = new Regex(ENTRY_PFRAME);
- var entPlbaRegex = new Regex(ENTRY_PLBA);
- var cdtEntsRegex = new Regex(CDTEXT_ENTRIES);
- var cdtEntRegex = new Regex(CDTEXT_ENTRY);
- var trkModeRegex = new Regex(TRACK_MODE);
- var trkIndexRegex = new Regex(TRACK_INDEX);
+ Regex ccdIdRegex = CcdIdentifierRegex();
+ Regex discIdRegex = DiscIdentifierRegex();
+ Regex sessIdRegex = SessionIdentifierRegex();
+ Regex entryIdRegex = EntryIdentifierRegex();
+ Regex trackIdRegex = TrackIdentifierRegex();
+ Regex cdtIdRegex = CdtextIdentifierRegex();
+ Regex ccdVerRegex = CcdVersionRegex();
+ Regex discEntRegex = DiscEntriesRegex();
+ Regex discSessRegex = DiscSessionsRegex();
+ Regex discScrRegex = DiscScrambledRegex();
+ Regex cdtLenRegex = CdtextLengthRegex();
+ Regex discCatRegex = DiscCatalogRegex();
+ Regex sessPregRegex = SesionPregapRegex();
+ Regex sessSubcRegex = SessionSubchannelRegex();
+ Regex entSessRegex = EntrySessionRegex();
+ Regex entPointRegex = EntryPointRegex();
+ Regex entAdrRegex = EntryAdrRegex();
+ Regex entCtrlRegex = EntryControlRegex();
+ Regex entTnoRegex = EntryTracknoRegex();
+ Regex entAMinRegex = EntryAminRegex();
+ Regex entASecRegex = EntryAsecRegex();
+ Regex entAFrameRegex = EntryAframeRegex();
+ Regex entAlbaRegex = EntryAlbaRegex();
+ Regex entZeroRegex = EntryZeroRegex();
+ Regex entPMinRegex = EntryPminRegex();
+ Regex entPSecRegex = EntryPsecRegex();
+ Regex entPFrameRegex = EntryPframeRegex();
+ Regex entPlbaRegex = EntryPlbaRegex();
+ Regex cdtEntsRegex = CdtextEntriesRegex();
+ Regex cdtEntRegex = CdtextEntryRegex();
+ Regex trkModeRegex = TrackModeRegex();
+ Regex trkIndexRegex = TrackIndexRegex();
var inCcd = false;
var inDisk = false;
diff --git a/Aaru.Images/CopyTape/Constants.cs b/Aaru.Images/CopyTape/Constants.cs
index 0282a47e9..1689fa2e4 100644
--- a/Aaru.Images/CopyTape/Constants.cs
+++ b/Aaru.Images/CopyTape/Constants.cs
@@ -30,6 +30,8 @@
// Copyright © 2011-2025 Natalia Portillo
// ****************************************************************************/
+using System.Text.RegularExpressions;
+
namespace Aaru.Images;
public sealed partial class CopyTape
@@ -38,4 +40,16 @@ public sealed partial class CopyTape
const string PARTIAL_BLOCK_REGEX = @"^CPTP:BLK $";
const string FILEMARK_REGEX = @"^CPTP:MRK\n$";
const string END_OF_TAPE_REGEX = @"^CPTP:EOT\n$";
+
+ [GeneratedRegex(BLOCK_REGEX)]
+ private static partial Regex BlockRegex();
+
+ [GeneratedRegex(PARTIAL_BLOCK_REGEX)]
+ private static partial Regex PartialBlockRegex();
+
+ [GeneratedRegex(FILEMARK_REGEX)]
+ private static partial Regex FilemarkRegex();
+
+ [GeneratedRegex(END_OF_TAPE_REGEX)]
+ private static partial Regex EndOfTapeRegex();
}
\ No newline at end of file
diff --git a/Aaru.Images/CopyTape/Identify.cs b/Aaru.Images/CopyTape/Identify.cs
index 1fdf7380b..6d2488d31 100644
--- a/Aaru.Images/CopyTape/Identify.cs
+++ b/Aaru.Images/CopyTape/Identify.cs
@@ -55,7 +55,7 @@ public sealed partial class CopyTape
string mark = Encoding.ASCII.GetString(header);
- var blockRx = new Regex(BLOCK_REGEX);
+ Regex blockRx = BlockRegex();
Match blockMt = blockRx.Match(mark);
if(!blockMt.Success) return false;
diff --git a/Aaru.Images/CopyTape/Read.cs b/Aaru.Images/CopyTape/Read.cs
index e4399d889..1f5e9438d 100644
--- a/Aaru.Images/CopyTape/Read.cs
+++ b/Aaru.Images/CopyTape/Read.cs
@@ -51,10 +51,10 @@ public sealed partial class CopyTape
public ErrorNumber Open(IFilter imageFilter)
{
List blockPositions = [];
- var partialBlockRx = new Regex(PARTIAL_BLOCK_REGEX);
- var blockRx = new Regex(BLOCK_REGEX);
- var filemarkRx = new Regex(FILEMARK_REGEX);
- var eotRx = new Regex(END_OF_TAPE_REGEX);
+ Regex partialBlockRx = PartialBlockRegex();
+ Regex blockRx = BlockRegex();
+ Regex filemarkRx = FilemarkRegex();
+ Regex eotRx = EndOfTapeRegex();
if(imageFilter.DataForkLength <= 16) return ErrorNumber.InvalidArgument;
diff --git a/Aaru.Images/DART/Constants.cs b/Aaru.Images/DART/Constants.cs
index eeb34a94d..1853aaa4b 100644
--- a/Aaru.Images/DART/Constants.cs
+++ b/Aaru.Images/DART/Constants.cs
@@ -31,6 +31,7 @@
// ****************************************************************************/
using System.Diagnostics.CodeAnalysis;
+using System.Text.RegularExpressions;
namespace Aaru.Images;
@@ -77,4 +78,7 @@ public sealed partial class Dart
const string DART_REGEX =
@"(?\S+), tag checksum=\$(?[0123456789ABCDEF]{8}), data checksum=\$(?[0123456789ABCDEF]{8})$";
+
+ [GeneratedRegex(DART_REGEX)]
+ private static partial Regex DartRegex();
}
\ No newline at end of file
diff --git a/Aaru.Images/DART/Read.cs b/Aaru.Images/DART/Read.cs
index 4b4a7c573..cf44209f0 100644
--- a/Aaru.Images/DART/Read.cs
+++ b/Aaru.Images/DART/Read.cs
@@ -216,7 +216,7 @@ public sealed partial class Dart
string dArt = StringHandlers.PascalToString(dartRsrc.GetResource(dartRsrc.GetIds()[0]),
Encoding.GetEncoding("macintosh"));
- var dArtEx = new Regex(DART_REGEX);
+ Regex dArtEx = DartRegex();
Match dArtMatch = dArtEx.Match(dArt);
if(dArtMatch.Success)
diff --git a/Aaru.Images/DiskCopy42/Constants.cs b/Aaru.Images/DiskCopy42/Constants.cs
index 2a75e484a..c4b14ecf9 100644
--- a/Aaru.Images/DiskCopy42/Constants.cs
+++ b/Aaru.Images/DiskCopy42/Constants.cs
@@ -32,6 +32,8 @@
// ReSharper disable InconsistentNaming
+using System.Text.RegularExpressions;
+
namespace Aaru.Images;
public sealed partial class DiskCopy42
@@ -82,4 +84,7 @@ public sealed partial class DiskCopy42
/// Used incorrectly by Mac OS X with certaing disk images
const byte kMacOSXFmtByte = 0x00;
const string REGEX_DCPY = @"(?\S+)\s(?\S+)\rData checksum=\$(?\S+)$";
+
+ [GeneratedRegex(REGEX_DCPY)]
+ private static partial Regex DcpyRegex();
}
\ No newline at end of file
diff --git a/Aaru.Images/DiskCopy42/Read.cs b/Aaru.Images/DiskCopy42/Read.cs
index 367aed760..fc2dd6819 100644
--- a/Aaru.Images/DiskCopy42/Read.cs
+++ b/Aaru.Images/DiskCopy42/Read.cs
@@ -305,7 +305,7 @@ public sealed partial class DiskCopy42
string dCpy = StringHandlers.PascalToString(dCpyRsrc.GetResource(dCpyRsrc.GetIds()[0]),
Encoding.GetEncoding("macintosh"));
- var dCpyEx = new Regex(REGEX_DCPY);
+ Regex dCpyEx = DcpyRegex();
Match dCpyMatch = dCpyEx.Match(dCpy);
if(dCpyMatch.Success)
diff --git a/Aaru.Images/DriDiskCopy/Constants.cs b/Aaru.Images/DriDiskCopy/Constants.cs
index c221620ca..0f57c237f 100644
--- a/Aaru.Images/DriDiskCopy/Constants.cs
+++ b/Aaru.Images/DriDiskCopy/Constants.cs
@@ -30,9 +30,14 @@
// Copyright © 2011-2025 Natalia Portillo
// ****************************************************************************/
+using System.Text.RegularExpressions;
+
namespace Aaru.Images;
public sealed partial class DriDiskCopy
{
const string REGEX_DRI = @"DiskImage\s(?\d+.\d+)\s\(C\)\s\d+\,*\d*\s+Digital Research Inc";
+
+ [GeneratedRegex(REGEX_DRI)]
+ private static partial Regex DriRegex();
}
\ No newline at end of file
diff --git a/Aaru.Images/DriDiskCopy/Identify.cs b/Aaru.Images/DriDiskCopy/Identify.cs
index 9005b2c0e..4069bdae2 100644
--- a/Aaru.Images/DriDiskCopy/Identify.cs
+++ b/Aaru.Images/DriDiskCopy/Identify.cs
@@ -49,7 +49,7 @@ public sealed partial class DriDiskCopy
if((stream.Length - Marshal.SizeOf