Use string builders where possible

This commit is contained in:
Matt Nadareski
2024-12-05 00:23:35 -05:00
parent 5e5360441a
commit 86eca8dee7
4 changed files with 218 additions and 213 deletions

View File

@@ -33,6 +33,7 @@
- Let inputs read equal-separated values
- Fix some formatting issues with Input types
- Replace Aaru pre-command flags
- Use string builders where possible
### 3.2.4 (2024-11-24)

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Text;
using MPF.ExecutionContexts.Data;
using SabreTools.RedumpLib.Data;
@@ -540,7 +541,7 @@ namespace MPF.ExecutionContexts.Aaru
/// <inheritdoc/>
public override string? GenerateParameters()
{
var parameters = new List<string>();
var parameters = new StringBuilder();
#region Pre-command flags
@@ -552,14 +553,14 @@ namespace MPF.ExecutionContexts.Aaru
continue;
// Append the parameter
parameters.Add(formatted);
parameters.Append($"{formatted} ");
}
#endregion
BaseCommand ??= CommandStrings.NONE;
if (!string.IsNullOrEmpty(BaseCommand))
parameters.Add(BaseCommand);
parameters.Append($"{BaseCommand} ");
else
return null;
@@ -569,329 +570,329 @@ namespace MPF.ExecutionContexts.Aaru
if (IsFlagSupported(FlagStrings.Adler32Long))
{
if (this[FlagStrings.Adler32Long] != null)
parameters.Add($"{FlagStrings.Adler32Long} {this[FlagStrings.Adler32Long]}");
parameters.Append($"{FlagStrings.Adler32Long} {this[FlagStrings.Adler32Long]} ");
}
// Clear
if (IsFlagSupported(FlagStrings.ClearLong))
{
if (this[FlagStrings.ClearLong] != null)
parameters.Add($"{FlagStrings.ClearLong} {this[FlagStrings.ClearLong]}");
parameters.Append($"{FlagStrings.ClearLong} {this[FlagStrings.ClearLong]} ");
}
// Clear All
if (IsFlagSupported(FlagStrings.ClearAllLong))
{
if (this[FlagStrings.ClearAllLong] != null)
parameters.Add($"{FlagStrings.ClearAllLong} {this[FlagStrings.ClearAllLong]}");
parameters.Append($"{FlagStrings.ClearAllLong} {this[FlagStrings.ClearAllLong]} ");
}
// CRC16
if (IsFlagSupported(FlagStrings.CRC16Long))
{
if (this[FlagStrings.CRC16Long] != null)
parameters.Add($"{FlagStrings.CRC16Long} {this[FlagStrings.CRC16Long]}");
parameters.Append($"{FlagStrings.CRC16Long} {this[FlagStrings.CRC16Long]} ");
}
// CRC32
if (IsFlagSupported(FlagStrings.CRC32Long))
{
if (this[FlagStrings.CRC32Long] != null)
parameters.Add($"{FlagStrings.CRC32Long} {this[FlagStrings.CRC32Long]}");
parameters.Append($"{FlagStrings.CRC32Long} {this[FlagStrings.CRC32Long]} ");
}
// CRC64
if (IsFlagSupported(FlagStrings.CRC64Long))
{
if (this[FlagStrings.CRC64Long] != null)
parameters.Add($"{FlagStrings.CRC64Long} {this[FlagStrings.CRC64Long]}");
parameters.Append($"{FlagStrings.CRC64Long} {this[FlagStrings.CRC64Long]} ");
}
// Disk Tags
if (IsFlagSupported(FlagStrings.DiskTagsLong))
{
if (this[FlagStrings.DiskTagsLong] != null)
parameters.Add($"{FlagStrings.DiskTagsLong} {this[FlagStrings.DiskTagsLong]}");
parameters.Append($"{FlagStrings.DiskTagsLong} {this[FlagStrings.DiskTagsLong]} ");
}
// Duplicated Sectors
if (IsFlagSupported(FlagStrings.DuplicatedSectorsLong))
{
if (this[FlagStrings.DuplicatedSectorsLong] != null)
parameters.Add($"{FlagStrings.DuplicatedSectorsLong} {this[FlagStrings.DuplicatedSectorsLong]}");
parameters.Append($"{FlagStrings.DuplicatedSectorsLong} {this[FlagStrings.DuplicatedSectorsLong]} ");
}
// Eject
if (IsFlagSupported(FlagStrings.EjectLong))
{
if (this[FlagStrings.EjectLong] != null)
parameters.Add($"{FlagStrings.EjectLong} {this[FlagStrings.EjectLong]}");
parameters.Append($"{FlagStrings.EjectLong} {this[FlagStrings.EjectLong]} ");
}
// Extended Attributes
if (IsFlagSupported(FlagStrings.ExtendedAttributesLong))
{
if (this[FlagStrings.ExtendedAttributesLong] != null)
parameters.Add($"{FlagStrings.ExtendedAttributesLong} {this[FlagStrings.ExtendedAttributesLong]}");
parameters.Append($"{FlagStrings.ExtendedAttributesLong} {this[FlagStrings.ExtendedAttributesLong]} ");
}
// Filesystems
if (IsFlagSupported(FlagStrings.FilesystemsLong))
{
if (this[FlagStrings.FilesystemsLong] != null)
parameters.Add($"{FlagStrings.FilesystemsLong} {this[FlagStrings.FilesystemsLong]}");
parameters.Append($"{FlagStrings.FilesystemsLong} {this[FlagStrings.FilesystemsLong]} ");
}
// First Pregap
if (IsFlagSupported(FlagStrings.FirstPregapLong))
{
if (this[FlagStrings.FirstPregapLong] != null)
parameters.Add($"{FlagStrings.FirstPregapLong} {this[FlagStrings.FirstPregapLong]}");
parameters.Append($"{FlagStrings.FirstPregapLong} {this[FlagStrings.FirstPregapLong]} ");
}
// Fix Offset
if (IsFlagSupported(FlagStrings.FixOffsetLong))
{
if (this[FlagStrings.FixOffsetLong] != null)
parameters.Add($"{FlagStrings.FixOffsetLong} {this[FlagStrings.FixOffsetLong]}");
parameters.Append($"{FlagStrings.FixOffsetLong} {this[FlagStrings.FixOffsetLong]} ");
}
// Fix Subchannel
if (IsFlagSupported(FlagStrings.FixSubchannelLong))
{
if (this[FlagStrings.FixSubchannelLong] != null)
parameters.Add($"{FlagStrings.FixSubchannelLong} {this[FlagStrings.FixSubchannelLong]}");
parameters.Append($"{FlagStrings.FixSubchannelLong} {this[FlagStrings.FixSubchannelLong]} ");
}
// Fix Subchannel CRC
if (IsFlagSupported(FlagStrings.FixSubchannelCrcLong))
{
if (this[FlagStrings.FixSubchannelCrcLong] != null)
parameters.Add($"{FlagStrings.FixSubchannelCrcLong} {this[FlagStrings.FixSubchannelCrcLong]}");
parameters.Append($"{FlagStrings.FixSubchannelCrcLong} {this[FlagStrings.FixSubchannelCrcLong]} ");
}
// Fix Subchannel Position
if (IsFlagSupported(FlagStrings.FixSubchannelPositionLong))
{
if (this[FlagStrings.FixSubchannelPositionLong] != null)
parameters.Add($"{FlagStrings.FixSubchannelPositionLong} {this[FlagStrings.FixSubchannelPositionLong]}");
parameters.Append($"{FlagStrings.FixSubchannelPositionLong} {this[FlagStrings.FixSubchannelPositionLong]} ");
}
// Fletcher-16
if (IsFlagSupported(FlagStrings.Fletcher16Long))
{
if (this[FlagStrings.Fletcher16Long] != null)
parameters.Add($"{FlagStrings.Fletcher16Long} {this[FlagStrings.Fletcher16Long]}");
parameters.Append($"{FlagStrings.Fletcher16Long} {this[FlagStrings.Fletcher16Long]} ");
}
// Fletcher-32
if (IsFlagSupported(FlagStrings.Fletcher32Long))
{
if (this[FlagStrings.Fletcher32Long] != null)
parameters.Add($"{FlagStrings.Fletcher32Long} {this[FlagStrings.Fletcher32Long]}");
parameters.Append($"{FlagStrings.Fletcher32Long} {this[FlagStrings.Fletcher32Long]} ");
}
// Force
if (IsFlagSupported(FlagStrings.ForceLong))
{
if (this[FlagStrings.ForceLong] != null)
parameters.Add($"{FlagStrings.ForceLong} {this[FlagStrings.ForceLong]}");
parameters.Append($"{FlagStrings.ForceLong} {this[FlagStrings.ForceLong]} ");
}
// Generate Subchannels
if (IsFlagSupported(FlagStrings.GenerateSubchannelsLong))
{
if (this[FlagStrings.GenerateSubchannelsLong] != null)
parameters.Add($"{FlagStrings.GenerateSubchannelsLong} {this[FlagStrings.GenerateSubchannelsLong]}");
parameters.Append($"{FlagStrings.GenerateSubchannelsLong} {this[FlagStrings.GenerateSubchannelsLong]} ");
}
// Long Format
if (IsFlagSupported(FlagStrings.LongFormatLong))
{
if (this[FlagStrings.LongFormatLong] != null)
parameters.Add($"{FlagStrings.LongFormatLong} {this[FlagStrings.LongFormatLong]}");
parameters.Append($"{FlagStrings.LongFormatLong} {this[FlagStrings.LongFormatLong]} ");
}
// Long Sectors
if (IsFlagSupported(FlagStrings.LongSectorsLong))
{
if (this[FlagStrings.LongSectorsLong] != null)
parameters.Add($"{FlagStrings.LongSectorsLong} {this[FlagStrings.LongSectorsLong]}");
parameters.Append($"{FlagStrings.LongSectorsLong} {this[FlagStrings.LongSectorsLong]} ");
}
// MD5
if (IsFlagSupported(FlagStrings.MD5Long))
{
if (this[FlagStrings.MD5Long] != null)
parameters.Add($"{FlagStrings.MD5Long} {this[FlagStrings.MD5Long]}");
parameters.Append($"{FlagStrings.MD5Long} {this[FlagStrings.MD5Long]} ");
}
// Metadata
if (IsFlagSupported(FlagStrings.MetadataLong))
{
if (this[FlagStrings.MetadataLong] != null)
parameters.Add($"{FlagStrings.MetadataLong} {this[FlagStrings.MetadataLong]}");
parameters.Append($"{FlagStrings.MetadataLong} {this[FlagStrings.MetadataLong]} ");
}
// Partitions
if (IsFlagSupported(FlagStrings.PartitionsLong))
{
if (this[FlagStrings.PartitionsLong] != null)
parameters.Add($"{FlagStrings.PartitionsLong} {this[FlagStrings.PartitionsLong]}");
parameters.Append($"{FlagStrings.PartitionsLong} {this[FlagStrings.PartitionsLong]} ");
}
// Persistent
if (IsFlagSupported(FlagStrings.PersistentLong))
{
if (this[FlagStrings.PersistentLong] != null)
parameters.Add($"{FlagStrings.PersistentLong} {this[FlagStrings.PersistentLong]}");
parameters.Append($"{FlagStrings.PersistentLong} {this[FlagStrings.PersistentLong]} ");
}
// Private
if (IsFlagSupported(FlagStrings.PrivateLong))
{
if (this[FlagStrings.PrivateLong] != null)
parameters.Add($"{FlagStrings.PrivateLong} {this[FlagStrings.PrivateLong]}");
parameters.Append($"{FlagStrings.PrivateLong} {this[FlagStrings.PrivateLong]} ");
}
// Resume
if (IsFlagSupported(FlagStrings.ResumeLong))
{
if (this[FlagStrings.ResumeLong] != null)
parameters.Add($"{FlagStrings.ResumeLong} {this[FlagStrings.ResumeLong]}");
parameters.Append($"{FlagStrings.ResumeLong} {this[FlagStrings.ResumeLong]} ");
}
// Retry Subchannel
if (IsFlagSupported(FlagStrings.RetrySubchannelLong))
{
if (this[FlagStrings.RetrySubchannelLong] != null)
parameters.Add($"{FlagStrings.RetrySubchannelLong} {this[FlagStrings.RetrySubchannelLong]}");
parameters.Append($"{FlagStrings.RetrySubchannelLong} {this[FlagStrings.RetrySubchannelLong]} ");
}
// Sector Tags
if (IsFlagSupported(FlagStrings.SectorTagsLong))
{
if (this[FlagStrings.SectorTagsLong] != null)
parameters.Add($"{FlagStrings.SectorTagsLong} {this[FlagStrings.SectorTagsLong]}");
parameters.Append($"{FlagStrings.SectorTagsLong} {this[FlagStrings.SectorTagsLong]} ");
}
// Separated Tracks
if (IsFlagSupported(FlagStrings.SeparatedTracksLong))
{
if (this[FlagStrings.SeparatedTracksLong] != null)
parameters.Add($"{FlagStrings.SeparatedTracksLong} {this[FlagStrings.SeparatedTracksLong]}");
parameters.Append($"{FlagStrings.SeparatedTracksLong} {this[FlagStrings.SeparatedTracksLong]} ");
}
// SHA-1
if (IsFlagSupported(FlagStrings.SHA1Long))
{
if (this[FlagStrings.SHA1Long] != null)
parameters.Add($"{FlagStrings.SHA1Long} {this[FlagStrings.SHA1Long]}");
parameters.Append($"{FlagStrings.SHA1Long} {this[FlagStrings.SHA1Long]} ");
}
// SHA-256
if (IsFlagSupported(FlagStrings.SHA256Long))
{
if (this[FlagStrings.SHA256Long] != null)
parameters.Add($"{FlagStrings.SHA256Long} {this[FlagStrings.SHA256Long]}");
parameters.Append($"{FlagStrings.SHA256Long} {this[FlagStrings.SHA256Long]} ");
}
// SHA-384
if (IsFlagSupported(FlagStrings.SHA384Long))
{
if (this[FlagStrings.SHA384Long] != null)
parameters.Add($"{FlagStrings.SHA384Long} {this[FlagStrings.SHA384Long]}");
parameters.Append($"{FlagStrings.SHA384Long} {this[FlagStrings.SHA384Long]} ");
}
// SHA-512
if (IsFlagSupported(FlagStrings.SHA512Long))
{
if (this[FlagStrings.SHA512Long] != null)
parameters.Add($"{FlagStrings.SHA512Long} {this[FlagStrings.SHA512Long]}");
parameters.Append($"{FlagStrings.SHA512Long} {this[FlagStrings.SHA512Long]} ");
}
// Skip CD-i Ready Hole
if (IsFlagSupported(FlagStrings.SkipCdiReadyHoleLong))
{
if (this[FlagStrings.SkipCdiReadyHoleLong] != null)
parameters.Add($"{FlagStrings.SkipCdiReadyHoleLong} {this[FlagStrings.SkipCdiReadyHoleLong]}");
parameters.Append($"{FlagStrings.SkipCdiReadyHoleLong} {this[FlagStrings.SkipCdiReadyHoleLong]} ");
}
// SpamSum
if (IsFlagSupported(FlagStrings.SpamSumLong))
{
if (this[FlagStrings.SpamSumLong] != null)
parameters.Add($"{FlagStrings.SpamSumLong} {this[FlagStrings.SpamSumLong]}");
parameters.Append($"{FlagStrings.SpamSumLong} {this[FlagStrings.SpamSumLong]} ");
}
// Stop on Error
if (IsFlagSupported(FlagStrings.StopOnErrorLong))
{
if (this[FlagStrings.StopOnErrorLong] != null)
parameters.Add($"{FlagStrings.StopOnErrorLong} {this[FlagStrings.StopOnErrorLong]}");
parameters.Append($"{FlagStrings.StopOnErrorLong} {this[FlagStrings.StopOnErrorLong]} ");
}
// Stop on Error
if (IsFlagSupported(FlagStrings.StoreEncryptedLong))
{
if (this[FlagStrings.StoreEncryptedLong] != null)
parameters.Add($"{FlagStrings.StoreEncryptedLong} {this[FlagStrings.StoreEncryptedLong]}");
parameters.Append($"{FlagStrings.StoreEncryptedLong} {this[FlagStrings.StoreEncryptedLong]} ");
}
// Tape
if (IsFlagSupported(FlagStrings.TapeLong))
{
if (this[FlagStrings.TapeLong] != null)
parameters.Add($"{FlagStrings.TapeLong} {this[FlagStrings.TapeLong]}");
parameters.Append($"{FlagStrings.TapeLong} {this[FlagStrings.TapeLong]} ");
}
// Title Keys
if (IsFlagSupported(FlagStrings.TitleKeysLong))
{
if (this[FlagStrings.TitleKeysLong] != null)
parameters.Add($"{FlagStrings.TitleKeysLong} {this[FlagStrings.TitleKeysLong]}");
parameters.Append($"{FlagStrings.TitleKeysLong} {this[FlagStrings.TitleKeysLong]} ");
}
// Trap Disc
if (IsFlagSupported(FlagStrings.TrapDiscLong))
{
if (this[FlagStrings.TrapDiscLong] != null)
parameters.Add($"{FlagStrings.TrapDiscLong} {this[FlagStrings.TrapDiscLong]}");
parameters.Append($"{FlagStrings.TrapDiscLong} {this[FlagStrings.TrapDiscLong]} ");
}
// Trim
if (IsFlagSupported(FlagStrings.TrimLong))
{
if (this[FlagStrings.TrimLong] != null)
parameters.Add($"{FlagStrings.TrimLong} {this[FlagStrings.TrimLong]}");
parameters.Append($"{FlagStrings.TrimLong} {this[FlagStrings.TrimLong]} ");
}
// Use Buffered Reads
if (IsFlagSupported(FlagStrings.UseBufferedReadsLong))
{
if (this[FlagStrings.UseBufferedReadsLong] != null)
parameters.Add($"{FlagStrings.UseBufferedReadsLong} {this[FlagStrings.UseBufferedReadsLong]}");
parameters.Append($"{FlagStrings.UseBufferedReadsLong} {this[FlagStrings.UseBufferedReadsLong]} ");
}
// Verify Disc
if (IsFlagSupported(FlagStrings.VerifyDiscLong))
{
if (this[FlagStrings.VerifyDiscLong] != null)
parameters.Add($"{FlagStrings.VerifyDiscLong} {this[FlagStrings.VerifyDiscLong]}");
parameters.Append($"{FlagStrings.VerifyDiscLong} {this[FlagStrings.VerifyDiscLong]} ");
}
// Verify Sectors
if (IsFlagSupported(FlagStrings.VerifySectorsLong))
{
if (this[FlagStrings.VerifySectorsLong] != null)
parameters.Add($"{FlagStrings.VerifySectorsLong} {this[FlagStrings.VerifySectorsLong]}");
parameters.Append($"{FlagStrings.VerifySectorsLong} {this[FlagStrings.VerifySectorsLong]} ");
}
// Whole Disc
if (IsFlagSupported(FlagStrings.WholeDiscLong))
{
if (this[FlagStrings.WholeDiscLong] != null)
parameters.Add($"{FlagStrings.WholeDiscLong} {this[FlagStrings.WholeDiscLong]}");
parameters.Append($"{FlagStrings.WholeDiscLong} {this[FlagStrings.WholeDiscLong]} ");
}
#endregion
@@ -902,7 +903,7 @@ namespace MPF.ExecutionContexts.Aaru
if (IsFlagSupported(FlagStrings.SpeedLong))
{
if (this[FlagStrings.SpeedLong] == true && SpeedValue != null)
parameters.Add($"{FlagStrings.SpeedLong} {SpeedValue}");
parameters.Append($"{FlagStrings.SpeedLong} {SpeedValue} ");
}
#endregion
@@ -913,14 +914,14 @@ namespace MPF.ExecutionContexts.Aaru
if (IsFlagSupported(FlagStrings.RetryPassesLong))
{
if (this[FlagStrings.RetryPassesLong] == true && RetryPassesValue != null)
parameters.Add($"{FlagStrings.RetryPassesLong} {RetryPassesValue}");
parameters.Append($"{FlagStrings.RetryPassesLong} {RetryPassesValue} ");
}
// Width
if (IsFlagSupported(FlagStrings.WidthLong))
{
if (this[FlagStrings.WidthLong] == true && WidthValue != null)
parameters.Add($"{FlagStrings.WidthLong} {WidthValue}");
parameters.Append($"{FlagStrings.WidthLong} {WidthValue} ");
}
#endregion
@@ -931,42 +932,42 @@ namespace MPF.ExecutionContexts.Aaru
if (IsFlagSupported(FlagStrings.BlockSizeLong))
{
if (this[FlagStrings.BlockSizeLong] == true && BlockSizeValue != null)
parameters.Add($"{FlagStrings.BlockSizeLong} {BlockSizeValue}");
parameters.Append($"{FlagStrings.BlockSizeLong} {BlockSizeValue} ");
}
// Count
if (IsFlagSupported(FlagStrings.CountLong))
{
if (this[FlagStrings.CountLong] == true && CountValue != null)
parameters.Add($"{FlagStrings.CountLong} {CountValue}");
parameters.Append($"{FlagStrings.CountLong} {CountValue} ");
}
// Max Blocks
if (IsFlagSupported(FlagStrings.MaxBlocksLong))
{
if (this[FlagStrings.MaxBlocksLong] == true && MaxBlocksValue != null)
parameters.Add($"{FlagStrings.MaxBlocksLong} {MaxBlocksValue}");
parameters.Append($"{FlagStrings.MaxBlocksLong} {MaxBlocksValue} ");
}
// Media Last Sequence
if (IsFlagSupported(FlagStrings.MediaLastSequenceLong))
{
if (this[FlagStrings.MediaLastSequenceLong] == true && MediaLastSequenceValue != null)
parameters.Add($"{FlagStrings.MediaLastSequenceLong} {MediaLastSequenceValue}");
parameters.Append($"{FlagStrings.MediaLastSequenceLong} {MediaLastSequenceValue} ");
}
// Media Sequence
if (IsFlagSupported(FlagStrings.MediaSequenceLong))
{
if (this[FlagStrings.MediaSequenceLong] == true && MediaSequenceValue != null)
parameters.Add($"{FlagStrings.MediaSequenceLong} {MediaSequenceValue}");
parameters.Append($"{FlagStrings.MediaSequenceLong} {MediaSequenceValue} ");
}
// Skip
if (IsFlagSupported(FlagStrings.SkipLong))
{
if (this[FlagStrings.SkipLong] == true && SkipValue != null)
parameters.Add($"{FlagStrings.SkipLong} {SkipValue}");
parameters.Append($"{FlagStrings.SkipLong} {SkipValue} ");
}
#endregion
@@ -979,9 +980,9 @@ namespace MPF.ExecutionContexts.Aaru
if (this[FlagStrings.LengthLong] == true && LengthValue != null)
{
if (LengthValue >= 0)
parameters.Add($"{FlagStrings.LengthLong} {LengthValue}");
parameters.Append($"{FlagStrings.LengthLong} {LengthValue} ");
else if (LengthValue == -1 && BaseCommand == CommandStrings.ImageDecode)
parameters.Add($"{FlagStrings.LengthLong} all");
parameters.Append($"{FlagStrings.LengthLong} all ");
}
}
@@ -989,7 +990,7 @@ namespace MPF.ExecutionContexts.Aaru
if (IsFlagSupported(FlagStrings.StartLong))
{
if (this[FlagStrings.StartLong] == true && StartValue != null)
parameters.Add($"{FlagStrings.StartLong} {StartValue}");
parameters.Append($"{FlagStrings.StartLong} {StartValue} ");
}
#endregion
@@ -1000,168 +1001,168 @@ namespace MPF.ExecutionContexts.Aaru
if (IsFlagSupported(FlagStrings.CommentsLong))
{
if (this[FlagStrings.CommentsLong] == true && CommentsValue != null)
parameters.Add($"{FlagStrings.CommentsLong} \"{CommentsValue}\"");
parameters.Append($"{FlagStrings.CommentsLong} \"{CommentsValue}\" ");
}
// Creator
if (IsFlagSupported(FlagStrings.CreatorLong))
{
if (this[FlagStrings.CreatorLong] == true && CreatorValue != null)
parameters.Add($"{FlagStrings.CreatorLong} \"{CreatorValue}\"");
parameters.Append($"{FlagStrings.CreatorLong} \"{CreatorValue}\" ");
}
// Drive Manufacturer
if (IsFlagSupported(FlagStrings.DriveManufacturerLong))
{
if (this[FlagStrings.DriveManufacturerLong] == true && DriveManufacturerValue != null)
parameters.Add($"{FlagStrings.DriveManufacturerLong} \"{DriveManufacturerValue}\"");
parameters.Append($"{FlagStrings.DriveManufacturerLong} \"{DriveManufacturerValue}\" ");
}
// Drive Model
if (IsFlagSupported(FlagStrings.DriveModelLong))
{
if (this[FlagStrings.DriveModelLong] == true && DriveModelValue != null)
parameters.Add($"{FlagStrings.DriveModelLong} \"{DriveModelValue}\"");
parameters.Append($"{FlagStrings.DriveModelLong} \"{DriveModelValue}\" ");
}
// Drive Revision
if (IsFlagSupported(FlagStrings.DriveRevisionLong))
{
if (this[FlagStrings.DriveRevisionLong] == true && DriveRevisionValue != null)
parameters.Add($"{FlagStrings.DriveRevisionLong} \"{DriveRevisionValue}\"");
parameters.Append($"{FlagStrings.DriveRevisionLong} \"{DriveRevisionValue}\" ");
}
// Drive Serial
if (IsFlagSupported(FlagStrings.DriveSerialLong))
{
if (this[FlagStrings.DriveSerialLong] == true && DriveSerialValue != null)
parameters.Add($"{FlagStrings.DriveSerialLong} \"{DriveSerialValue}\"");
parameters.Append($"{FlagStrings.DriveSerialLong} \"{DriveSerialValue}\" ");
}
// Encoding
if (IsFlagSupported(FlagStrings.EncodingLong))
{
if (this[FlagStrings.EncodingLong] == true && EncodingValue != null)
parameters.Add($"{FlagStrings.EncodingLong} \"{EncodingValue}\"");
parameters.Append($"{FlagStrings.EncodingLong} \"{EncodingValue}\" ");
}
// Format (Convert)
if (IsFlagSupported(FlagStrings.FormatConvertLong))
{
if (this[FlagStrings.FormatConvertLong] == true && FormatConvertValue != null)
parameters.Add($"{FlagStrings.FormatConvertLong} \"{FormatConvertValue}\"");
parameters.Append($"{FlagStrings.FormatConvertLong} \"{FormatConvertValue}\" ");
}
// Format (Dump)
if (IsFlagSupported(FlagStrings.FormatDumpLong))
{
if (this[FlagStrings.FormatDumpLong] == true && FormatDumpValue != null)
parameters.Add($"{FlagStrings.FormatDumpLong} \"{FormatDumpValue}\"");
parameters.Append($"{FlagStrings.FormatDumpLong} \"{FormatDumpValue}\" ");
}
// Geometry
if (IsFlagSupported(FlagStrings.GeometryLong))
{
if (this[FlagStrings.GeometryLong] == true && GeometryValue != null)
parameters.Add($"{FlagStrings.GeometryLong} \"{GeometryValue}\"");
parameters.Append($"{FlagStrings.GeometryLong} \"{GeometryValue}\" ");
}
// ImgBurn Log
if (IsFlagSupported(FlagStrings.ImgBurnLogLong))
{
if (this[FlagStrings.ImgBurnLogLong] == true && ImgBurnLogValue != null)
parameters.Add($"{FlagStrings.ImgBurnLogLong} \"{ImgBurnLogValue}\"");
parameters.Append($"{FlagStrings.ImgBurnLogLong} \"{ImgBurnLogValue}\" ");
}
// Media Barcode
if (IsFlagSupported(FlagStrings.MediaBarcodeLong))
{
if (this[FlagStrings.MediaBarcodeLong] == true && MediaBarcodeValue != null)
parameters.Add($"{FlagStrings.MediaBarcodeLong} \"{MediaBarcodeValue}\"");
parameters.Append($"{FlagStrings.MediaBarcodeLong} \"{MediaBarcodeValue}\" ");
}
// Media Manufacturer
if (IsFlagSupported(FlagStrings.MediaManufacturerLong))
{
if (this[FlagStrings.MediaManufacturerLong] == true && MediaManufacturerValue != null)
parameters.Add($"{FlagStrings.MediaManufacturerLong} \"{MediaManufacturerValue}\"");
parameters.Append($"{FlagStrings.MediaManufacturerLong} \"{MediaManufacturerValue}\" ");
}
// Media Model
if (IsFlagSupported(FlagStrings.MediaModelLong))
{
if (this[FlagStrings.MediaModelLong] == true && MediaModelValue != null)
parameters.Add($"{FlagStrings.MediaModelLong} \"{MediaModelValue}\"");
parameters.Append($"{FlagStrings.MediaModelLong} \"{MediaModelValue}\" ");
}
// Media Part Number
if (IsFlagSupported(FlagStrings.MediaPartNumberLong))
{
if (this[FlagStrings.MediaPartNumberLong] == true && MediaPartNumberValue != null)
parameters.Add($"{FlagStrings.MediaPartNumberLong} \"{MediaPartNumberValue}\"");
parameters.Append($"{FlagStrings.MediaPartNumberLong} \"{MediaPartNumberValue}\" ");
}
// Media Serial
if (IsFlagSupported(FlagStrings.MediaSerialLong))
{
if (this[FlagStrings.MediaSerialLong] == true && MediaSerialValue != null)
parameters.Add($"{FlagStrings.MediaSerialLong} \"{MediaSerialValue}\"");
parameters.Append($"{FlagStrings.MediaSerialLong} \"{MediaSerialValue}\" ");
}
// Media Title
if (IsFlagSupported(FlagStrings.MediaTitleLong))
{
if (this[FlagStrings.MediaTitleLong] == true && MediaTitleValue != null)
parameters.Add($"{FlagStrings.MediaTitleLong} \"{MediaTitleValue}\"");
parameters.Append($"{FlagStrings.MediaTitleLong} \"{MediaTitleValue}\" ");
}
// MHDD Log
if (IsFlagSupported(FlagStrings.MHDDLogLong))
{
if (this[FlagStrings.MHDDLogLong] == true && MHDDLogValue != null)
parameters.Add($"{FlagStrings.MHDDLogLong} \"{MHDDLogValue}\"");
parameters.Append($"{FlagStrings.MHDDLogLong} \"{MHDDLogValue}\" ");
}
// Namespace
if (IsFlagSupported(FlagStrings.NamespaceLong))
{
if (this[FlagStrings.NamespaceLong] == true && NamespaceValue != null)
parameters.Add($"{FlagStrings.NamespaceLong} \"{NamespaceValue}\"");
parameters.Append($"{FlagStrings.NamespaceLong} \"{NamespaceValue}\" ");
}
// Options
if (IsFlagSupported(FlagStrings.OptionsLong))
{
if (this[FlagStrings.OptionsLong] == true && OptionsValue != null)
parameters.Add($"{FlagStrings.OptionsLong} \"{OptionsValue}\"");
parameters.Append($"{FlagStrings.OptionsLong} \"{OptionsValue}\" ");
}
// Output Prefix
if (IsFlagSupported(FlagStrings.OutputPrefixLong))
{
if (this[FlagStrings.OutputPrefixLong] == true && OutputPrefixValue != null)
parameters.Add($"{FlagStrings.OutputPrefixLong} \"{OutputPrefixValue}\"");
parameters.Append($"{FlagStrings.OutputPrefixLong} \"{OutputPrefixValue}\" ");
}
// Resume File
if (IsFlagSupported(FlagStrings.ResumeFileLong))
{
if (this[FlagStrings.ResumeFileLong] == true && ResumeFileValue != null)
parameters.Add($"{FlagStrings.ResumeFileLong} \"{ResumeFileValue}\"");
parameters.Append($"{FlagStrings.ResumeFileLong} \"{ResumeFileValue}\" ");
}
// Subchannel
if (IsFlagSupported(FlagStrings.SubchannelLong))
{
if (this[FlagStrings.SubchannelLong] == true && SubchannelValue != null)
parameters.Add($"{FlagStrings.SubchannelLong} \"{SubchannelValue}\"");
parameters.Append($"{FlagStrings.SubchannelLong} \"{SubchannelValue}\" ");
}
// XML Sidecar
if (IsFlagSupported(FlagStrings.XMLSidecarLong))
{
if (this[FlagStrings.XMLSidecarLong] == true && XMLSidecarValue != null)
parameters.Add($"{FlagStrings.XMLSidecarLong} \"{XMLSidecarValue}\"");
parameters.Append($"{FlagStrings.XMLSidecarLong} \"{XMLSidecarValue}\" ");
}
#endregion
@@ -1183,7 +1184,7 @@ namespace MPF.ExecutionContexts.Aaru
if (string.IsNullOrEmpty(InputValue))
return null;
parameters.Add($"\"{InputValue}\"");
parameters.Append($"\"{InputValue}\" ");
break;
// Input value only (device path)
@@ -1195,9 +1196,9 @@ namespace MPF.ExecutionContexts.Aaru
return null;
if (InputValue!.Contains(" "))
parameters.Add($"\"{InputValue!.TrimEnd('\\')}\"");
parameters.Append($"\"{InputValue!.TrimEnd('\\')}\" ");
else
parameters.Add(InputValue!.TrimEnd('\\'));
parameters.Append(InputValue!.TrimEnd('\\'));
break;
@@ -1206,8 +1207,8 @@ namespace MPF.ExecutionContexts.Aaru
if (string.IsNullOrEmpty(Input1Value) || string.IsNullOrEmpty(Input2Value))
return null;
parameters.Add($"\"{Input1Value}\"");
parameters.Add($"\"{Input2Value}\"");
parameters.Append($"\"{Input1Value}\" ");
parameters.Append($"\"{Input2Value}\" ");
break;
// Input and Output value (file path)
@@ -1216,8 +1217,8 @@ namespace MPF.ExecutionContexts.Aaru
if (string.IsNullOrEmpty(InputValue) || string.IsNullOrEmpty(OutputValue))
return null;
parameters.Add($"\"{InputValue}\"");
parameters.Add($"\"{OutputValue}\"");
parameters.Append($"\"{InputValue}\" ");
parameters.Append($"\"{OutputValue}\" ");
break;
// Input and Output value (device path)
@@ -1225,8 +1226,8 @@ namespace MPF.ExecutionContexts.Aaru
if (string.IsNullOrEmpty(InputValue) || string.IsNullOrEmpty(OutputValue))
return null;
parameters.Add(InputValue!.TrimEnd('\\'));
parameters.Add($"\"{OutputValue}\"");
parameters.Append(InputValue!.TrimEnd('\\'));
parameters.Append($"\"{OutputValue}\" ");
break;
// Remote host value only
@@ -1235,11 +1236,11 @@ namespace MPF.ExecutionContexts.Aaru
if (string.IsNullOrEmpty(RemoteHostValue))
return null;
parameters.Add($"\"{RemoteHostValue}\"");
parameters.Append($"\"{RemoteHostValue}\" ");
break;
}
return string.Join(" ", [.. parameters]);
return parameters.ToString().TrimEnd();
}
/// <inheritdoc/>

View File

@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.IO;
using System.Text;
using SabreTools.RedumpLib.Data;
namespace MPF.ExecutionContexts.DiscImageCreator
@@ -393,12 +393,12 @@ namespace MPF.ExecutionContexts.DiscImageCreator
/// <inheritdoc/>
public override string? GenerateParameters()
{
var parameters = new List<string>();
var parameters = new StringBuilder();
BaseCommand ??= CommandStrings.NONE;
if (!string.IsNullOrEmpty(BaseCommand))
parameters.Add(BaseCommand);
parameters.Append($"{BaseCommand} ");
else
return null;
@@ -427,9 +427,9 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (DrivePath != null)
{
if (DrivePath.Contains(" "))
parameters.Add($"\"{DrivePath}\"");
parameters.Append($"\"{DrivePath}\" ");
else
parameters.Add(DrivePath);
parameters.Append($"{DrivePath} ");
}
else
{
@@ -458,7 +458,7 @@ namespace MPF.ExecutionContexts.DiscImageCreator
|| BaseCommand == CommandStrings.XGD3Swap)
{
if (Filename != null)
parameters.Add("\"" + Filename.Trim('"') + "\"");
parameters.Append($"\"{Filename.Trim('"')}\" ");
else
return null;
}
@@ -467,7 +467,7 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (BaseCommand == CommandStrings.Merge)
{
if (OptiarcFilename != null)
parameters.Add("\"" + OptiarcFilename.Trim('"') + "\"");
parameters.Append($"\"{OptiarcFilename.Trim('"')}\" ");
else
return null;
}
@@ -487,7 +487,7 @@ namespace MPF.ExecutionContexts.DiscImageCreator
|| BaseCommand == CommandStrings.XGD3Swap)
{
if (DriveSpeed != null)
parameters.Add(DriveSpeed.ToString() ?? string.Empty);
parameters.Append($"{DriveSpeed} ");
else
return null;
}
@@ -498,8 +498,8 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (StartLBAValue != null && EndLBAValue != null)
{
parameters.Add(StartLBAValue.ToString() ?? string.Empty);
parameters.Add(EndLBAValue.ToString() ?? string.Empty);
parameters.Append($"{StartLBAValue} ");
parameters.Append($"{EndLBAValue} ");
}
else
return null;
@@ -510,9 +510,9 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.AddOffset] == true)
{
parameters.Add(FlagStrings.AddOffset);
parameters.Append($"{FlagStrings.AddOffset} ");
if (AddOffsetValue != null)
parameters.Add(AddOffsetValue.ToString() ?? string.Empty);
parameters.Append($"{AddOffsetValue} ");
}
}
@@ -520,14 +520,14 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (IsFlagSupported(FlagStrings.AMSF))
{
if (this[FlagStrings.AMSF] == true)
parameters.Add(FlagStrings.AMSF);
parameters.Append($"{FlagStrings.AMSF} ");
}
// Atari Jaguar CD
if (IsFlagSupported(FlagStrings.AtariJaguar))
{
if (this[FlagStrings.AtariJaguar] == true)
parameters.Add(FlagStrings.AtariJaguar);
parameters.Append($"{FlagStrings.AtariJaguar} ");
}
// BE Opcode
@@ -535,10 +535,10 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.BEOpcode] == true && this[FlagStrings.D8Opcode] != true)
{
parameters.Add(FlagStrings.BEOpcode);
parameters.Append($"{FlagStrings.BEOpcode} ");
if (BEOpcodeValue != null
&& (BEOpcodeValue == "raw" || BEOpcodeValue == "pack"))
parameters.Add(BEOpcodeValue);
parameters.Append($"{BEOpcodeValue} ");
}
}
@@ -547,37 +547,37 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.C2Opcode] == true)
{
parameters.Add(FlagStrings.C2Opcode);
parameters.Append($"{FlagStrings.C2Opcode} ");
if (C2OpcodeValue[0] != null)
{
if (C2OpcodeValue[0] > 0)
parameters.Add(C2OpcodeValue[0].ToString() ?? string.Empty);
parameters.Append($"{C2OpcodeValue[0]} ");
else
return null;
}
if (C2OpcodeValue[1] != null)
{
parameters.Add(C2OpcodeValue[1].ToString() ?? string.Empty);
parameters.Append($"{C2OpcodeValue[1]} ");
}
if (C2OpcodeValue[2] != null)
{
parameters.Add(C2OpcodeValue[2].ToString() ?? string.Empty);
parameters.Append($"{C2OpcodeValue[2]} ");
}
if (C2OpcodeValue[3] != null)
{
if (C2OpcodeValue[3] == 0)
{
parameters.Add(C2OpcodeValue[3].ToString() ?? string.Empty);
parameters.Append($"{C2OpcodeValue[3]} ");
}
else if (C2OpcodeValue[3] == 1)
{
parameters.Add(C2OpcodeValue[3].ToString() ?? string.Empty);
parameters.Append($"{C2OpcodeValue[3]} ");
if (C2OpcodeValue[4] != null && C2OpcodeValue[5] != null)
{
if (C2OpcodeValue[4] > 0 && C2OpcodeValue[5] > 0)
{
parameters.Add(C2OpcodeValue[4].ToString() ?? string.Empty);
parameters.Add(C2OpcodeValue[5].ToString() ?? string.Empty);
parameters.Append($"{C2OpcodeValue[4]} ");
parameters.Append($"{C2OpcodeValue[5]} ");
}
else
{
@@ -597,28 +597,28 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (IsFlagSupported(FlagStrings.CopyrightManagementInformation))
{
if (this[FlagStrings.CopyrightManagementInformation] == true)
parameters.Add(FlagStrings.CopyrightManagementInformation);
parameters.Append($"{FlagStrings.CopyrightManagementInformation} ");
}
// D8 Opcode
if (IsFlagSupported(FlagStrings.D8Opcode))
{
if (this[FlagStrings.D8Opcode] == true)
parameters.Add(FlagStrings.D8Opcode);
parameters.Append($"{FlagStrings.D8Opcode} ");
}
// DAT Expand
if (IsFlagSupported(FlagStrings.DatExpand))
{
if (this[FlagStrings.DatExpand] == true)
parameters.Add(FlagStrings.DatExpand);
parameters.Append($"{FlagStrings.DatExpand} ");
}
// Disable Beep
if (IsFlagSupported(FlagStrings.DisableBeep))
{
if (this[FlagStrings.DisableBeep] == true)
parameters.Add(FlagStrings.DisableBeep);
parameters.Append($"{FlagStrings.DisableBeep} ");
}
// DVD/HD-DVD/BD Reread
@@ -626,9 +626,9 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.DVDReread] == true)
{
parameters.Add(FlagStrings.DVDReread);
parameters.Append($"{FlagStrings.DVDReread} ");
if (DVDRereadValue != null)
parameters.Add(DVDRereadValue.ToString() ?? string.Empty);
parameters.Append($"{DVDRereadValue} ");
}
}
@@ -636,7 +636,7 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (IsFlagSupported(FlagStrings.ExtractMicroSoftCabFile))
{
if (this[FlagStrings.ExtractMicroSoftCabFile] == true)
parameters.Add(FlagStrings.ExtractMicroSoftCabFile);
parameters.Append($"{FlagStrings.ExtractMicroSoftCabFile} ");
}
// Fix
@@ -644,9 +644,9 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.Fix] == true)
{
parameters.Add(FlagStrings.Fix);
parameters.Append($"{FlagStrings.Fix} ");
if (FixValue != null)
parameters.Add(FixValue.ToString() ?? string.Empty);
parameters.Append($"{FixValue} ");
else
return null;
}
@@ -657,9 +657,9 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.ForceUnitAccess] == true)
{
parameters.Add(FlagStrings.ForceUnitAccess);
parameters.Append($"{FlagStrings.ForceUnitAccess} ");
if (ForceUnitAccessValue != null)
parameters.Add(ForceUnitAccessValue.ToString() ?? string.Empty);
parameters.Append($"{ForceUnitAccessValue} ");
}
}
@@ -668,9 +668,9 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.MultiSectorRead] == true)
{
parameters.Add(FlagStrings.MultiSectorRead);
parameters.Append($"{FlagStrings.MultiSectorRead} ");
if (MultiSectorReadValue != null)
parameters.Add(MultiSectorReadValue.ToString() ?? string.Empty);
parameters.Append($"{MultiSectorReadValue} ");
}
}
@@ -678,35 +678,35 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (IsFlagSupported(FlagStrings.NoFixSubP))
{
if (this[FlagStrings.NoFixSubP] == true)
parameters.Add(FlagStrings.NoFixSubP);
parameters.Append($"{FlagStrings.NoFixSubP} ");
}
// Not fix SubQ
if (IsFlagSupported(FlagStrings.NoFixSubQ))
{
if (this[FlagStrings.NoFixSubQ] == true)
parameters.Add(FlagStrings.NoFixSubQ);
parameters.Append($"{FlagStrings.NoFixSubQ} ");
}
// Not fix SubQ (PlayStation LibCrypt)
if (IsFlagSupported(FlagStrings.NoFixSubQLibCrypt))
{
if (this[FlagStrings.NoFixSubQLibCrypt] == true)
parameters.Add(FlagStrings.NoFixSubQLibCrypt);
parameters.Append($"{FlagStrings.NoFixSubQLibCrypt} ");
}
// Not fix SubQ (SecuROM)
if (IsFlagSupported(FlagStrings.NoFixSubQSecuROM))
{
if (this[FlagStrings.NoFixSubQSecuROM] == true)
parameters.Add(FlagStrings.NoFixSubQSecuROM);
parameters.Append($"{FlagStrings.NoFixSubQSecuROM} ");
}
// Not fix SubRtoW
if (IsFlagSupported(FlagStrings.NoFixSubRtoW))
{
if (this[FlagStrings.NoFixSubRtoW] == true)
parameters.Add(FlagStrings.NoFixSubRtoW);
parameters.Append($"{FlagStrings.NoFixSubRtoW} ");
}
// Not skip security sectors
@@ -714,9 +714,9 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.NoSkipSS] == true)
{
parameters.Add(FlagStrings.NoSkipSS);
parameters.Append($"{FlagStrings.NoSkipSS} ");
if (NoSkipSecuritySectorValue != null)
parameters.Add(NoSkipSecuritySectorValue.ToString() ?? string.Empty);
parameters.Append($"{NoSkipSecuritySectorValue} ");
}
}
@@ -725,9 +725,9 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.PadSector] == true)
{
parameters.Add(FlagStrings.PadSector);
parameters.Append($"{FlagStrings.PadSector} ");
if (PadSectorValue != null)
parameters.Add(PadSectorValue.ToString() ?? string.Empty);
parameters.Append($"{PadSectorValue} ");
}
}
@@ -739,9 +739,9 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (RangeStartLBAValue == null || RangeEndLBAValue == null)
return null;
parameters.Add(FlagStrings.Range);
parameters.Add(RangeStartLBAValue.ToString() ?? string.Empty);
parameters.Add(RangeEndLBAValue.ToString() ?? string.Empty);
parameters.Append($"{FlagStrings.Range} ");
parameters.Append($"{RangeStartLBAValue} ");
parameters.Append($"{RangeEndLBAValue} ");
}
}
@@ -749,14 +749,14 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (IsFlagSupported(FlagStrings.Raw))
{
if (this[FlagStrings.Raw] == true)
parameters.Add(FlagStrings.Raw);
parameters.Append($"{FlagStrings.Raw} ");
}
// Resume
if (IsFlagSupported(FlagStrings.Resume))
{
if (this[FlagStrings.Resume] == true)
parameters.Add(FlagStrings.Resume);
parameters.Append($"{FlagStrings.Resume} ");
}
// Reverse read
@@ -764,15 +764,15 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.Reverse] == true)
{
parameters.Add(FlagStrings.Reverse);
parameters.Append($"{FlagStrings.Reverse} ");
if (BaseCommand == CommandStrings.DigitalVideoDisc)
{
if (ReverseStartLBAValue == null || ReverseEndLBAValue == null)
return null;
parameters.Add(ReverseStartLBAValue.ToString() ?? string.Empty);
parameters.Add(ReverseEndLBAValue.ToString() ?? string.Empty);
parameters.Append($"{ReverseStartLBAValue} ");
parameters.Append($"{ReverseEndLBAValue} ");
}
}
}
@@ -781,7 +781,7 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (IsFlagSupported(FlagStrings.ScanAntiMod))
{
if (this[FlagStrings.ScanAntiMod] == true)
parameters.Add(FlagStrings.ScanAntiMod);
parameters.Append($"{FlagStrings.ScanAntiMod} ");
}
// Scan file to detect protect
@@ -789,11 +789,11 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.ScanFileProtect] == true)
{
parameters.Add(FlagStrings.ScanFileProtect);
parameters.Append($"{FlagStrings.ScanFileProtect} ");
if (ScanFileProtectValue != null)
{
if (ScanFileProtectValue > 0)
parameters.Add(ScanFileProtectValue.ToString() ?? string.Empty);
parameters.Append($"{ScanFileProtectValue} ");
else
return null;
}
@@ -804,14 +804,14 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (IsFlagSupported(FlagStrings.ScanSectorProtect))
{
if (this[FlagStrings.ScanSectorProtect] == true)
parameters.Add(FlagStrings.ScanSectorProtect);
parameters.Append($"{FlagStrings.ScanSectorProtect} ");
}
// Scan 74:00:00 (Saturn)
if (IsFlagSupported(FlagStrings.SeventyFour))
{
if (this[FlagStrings.SeventyFour] == true)
parameters.Add(FlagStrings.SeventyFour);
parameters.Append($"{FlagStrings.SeventyFour} ");
}
// Skip sectors
@@ -819,18 +819,18 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.SkipSector] == true)
{
parameters.Add(FlagStrings.SkipSector);
parameters.Append($"{FlagStrings.SkipSector} ");
if (SkipSectorValue[0] != null)
{
if (SkipSectorValue[0] > 0)
parameters.Add(SkipSectorValue[0].ToString() ?? string.Empty);
parameters.Append($"{SkipSectorValue[0]} ");
else
return null;
}
if (SkipSectorValue[1] != null)
{
if (SkipSectorValue[1] == 0)
parameters.Add(SkipSectorValue[1].ToString() ?? string.Empty);
parameters.Append($"{SkipSectorValue[1]} ");
}
}
}
@@ -840,11 +840,11 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.SubchannelReadLevel] == true)
{
parameters.Add(FlagStrings.SubchannelReadLevel);
parameters.Append($"{FlagStrings.SubchannelReadLevel} ");
if (SubchannelReadLevelValue != null)
{
if (SubchannelReadLevelValue >= 0 && SubchannelReadLevelValue <= 2)
parameters.Add(SubchannelReadLevelValue.ToString() ?? string.Empty);
parameters.Append($"{SubchannelReadLevelValue} ");
else
return null;
}
@@ -855,21 +855,21 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (IsFlagSupported(FlagStrings.Tages))
{
if (this[FlagStrings.Tages] == true)
parameters.Add(FlagStrings.Tages);
parameters.Append($"{FlagStrings.Tages} ");
}
// Try Reading Pregap
if (IsFlagSupported(FlagStrings.TryReadingPregap))
{
if (this[FlagStrings.TryReadingPregap] == true)
parameters.Add(FlagStrings.TryReadingPregap);
parameters.Append($"{FlagStrings.TryReadingPregap} ");
}
// Use Anchor Volume Descriptor Pointer
if (IsFlagSupported(FlagStrings.UseAnchorVolumeDescriptorPointer))
{
if (this[FlagStrings.UseAnchorVolumeDescriptorPointer] == true)
parameters.Add(FlagStrings.UseAnchorVolumeDescriptorPointer);
parameters.Append($"{FlagStrings.UseAnchorVolumeDescriptorPointer} ");
}
// VideoNow
@@ -877,11 +877,11 @@ namespace MPF.ExecutionContexts.DiscImageCreator
{
if (this[FlagStrings.VideoNow] == true)
{
parameters.Add(FlagStrings.VideoNow);
parameters.Append($"{FlagStrings.VideoNow} ");
if (VideoNowValue != null)
{
if (VideoNowValue >= 0)
parameters.Add(VideoNowValue.ToString() ?? string.Empty);
parameters.Append($"{VideoNowValue} ");
else
return null;
}
@@ -892,17 +892,17 @@ namespace MPF.ExecutionContexts.DiscImageCreator
if (IsFlagSupported(FlagStrings.VideoNowColor))
{
if (this[FlagStrings.VideoNowColor] == true)
parameters.Add(FlagStrings.VideoNowColor);
parameters.Append($"{FlagStrings.VideoNowColor} ");
}
// VideoNowXP
if (IsFlagSupported(FlagStrings.VideoNowXP))
{
if (this[FlagStrings.VideoNowXP] == true)
parameters.Add(FlagStrings.VideoNowXP);
parameters.Append($"{FlagStrings.VideoNowXP} ");
}
return string.Join(" ", [.. parameters]);
return parameters.ToString().TrimEnd();
}
/// <inheritdoc/>

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using SabreTools.RedumpLib.Data;
namespace MPF.ExecutionContexts.Redumper
@@ -242,34 +243,36 @@ namespace MPF.ExecutionContexts.Redumper
/// </remarks>
public override string GenerateParameters()
{
var parameters = new List<string>();
var parameters = new StringBuilder();
ModeValues ??= [CommandStrings.NONE];
// Modes
parameters.AddRange(ModeValues);
string modes = string.Join(" ", [.. ModeValues]);
if (modes.Length > 0)
parameters.Append($"{modes} ");
#region General
// Help
if (this[FlagStrings.HelpLong] == true)
parameters.Add(FlagStrings.HelpLong);
parameters.Append($"{FlagStrings.HelpLong} ");
// Version
if (this[FlagStrings.Version] == true)
parameters.Add(FlagStrings.Version);
parameters.Append($"{FlagStrings.Version} ");
// Verbose
if (this[FlagStrings.Verbose] == true)
parameters.Add(FlagStrings.Verbose);
parameters.Append($"{FlagStrings.Verbose} ");
// Auto Eject
if (this[FlagStrings.AutoEject] == true)
parameters.Add(FlagStrings.AutoEject);
parameters.Append($"{FlagStrings.AutoEject} ");
// Debug
if (this[FlagStrings.Debug] == true)
parameters.Add(FlagStrings.Debug);
parameters.Append($"{FlagStrings.Debug} ");
// Drive
if (this[FlagStrings.Drive] == true)
@@ -277,9 +280,9 @@ namespace MPF.ExecutionContexts.Redumper
if (DriveValue != null)
{
if (DriveValue.Contains(" "))
parameters.Add($"{FlagStrings.Drive}=\"{DriveValue}\"");
parameters.Append($"{FlagStrings.Drive}=\"{DriveValue}\" ");
else
parameters.Add($"{FlagStrings.Drive}={DriveValue}");
parameters.Append($"{FlagStrings.Drive}={DriveValue} ");
}
}
@@ -287,33 +290,33 @@ namespace MPF.ExecutionContexts.Redumper
if (this[FlagStrings.Speed] == true)
{
if (SpeedValue != null)
parameters.Add($"{FlagStrings.Speed}={SpeedValue}");
parameters.Append($"{FlagStrings.Speed}={SpeedValue} ");
}
// Retries
if (this[FlagStrings.Retries] == true)
{
if (RetriesValue != null)
parameters.Add($"{FlagStrings.Retries}={RetriesValue}");
parameters.Append($"{FlagStrings.Retries}={RetriesValue} ");
}
// Image Path
if (this[FlagStrings.ImagePath] == true)
{
if (ImagePathValue != null)
parameters.Add($"{FlagStrings.ImagePath}={ImagePathValue}");
parameters.Append($"{FlagStrings.ImagePath}={ImagePathValue} ");
}
// Image Name
if (this[FlagStrings.ImageName] == true)
{
if (ImageNameValue != null)
parameters.Add($"{FlagStrings.ImageName}={ImageNameValue}");
parameters.Append($"{FlagStrings.ImageName}={ImageNameValue} ");
}
// Overwrite
if (this[FlagStrings.Overwrite] == true)
parameters.Add(FlagStrings.Overwrite);
parameters.Append($"{FlagStrings.Overwrite} ");
#endregion
@@ -323,42 +326,42 @@ namespace MPF.ExecutionContexts.Redumper
if (this[FlagStrings.DriveType] == true)
{
if (DriveTypeValue != null)
parameters.Add($"{FlagStrings.DriveType}={DriveTypeValue}");
parameters.Append($"{FlagStrings.DriveType}={DriveTypeValue} ");
}
// Drive Read Offset
if (this[FlagStrings.DriveReadOffset] == true)
{
if (DriveReadOffsetValue != null)
parameters.Add($"{FlagStrings.DriveReadOffset}={DriveReadOffsetValue}");
parameters.Append($"{FlagStrings.DriveReadOffset}={DriveReadOffsetValue} ");
}
// Drive C2 Shift
if (this[FlagStrings.DriveC2Shift] == true)
{
if (DriveC2ShiftValue != null)
parameters.Add($"{FlagStrings.DriveC2Shift}={DriveC2ShiftValue}");
parameters.Append($"{FlagStrings.DriveC2Shift}={DriveC2ShiftValue} ");
}
// Drive Pregap Start
if (this[FlagStrings.DrivePregapStart] == true)
{
if (DrivePregapStartValue != null)
parameters.Add($"{FlagStrings.DrivePregapStart}={DrivePregapStartValue}");
parameters.Append($"{FlagStrings.DrivePregapStart}={DrivePregapStartValue} ");
}
// Drive Read Method
if (this[FlagStrings.DriveReadMethod] == true)
{
if (DriveReadMethodValue != null)
parameters.Add($"{FlagStrings.DriveReadMethod}={DriveReadMethodValue}");
parameters.Append($"{FlagStrings.DriveReadMethod}={DriveReadMethodValue} ");
}
// Drive Sector Order
if (this[FlagStrings.DriveSectorOrder] == true)
{
if (DriveSectorOrderValue != null)
parameters.Add($"{FlagStrings.DriveSectorOrder}={DriveSectorOrderValue}");
parameters.Append($"{FlagStrings.DriveSectorOrder}={DriveSectorOrderValue} ");
}
#endregion
@@ -367,18 +370,18 @@ namespace MPF.ExecutionContexts.Redumper
// Plextor Leadin Skip
if (this[FlagStrings.PlextorSkipLeadin] == true)
parameters.Add(FlagStrings.PlextorSkipLeadin);
parameters.Append($"{FlagStrings.PlextorSkipLeadin} ");
// Plextor Leadin Retries
if (this[FlagStrings.PlextorLeadinRetries] == true)
{
if (PlextorLeadinRetriesValue != null)
parameters.Add($"{FlagStrings.PlextorLeadinRetries}={PlextorLeadinRetriesValue}");
parameters.Append($"{FlagStrings.PlextorLeadinRetries}={PlextorLeadinRetriesValue} ");
}
// Asus Skip Leadout
if (this[FlagStrings.AsusSkipLeadout] == true)
parameters.Add(FlagStrings.AsusSkipLeadout);
parameters.Append($"{FlagStrings.AsusSkipLeadout} ");
#endregion
@@ -388,23 +391,23 @@ namespace MPF.ExecutionContexts.Redumper
if (this[FlagStrings.ForceOffset] == true)
{
if (ForceOffsetValue != null)
parameters.Add($"{FlagStrings.ForceOffset}={ForceOffsetValue}");
parameters.Append($"{FlagStrings.ForceOffset}={ForceOffsetValue} ");
}
// Audio Silence Threshold
if (this[FlagStrings.AudioSilenceThreshold] == true)
{
if (AudioSilenceThresholdValue != null)
parameters.Add($"{FlagStrings.AudioSilenceThreshold}={AudioSilenceThresholdValue}");
parameters.Append($"{FlagStrings.AudioSilenceThreshold}={AudioSilenceThresholdValue} ");
}
// Correct Offset Shift
if (this[FlagStrings.CorrectOffsetShift] == true)
parameters.Add(FlagStrings.CorrectOffsetShift);
parameters.Append($"{FlagStrings.CorrectOffsetShift} ");
// Offset Shift Relocate
if (this[FlagStrings.OffsetShiftRelocate] == true)
parameters.Add(FlagStrings.OffsetShiftRelocate);
parameters.Append($"{FlagStrings.OffsetShiftRelocate} ");
#endregion
@@ -412,26 +415,26 @@ namespace MPF.ExecutionContexts.Redumper
// Force Split
if (this[FlagStrings.ForceSplit] == true)
parameters.Add(FlagStrings.ForceSplit);
parameters.Append($"{FlagStrings.ForceSplit} ");
// Leave Unchanged
if (this[FlagStrings.LeaveUnchanged] == true)
parameters.Add(FlagStrings.LeaveUnchanged);
parameters.Append($"{FlagStrings.LeaveUnchanged} ");
// Force QTOC
if (this[FlagStrings.ForceQTOC] == true)
parameters.Add(FlagStrings.ForceQTOC);
parameters.Append($"{FlagStrings.ForceQTOC} ");
// Skip Fill
if (this[FlagStrings.SkipFill] == true)
{
if (SkipFillValue != null)
parameters.Add($"{FlagStrings.SkipFill}={SkipFillValue:x}");
parameters.Append($"{FlagStrings.SkipFill}={SkipFillValue:x} ");
}
// ISO9660 Trim
if (this[FlagStrings.ISO9660Trim] == true)
parameters.Add(FlagStrings.ISO9660Trim);
parameters.Append($"{FlagStrings.ISO9660Trim} ");
#endregion
@@ -441,60 +444,60 @@ namespace MPF.ExecutionContexts.Redumper
if (this[FlagStrings.LBAStart] == true)
{
if (LBAStartValue != null)
parameters.Add($"{FlagStrings.LBAStart}={LBAStartValue}");
parameters.Append($"{FlagStrings.LBAStart}={LBAStartValue} ");
}
// LBA End
if (this[FlagStrings.LBAEnd] == true)
{
if (LBAEndValue != null)
parameters.Add($"{FlagStrings.LBAEnd}={LBAEndValue}");
parameters.Append($"{FlagStrings.LBAEnd}={LBAEndValue} ");
}
// Refine Subchannel
if (this[FlagStrings.RefineSubchannel] == true)
parameters.Add(FlagStrings.RefineSubchannel);
parameters.Append($"{FlagStrings.RefineSubchannel} ");
// Skip
if (this[FlagStrings.Skip] == true)
{
if (!string.IsNullOrEmpty(SkipValue))
parameters.Add($"{FlagStrings.Skip}={SkipValue}");
parameters.Append($"{FlagStrings.Skip}={SkipValue} ");
}
// Dump Write Offset
if (this[FlagStrings.DumpWriteOffset] == true)
{
if (DumpWriteOffsetValue != null)
parameters.Add($"{FlagStrings.DumpWriteOffset}={DumpWriteOffsetValue}");
parameters.Append($"{FlagStrings.DumpWriteOffset}={DumpWriteOffsetValue} ");
}
// Dump Read Size
if (this[FlagStrings.DumpReadSize] == true)
{
if (DumpReadSizeValue != null && DumpReadSizeValue > 0)
parameters.Add($"{FlagStrings.DumpReadSize}={DumpReadSizeValue}");
parameters.Append($"{FlagStrings.DumpReadSize}={DumpReadSizeValue} ");
}
// Overread Leadout
if (this[FlagStrings.OverreadLeadout] == true)
parameters.Add(FlagStrings.OverreadLeadout);
parameters.Append($"{FlagStrings.OverreadLeadout} ");
// Force Unscrambled
if (this[FlagStrings.ForceUnscrambled] == true)
parameters.Add(FlagStrings.ForceUnscrambled);
parameters.Append($"{FlagStrings.ForceUnscrambled} ");
// Legacy Subs
if (this[FlagStrings.LegacySubs] == true)
parameters.Add(FlagStrings.LegacySubs);
parameters.Append($"{FlagStrings.LegacySubs} ");
// Disable CD Text
if (this[FlagStrings.DisableCDText] == true)
parameters.Add(FlagStrings.DisableCDText);
parameters.Append($"{FlagStrings.DisableCDText} ");
#endregion
return string.Join(" ", [.. parameters]);
return parameters.ToString().TrimEnd();
}
/// <inheritdoc/>