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,
};