diff --git a/database_info.c b/database_info.c index 9a77116d64..3ed61a5553 100644 --- a/database_info.c +++ b/database_info.c @@ -15,9 +15,8 @@ * If not, see . */ -#include #include "file_ext.h" -#include +#include "dir_list_special.h" #include #include "database_info.h" @@ -50,17 +49,12 @@ int database_open_cursor(libretrodb_t *db, database_info_handle_t *database_info_init(const char *dir, enum database_type type) { - const char *exts = ""; - global_t *global = global_get_ptr(); database_info_handle_t *db = (database_info_handle_t*)calloc(1, sizeof(*db)); if (!db) return NULL; - if (global->core_info) - exts = core_info_list_get_all_extensions(global->core_info); - - db->list = dir_list_new(dir, exts, false); + db->list = dir_list_new_special(dir, DIR_LIST_CORE_INFO); if (!db->list) goto error; diff --git a/dir_list_special.c b/dir_list_special.c index c6f4447596..5bcbcfbc8d 100644 --- a/dir_list_special.c +++ b/dir_list_special.c @@ -25,6 +25,7 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty const char *exts = NULL; bool include_dirs = false; + global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); (void)input_dir; @@ -33,9 +34,13 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty switch (type) { case DIR_LIST_CORES: - dir = settings->libretro_directory; + dir = settings->libretro_directory; exts = EXT_EXECUTABLES; break; + case DIR_LIST_CORE_INFO: + dir = input_dir; + exts = (global->core_info) ? core_info_list_get_all_extensions(global->core_info) : NULL; + break; case DIR_LIST_SHADERS: dir = settings->video.shader_dir; exts = "cg|cgp|glsl|glslp"; diff --git a/dir_list_special.h b/dir_list_special.h index bb4ca47fc4..202dd9a8d8 100644 --- a/dir_list_special.h +++ b/dir_list_special.h @@ -28,6 +28,7 @@ enum dir_list_type { DIR_LIST_NONE = 0, DIR_LIST_CORES, + DIR_LIST_CORE_INFO, DIR_LIST_PLAIN, DIR_LIST_SHADERS, };