diff --git a/core_info.c b/core_info.c index 71d00a8c49..a5798ec0c9 100644 --- a/core_info.c +++ b/core_info.c @@ -751,7 +751,8 @@ void core_info_get_name(const char *path, char *s, size_t len, size_t i; const char *path_basedir = !string_is_empty(path_info) ? path_info : dir_cores; - struct string_list *contents = dir_list_new_special(dir_cores, DIR_LIST_CORES, NULL); + struct string_list *contents = dir_list_new_special( + dir_cores, DIR_LIST_CORES, NULL); if (!contents) return; diff --git a/database_info.c b/database_info.c index 007fce58c4..894ae250ac 100644 --- a/database_info.c +++ b/database_info.c @@ -22,12 +22,13 @@ #include #include #include +#include #include #include "libretro-db/libretrodb.h" +#include "core_info.h" #include "database_info.h" -#include "list_special.h" #include "verbosity.h" int database_info_build_query_enum(char *s, size_t len, @@ -367,16 +368,22 @@ static void dir_list_prioritize(struct string_list *list) } database_info_handle_t *database_info_dir_init(const char *dir, - enum database_type type, retro_task_t *task) + enum database_type type, retro_task_t *task, + bool show_hidden_files) { - struct string_list *list = NULL; - database_info_handle_t *db = (database_info_handle_t*) + core_info_list_t *core_info_list = NULL; + struct string_list *list = NULL; + database_info_handle_t *db = (database_info_handle_t*) calloc(1, sizeof(*db)); if (!db) return NULL; - list = dir_list_new_special(dir, DIR_LIST_RECURSIVE, NULL); + core_info_get_list(&core_info_list); + + list = dir_list_new(dir, core_info_list->all_ext, + false, show_hidden_files, + false, true); if (!list) { diff --git a/database_info.h b/database_info.h index 2664577e6f..aa0f5b8011 100644 --- a/database_info.h +++ b/database_info.h @@ -126,7 +126,8 @@ database_info_list_t *database_info_list_new(const char *rdb_path, void database_info_list_free(database_info_list_t *list); database_info_handle_t *database_info_dir_init(const char *dir, - enum database_type type, retro_task_t *task); + enum database_type type, retro_task_t *task, + bool show_hidden_files); database_info_handle_t *database_info_file_init(const char *path, enum database_type type, retro_task_t *task); diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index fb75d34b04..75245ef690 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -983,7 +983,9 @@ static void content_add_to_playlist(const char *path) task_push_dbscan( settings->paths.directory_playlist, settings->paths.path_content_database, - path, false, handle_dbscan_finished); + path, false, + settings->bools.show_hidden_files, + handle_dbscan_finished); #endif } diff --git a/menu/cbs/menu_cbs_scan.c b/menu/cbs/menu_cbs_scan.c index c878491f29..150f226fa3 100644 --- a/menu/cbs/menu_cbs_scan.c +++ b/menu/cbs/menu_cbs_scan.c @@ -64,7 +64,9 @@ int action_scan_file(const char *path, task_push_dbscan( settings->paths.directory_playlist, settings->paths.path_content_database, - fullpath, false, handle_dbscan_finished); + fullpath, false, + settings->bools.show_hidden_files, + handle_dbscan_finished); return 0; } @@ -90,7 +92,9 @@ int action_scan_directory(const char *path, task_push_dbscan( settings->paths.directory_playlist, settings->paths.path_content_database, - fullpath, true, handle_dbscan_finished); + fullpath, true, + settings->bools.show_hidden_files, + handle_dbscan_finished); return 0; } diff --git a/tasks/task_database.c b/tasks/task_database.c index 0f949b15c0..76f2b01a58 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -31,7 +31,6 @@ #include "../database_info.h" #include "../file_path_special.h" -#include "../list_special.h" #include "../msg_hash.h" #include "../playlist.h" #ifdef RARCH_INTERNAL @@ -61,6 +60,7 @@ typedef struct db_handle { bool is_directory; bool scan_started; + bool show_hidden_files; unsigned status; char *playlist_directory; char *content_database_path; @@ -1142,7 +1142,7 @@ static void task_database_handler(retro_task_t *task) if (!string_is_empty(db->fullpath)) { if (db->is_directory) - db->handle = database_info_dir_init(db->fullpath, DATABASE_TYPE_ITERATE, task); + db->handle = database_info_dir_init(db->fullpath, DATABASE_TYPE_ITERATE, task, db->show_hidden_files); else db->handle = database_info_file_init(db->fullpath, DATABASE_TYPE_ITERATE, task); } @@ -1165,9 +1165,11 @@ static void task_database_handler(retro_task_t *task) if (dbstate && !dbstate->list) { if (!string_is_empty(db->content_database_path)) - dbstate->list = dir_list_new_special( + dbstate->list = dir_list_new( db->content_database_path, - DIR_LIST_DATABASES, NULL); + "rdb", false, + db->show_hidden_files, + false, false); /* If the scan path matches a database path exactly then * save time by only processing that database. */ @@ -1287,7 +1289,9 @@ bool task_push_dbscan( const char *playlist_directory, const char *content_database, const char *fullpath, - bool directory, retro_task_callback_t cb) + bool directory, + bool show_hidden_files, + retro_task_callback_t cb) { retro_task_t *t = (retro_task_t*)calloc(1, sizeof(*t)); db_handle_t *db = (db_handle_t*)calloc(1, sizeof(db_handle_t)); @@ -1300,6 +1304,7 @@ bool task_push_dbscan( t->callback = cb; t->title = strdup(msg_hash_to_str(MSG_PREPARING_FOR_CONTENT_SCAN)); + db->show_hidden_files = show_hidden_files; db->is_directory = directory; db->playlist_directory = NULL; db->fullpath = strdup(fullpath); diff --git a/tasks/tasks_internal.h b/tasks/tasks_internal.h index 9b6c0ff9d2..4e8e4e5a9f 100644 --- a/tasks/tasks_internal.h +++ b/tasks/tasks_internal.h @@ -133,7 +133,8 @@ bool task_push_dbscan( const char *playlist_directory, const char *content_database, const char *fullpath, - bool directory, retro_task_callback_t cb); + bool directory, bool show_hidden_files, + retro_task_callback_t cb); #endif #ifdef HAVE_OVERLAY