mirror of
https://github.com/SabreTools/MPF.git
synced 2026-07-02 17:24:48 +00:00
Add check to ensure all output files are found
This commit is contained in:
@@ -135,7 +135,7 @@ namespace DICUI
|
||||
// Local variables
|
||||
string driveLetter = cmb_DriveLetter.Text;
|
||||
string outputDirectory = txt_OutputDirectory.Text;
|
||||
string outputFileName = txt_OutputFilename.Text;
|
||||
string outputFilename = txt_OutputFilename.Text;
|
||||
int driveSpeed = (int)cmb_DriveSpeed.SelectedItem;
|
||||
btn_Start.IsEnabled = false;
|
||||
|
||||
@@ -165,13 +165,20 @@ namespace DICUI
|
||||
process.StartInfo.FileName = dicPath;
|
||||
process.StartInfo.Arguments = discType
|
||||
+ " " + driveLetter
|
||||
+ " \"" + Path.Combine(outputDirectory, outputFileName) + "\" "
|
||||
+ " \"" + Path.Combine(outputDirectory, outputFilename) + "\" "
|
||||
+ (selected.Item3 != DiscType.BD25 && selected.Item3 != DiscType.BD50 ? driveSpeed + " " : "")
|
||||
+ string.Join(" ", defaultParams);
|
||||
process.Start();
|
||||
process.WaitForExit();
|
||||
});
|
||||
|
||||
// Check to make sure that the output had all the correct files
|
||||
if (!Utilities.FoundAllFiles(outputDirectory, outputFilename))
|
||||
{
|
||||
lbl_Status.Content = "Error! Please check output directory as dump may be incomplete!";
|
||||
return;
|
||||
}
|
||||
|
||||
// Special cases
|
||||
switch (selected.Item2)
|
||||
{
|
||||
@@ -179,7 +186,7 @@ namespace DICUI
|
||||
case KnownSystem.SonyPlayStation4:
|
||||
if (!File.Exists(sgRawPath))
|
||||
{
|
||||
lbl_Status.Content = "Error! Could not find sg-raw!!";
|
||||
lbl_Status.Content = "Error! Could not find sg-raw!";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -205,8 +212,8 @@ namespace DICUI
|
||||
string batchname = "PSX" + Guid.NewGuid() + ".bat";
|
||||
using (StreamWriter writetext = new StreamWriter(batchname))
|
||||
{
|
||||
writetext.WriteLine(psxtPath + " " + "\"" + Utilities.GetFirstTrack(outputDirectory, outputFileName) + "\" > " + "\"" + Path.Combine(outputDirectory, "psxt001z.txt"));
|
||||
writetext.WriteLine(psxtPath + " " + "--libcrypt " + "\"" + Path.Combine(outputDirectory, outputFileName + ".sub") + "\" > " + "\"" + Path.Combine(outputDirectory, "libcrypt.txt"));
|
||||
writetext.WriteLine(psxtPath + " " + "\"" + Utilities.GetFirstTrack(outputDirectory, outputFilename) + "\" > " + "\"" + Path.Combine(outputDirectory, "psxt001z.txt"));
|
||||
writetext.WriteLine(psxtPath + " " + "--libcrypt " + "\"" + Path.Combine(outputDirectory, outputFilename + ".sub") + "\" > " + "\"" + Path.Combine(outputDirectory, "libcrypt.txt"));
|
||||
writetext.WriteLine(psxtPath + " " + "--libcryptdrvfast " + driveLetter + " > " + "\"" + Path.Combine(outputDirectory, "libcryptdrv.log"));
|
||||
}
|
||||
|
||||
|
||||
121
Utilities.cs
121
Utilities.cs
@@ -623,41 +623,94 @@ namespace DICUI
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Attempts to find the first track of a dumped disc based on the inputs
|
||||
/// </summary>
|
||||
/// <param name="outputDirectory">Base directory to use</param>
|
||||
/// <param name="outputFilename">Base filename to use</param>
|
||||
/// <returns>Proper path to first track, null on error</returns>
|
||||
/// <remarks>
|
||||
/// By default, this assumes that the outputFilename doesn't contain a proper path, and just a name.
|
||||
/// This can lead to a situation where the outputFilename contains a path, but only the filename gets
|
||||
/// used in the processing and can lead to a "false null" return
|
||||
/// </remarks>
|
||||
public static string GetFirstTrack(string outputDirectory, string outputFilename)
|
||||
{
|
||||
// First, sanitized the output filename to strip off any potential extension
|
||||
outputFilename = Path.GetFileNameWithoutExtension(outputFilename);
|
||||
/// <summary>
|
||||
/// Attempts to find the first track of a dumped disc based on the inputs
|
||||
/// </summary>
|
||||
/// <param name="outputDirectory">Base directory to use</param>
|
||||
/// <param name="outputFilename">Base filename to use</param>
|
||||
/// <returns>Proper path to first track, null on error</returns>
|
||||
/// <remarks>
|
||||
/// By default, this assumes that the outputFilename doesn't contain a proper path, and just a name.
|
||||
/// This can lead to a situation where the outputFilename contains a path, but only the filename gets
|
||||
/// used in the processing and can lead to a "false null" return
|
||||
/// </remarks>
|
||||
public static string GetFirstTrack(string outputDirectory, string outputFilename)
|
||||
{
|
||||
// First, sanitized the output filename to strip off any potential extension
|
||||
outputFilename = Path.GetFileNameWithoutExtension(outputFilename);
|
||||
|
||||
// Go through all standard output naming schemes
|
||||
if (File.Exists(Path.Combine(outputDirectory, outputFilename + ".bin")))
|
||||
{
|
||||
return Path.Combine(outputDirectory, outputFilename + ".bin");
|
||||
}
|
||||
if (File.Exists(Path.Combine(outputDirectory, outputFilename + " (Track 1).bin")))
|
||||
{
|
||||
return Path.Combine(outputDirectory, outputFilename + " (Track 1).bin");
|
||||
}
|
||||
if (File.Exists(Path.Combine(outputDirectory, outputFilename + " (Track 01).bin")))
|
||||
{
|
||||
return Path.Combine(outputDirectory, outputFilename + " (Track 01).bin");
|
||||
}
|
||||
if (File.Exists(Path.Combine(outputDirectory, outputFilename + ".iso")))
|
||||
{
|
||||
return Path.Combine(outputDirectory, outputFilename + ".iso");
|
||||
}
|
||||
// Go through all standard output naming schemes
|
||||
string combinedBase = Path.Combine(outputDirectory, outputFilename);
|
||||
if (File.Exists(combinedBase + ".bin"))
|
||||
{
|
||||
return combinedBase + ".bin";
|
||||
}
|
||||
if (File.Exists(combinedBase + " (Track 1).bin"))
|
||||
{
|
||||
return combinedBase + " (Track 1).bin";
|
||||
}
|
||||
if (File.Exists(combinedBase + " (Track 01).bin"))
|
||||
{
|
||||
return combinedBase + " (Track 01).bin";
|
||||
}
|
||||
if (File.Exists(combinedBase + ".iso"))
|
||||
{
|
||||
return Path.Combine(combinedBase + ".iso");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ensures that all required output files have been created
|
||||
/// </summary>
|
||||
/// <param name="outputDirectory">Base directory to use</param>
|
||||
/// <param name="outputFilename">Base filename to use</param>
|
||||
/// <returns></returns>
|
||||
public static bool FoundAllFiles(string outputDirectory, string outputFilename)
|
||||
{
|
||||
// First, sanitized the output filename to strip off any potential extension
|
||||
outputFilename = Path.GetFileNameWithoutExtension(outputFilename);
|
||||
|
||||
// Check to see what type of files we should be expecting
|
||||
string ext = Path.GetExtension(GetFirstTrack(outputDirectory, outputFilename)).TrimStart('.');
|
||||
|
||||
// Now ensure that all required files exist
|
||||
string combinedBase = Path.Combine(outputDirectory, outputFilename);
|
||||
switch(ext)
|
||||
{
|
||||
case "bin":
|
||||
return File.Exists(combinedBase + ".c2")
|
||||
&& File.Exists(combinedBase + ".ccd")
|
||||
&& File.Exists(combinedBase + ".cue")
|
||||
&& File.Exists(combinedBase + ".dat")
|
||||
&& File.Exists(combinedBase + ".img")
|
||||
&& File.Exists(combinedBase + ".img_EdcEcc.txt")
|
||||
&& File.Exists(combinedBase + ".scm")
|
||||
&& File.Exists(combinedBase + ".sub")
|
||||
&& File.Exists(combinedBase + "_c2Error.txt")
|
||||
&& File.Exists(combinedBase + "_cmd.txt")
|
||||
&& File.Exists(combinedBase + "_disc.txt")
|
||||
&& File.Exists(combinedBase + "_drive.txt")
|
||||
&& File.Exists(combinedBase + "_img.cue")
|
||||
&& File.Exists(combinedBase + "_mainError.txt")
|
||||
&& File.Exists(combinedBase + "_mainInfo.txt")
|
||||
&& File.Exists(combinedBase + "_subError.txt")
|
||||
&& File.Exists(combinedBase + "_subInfo.txt")
|
||||
&& File.Exists(combinedBase + "_subIntention.txt")
|
||||
&& File.Exists(combinedBase + "_subReadable.txt")
|
||||
&& File.Exists(combinedBase + "_volDesc.txt");
|
||||
case "iso":
|
||||
return File.Exists(combinedBase + ".dat")
|
||||
&& File.Exists(combinedBase + "_cmd.txt")
|
||||
&& File.Exists(combinedBase + "_disc.txt")
|
||||
&& File.Exists(combinedBase + "_drive.txt")
|
||||
&& File.Exists(combinedBase + "_mainError.txt")
|
||||
&& File.Exists(combinedBase + "_mainInfo.txt")
|
||||
&& File.Exists(combinedBase + "_volDesc.txt");
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user