Create frontend_driver_get_salamander_basename

This commit is contained in:
twinaphex 2016-02-03 13:36:00 +01:00
parent 7d6ad7435f
commit 0e7729c660
6 changed files with 58 additions and 11 deletions

View File

@ -28,22 +28,16 @@
#else
#if defined(__CELLOS_LV2__)
#define EXT_EXECUTABLES "self|bin"
#define SALAMANDER_FILE "EBOOT.BIN"
#elif defined(PSP)
#define EXT_EXECUTABLES "pbp"
#define SALAMANDER_FILE "EBOOT.PBP"
#elif defined(VITA)
#define EXT_EXECUTABLES "velf"
#define SALAMANDER_FILE "default.velf"
#elif defined(_XBOX1)
#define EXT_EXECUTABLES "xbe"
#define SALAMANDER_FILE "default.xbe"
#elif defined(_XBOX360)
#define EXT_EXECUTABLES "xex"
#define SALAMANDER_FILE "default.xex"
#elif defined(GEKKO)
#define EXT_EXECUTABLES "dol"
#define SALAMANDER_FILE "boot.dol"
#else
#define EXT_EXECUTABLES ""
#endif

View File

@ -372,8 +372,16 @@ static void frontend_gx_set_fork(bool exitspawn, bool start_game, bool restart)
if (restart)
{
char new_path[PATH_MAX_LENGTH];
fill_pathname_join(new_path, g_defaults.dir.core, SALAMANDER_FILE, sizeof(new_path));
runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, new_path);
char salamander_name[PATH_MAX_LENGTH];
if (frontend_driver_get_salamander_basename(salamander_name,
sizeof(salamander_name)))
{
fill_pathname_join(new_path, g_defaults.dir.core,
salamander_name, sizeof(new_path));
runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, new_path);
}
}
#endif

View File

@ -107,6 +107,37 @@ frontend_ctx_driver_t *frontend_ctx_init_first(void)
return frontend;
}
bool frontend_driver_get_salamander_basename(char *s, size_t len)
{
#ifdef HAVE_DYNAMIC
return false;
#else
#if defined(__CELLOS_LV2__)
strlcpy(s, "EBOOT.BIN", len);
return true;
#elif defined(PSP)
strlcpy(s, "EBOOT.PBP", len);
return true;
#elif defined(VITA)
strlcpy(s, "default.velf", len);
return true;
#elif defined(_XBOX1)
strlcpy(s, "default.xbe", len);
return true;
#elif defined(_XBOX360)
strlcpy(s, "default.xex", len);
return true;
#elif defined(HW_RVL)
strlcpy(s, "boot.dol", len);
return true;
#else
return false;
#endif
#endif
}
#ifndef IS_SALAMANDER
frontend_ctx_driver_t *frontend_get_ptr(void)
{

View File

@ -140,6 +140,8 @@ void frontend_driver_exitspawn(char *s, size_t len);
bool frontend_driver_has_fork(void);
bool frontend_driver_get_salamander_basename(char *s, size_t len);
#ifdef __cplusplus
}
#endif

View File

@ -56,6 +56,7 @@ static void find_first_libretro_core(char *first_file,
for (i = 0; i < list->size && !ret; i++)
{
char fname[PATH_MAX_LENGTH];
char salamander_name[PATH_MAX_LENGTH];
const char *libretro_elem = (const char*)list->elems[i].data;
RARCH_LOG("Checking library: \"%s\".\n", libretro_elem);
@ -65,9 +66,12 @@ static void find_first_libretro_core(char *first_file,
fill_pathname_base(fname, libretro_elem, sizeof(fname));
if (strncmp(fname, SALAMANDER_FILE, sizeof(fname)) == 0)
if (!frontend_driver_get_salamander_basename(salamander_name, sizeof(salamander_name)))
break;
if (!strncmp(fname, salamander_name, sizeof(fname)))
{
if ((i + 1) == list->size)
if (list->size == (i + 1))
{
RARCH_WARN("Entry is RetroArch Salamander itself, but is last entry. No choice but to set it.\n");
strlcpy(first_file, fname, size_of_first_file);

View File

@ -2262,7 +2262,15 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool ho
#ifndef HAVE_DYNAMIC
if (frontend_driver_has_fork())
{
if (is_dir || string_is_equal_noncase(path, SALAMANDER_FILE))
char salamander_name[PATH_MAX_LENGTH];
if (frontend_driver_get_salamander_basename(salamander_name, sizeof(salamander_name)))
{
if (string_is_equal_noncase(path, salamander_name))
continue;
}
if (is_dir)
continue;
}
#endif