public string MapPath(string src) { if (src == null) { return(null); } src = src.Substring(1); string[] origparts = src.Split('\\'); src = src.ToLower(); string[] parts = src.Split('\\'); SharePath lastmapped = null; SharePath current = this; int pathidx = -1; int i = 0; for (i = 0; i < parts.Length; i++) { if (current.SubPaths.ContainsKey(parts[i])) { current = current.SubPaths[parts[i]]; if (current.Target != null) { lastmapped = current; pathidx = i; } } else { break; } } string newpath = null; if (i == parts.Length) { newpath = lastmapped.Target; } else if (i == 0) { newpath = null; } else { newpath = current.Target + "\\" + String.Join("\\", origparts, pathidx + 1, parts.Length - pathidx - 1); } return(newpath); }
public SharePath AddPath(string src, string dest) { SharePath curr = this; string[] parts = src.ToLower().Split('\\'); foreach (string s in parts) { if (!curr.SubPaths.ContainsKey(s)) { curr.SubPaths[s] = new SharePath(); } curr = curr.SubPaths[s]; } curr.Target = dest; return(curr); }
private static void InitMap() { root = new SharePath(); try { Assembly _assembly; StreamReader tsr; _assembly = Assembly.GetExecutingAssembly(); tsr = new StreamReader(_assembly.GetManifestResourceStream(System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".ShareMappings.txt")); while (!tsr.EndOfStream) { string line = tsr.ReadLine(); if (line.StartsWith("#")) { continue; } if (line.Equals("")) { continue; } string src = line; line = tsr.ReadLine(); string dest = line; src = src.Substring(1); if (root == null) { root = new SharePath(); } SharePath tar = root.AddPath(src, dest); } } catch { Console.WriteLine("oops"); } }