aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Glaze <andrew.glaze76@gmail.com>2022-12-29 10:52:30 -0500
committerGitHub <noreply@github.com>2022-12-29 16:52:30 +0100
commit2b23463daa01226c5569d8e61d1d0959570354cf (patch)
treecafb9e09a8aa61de83d0e89a35b0e0ebc7cf32da
parent9dfe81770a8337a7a469eb3bac0ae9599cc0f61c (diff)
Filter hidden game files from the Game List (#4051)1.1.500
* Filter “._” files from the game list * Filter all hidden files from the game list * Fix style Co-authored-by: gdkchan <gab.dark.100@gmail.com> * merge OR expression into a pattern * migrate from GetFiles/Directories to Enumerate * Remove GetFilesInDirectory() * Update Ryujinx.Ui.Common/App/ApplicationLibrary.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * add error handeling * code cleanup Co-authored-by: gdkchan <gab.dark.100@gmail.com> Co-authored-by: Ac_K <Acoustik666@gmail.com>
-rw-r--r--Ryujinx.Ui.Common/App/ApplicationLibrary.cs81
1 files changed, 18 insertions, 63 deletions
diff --git a/Ryujinx.Ui.Common/App/ApplicationLibrary.cs b/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
index 1af7dc06..b1a8026e 100644
--- a/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
+++ b/Ryujinx.Ui.Common/App/ApplicationLibrary.cs
@@ -68,53 +68,6 @@ namespace Ryujinx.Ui.App.Common
_cancellationToken?.Cancel();
}
- public IEnumerable<string> GetFilesInDirectory(string directory)
- {
- Stack<string> stack = new Stack<string>();
-
- stack.Push(directory);
-
- while (stack.Count > 0)
- {
- string dir = stack.Pop();
- string[] content = Array.Empty<string>();
-
- try
- {
- content = Directory.GetFiles(dir, "*");
- }
- catch (UnauthorizedAccessException)
- {
- Logger.Warning?.Print(LogClass.Application, $"Failed to get access to directory: \"{dir}\"");
- }
-
- if (content.Length > 0)
- {
- foreach (string file in content)
- {
- yield return file;
- }
- }
-
- try
- {
- content = Directory.GetDirectories(dir);
- }
- catch (UnauthorizedAccessException)
- {
- Logger.Warning?.Print(LogClass.Application, $"Failed to get access to directory: \"{dir}\"");
- }
-
- if (content.Length > 0)
- {
- foreach (string subdir in content)
- {
- stack.Push(subdir);
- }
- }
- }
- }
-
public void ReadControlData(IFileSystem controlFs, Span<byte> outProperty)
{
using var controlFile = new UniqueRef<IFile>();
@@ -151,26 +104,28 @@ namespace Ryujinx.Ui.App.Common
continue;
}
- foreach (string app in GetFilesInDirectory(appDir))
+ try
{
- if (_cancellationToken.Token.IsCancellationRequested)
+ foreach (string app in Directory.EnumerateFiles(appDir, "*", SearchOption.AllDirectories))
{
- return;
- }
-
- string extension = Path.GetExtension(app).ToLower();
-
- if ((extension == ".nsp") ||
- (extension == ".pfs0") ||
- (extension == ".xci") ||
- (extension == ".nca") ||
- (extension == ".nro") ||
- (extension == ".nso"))
- {
- applications.Add(app);
- numApplicationsFound++;
+ if (_cancellationToken.Token.IsCancellationRequested)
+ {
+ return;
+ }
+
+ string extension = Path.GetExtension(app).ToLower();
+
+ if (!File.GetAttributes(app).HasFlag(FileAttributes.Hidden) && extension is ".nsp" or ".pfs0" or ".xci" or ".nca" or ".nro" or ".nso")
+ {
+ applications.Add(app);
+ numApplicationsFound++;
+ }
}
}
+ catch (UnauthorizedAccessException)
+ {
+ Logger.Warning?.Print(LogClass.Application, $"Failed to get access to directory: \"{appDir}\"");
+ }
}
// Loops through applications list, creating a struct and then firing an event containing the struct for each application