|
1 |
| -using CommunityToolkit.Mvvm.DependencyInjection; |
2 |
| -using CommunityToolkit.WinUI; |
3 |
| -using Files.App.Extensions; |
4 | 1 | using Files.Backend.Extensions;
|
5 | 2 | using Files.Shared.Services.DateTimeFormatter;
|
6 | 3 | using Microsoft.UI.Dispatching;
|
7 |
| -using System; |
8 |
| -using System.Collections.Generic; |
9 | 4 | using System.IO;
|
10 |
| -using System.Threading; |
11 |
| -using System.Threading.Tasks; |
12 | 5 | using Windows.Storage.FileProperties;
|
13 | 6 | using static Files.Backend.Helpers.NativeFindStorageItemHelper;
|
14 | 7 | using FileAttributes = System.IO.FileAttributes;
|
@@ -72,22 +65,23 @@ public async Task<long> CalculateFolderSizeAsync(string path, CancellationToken
|
72 | 65 | {
|
73 | 66 | do
|
74 | 67 | {
|
| 68 | + if (((FileAttributes)findData.dwFileAttributes & FileAttributes.ReparsePoint) == FileAttributes.ReparsePoint) |
| 69 | + // Skip symbolic links and junctions |
| 70 | + continue; |
| 71 | + |
75 | 72 | if (((FileAttributes)findData.dwFileAttributes & FileAttributes.Directory) != FileAttributes.Directory)
|
76 | 73 | {
|
77 | 74 | size += findData.GetSize();
|
78 | 75 | ++count;
|
79 | 76 | ViewModel.FilesCount++;
|
80 | 77 | }
|
81 |
| - else if (((FileAttributes)findData.dwFileAttributes & FileAttributes.Directory) == FileAttributes.Directory) |
| 78 | + else if (findData.cFileName != "." && findData.cFileName != "..") |
82 | 79 | {
|
83 |
| - if (findData.cFileName != "." && findData.cFileName != "..") |
84 |
| - { |
85 |
| - var itemPath = Path.Combine(path, findData.cFileName); |
| 80 | + var itemPath = Path.Combine(path, findData.cFileName); |
86 | 81 |
|
87 |
| - size += await CalculateFolderSizeAsync(itemPath, token); |
88 |
| - ++count; |
89 |
| - ViewModel.FoldersCount++; |
90 |
| - } |
| 82 | + size += await CalculateFolderSizeAsync(itemPath, token); |
| 83 | + ++count; |
| 84 | + ViewModel.FoldersCount++; |
91 | 85 | }
|
92 | 86 |
|
93 | 87 | if (size > ViewModel.ItemSizeBytes)
|
|
0 commit comments