diff --git a/SabreTools.Helper/Tools/RomTools.cs b/SabreTools.Helper/Tools/RomTools.cs
index 105f130f..2a7bc35d 100644
--- a/SabreTools.Helper/Tools/RomTools.cs
+++ b/SabreTools.Helper/Tools/RomTools.cs
@@ -226,27 +226,35 @@ namespace SabreTools.Helper
/// True if it sorted correctly, false otherwise
public static bool Sort(List roms, bool norename)
{
- roms.Sort(delegate (Rom x, Rom y)
+ try
{
- if (x.Metadata.SystemID == y.Metadata.SystemID)
+ roms.Sort(delegate (Rom x, Rom y)
{
- if (x.Metadata.SourceID == y.Metadata.SourceID)
+ if (x.Metadata.SystemID == y.Metadata.SystemID)
{
- if (x.Machine.Name == y.Machine.Name)
+ if (x.Metadata.SourceID == y.Metadata.SourceID)
{
- if (Path.GetDirectoryName(x.Name) == Path.GetDirectoryName(y.Name))
+ if (x.Machine.Name == y.Machine.Name)
{
- return Style.CompareNumeric(Path.GetFileName(x.Name), Path.GetFileName(y.Name));
+ if (Path.GetDirectoryName(x.Name) == Path.GetDirectoryName(y.Name))
+ {
+ return Style.CompareNumeric(Path.GetFileName(x.Name), Path.GetFileName(y.Name));
+ }
+ return Style.CompareNumeric(Path.GetDirectoryName(x.Name), Path.GetDirectoryName(y.Name));
}
- return Style.CompareNumeric(Path.GetDirectoryName(x.Name), Path.GetDirectoryName(y.Name));
+ return Style.CompareNumeric(x.Machine.Name, y.Machine.Name);
}
- return Style.CompareNumeric(x.Machine.Name, y.Machine.Name);
+ return (norename ? String.Compare(x.Machine.Name, y.Machine.Name) : x.Metadata.SourceID - y.Metadata.SourceID);
}
- return (norename ? String.Compare(x.Machine.Name, y.Machine.Name) : x.Metadata.SourceID - y.Metadata.SourceID);
- }
- return (norename ? String.Compare(x.Machine.Name, y.Machine.Name) : x.Metadata.SystemID - y.Metadata.SystemID);
- });
- return true;
+ return (norename ? String.Compare(x.Machine.Name, y.Machine.Name) : x.Metadata.SystemID - y.Metadata.SystemID);
+ });
+ return true;
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex);
+ return false;
+ }
}
#endregion
diff --git a/SabreTools.Helper/Tools/Style.cs b/SabreTools.Helper/Tools/Style.cs
index b7dcee96..7d386aa6 100644
--- a/SabreTools.Helper/Tools/Style.cs
+++ b/SabreTools.Helper/Tools/Style.cs
@@ -514,6 +514,17 @@ namespace SabreTools.Helper
return 0;
}
+ ///
+ /// http://stackoverflow.com/questions/146134/how-to-remove-illegal-characters-from-path-and-filenames
+ ///
+ public static string StripInvalidPathChars(string s)
+ {
+ string regexSearch = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
+ Regex r = new Regex(string.Format("[{0}]", Regex.Escape(regexSearch)));
+ s = r.Replace(s, "");
+ return s;
+ }
+
#endregion
}
}