Merge pull request #2417 from razzfazz/guard_substr
[mono.git] / mcs / class / Microsoft.Build / Microsoft.Build.Internal / WindowsCompatibilityExtensions.cs
index 2b360423de7e2c2a1754c0239be50990cf038708..22354c999adcab3bc638fa3973359c0b2a573367 100644 (file)
@@ -34,12 +34,19 @@ namespace Microsoft.Build.Internal
        static class WindowsCompatibilityExtensions
        {
                public static string NormalizeFilePath (string path)
+               {
+                       if (MSBuildUtils.RunningOnWindows || string.IsNullOrWhiteSpace (path) || File.Exists (path) || Directory.Exists (path))
+                               return path;
+                       return path.Replace ('\\', Path.DirectorySeparatorChar);
+               }
+               
+               public static string FindMatchingPath (string path)
                {
                        if (MSBuildUtils.RunningOnWindows || string.IsNullOrWhiteSpace (path) || File.Exists (path) || Directory.Exists (path))
                                return path;
                        path = path.Replace ('\\', Path.DirectorySeparatorChar);
                        var file = Path.GetFileName (path);
-                       var dir = NormalizeFilePath (Path.GetDirectoryName (path));
+                       var dir = FindMatchingPath (Path.GetDirectoryName (path));
                        if (Directory.Exists (dir)) {
                                foreach (FileSystemInfo e in new DirectoryInfo (dir.Length > 0 ? dir : ".").EnumerateFileSystemInfos ()) {
                                        if (e.Name.Equals (file, StringComparison.OrdinalIgnoreCase))