Move global->name.base to paths.c

This commit is contained in:
twinaphex 2016-09-17 19:41:16 +02:00
parent 64b802b47a
commit 5c97d5b46b
8 changed files with 55 additions and 46 deletions

View File

@ -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;

View File

@ -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);
}

View File

@ -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;

53
paths.c
View File

@ -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)

View File

@ -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);

View File

@ -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;

View File

@ -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];

View File

@ -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