From be33c6c1c81099a5ca1f545f39d943bd7d4c28f8 Mon Sep 17 00:00:00 2001 From: iSazonov Date: Fri, 19 Oct 2018 15:21:26 +0500 Subject: [PATCH 1/4] SessionStateLocationAPIs --- .../engine/SessionStateLocationAPIs.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Management.Automation/engine/SessionStateLocationAPIs.cs b/src/System.Management.Automation/engine/SessionStateLocationAPIs.cs index fcc850b1fbf..c3dca97c0d7 100644 --- a/src/System.Management.Automation/engine/SessionStateLocationAPIs.cs +++ b/src/System.Management.Automation/engine/SessionStateLocationAPIs.cs @@ -522,7 +522,7 @@ internal PathInfo SetLocation(string path, CmdletProviderContext context) // current working directory is relative to the root. if (!LocationGlobber.IsProviderDirectPath(path) && - path.StartsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.CurrentCulture) && + path.StartsWith(StringLiterals.DefaultPathSeparator) && !pathIsProviderQualifiedPath) { path = path.Substring(1); From 71238cff1d4999bd177fbb077dcfa82309160f87 Mon Sep 17 00:00:00 2001 From: iSazonov Date: Fri, 19 Oct 2018 15:31:12 +0500 Subject: [PATCH 2/4] FileSystemProvider --- .../engine/SessionStateStrings.cs | 2 +- .../namespaces/FileSystemProvider.cs | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/System.Management.Automation/engine/SessionStateStrings.cs b/src/System.Management.Automation/engine/SessionStateStrings.cs index b79cbafb5a3..6c44dfd92b5 100644 --- a/src/System.Management.Automation/engine/SessionStateStrings.cs +++ b/src/System.Management.Automation/engine/SessionStateStrings.cs @@ -170,7 +170,7 @@ internal static class StringLiterals /// /// The escape character used in the language. /// - internal const string EscapeCharacter = "`"; + internal const char EscapeCharacter = '`'; /// /// The default cmdlet adapter for cmdletization / cdxml modules diff --git a/src/System.Management.Automation/namespaces/FileSystemProvider.cs b/src/System.Management.Automation/namespaces/FileSystemProvider.cs index 62ccb423a78..ef0ce8214b2 100644 --- a/src/System.Management.Automation/namespaces/FileSystemProvider.cs +++ b/src/System.Management.Automation/namespaces/FileSystemProvider.cs @@ -1420,8 +1420,8 @@ protected override bool ConvertPath( // Don't handle full paths, paths that the user is already trying to // filter, or paths they are trying to escape. if ((!String.IsNullOrEmpty(filter)) || - (path.Contains(StringLiterals.DefaultPathSeparatorString)) || - (path.Contains(StringLiterals.AlternatePathSeparatorString)) || + (path.Contains(StringLiterals.DefaultPathSeparator, StringComparison.Ordinal)) || + (path.Contains(StringLiterals.AlternatePathSeparator, StringComparison.Ordinal)) || (path.Contains(StringLiterals.EscapeCharacter))) { return false; @@ -4809,13 +4809,13 @@ protected override string NormalizeRelativePath( try { string originalPathComparison = path; - if (!originalPathComparison.EndsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.OrdinalIgnoreCase)) + if (!originalPathComparison.EndsWith(StringLiterals.DefaultPathSeparator)) { originalPathComparison += StringLiterals.DefaultPathSeparator; } string basePathComparison = basePath; - if (!basePathComparison.EndsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.OrdinalIgnoreCase)) + if (!basePathComparison.EndsWith(StringLiterals.DefaultPathSeparator)) { basePathComparison += StringLiterals.DefaultPathSeparator; } @@ -5013,7 +5013,7 @@ private string NormalizeRelativePathHelper(string path, string basePath) // See if the base and the path are already the same. We resolve this to // ..\Leaf, since resolving "." to "." doesn't offer much information. if (String.Equals(path, basePath, StringComparison.OrdinalIgnoreCase) && - (!originalPath.EndsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.OrdinalIgnoreCase))) + (!originalPath.EndsWith(StringLiterals.DefaultPathSeparator))) { string childName = GetChildName(path); result = MakePath("..", childName); @@ -5060,7 +5060,7 @@ private string NormalizeRelativePathHelper(string path, string basePath) if (!String.IsNullOrEmpty(commonBase)) { if (String.Equals(path, commonBase, StringComparison.OrdinalIgnoreCase) && - (!path.EndsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.OrdinalIgnoreCase))) + (!path.EndsWith(StringLiterals.DefaultPathSeparator))) { string childName = GetChildName(path); result = MakePath("..", result); From 14bc4c5063db3b8bcee183660d7390850b22b65d Mon Sep 17 00:00:00 2001 From: iSazonov Date: Fri, 19 Oct 2018 15:34:13 +0500 Subject: [PATCH 3/4] LocationGlobber --- .../namespaces/LocationGlobber.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/System.Management.Automation/namespaces/LocationGlobber.cs b/src/System.Management.Automation/namespaces/LocationGlobber.cs index 759b6901e8f..2d14d631295 100644 --- a/src/System.Management.Automation/namespaces/LocationGlobber.cs +++ b/src/System.Management.Automation/namespaces/LocationGlobber.cs @@ -1436,8 +1436,8 @@ internal static bool IsProviderQualifiedPath(string path, out string providerId) internal static bool IsSingleFileSystemAbsolutePath(string path) { #if UNIX - return path.StartsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.Ordinal) - || path.StartsWith(StringLiterals.AlternatePathSeparatorString, StringComparison.Ordinal); + return path.StartsWith(StringLiterals.DefaultPathSeparator) + || path.StartsWith(StringLiterals.AlternatePathSeparator); #else return false; #endif @@ -2898,7 +2898,7 @@ private Collection ExpandMshGlobPath( } else { - if (path.StartsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.Ordinal)) + if (path.StartsWith(StringLiterals.DefaultPathSeparator)) { formatString = "{0}:{1}"; } @@ -3088,8 +3088,8 @@ internal static string GetDriveQualifiedPath(string path, PSDriveInfo drive) // Check if the path begins with "\" or "/" (UNC Path or Path in Unix). // Ignore if the path resolves to a drive path, this will happen when path is equal to "\" or "/". // Drive path still need formatting, so treat them as relative. - if (path.Length > 1 && (path.StartsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.Ordinal) || - path.StartsWith(StringLiterals.AlternatePathSeparatorString, StringComparison.Ordinal))) + if (path.Length > 1 && (path.StartsWith(StringLiterals.DefaultPathSeparator) || + path.StartsWith(StringLiterals.AlternatePathSeparator))) { treatAsRelative = false; } @@ -3109,7 +3109,7 @@ internal static string GetDriveQualifiedPath(string path, PSDriveInfo drive) if (drive.VolumeSeparatedByColon) { formatString = "{0}:" + StringLiterals.DefaultPathSeparator + "{1}"; - if (path.StartsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.Ordinal)) + if (path.StartsWith(StringLiterals.DefaultPathSeparator)) { formatString = "{0}:{1}"; } From a3b83c1d2d2d7b14d192cf4245306da66da03ebe Mon Sep 17 00:00:00 2001 From: iSazonov Date: Fri, 19 Oct 2018 15:37:45 +0500 Subject: [PATCH 4/4] NavigationProviderBase --- .../namespaces/NavigationProviderBase.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/System.Management.Automation/namespaces/NavigationProviderBase.cs b/src/System.Management.Automation/namespaces/NavigationProviderBase.cs index dcbe372916d..4792027930d 100644 --- a/src/System.Management.Automation/namespaces/NavigationProviderBase.cs +++ b/src/System.Management.Automation/namespaces/NavigationProviderBase.cs @@ -345,7 +345,7 @@ protected string MakePath(string parent, string child, bool childIsLeaf) // Append the default path separator - if (parent.EndsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.Ordinal)) + if (parent.EndsWith(StringLiterals.DefaultPathSeparator)) { result = parent; } @@ -377,9 +377,9 @@ protected string MakePath(string parent, string child, bool childIsLeaf) StringBuilder builder = new StringBuilder(parent, parent.Length + child.Length + 1); - if (parent.EndsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.Ordinal)) + if (parent.EndsWith(StringLiterals.DefaultPathSeparator)) { - if (child.StartsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.Ordinal)) + if (child.StartsWith(StringLiterals.DefaultPathSeparator)) { builder.Append(child, 1, child.Length - 1); } @@ -390,7 +390,7 @@ protected string MakePath(string parent, string child, bool childIsLeaf) } else { - if (child.StartsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.CurrentCulture)) + if (child.StartsWith(StringLiterals.DefaultPathSeparator)) { if (parent.Length == 0) { @@ -598,7 +598,7 @@ internal string ContractRelativePath( string originalPath = path; Stack tokenizedPathStack = null; - if (path.EndsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.OrdinalIgnoreCase)) + if (path.EndsWith(StringLiterals.DefaultPathSeparator)) { path = path.TrimEnd(StringLiterals.DefaultPathSeparator); originalPathHadTrailingSlash = true; @@ -608,7 +608,7 @@ internal string ContractRelativePath( // See if the base and the path are already the same. We resolve this to // ..\Leaf, since resolving "." to "." doesn't offer much information. if (String.Equals(normalizedPath, normalizedBasePath, StringComparison.OrdinalIgnoreCase) && - (!originalPath.EndsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.OrdinalIgnoreCase))) + (!originalPath.EndsWith(StringLiterals.DefaultPathSeparator))) { string childName = GetChildName(path); result = MakePath("..", childName); @@ -648,7 +648,7 @@ internal string ContractRelativePath( if (!String.IsNullOrEmpty(commonBase)) { if (String.Equals(normalizedPath, commonBase, StringComparison.OrdinalIgnoreCase) && - (!normalizedPath.EndsWith(StringLiterals.DefaultPathSeparatorString, StringComparison.OrdinalIgnoreCase))) + (!normalizedPath.EndsWith(StringLiterals.DefaultPathSeparator))) { string childName = GetChildName(path); result = MakePath("..", result);