You've already forked Sonarr
							
							
				mirror of
				https://github.com/Sonarr/Sonarr.git
				synced 2025-10-31 00:07:55 +02:00 
			
		
		
		
	Special folders also apply to RootFolder unmapped folders
This commit is contained in:
		| @@ -35,8 +35,8 @@ namespace NzbDrone.Common | ||||
|  | ||||
|                     if (Path.GetPathRoot(path).Equals(path, StringComparison.InvariantCultureIgnoreCase)) | ||||
|                     { | ||||
|                         var setToRemove = new HashSet<string> { "$Recycle.Bin", "System Volume Information" }; | ||||
|                         dirsList.RemoveAll(x => setToRemove.Contains(new DirectoryInfo(x).Name)); | ||||
|                         var setToRemove = _diskProvider.SpecialFolders; | ||||
|                         dirsList.RemoveAll(x => setToRemove.Contains(new DirectoryInfo(x.ToLowerInvariant()).Name)); | ||||
|                     } | ||||
|  | ||||
|                     dirs = dirsList; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Runtime.InteropServices; | ||||
| @@ -11,6 +12,7 @@ namespace NzbDrone.Common | ||||
| { | ||||
|     public interface IDiskProvider | ||||
|     { | ||||
|         HashSet<string> SpecialFolders { get; } | ||||
|         DateTime GetLastFolderWrite(string path); | ||||
|         DateTime GetLastFileWrite(string path); | ||||
|         void EnsureFolder(string path); | ||||
| @@ -36,14 +38,14 @@ namespace NzbDrone.Common | ||||
|         void FolderSetLastWriteTimeUtc(string path, DateTime dateTime); | ||||
|         bool IsFileLocked(FileInfo file); | ||||
|         string GetPathRoot(string path); | ||||
|         void SetPermissions(string filename, string account, FileSystemRights Rights, AccessControlType ControlType); | ||||
|         void SetPermissions(string filename, string account, FileSystemRights rights, AccessControlType controlType); | ||||
|         bool IsParent(string parentfolder, string subfolder); | ||||
|         FileAttributes GetFileAttributes(string path); | ||||
|         FileAttributes GetFileAttributes(string path);   | ||||
|     } | ||||
|  | ||||
|     public class DiskProvider : IDiskProvider | ||||
|     { | ||||
|         enum TransferAction | ||||
|        enum TransferAction | ||||
|         { | ||||
|             Copy, | ||||
|             Move | ||||
| @@ -58,6 +60,14 @@ namespace NzbDrone.Common | ||||
|  | ||||
|         private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); | ||||
|  | ||||
|         public HashSet<string> SpecialFolders | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return new HashSet<string> { "$recycle.bin", "system volume information", "recycler" }; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public DateTime GetLastFolderWrite(string path) | ||||
|         { | ||||
|             Ensure.That(() => path).IsValidPath(); | ||||
|   | ||||
| @@ -99,7 +99,7 @@ namespace NzbDrone.Core.RootFolders | ||||
|                 throw new ArgumentException("Invalid path provided", "path"); | ||||
|  | ||||
|             var results = new List<UnmappedFolder>(); | ||||
|             var series = _seriesRepository.All(); | ||||
|             var series = _seriesRepository.All().ToList(); | ||||
|  | ||||
|             if (!_diskProvider.FolderExists(path)) | ||||
|             { | ||||
| @@ -116,6 +116,12 @@ namespace NzbDrone.Core.RootFolders | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (Path.GetPathRoot(path).Equals(path, StringComparison.InvariantCultureIgnoreCase)) | ||||
|             { | ||||
|                 var setToRemove = _diskProvider.SpecialFolders; | ||||
|                 results.RemoveAll(x => setToRemove.Contains(new DirectoryInfo(x.Path.ToLowerInvariant()).Name)); | ||||
|             } | ||||
|  | ||||
|             Logger.Debug("{0} unmapped folders detected.", results.Count); | ||||
|             return results; | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user