From e5b5861abf1ebd940e9b369de3cd3ab0432338c5 Mon Sep 17 00:00:00 2001 From: ebr11 Eric Reed spam Date: Tue, 18 Sep 2012 07:22:49 -0400 Subject: [PATCH] Need to be more intelligent finding paths we're already watching --- MediaBrowser.Common/Extensions/BaseExtensions.cs | 13 +++++++++++-- MediaBrowser.Controller/IO/DirectoryWatchers.cs | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Common/Extensions/BaseExtensions.cs b/MediaBrowser.Common/Extensions/BaseExtensions.cs index 89cfbecad2..ceb008629c 100644 --- a/MediaBrowser.Common/Extensions/BaseExtensions.cs +++ b/MediaBrowser.Common/Extensions/BaseExtensions.cs @@ -19,11 +19,20 @@ namespace MediaBrowser.Common.Extensions } } - public static bool ContainsStartsWith(this List lst, string value) + /// + /// Examine a list of strings assumed to be file paths to see if it contains a parent of + /// the provided path. + /// + /// + /// + /// + public static bool ContainsParentFolder(this List lst, string path) { foreach (var str in lst) { - if (str.StartsWith(value, StringComparison.OrdinalIgnoreCase)) return true; + //this should be a little quicker than examining each actual parent folder... + if (path.Equals(str,StringComparison.OrdinalIgnoreCase) + || (path.StartsWith(str, StringComparison.OrdinalIgnoreCase) && path[str.Length-1] == '\\')) return true; } return false; } diff --git a/MediaBrowser.Controller/IO/DirectoryWatchers.cs b/MediaBrowser.Controller/IO/DirectoryWatchers.cs index 91f74e6777..8243c8174a 100644 --- a/MediaBrowser.Controller/IO/DirectoryWatchers.cs +++ b/MediaBrowser.Controller/IO/DirectoryWatchers.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Controller.IO { foreach (string path in folder.PhysicalLocations) { - if (Path.IsPathRooted(path) && !pathsToWatch.ContainsStartsWith(path)) + if (Path.IsPathRooted(path) && !pathsToWatch.ContainsParentFolder(path)) { pathsToWatch.Add(path); }