aboutsummaryrefslogtreecommitdiff
path: root/Emby.Common.Implementations/IO/ManagedFileSystem.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-03-29 02:26:48 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-03-29 02:26:48 -0400
commit04b6f23473c4091ce7caf9fbe79d424ac002c0e0 (patch)
tree8f7f729e1e0618c106b70301891faa4e7f6eb05d /Emby.Common.Implementations/IO/ManagedFileSystem.cs
parent2dbe162e45269df00fb44fbe5340b72758399307 (diff)
3.2.9.1
Diffstat (limited to 'Emby.Common.Implementations/IO/ManagedFileSystem.cs')
-rw-r--r--Emby.Common.Implementations/IO/ManagedFileSystem.cs41
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)
{
-
+
}
}
}