namespace ICSharpCode.SharpZipLib.Core { /// /// WindowsPathUtils provides simple utilities for handling windows paths. /// public abstract class WindowsPathUtils { /// /// Initializes a new instance of the class. /// internal WindowsPathUtils() { } /// /// Remove any path root present in the path /// /// A containing path information. /// The path with the root removed if it was present; path otherwise. /// Unlike the class the path isnt otherwise checked for validity. public static string DropPathRoot(string path) { string result = path; if (!string.IsNullOrEmpty(path)) { if ((path[0] == '\\') || (path[0] == '/')) { // UNC name ? if ((path.Length > 1) && ((path[1] == '\\') || (path[1] == '/'))) { int index = 2; int elements = 2; // Scan for two separate elements \\machine\share\restofpath while ((index <= path.Length) && (((path[index] != '\\') && (path[index] != '/')) || (--elements > 0))) { index++; } index++; if (index < path.Length) { result = path.Substring(index); } else { result = ""; } } } else if ((path.Length > 1) && (path[1] == ':')) { int dropCount = 2; if ((path.Length > 2) && ((path[2] == '\\') || (path[2] == '/'))) { dropCount = 3; } result = result.Remove(0, dropCount); } } return result; } } }