diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-03-29 02:26:48 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-03-29 02:26:48 -0400 |
| commit | 04b6f23473c4091ce7caf9fbe79d424ac002c0e0 (patch) | |
| tree | 8f7f729e1e0618c106b70301891faa4e7f6eb05d /Emby.Common.Implementations/IO/ManagedFileSystem.cs | |
| parent | 2dbe162e45269df00fb44fbe5340b72758399307 (diff) | |
3.2.9.1
Diffstat (limited to 'Emby.Common.Implementations/IO/ManagedFileSystem.cs')
| -rw-r--r-- | Emby.Common.Implementations/IO/ManagedFileSystem.cs | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/Emby.Common.Implementations/IO/ManagedFileSystem.cs b/Emby.Common.Implementations/IO/ManagedFileSystem.cs index 0c1c02cd5..ed940eca5 100644 --- a/Emby.Common.Implementations/IO/ManagedFileSystem.cs +++ b/Emby.Common.Implementations/IO/ManagedFileSystem.cs @@ -657,14 +657,41 @@ namespace Emby.Common.Implementations.IO { var searchOption = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; - return ToMetadata(path, new DirectoryInfo(path).EnumerateDirectories("*", searchOption)); + return ToMetadata(new DirectoryInfo(path).EnumerateDirectories("*", searchOption)); } public IEnumerable<FileSystemMetadata> GetFiles(string path, bool recursive = false) { + return GetFiles(path, null, true, recursive); + } + + public IEnumerable<FileSystemMetadata> GetFiles(string path, string[] extensions, bool enableCaseSensitiveExtensions, bool recursive = false) + { var searchOption = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; - return ToMetadata(path, new DirectoryInfo(path).EnumerateFiles("*", searchOption)); + // On linux and osx the search pattern is case sensitive + // If we're OK with case-sensitivity, and we're only filtering for one extension, then use the native method + if (enableCaseSensitiveExtensions && extensions != null && extensions.Length == 1) + { + return ToMetadata(new DirectoryInfo(path).EnumerateFiles("*" + extensions[0], searchOption)); + } + + var files = new DirectoryInfo(path).EnumerateFiles("*", searchOption); + + if (extensions != null && extensions.Length > 0) + { + files = files.Where(i => + { + var ext = i.Extension; + if (ext == null) + { + return false; + } + return extensions.Contains(ext, StringComparer.OrdinalIgnoreCase); + }); + } + + return ToMetadata(files); } public IEnumerable<FileSystemMetadata> GetFileSystemEntries(string path, bool recursive = false) @@ -674,14 +701,14 @@ namespace Emby.Common.Implementations.IO if (EnableFileSystemRequestConcat) { - return ToMetadata(path, directoryInfo.EnumerateDirectories("*", searchOption)) - .Concat(ToMetadata(path, directoryInfo.EnumerateFiles("*", searchOption))); + return ToMetadata(directoryInfo.EnumerateDirectories("*", searchOption)) + .Concat(ToMetadata(directoryInfo.EnumerateFiles("*", searchOption))); } - return ToMetadata(path, directoryInfo.EnumerateFileSystemInfos("*", searchOption)); + return ToMetadata(directoryInfo.EnumerateFileSystemInfos("*", searchOption)); } - private IEnumerable<FileSystemMetadata> ToMetadata(string parentPath, IEnumerable<FileSystemInfo> infos) + private IEnumerable<FileSystemMetadata> ToMetadata(IEnumerable<FileSystemInfo> infos) { return infos.Select(GetFileSystemMetadata); } @@ -776,7 +803,7 @@ namespace Emby.Common.Implementations.IO public virtual void SetExecutable(string path) { - + } } } |
