|
@@ -662,7 +662,7 @@ namespace Emby.Common.Implementations.IO
|
|
|
|
|
|
public IEnumerable<FileSystemMetadata> GetFiles(string path, bool recursive = false)
|
|
|
{
|
|
|
- return GetFiles(path, null, true, recursive);
|
|
|
+ return GetFiles(path, null, false, recursive);
|
|
|
}
|
|
|
|
|
|
public IEnumerable<FileSystemMetadata> GetFiles(string path, string[] extensions, bool enableCaseSensitiveExtensions, bool recursive = false)
|
|
@@ -790,9 +790,37 @@ namespace Emby.Common.Implementations.IO
|
|
|
}
|
|
|
|
|
|
public IEnumerable<string> GetFilePaths(string path, bool recursive = false)
|
|
|
+ {
|
|
|
+ return GetFilePaths(path, null, false, recursive);
|
|
|
+ }
|
|
|
+
|
|
|
+ public IEnumerable<string> GetFilePaths(string path, string[] extensions, bool enableCaseSensitiveExtensions, bool recursive = false)
|
|
|
{
|
|
|
var searchOption = recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
|
|
|
- return Directory.EnumerateFiles(path, "*", 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 Directory.EnumerateFiles(path, "*" + extensions[0], searchOption);
|
|
|
+ }
|
|
|
+
|
|
|
+ var files = Directory.EnumerateFiles(path, "*", searchOption);
|
|
|
+
|
|
|
+ if (extensions != null && extensions.Length > 0)
|
|
|
+ {
|
|
|
+ files = files.Where(i =>
|
|
|
+ {
|
|
|
+ var ext = Path.GetExtension(i);
|
|
|
+ if (ext == null)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return extensions.Contains(ext, StringComparer.OrdinalIgnoreCase);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ return files;
|
|
|
}
|
|
|
|
|
|
public IEnumerable<string> GetFileSystemEntryPaths(string path, bool recursive = false)
|