From 3a224967058da6aa7808e7255564c5d08e487fdf Mon Sep 17 00:00:00 2001 From: d0k3 Date: Mon, 20 Mar 2017 02:13:51 +0100 Subject: [PATCH] Ignore directories when searching folders --- source/fs/fsdrive.c | 3 ++- source/godmode.c | 2 +- source/virtual/virtual.c | 5 ++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/source/fs/fsdrive.c b/source/fs/fsdrive.c index a07ed2a..3ed6fe7 100644 --- a/source/fs/fsdrive.c +++ b/source/fs/fsdrive.c @@ -137,7 +137,8 @@ bool GetDirContentsWorker(DirStruct* contents, char* fpath, int fnsize, const ch ret = true; // Too many entries, still okay break; } - contents->n_entries++; + if (!recursive || (entry->type != T_DIR)) + contents->n_entries++; } if (recursive && (fno.fattrib & AM_DIR)) { if (!GetDirContentsWorker(contents, fpath, fnsize, pattern, recursive)) diff --git a/source/godmode.c b/source/godmode.c index 4db049b..efc01ea 100644 --- a/source/godmode.c +++ b/source/godmode.c @@ -1221,7 +1221,7 @@ u32 GodMode() { // basic navigation commands if ((pad_state & BUTTON_A) && (curr_entry->type != T_FILE) && (curr_entry->type != T_DOTDOT)) { // for dirs if (switched && !(DriveType(curr_entry->path) & DRV_SEARCH)) { // search directory - const char* optionstr[2] = { "Search files & subdirs", "Directory info" }; // search files only? + const char* optionstr[2] = { "Search for files...", "Directory info" }; // search files only? char namestr[32+1]; TruncateString(namestr, (*current_path) ? curr_entry->path : curr_entry->name, 32, 8); u32 user_select = ShowSelectPrompt(2, optionstr, "%s", namestr); diff --git a/source/virtual/virtual.c b/source/virtual/virtual.c index 1bd5ed5..ac01734 100644 --- a/source/virtual/virtual.c +++ b/source/virtual/virtual.c @@ -144,7 +144,10 @@ bool GetVirtualDirContents(DirStruct* contents, char* fpath, int fnsize, const c entry->size = vfile.size; entry->type = (vfile.flags & VFLAG_DIR) ? T_DIR : T_FILE; entry->marked = 0; - contents->n_entries++; + if (contents->n_entries >= MAX_DIR_ENTRIES) + break; // Too many entries, still okay + if (!recursive || (entry->type != T_DIR)) + contents->n_entries++; } if (recursive && (vfile.flags & VFLAG_DIR)) { if (!GetVirtualDirContents(contents, fpath, fnsize, pattern, recursive))