// Rename core filename executable to a more sane name. static bool libretro_install_core(const char *path_prefix, const char *core_exe_path) { char old_path[PATH_MAX], new_path[PATH_MAX]; libretro_get_current_core_pathname(old_path, sizeof(old_path)); strlcat(old_path, DEFAULT_EXE_EXT, sizeof(old_path)); snprintf(new_path, sizeof(new_path), "%s%s", path_prefix, old_path); /* If core already exists, we are upgrading the core - * delete existing file first. */ if (path_file_exists(new_path)) { RARCH_LOG("Removing temporary ROM file: %s.\n", new_path); if (remove(new_path) < 0) RARCH_ERR("Failed to remove file: %s.\n", new_path); } /* Now attempt the renaming of the core. */ RARCH_LOG("Renaming core to: %s.\n", new_path); if (rename(core_exe_path, new_path) < 0) { RARCH_ERR("Failed to rename core.\n"); return false; } strlcpy(g_settings.libretro, new_path, sizeof(g_settings.libretro)); return true; }
static void rarch_get_environment(int argc, char *argv[]) { g_extern.verbose = true; #if defined(HAVE_LOGGER) logger_init(); #elif defined(HAVE_FILE_LOGGER) g_extern.log_file = fopen("/retroarch-log.txt", "w"); #endif if (frontend_ctx && frontend_ctx->environment_get) frontend_ctx->environment_get(argc, argv); config_load(); #if defined(RARCH_CONSOLE) init_libretro_sym(false); rarch_init_system_info(); global_init_drivers(); #ifdef HAVE_LIBRETRO_MANAGEMENT char path_prefix[PATH_MAX]; #if defined(_WIN32) char slash = '\\'; #else char slash = '/'; #endif snprintf(path_prefix, sizeof(path_prefix), "%s%c", default_paths.core_dir, slash); char core_exe_path[256]; snprintf(core_exe_path, sizeof(core_exe_path), "%sCORE%s", path_prefix, DEFAULT_EXE_EXT); // Save new libretro core path to config file and exit if (path_file_exists(core_exe_path)) if (libretro_install_core(path_prefix, core_exe_path)) #ifdef _XBOX g_extern.system.shutdown = g_extern.system.shutdown; #else g_extern.system.shutdown = true; #endif #endif #ifdef GEKKO /* Per-core input config loading */ char core_name[64]; libretro_get_current_core_pathname(core_name, sizeof(core_name)); snprintf(g_extern.input_config_path, sizeof(g_extern.input_config_path), "%s/%s.cfg", default_paths.input_presets_dir, core_name); config_read_keybinds(g_extern.input_config_path); #endif #endif }
void rarch_get_environment_console(void) { init_libretro_sym(false); rarch_init_system_info(); global_init_drivers(); #ifdef HAVE_LIBRETRO_MANAGEMENT char path_prefix[PATH_MAX]; #if defined(_WIN32) char slash = '\\'; #else char slash = '/'; #endif snprintf(path_prefix, sizeof(path_prefix), "%s%c", default_paths.core_dir, slash); char core_exe_path[256]; snprintf(core_exe_path, sizeof(core_exe_path), "%sCORE%s", path_prefix, DEFAULT_EXE_EXT); // Save new libretro core path to config file and exit if (path_file_exists(core_exe_path)) if (libretro_install_core(path_prefix, core_exe_path)) #ifdef _XBOX g_extern.system.shutdown = g_extern.system.shutdown; #else g_extern.system.shutdown = true; #endif #endif #ifdef GEKKO /* Per-core input config loading */ char core_name[64]; libretro_get_current_core_pathname(core_name, sizeof(core_name)); snprintf(g_extern.input_config_path, sizeof(g_extern.input_config_path), "%s/%s.cfg", default_paths.input_presets_dir, core_name); config_read_keybinds(g_extern.input_config_path); #endif }