diff --git a/configuration.c b/configuration.c index 3c31c19697..df1221eb98 100644 --- a/configuration.c +++ b/configuration.c @@ -2080,7 +2080,7 @@ static bool config_load_file(const char *path, bool set_defaults, strlcpy(global->name.savefile, tmp_str, sizeof(global->name.savefile)); fill_pathname_dir(global->name.savefile, - global->name.base, + path_get_basename(), file_path_str(FILE_PATH_SRM_EXTENSION), sizeof(global->name.savefile)); } @@ -2100,7 +2100,7 @@ static bool config_load_file(const char *path, bool set_defaults, strlcpy(global->name.savestate, tmp_str, sizeof(global->name.savestate)); fill_pathname_dir(global->name.savestate, - global->name.base, + path_get_basename(), file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.savestate)); } @@ -2161,8 +2161,7 @@ bool config_load_override(void) if (system) core_name = system->info.library_name; - if (global) - game_name = path_basename(global->name.base); + game_name = path_basename(path_get_basename()); if (string_is_empty(core_name) || string_is_empty(game_name)) return false; @@ -2232,7 +2231,7 @@ bool config_load_override(void) /* Re-load the configuration with any overrides that might have been found */ #ifdef HAVE_NETPLAY - if (global->netplay.enable) + if (global && global->netplay.enable) { RARCH_WARN("[overrides] can't use overrides in conjunction with netplay, disabling overrides.\n"); return false; @@ -2315,7 +2314,6 @@ bool config_load_remap(void) config_file_t *new_conf = NULL; const char *core_name = NULL; const char *game_name = NULL; - global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); rarch_system_info_t *system = NULL; @@ -2323,8 +2321,8 @@ bool config_load_remap(void) if (system) core_name = system->info.library_name; - if (global) - game_name = path_basename(global->name.base); + + game_name = path_basename(path_get_basename()); if (string_is_empty(core_name) || string_is_empty(game_name)) return false; @@ -2438,7 +2436,6 @@ bool config_load_shader_preset(void) char game_path[PATH_MAX_LENGTH] = {0}; /* final path for game-specific configuration (prefix+suffix) */ const char *core_name = NULL; const char *game_name = NULL; - global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); rarch_system_info_t *system = NULL; @@ -2446,8 +2443,8 @@ bool config_load_shader_preset(void) if (system) core_name = system->info.library_name; - if (global) - game_name = path_basename(global->name.base); + + game_name = path_basename(path_get_basename()); if (string_is_empty(core_name) || string_is_empty(game_name)) return false; @@ -3029,7 +3026,6 @@ bool config_save_overrides(int override_type) const char *game_name = NULL; config_file_t *conf = NULL; settings_t *settings = NULL; - global_t *global = global_get_ptr(); settings_t *overrides = config_get_ptr(); rarch_system_info_t *system = NULL; struct config_bool_setting *bool_settings = NULL; @@ -3047,8 +3043,8 @@ bool config_save_overrides(int override_type) if (system) core_name = system->info.library_name; - if (global) - game_name = path_basename(global->name.base); + + game_name = path_basename(path_get_basename()); if (string_is_empty(core_name) || string_is_empty(game_name)) return false; diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index fbac1ea4c0..aeac39814b 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -1335,8 +1335,8 @@ static void menu_action_setting_disp_set_label_core_option_create( strlcpy(s, "", len); - if (!string_is_empty(global->name.base)) - strlcpy(s, path_basename(global->name.base), len); + if (!string_is_empty(path_get_basename())) + strlcpy(s, path_basename(path_get_basename()), len); strlcpy(s2, path, len2); } diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 67d41cfaa6..eb21afd318 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1590,8 +1590,7 @@ static int generic_action_ok_shader_preset_save(const char *path, break; case ACTION_OK_SHADER_PRESET_SAVE_GAME: { - global_t *global = global_get_ptr(); - const char *game_name = path_basename(global->name.base); + const char *game_name = path_basename(path_get_basename()); fill_pathname_join(file, directory, game_name, sizeof(file)); } break; @@ -1699,8 +1698,7 @@ static int generic_action_ok_remap_file_save(const char *path, break; case ACTION_OK_REMAP_FILE_SAVE_GAME: { - global_t *global = global_get_ptr(); - const char *game_name = path_basename(global->name.base); + const char *game_name = path_basename(path_get_basename()); fill_pathname_join(file, core_name, game_name, sizeof(file)); } break; diff --git a/paths.c b/paths.c index 19c9622838..0ee3d396d6 100644 --- a/paths.c +++ b/paths.c @@ -43,6 +43,8 @@ #define MENU_VALUE_NO_CORE 0x7d5472cbU +static char path_main_basename[PATH_MAX_LENGTH] = {0} +; static char current_savefile_dir[PATH_MAX_LENGTH] = {0}; static char path_libretro[PATH_MAX_LENGTH] = {0}; static char path_config_file[PATH_MAX_LENGTH] = {0}; @@ -152,7 +154,7 @@ void path_set_redirect(void) /* Set savefile directory if empty based on content directory */ if (string_is_empty(current_savefile_dir)) { - strlcpy(current_savefile_dir, global->name.base, + strlcpy(current_savefile_dir, path_main_basename, sizeof(current_savefile_dir)); path_basedir(current_savefile_dir); } @@ -167,7 +169,7 @@ void path_set_redirect(void) if (path_is_directory(global->name.savefile)) { - fill_pathname_dir(global->name.savefile, global->name.base, + fill_pathname_dir(global->name.savefile, path_main_basename, file_path_str(FILE_PATH_SRM_EXTENSION), sizeof(global->name.savefile)); RARCH_LOG("%s \"%s\".\n", @@ -177,7 +179,7 @@ void path_set_redirect(void) if (path_is_directory(global->name.savestate)) { - fill_pathname_dir(global->name.savestate, global->name.base, + fill_pathname_dir(global->name.savestate, path_main_basename, file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.savestate)); RARCH_LOG("%s \"%s\".\n", @@ -187,7 +189,7 @@ void path_set_redirect(void) if (path_is_directory(global->name.cheatfile)) { - fill_pathname_dir(global->name.cheatfile, global->name.base, + fill_pathname_dir(global->name.cheatfile, path_main_basename, file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.cheatfile)); RARCH_LOG("%s \"%s\".\n", @@ -199,10 +201,9 @@ void path_set_redirect(void) void path_set_basename(const char *path) { char *dst = NULL; - global_t *global = global_get_ptr(); runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, (void*)path); - strlcpy(global->name.base, path, sizeof(global->name.base)); + strlcpy(path_main_basename, path, sizeof(path_main_basename)); #ifdef HAVE_COMPRESSION /* Removing extension is a bit tricky for compressed files. @@ -224,11 +225,11 @@ void path_set_basename(const char *path) * directory then and the name of srm and states are meaningful. * */ - path_basedir(global->name.base); - fill_pathname_dir(global->name.base, path, "", sizeof(global->name.base)); + path_basedir(path_main_basename); + fill_pathname_dir(path_main_basename, path, "", sizeof(path_main_basename)); #endif - if ((dst = strrchr(global->name.base, '.'))) + if ((dst = strrchr(path_main_basename, '.'))) *dst = '\0'; } @@ -265,13 +266,13 @@ void path_set_special(char **argv, unsigned num_content) * It is more complicated for special content types. */ if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH)) - fill_pathname_noext(global->name.savestate, global->name.base, + fill_pathname_noext(global->name.savestate, path_main_basename, file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.savestate)); if (path_is_directory(global->name.savestate)) { - fill_pathname_dir(global->name.savestate, global->name.base, + fill_pathname_dir(global->name.savestate, path_main_basename, file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.savestate)); RARCH_LOG("%s \"%s\".\n", @@ -345,14 +346,14 @@ void path_init_savefile(void) /* Let other relevant paths be inferred from the main SRAM location. */ if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH)) fill_pathname_noext(global->name.savefile, - global->name.base, + path_main_basename, file_path_str(FILE_PATH_SRM_EXTENSION), sizeof(global->name.savefile)); if (path_is_directory(global->name.savefile)) { fill_pathname_dir(global->name.savefile, - global->name.base, + path_main_basename, file_path_str(FILE_PATH_SRM_EXTENSION), sizeof(global->name.savefile)); RARCH_LOG("%s \"%s\".\n", @@ -385,14 +386,14 @@ void path_set_names(const char *path) path_set_basename(path); if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_SAVE_PATH)) - fill_pathname_noext(global->name.savefile, global->name.base, + fill_pathname_noext(global->name.savefile, path_main_basename, file_path_str(FILE_PATH_SRM_EXTENSION), sizeof(global->name.savefile)); if (!retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_STATE_PATH)) - fill_pathname_noext(global->name.savestate, global->name.base, + fill_pathname_noext(global->name.savestate, path_main_basename, file_path_str(FILE_PATH_STATE_EXTENSION), sizeof(global->name.savestate)); - fill_pathname_noext(global->name.cheatfile, global->name.base, + fill_pathname_noext(global->name.cheatfile, path_main_basename, file_path_str(FILE_PATH_CHT_EXTENSION), sizeof(global->name.cheatfile)); path_set_redirect(); @@ -405,27 +406,32 @@ void path_fill_names(void) path_init_savefile(); bsv_movie_set_path(global->name.savefile); - if (string_is_empty(global->name.base)) + if (string_is_empty(path_main_basename)) return; if (string_is_empty(global->name.ups)) - fill_pathname_noext(global->name.ups, global->name.base, + fill_pathname_noext(global->name.ups, path_main_basename, file_path_str(FILE_PATH_UPS_EXTENSION), sizeof(global->name.ups)); if (string_is_empty(global->name.bps)) - fill_pathname_noext(global->name.bps, global->name.base, + fill_pathname_noext(global->name.bps, path_main_basename, file_path_str(FILE_PATH_BPS_EXTENSION), sizeof(global->name.bps)); if (string_is_empty(global->name.ips)) - fill_pathname_noext(global->name.ips, global->name.base, + fill_pathname_noext(global->name.ips, path_main_basename, file_path_str(FILE_PATH_IPS_EXTENSION), sizeof(global->name.ips)); } /* Core file path */ +const char *path_get_basename(void) +{ + return path_main_basename; +} + char *path_get_core_ptr(void) { return path_libretro; @@ -484,6 +490,11 @@ void path_clear_config(void) *path_config_file = '\0'; } +void path_clear_basename(void) +{ + *path_main_basename = '\0'; +} + /* Core options file path */ bool path_is_core_options_empty(void) @@ -545,6 +556,8 @@ void path_clear_all(void) path_clear_config(); path_clear_config_append(); path_clear_core_options(); + + path_clear_basename(); } enum rarch_content_type path_is_media_type(const char *path) diff --git a/paths.h b/paths.h index 9bbb69f057..aab98efb81 100644 --- a/paths.h +++ b/paths.h @@ -67,6 +67,8 @@ char *path_get_core_ptr(void); const char *path_get_current_savefile_dir(void); +const char *path_get_basename(void); + const char *path_get_core(void); const char *path_get_core_options(void); @@ -77,6 +79,8 @@ const char *path_get_config_append(void); /* clear functions */ +void path_clear_basename(void); + void path_clear_core(void); void path_clear_config(void); diff --git a/retroarch.c b/retroarch.c index 12b6b7c9d2..05f3704e9f 100644 --- a/retroarch.c +++ b/retroarch.c @@ -882,14 +882,13 @@ bool retroarch_validate_game_options(char *s, size_t len, bool mkdir) const char *core_name = NULL; const char *game_name = NULL; rarch_system_info_t *system = NULL; - global_t *global = global_get_ptr(); runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); if (system) core_name = system->info.library_name; - if (global) - game_name = path_basename(global->name.base); + + game_name = path_basename(path_get_basename()); if (string_is_empty(core_name) || string_is_empty(game_name)) return false; diff --git a/runloop.h b/runloop.h index 4ab7a9b418..92c9408964 100644 --- a/runloop.h +++ b/runloop.h @@ -157,7 +157,6 @@ typedef struct global struct { - char base[PATH_MAX_LENGTH]; char savefile[PATH_MAX_LENGTH]; char savestate[PATH_MAX_LENGTH]; char cheatfile[PATH_MAX_LENGTH]; diff --git a/tasks/task_screenshot.c b/tasks/task_screenshot.c index 3386e51197..12f3f21c2a 100644 --- a/tasks/task_screenshot.c +++ b/tasks/task_screenshot.c @@ -47,6 +47,7 @@ #include "../defaults.h" #include "../configuration.h" #include "../runloop.h" +#include "../paths.h" #include "../msg_hash.h" #include "../gfx/video_driver.h" @@ -281,8 +282,7 @@ static bool take_screenshot_choice(const char *global_name_base) **/ bool take_screenshot(void) { - global_t *global = global_get_ptr(); - char *name_base = strdup(global->name.base); + char *name_base = strdup(path_get_basename()); bool is_paused = runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL); bool ret = take_screenshot_choice(name_base); const char *msg_screenshot = ret