浏览代码

Handle symlinks in library folders

Andrew Schurman 9 年之前
父节点
当前提交
5571bf4736
共有 2 个文件被更改,包括 6 次插入3 次删除
  1. 3 1
      MediaBrowser.Api/EnvironmentService.cs
  2. 3 2
      MediaBrowser.Controller/Providers/DirectoryService.cs

+ 3 - 1
MediaBrowser.Api/EnvironmentService.cs

@@ -221,7 +221,9 @@ namespace MediaBrowser.Api
         /// <returns>IEnumerable{FileSystemEntryInfo}.</returns>
         private IEnumerable<FileSystemEntryInfo> GetFileSystemEntries(GetDirectoryContents request)
         {
-            var entries = new DirectoryInfo(request.Path).EnumerateFileSystemInfos().Where(i =>
+            // using EnumerateFileSystemInfos doesn't handle reparse points (symlinks)
+            var entries = new DirectoryInfo(request.Path).EnumerateDirectories("*", SearchOption.TopDirectoryOnly)
+                .Concat<FileSystemInfo>(new DirectoryInfo(request.Path).EnumerateFiles("*", SearchOption.TopDirectoryOnly)).Where(i =>
             {
                 if (!request.IncludeHidden && i.Attributes.HasFlag(FileAttributes.Hidden))
                 {

+ 3 - 2
MediaBrowser.Controller/Providers/DirectoryService.cs

@@ -58,8 +58,9 @@ namespace MediaBrowser.Controller.Providers
                 
                 try
                 {
-                    var list = new DirectoryInfo(path)
-                        .EnumerateFileSystemInfos("*", SearchOption.TopDirectoryOnly);
+                    // using EnumerateFileSystemInfos doesn't handle reparse points (symlinks)
+                    var list = new DirectoryInfo(path).EnumerateDirectories("*", SearchOption.TopDirectoryOnly)
+                        .Concat<FileSystemInfo>(new DirectoryInfo(path).EnumerateFiles("*", SearchOption.TopDirectoryOnly));
 
                     // Seeing dupes on some users file system for some reason
                     foreach (var item in list)