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 } }