diff --git a/console/console_ext.c b/console/console_ext.c
index 303ebf8407..58e38832aa 100644
--- a/console/console_ext.c
+++ b/console/console_ext.c
@@ -517,153 +517,6 @@ void rarch_set_auto_viewport(unsigned width, unsigned height)
aspectratio_lut[ASPECT_RATIO_AUTO].value = (int)aspect_x / (int)aspect_y;
}
-/*============================================================
- LIBRETRO
- ============================================================ */
-
-#ifdef HAVE_LIBRETRO_MANAGEMENT
-bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext)
-{
- g_extern.verbose = true;
- bool return_code;
-
- bool set_libretro_path = false;
- char tmp_path2[1024], tmp_pathnewfile[1024];
- RARCH_LOG("Assumed path of CORE executable: [%s]\n", full_path);
-
- if (path_file_exists(full_path))
- {
- // if CORE executable exists, this means we have just installed
- // a new libretro port and therefore we need to change it to a more
- // sane name.
-
-#if defined(__CELLOS_LV2__)
- CellFsErrno ret;
-#else
- int ret;
-#endif
-
- rarch_console_name_from_id(tmp_path2, sizeof(tmp_path2));
- strlcat(tmp_path2, exe_ext, sizeof(tmp_path2));
- snprintf(tmp_pathnewfile, sizeof(tmp_pathnewfile), "%s%s", path, tmp_path2);
-
- if (path_file_exists(tmp_pathnewfile))
- {
- // if libretro core already exists, this means we are
- // upgrading the libretro core - so delete pre-existing
- // file first.
-
- RARCH_LOG("Upgrading emulator core...\n");
-#if defined(__CELLOS_LV2__)
- ret = cellFsUnlink(tmp_pathnewfile);
- if (ret == CELL_FS_SUCCEEDED)
-#elif defined(_XBOX)
- ret = DeleteFile(tmp_pathnewfile);
- if (ret != 0)
-#endif
- {
- RARCH_LOG("Succeeded in removing pre-existing libretro core: [%s].\n", tmp_pathnewfile);
- }
- else
- RARCH_LOG("Failed to remove pre-existing libretro core: [%s].\n", tmp_pathnewfile);
- }
-
- //now attempt the renaming.
-#if defined(__CELLOS_LV2__)
- ret = cellFsRename(full_path, tmp_pathnewfile);
-
- if (ret != CELL_FS_SUCCEEDED)
-#elif defined(_XBOX)
- ret = MoveFileExA(full_path, tmp_pathnewfile, NULL);
- if (ret == 0)
-#endif
- {
- RARCH_ERR("Failed to rename CORE executable.\n");
- }
- else
- {
- RARCH_LOG("Libsnes core [%s] renamed to: [%s].\n", full_path, tmp_pathnewfile);
- set_libretro_path = true;
- }
- }
- else
- {
- RARCH_LOG("CORE executable was not found, libretro core path will be loaded from config file.\n");
- }
-
- if (set_libretro_path)
- {
- // CORE executable has been renamed, libretro path will now be set to the recently
- // renamed new libretro core.
- strlcpy(g_settings.libretro, tmp_pathnewfile, sizeof(g_settings.libretro));
- return_code = 0;
- }
- else
- {
- // There was no CORE executable present, or the CORE executable file was not renamed.
- // The libretro core path will still be loaded from the config file.
- return_code = 1;
- }
-
- g_extern.verbose = false;
-
- return return_code;
-}
-
-void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext)
-{
-#ifdef _XBOX
- char fname_tmp[PATH_MAX];
-#endif
-
- //We need to set libretro to the first entry in the cores
- //directory so that it will be saved to the config file
-
- char ** dir_list = dir_list_new(libretro_path, exe_ext);
-
- if (!dir_list)
- {
- RARCH_ERR("Couldn't read directory.\n");
- return;
- }
-
- const char * first_exe = dir_list[0];
-
- if(first_exe)
- {
-#ifdef _XBOX
- fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp));
-
- if(strcmp(fname_tmp, "RetroArch-Salamander.xex") == 0)
- {
- RARCH_WARN("First entry is RetroArch Salamander itself, increment entry by one and check if it exists.\n");
- first_exe = dir_list[1];
- fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp));
-
- if(!first_exe)
- {
- RARCH_ERR("Unlikely error happened - no second entry - no choice but to set it to RetroArch Salamander\n");
- first_exe = dir_list[0];
- fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp));
- }
- }
-
- RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", fname_tmp);
- snprintf(g_settings.libretro, sizeof(g_settings.libretro), "game:\\%s", fname_tmp);
-#else
- RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", first_exe);
- strlcpy(g_settings.libretro, first_exe, sizeof(g_settings.libretro));
-#endif
- }
- else
- {
- RARCH_ERR("Failed to set first .xex entry to libretro path.\n");
- }
-
- dir_list_free(dir_list);
-}
-#endif
-
/*============================================================
RetroArch MAIN WRAP
============================================================ */
diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c
index f2f8e4d0ce..42398c4412 100644
--- a/console/griffin/griffin.c
+++ b/console/griffin/griffin.c
@@ -23,6 +23,10 @@ CONSOLE EXTENSIONS
============================================================ */
#include "../console_ext.c"
+#ifdef HAVE_LIBRETRO_MANAGEMENT
+#include "../libretro_mgmt.c"
+#endif
+
/*============================================================
COMPATIBILITY
============================================================ */
diff --git a/console/libretro_mgmt.c b/console/libretro_mgmt.c
new file mode 100644
index 0000000000..bc7e4d62b8
--- /dev/null
+++ b/console/libretro_mgmt.c
@@ -0,0 +1,160 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2010-2012 - Hans-Kristian Arntzen
+ * Copyright (C) 2011-2012 - Daniel De Matteis
+ *
+ * RetroArch is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Found-
+ * ation, either version 3 of the License, or (at your option) any later version.
+ *
+ * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with RetroArch.
+ * If not, see .
+ */
+
+#include
+
+#include "console_ext.h"
+
+bool rarch_manage_libretro_install(const char *full_path, const char *path, const char *exe_ext)
+{
+ g_extern.verbose = true;
+ bool return_code;
+
+ bool set_libretro_path = false;
+ char tmp_path2[1024], tmp_pathnewfile[1024];
+ RARCH_LOG("Assumed path of CORE executable: [%s]\n", full_path);
+
+ if (path_file_exists(full_path))
+ {
+ // if CORE executable exists, this means we have just installed
+ // a new libretro port and therefore we need to change it to a more
+ // sane name.
+
+#if defined(__CELLOS_LV2__)
+ CellFsErrno ret;
+#else
+ int ret;
+#endif
+
+ rarch_console_name_from_id(tmp_path2, sizeof(tmp_path2));
+ strlcat(tmp_path2, exe_ext, sizeof(tmp_path2));
+ snprintf(tmp_pathnewfile, sizeof(tmp_pathnewfile), "%s%s", path, tmp_path2);
+
+ if (path_file_exists(tmp_pathnewfile))
+ {
+ // if libretro core already exists, this means we are
+ // upgrading the libretro core - so delete pre-existing
+ // file first.
+
+ RARCH_LOG("Upgrading emulator core...\n");
+#if defined(__CELLOS_LV2__)
+ ret = cellFsUnlink(tmp_pathnewfile);
+ if (ret == CELL_FS_SUCCEEDED)
+#elif defined(_XBOX)
+ ret = DeleteFile(tmp_pathnewfile);
+ if (ret != 0)
+#endif
+ {
+ RARCH_LOG("Succeeded in removing pre-existing libretro core: [%s].\n", tmp_pathnewfile);
+ }
+ else
+ RARCH_LOG("Failed to remove pre-existing libretro core: [%s].\n", tmp_pathnewfile);
+ }
+
+ //now attempt the renaming.
+#if defined(__CELLOS_LV2__)
+ ret = cellFsRename(full_path, tmp_pathnewfile);
+
+ if (ret != CELL_FS_SUCCEEDED)
+#elif defined(_XBOX)
+ ret = MoveFileExA(full_path, tmp_pathnewfile, NULL);
+ if (ret == 0)
+#endif
+ {
+ RARCH_ERR("Failed to rename CORE executable.\n");
+ }
+ else
+ {
+ RARCH_LOG("Libsnes core [%s] renamed to: [%s].\n", full_path, tmp_pathnewfile);
+ set_libretro_path = true;
+ }
+ }
+ else
+ {
+ RARCH_LOG("CORE executable was not found, libretro core path will be loaded from config file.\n");
+ }
+
+ if (set_libretro_path)
+ {
+ // CORE executable has been renamed, libretro path will now be set to the recently
+ // renamed new libretro core.
+ strlcpy(g_settings.libretro, tmp_pathnewfile, sizeof(g_settings.libretro));
+ return_code = 0;
+ }
+ else
+ {
+ // There was no CORE executable present, or the CORE executable file was not renamed.
+ // The libretro core path will still be loaded from the config file.
+ return_code = 1;
+ }
+
+ g_extern.verbose = false;
+
+ return return_code;
+}
+
+void rarch_manage_libretro_set_first_file(const char *libretro_path, const char * exe_ext)
+{
+#ifdef _XBOX
+ char fname_tmp[PATH_MAX];
+#endif
+
+ //We need to set libretro to the first entry in the cores
+ //directory so that it will be saved to the config file
+
+ char ** dir_list = dir_list_new(libretro_path, exe_ext);
+
+ if (!dir_list)
+ {
+ RARCH_ERR("Couldn't read directory.\n");
+ return;
+ }
+
+ const char * first_exe = dir_list[0];
+
+ if(first_exe)
+ {
+#ifdef _XBOX
+ fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp));
+
+ if(strcmp(fname_tmp, "RetroArch-Salamander.xex") == 0)
+ {
+ RARCH_WARN("First entry is RetroArch Salamander itself, increment entry by one and check if it exists.\n");
+ first_exe = dir_list[1];
+ fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp));
+
+ if(!first_exe)
+ {
+ RARCH_ERR("Unlikely error happened - no second entry - no choice but to set it to RetroArch Salamander\n");
+ first_exe = dir_list[0];
+ fill_pathname_base(fname_tmp, first_exe, sizeof(fname_tmp));
+ }
+ }
+
+ RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", fname_tmp);
+ snprintf(g_settings.libretro, sizeof(g_settings.libretro), "game:\\%s", fname_tmp);
+#else
+ RARCH_LOG("Set first entry in libretro core dir to libretro path: [%s].\n", first_exe);
+ strlcpy(g_settings.libretro, first_exe, sizeof(g_settings.libretro));
+#endif
+ }
+ else
+ {
+ RARCH_ERR("Failed to set first .xex entry to libretro path.\n");
+ }
+
+ dir_list_free(dir_list);
+}