ConfigPathUtility
namespace System.Configuration
{
internal static class ConfigPathUtility
{
private const char SeparatorChar = '/';
internal static bool IsValid(string configPath)
{
if (string.IsNullOrEmpty(configPath))
return false;
int num = -1;
for (int i = 0; i <= configPath.Length; i++) {
switch ((i < configPath.Length) ? configPath[i] : '/') {
case '\\':
return false;
case '/':
if (i == num + 1)
return false;
if (i == num + 2 && configPath[num + 1] == '.')
return false;
if (i == num + 3 && configPath[num + 1] == '.' && configPath[num + 2] == '.')
return false;
num = i;
break;
}
}
return true;
}
internal static string Combine(string parentConfigPath, string childConfigPath)
{
if (string.IsNullOrEmpty(parentConfigPath))
return childConfigPath;
if (string.IsNullOrEmpty(childConfigPath))
return parentConfigPath;
return parentConfigPath + "/" + childConfigPath;
}
internal static string[] GetParts(string configPath)
{
return configPath.Split('/', StringSplitOptions.None);
}
internal static string GetName(string configPath)
{
if (string.IsNullOrEmpty(configPath))
return configPath;
int num = configPath.LastIndexOf('/');
if (num == -1)
return configPath;
return configPath.Substring(num + 1);
}
}
}