Internally change directory settings

This commit is contained in:
twinaphex 2016-04-28 19:26:02 +02:00
parent bd11c241ec
commit 7dffc6286b
19 changed files with 324 additions and 279 deletions

View File

@ -670,8 +670,8 @@ static bool event_save_core_config(void)
global_t *global = global_get_ptr();
*config_dir = '\0';
if (!string_is_empty(settings->menu_config_directory))
strlcpy(config_dir, settings->menu_config_directory,
if (!string_is_empty(settings->directory.menu_config))
strlcpy(config_dir, settings->directory.menu_config,
sizeof(config_dir));
else if (!string_is_empty(global->path.config)) /* Fallback */
fill_pathname_basedir(config_dir, global->path.config,
@ -1307,7 +1307,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
case EVENT_CMD_CORE_INFO_INIT:
event_cmd_ctl(EVENT_CMD_CORE_INFO_DEINIT, NULL);
if (*settings->libretro_directory)
if (*settings->directory.libretro)
core_info_ctl(CORE_INFO_CTL_LIST_INIT, NULL);
break;
case EVENT_CMD_CORE_DEINIT:

View File

@ -731,7 +731,22 @@ static void config_set_defaults(void)
*settings->libretro_info_path = '\0';
if (!global->has_set.libretro_directory)
*settings->libretro_directory = '\0';
*settings->directory.libretro = '\0';
*settings->directory.cursor = '\0';
*settings->directory.resampler = '\0';
*settings->directory.screenshot = '\0';
*settings->directory.system = '\0';
*settings->directory.cache = '\0';
*settings->directory.input_remapping = '\0';
*settings->directory.core_assets = '\0';
*settings->directory.assets = '\0';
*settings->directory.dynamic_wallpapers = '\0';
*settings->directory.thumbnails = '\0';
*settings->directory.playlist = '\0';
#ifdef HAVE_MENU
*settings->directory.menu_content = '\0';
*settings->directory.menu_config = '\0';
#endif
if (!global->has_set.ups_pref)
global->patch.ups_pref = false;
@ -754,33 +769,18 @@ static void config_set_defaults(void)
*settings->playlist_cores = '\0';
*settings->core_options_path = '\0';
*settings->content_history_path = '\0';
*settings->content_history_directory = '\0';
*settings->directory.content_history = '\0';
*settings->content_database = '\0';
*settings->cheat_database = '\0';
*settings->cursor_directory = '\0';
*settings->cheat_settings_path = '\0';
*settings->resampler_directory = '\0';
*settings->screenshot_directory = '\0';
*settings->system_directory = '\0';
*settings->cache_directory = '\0';
*settings->input_remapping_directory = '\0';
*settings->input.autoconfig_dir = '\0';
*settings->input.overlay = '\0';
*settings->core_assets_directory = '\0';
*settings->assets_directory = '\0';
*settings->dynamic_wallpapers_directory = '\0';
*settings->thumbnails_directory = '\0';
*settings->playlist_directory = '\0';
*settings->video.shader_path = '\0';
*settings->video.shader_dir = '\0';
*settings->video.filter_dir = '\0';
*settings->audio.filter_dir = '\0';
*settings->video.softfilter_plugin = '\0';
*settings->audio.dsp_plugin = '\0';
#ifdef HAVE_MENU
*settings->menu_content_directory = '\0';
*settings->menu_config_directory = '\0';
#endif
settings->core_specific_config = default_core_specific_config;
settings->game_specific_options = default_game_specific_options;
settings->auto_overrides_enable = default_auto_overrides_enable;
@ -803,47 +803,48 @@ static void config_set_defaults(void)
video_driver_ctl(RARCH_DISPLAY_CTL_DEFAULT_SETTINGS, NULL);
if (*g_defaults.dir.wallpapers)
strlcpy(settings->directory.dynamic_wallpapers,
g_defaults.dir.wallpapers, sizeof(settings->directory.dynamic_wallpapers));
if (*g_defaults.dir.thumbnails)
strlcpy(settings->directory.thumbnails,
g_defaults.dir.thumbnails, sizeof(settings->directory.thumbnails));
if (*g_defaults.dir.remap)
strlcpy(settings->directory.input_remapping,
g_defaults.dir.remap, sizeof(settings->directory.input_remapping));
if (*g_defaults.dir.cache)
strlcpy(settings->directory.cache,
g_defaults.dir.cache, sizeof(settings->directory.cache));
if (*g_defaults.dir.assets)
strlcpy(settings->directory.assets,
g_defaults.dir.assets, sizeof(settings->directory.assets));
if (*g_defaults.dir.core_assets)
strlcpy(settings->directory.core_assets,
g_defaults.dir.core_assets, sizeof(settings->directory.core_assets));
if (*g_defaults.dir.playlist)
strlcpy(settings->directory.playlist,
g_defaults.dir.playlist, sizeof(settings->directory.playlist));
if (*g_defaults.dir.core)
fill_pathname_expand_special(settings->directory.libretro,
g_defaults.dir.core, sizeof(settings->directory.libretro));
if (*g_defaults.path.buildbot_server_url)
strlcpy(settings->network.buildbot_url,
g_defaults.path.buildbot_server_url, sizeof(settings->network.buildbot_url));
if (*g_defaults.dir.wallpapers)
strlcpy(settings->dynamic_wallpapers_directory,
g_defaults.dir.wallpapers, sizeof(settings->dynamic_wallpapers_directory));
if (*g_defaults.dir.thumbnails)
strlcpy(settings->thumbnails_directory,
g_defaults.dir.thumbnails, sizeof(settings->thumbnails_directory));
if (*g_defaults.dir.remap)
strlcpy(settings->input_remapping_directory,
g_defaults.dir.remap, sizeof(settings->input_remapping_directory));
if (*g_defaults.dir.cache)
strlcpy(settings->cache_directory,
g_defaults.dir.cache, sizeof(settings->cache_directory));
if (*g_defaults.dir.audio_filter)
strlcpy(settings->audio.filter_dir,
g_defaults.dir.audio_filter, sizeof(settings->audio.filter_dir));
if (*g_defaults.dir.video_filter)
strlcpy(settings->video.filter_dir,
g_defaults.dir.video_filter, sizeof(settings->video.filter_dir));
if (*g_defaults.dir.assets)
strlcpy(settings->assets_directory,
g_defaults.dir.assets, sizeof(settings->assets_directory));
if (*g_defaults.dir.core_assets)
strlcpy(settings->core_assets_directory,
g_defaults.dir.core_assets, sizeof(settings->core_assets_directory));
if (*g_defaults.dir.playlist)
strlcpy(settings->playlist_directory,
g_defaults.dir.playlist, sizeof(settings->playlist_directory));
if (*g_defaults.dir.core)
fill_pathname_expand_special(settings->libretro_directory,
g_defaults.dir.core, sizeof(settings->libretro_directory));
if (*g_defaults.path.core)
runloop_ctl(RUNLOOP_CTL_SET_LIBRETRO_PATH, g_defaults.path.core);
if (*g_defaults.dir.database)
strlcpy(settings->content_database, g_defaults.dir.database,
sizeof(settings->content_database));
if (*g_defaults.dir.cursor)
strlcpy(settings->cursor_directory, g_defaults.dir.cursor,
sizeof(settings->cursor_directory));
strlcpy(settings->directory.cursor, g_defaults.dir.cursor,
sizeof(settings->directory.cursor));
if (*g_defaults.dir.cheats)
strlcpy(settings->cheat_database, g_defaults.dir.cheats,
sizeof(settings->cheat_database));
@ -853,12 +854,12 @@ static void config_set_defaults(void)
#ifdef HAVE_OVERLAY
if (*g_defaults.dir.overlay)
{
fill_pathname_expand_special(settings->overlay_directory,
g_defaults.dir.overlay, sizeof(settings->overlay_directory));
fill_pathname_expand_special(settings->directory.overlay,
g_defaults.dir.overlay, sizeof(settings->directory.overlay));
#ifdef RARCH_MOBILE
if (!*settings->input.overlay)
fill_pathname_join(settings->input.overlay,
settings->overlay_directory,
settings->directory.overlay,
"gamepads/retropad/retropad.cfg",
sizeof(settings->input.overlay));
#endif
@ -878,13 +879,13 @@ static void config_set_defaults(void)
}
else
strlcpy(global->dir.osk_overlay,
settings->overlay_directory, sizeof(global->dir.osk_overlay));
settings->directory.overlay, sizeof(global->dir.osk_overlay));
#endif
#ifdef HAVE_MENU
if (*g_defaults.dir.menu_config)
strlcpy(settings->menu_config_directory,
strlcpy(settings->directory.menu_config,
g_defaults.dir.menu_config,
sizeof(settings->menu_config_directory));
sizeof(settings->directory.menu_config));
#endif
if (*g_defaults.dir.shader)
fill_pathname_expand_special(settings->video.shader_dir,
@ -901,20 +902,20 @@ static void config_set_defaults(void)
strlcpy(global->dir.savefile,
g_defaults.dir.sram, sizeof(global->dir.savefile));
if (*g_defaults.dir.system)
strlcpy(settings->system_directory,
g_defaults.dir.system, sizeof(settings->system_directory));
strlcpy(settings->directory.system,
g_defaults.dir.system, sizeof(settings->directory.system));
if (*g_defaults.dir.screenshot)
strlcpy(settings->screenshot_directory,
strlcpy(settings->directory.screenshot,
g_defaults.dir.screenshot,
sizeof(settings->screenshot_directory));
sizeof(settings->directory.screenshot));
if (*g_defaults.dir.resampler)
strlcpy(settings->resampler_directory,
strlcpy(settings->directory.resampler,
g_defaults.dir.resampler,
sizeof(settings->resampler_directory));
sizeof(settings->directory.resampler));
if (*g_defaults.dir.content_history)
strlcpy(settings->content_history_directory,
strlcpy(settings->directory.content_history,
g_defaults.dir.content_history,
sizeof(settings->content_history_directory));
sizeof(settings->directory.content_history));
if (*g_defaults.path.config)
fill_pathname_expand_special(global->path.config,
@ -1566,14 +1567,14 @@ static bool config_load_file(const char *path, bool set_defaults)
config_get_path(conf, "libretro_path", settings->libretro, sizeof(settings->libretro));
#endif
if (!global->has_set.libretro_directory)
config_get_path(conf, "libretro_directory", settings->libretro_directory, sizeof(settings->libretro_directory));
config_get_path(conf, "libretro_directory", settings->directory.libretro, sizeof(settings->directory.libretro));
/* Safe-guard against older behavior. */
if (path_is_directory(settings->libretro))
{
RARCH_WARN("\"libretro_path\" is a directory, using this for \"libretro_directory\" instead.\n");
strlcpy(settings->libretro_directory, settings->libretro,
sizeof(settings->libretro_directory));
strlcpy(settings->directory.libretro, settings->libretro,
sizeof(settings->directory.libretro));
*settings->libretro = '\0';
}
@ -1587,54 +1588,54 @@ static bool config_load_file(const char *path, bool set_defaults)
config_get_path(conf, "libretro_info_path", settings->libretro_info_path, sizeof(settings->libretro_info_path));
config_get_path(conf, "core_options_path", settings->core_options_path, sizeof(settings->core_options_path));
config_get_path(conf, "screenshot_directory", settings->screenshot_directory, sizeof(settings->screenshot_directory));
if (*settings->screenshot_directory)
config_get_path(conf, "screenshot_directory", settings->directory.screenshot, sizeof(settings->directory.screenshot));
if (*settings->directory.screenshot)
{
if (string_is_equal(settings->screenshot_directory, "default"))
*settings->screenshot_directory = '\0';
else if (!path_is_directory(settings->screenshot_directory))
if (string_is_equal(settings->directory.screenshot, "default"))
*settings->directory.screenshot = '\0';
else if (!path_is_directory(settings->directory.screenshot))
{
RARCH_WARN("screenshot_directory is not an existing directory, ignoring ...\n");
*settings->screenshot_directory = '\0';
*settings->directory.screenshot = '\0';
}
}
CONFIG_GET_BOOL_BASE(conf, settings, auto_screenshot_filename, "auto_screenshot_filename");
config_get_path(conf, "resampler_directory", settings->resampler_directory,
sizeof(settings->resampler_directory));
config_get_path(conf, "cache_directory", settings->cache_directory,
sizeof(settings->cache_directory));
config_get_path(conf, "input_remapping_directory", settings->input_remapping_directory,
sizeof(settings->input_remapping_directory));
config_get_path(conf, "core_assets_directory", settings->core_assets_directory,
sizeof(settings->core_assets_directory));
config_get_path(conf, "assets_directory", settings->assets_directory,
sizeof(settings->assets_directory));
config_get_path(conf, "dynamic_wallpapers_directory", settings->dynamic_wallpapers_directory,
sizeof(settings->dynamic_wallpapers_directory));
config_get_path(conf, "thumbnails_directory", settings->thumbnails_directory,
sizeof(settings->thumbnails_directory));
config_get_path(conf, "playlist_directory", settings->playlist_directory,
sizeof(settings->playlist_directory));
if (string_is_equal(settings->core_assets_directory, "default"))
*settings->core_assets_directory = '\0';
if (string_is_equal(settings->assets_directory, "default"))
*settings->assets_directory = '\0';
if (string_is_equal(settings->dynamic_wallpapers_directory, "default"))
*settings->dynamic_wallpapers_directory = '\0';
if (string_is_equal(settings->thumbnails_directory, "default"))
*settings->thumbnails_directory = '\0';
if (string_is_equal(settings->playlist_directory, "default"))
*settings->playlist_directory = '\0';
config_get_path(conf, "resampler_directory", settings->directory.resampler,
sizeof(settings->directory.resampler));
config_get_path(conf, "cache_directory", settings->directory.cache,
sizeof(settings->directory.cache));
config_get_path(conf, "input_remapping_directory", settings->directory.input_remapping,
sizeof(settings->directory.input_remapping));
config_get_path(conf, "core_assets_directory", settings->directory.core_assets,
sizeof(settings->directory.core_assets));
config_get_path(conf, "assets_directory", settings->directory.assets,
sizeof(settings->directory.assets));
config_get_path(conf, "dynamic_wallpapers_directory", settings->directory.dynamic_wallpapers,
sizeof(settings->directory.dynamic_wallpapers));
config_get_path(conf, "thumbnails_directory", settings->directory.thumbnails,
sizeof(settings->directory.thumbnails));
config_get_path(conf, "playlist_directory", settings->directory.playlist,
sizeof(settings->directory.playlist));
if (string_is_equal(settings->directory.core_assets, "default"))
*settings->directory.core_assets = '\0';
if (string_is_equal(settings->directory.assets, "default"))
*settings->directory.assets = '\0';
if (string_is_equal(settings->directory.dynamic_wallpapers, "default"))
*settings->directory.dynamic_wallpapers = '\0';
if (string_is_equal(settings->directory.thumbnails, "default"))
*settings->directory.thumbnails = '\0';
if (string_is_equal(settings->directory.playlist, "default"))
*settings->directory.playlist = '\0';
#ifdef HAVE_MENU
config_get_path(conf, "rgui_browser_directory", settings->menu_content_directory,
sizeof(settings->menu_content_directory));
if (string_is_equal(settings->menu_content_directory, "default"))
*settings->menu_content_directory = '\0';
config_get_path(conf, "rgui_config_directory", settings->menu_config_directory,
sizeof(settings->menu_config_directory));
if (string_is_equal(settings->menu_config_directory, "default"))
*settings->menu_config_directory = '\0';
config_get_path(conf, "rgui_browser_directory", settings->directory.menu_content,
sizeof(settings->directory.menu_content));
if (string_is_equal(settings->directory.menu_content, "default"))
*settings->directory.menu_content = '\0';
config_get_path(conf, "rgui_config_directory", settings->directory.menu_config,
sizeof(settings->directory.menu_config));
if (string_is_equal(settings->directory.menu_config, "default"))
*settings->directory.menu_config = '\0';
CONFIG_GET_BOOL_BASE(conf, settings, menu_show_start_screen, "rgui_show_start_screen");
#endif
CONFIG_GET_INT_BASE(conf, settings, libretro_log_level, "libretro_log_level");
@ -1673,9 +1674,9 @@ static bool config_load_file(const char *path, bool set_defaults)
sizeof(global->record.config_dir));
#ifdef HAVE_OVERLAY
config_get_path(conf, "overlay_directory", settings->overlay_directory, sizeof(settings->overlay_directory));
if (string_is_equal(settings->overlay_directory, "default"))
*settings->overlay_directory = '\0';
config_get_path(conf, "overlay_directory", settings->directory.overlay, sizeof(settings->directory.overlay));
if (string_is_equal(settings->directory.overlay, "default"))
*settings->directory.overlay = '\0';
config_get_path(conf, "input_overlay", settings->input.overlay, sizeof(settings->input.overlay));
CONFIG_GET_BOOL_BASE(conf, settings, input.overlay_enable, "input_overlay_enable");
@ -1728,7 +1729,7 @@ static bool config_load_file(const char *path, bool set_defaults)
config_get_path(conf, "cheat_database_path",
settings->cheat_database, sizeof(settings->cheat_database));
config_get_path(conf, "cursor_directory",
settings->cursor_directory, sizeof(settings->cursor_directory));
settings->directory.cursor, sizeof(settings->directory.cursor));
config_get_path(conf, "cheat_settings_path",
settings->cheat_settings_path, sizeof(settings->cheat_settings_path));
@ -1763,8 +1764,8 @@ static bool config_load_file(const char *path, bool set_defaults)
CONFIG_GET_BOOL_BASE(conf, settings, debug_panel_enable, "debug_panel_enable");
config_get_path(conf, "content_history_dir", settings->content_history_directory,
sizeof(settings->content_history_directory));
config_get_path(conf, "content_history_dir", settings->directory.content_history,
sizeof(settings->directory.content_history));
CONFIG_GET_BOOL_BASE(conf, settings, history_list_enable, "history_list_enable");
@ -1838,7 +1839,7 @@ static bool config_load_file(const char *path, bool set_defaults)
if (string_is_empty(settings->content_history_path))
{
if (string_is_empty(settings->content_history_directory))
if (string_is_empty(settings->directory.content_history))
{
fill_pathname_resolve_relative(settings->content_history_path,
global->path.config, "content_history.lpl",
@ -1847,23 +1848,23 @@ static bool config_load_file(const char *path, bool set_defaults)
else
{
fill_pathname_join(settings->content_history_path,
settings->content_history_directory,
settings->directory.content_history,
"content_history.lpl",
sizeof(settings->content_history_path));
}
}
if (!config_get_path(conf, "system_directory",
settings->system_directory, sizeof(settings->system_directory)))
settings->directory.system, sizeof(settings->directory.system)))
{
RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR\n");
*settings->system_directory = '\0';
*settings->directory.system = '\0';
}
if (string_is_equal(settings->system_directory, "default"))
if (string_is_equal(settings->directory.system, "default"))
{
RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR\n");
*settings->system_directory = '\0';
*settings->directory.system = '\0';
}
config_read_keybinds_conf(conf);
@ -1904,12 +1905,12 @@ static void config_load_core_specific(void)
#endif
#ifdef HAVE_MENU
if (*settings->menu_config_directory)
if (*settings->directory.menu_config)
{
path_resolve_realpath(settings->menu_config_directory,
sizeof(settings->menu_config_directory));
path_resolve_realpath(settings->directory.menu_config,
sizeof(settings->directory.menu_config));
strlcpy(global->path.core_specific_config,
settings->menu_config_directory,
settings->directory.menu_config,
sizeof(global->path.core_specific_config));
}
else
@ -1994,9 +1995,10 @@ bool config_load_override(void)
/* Config directory: config_directory.
* Try config directory setting first,
* fallback to the location of the current configuration file. */
if (!string_is_empty(settings->menu_config_directory))
if (!string_is_empty(settings->directory.menu_config))
strlcpy(config_directory,
settings->menu_config_directory, sizeof(config_directory));
settings->directory.menu_config,
sizeof(config_directory));
else if (!string_is_empty(global->path.config))
fill_pathname_basedir(config_directory,
global->path.config, sizeof(config_directory));
@ -2173,11 +2175,12 @@ bool config_load_remap(void)
/* Remap directory: remap_directory.
* Try remap directory setting, no fallbacks defined */
if (string_is_empty(settings->input_remapping_directory))
if (string_is_empty(settings->directory.input_remapping))
return false;
strlcpy(remap_directory,
settings->input_remapping_directory, sizeof(remap_directory));
settings->directory.input_remapping,
sizeof(remap_directory));
RARCH_LOG("Remaps: remap directory: %s\n", remap_directory);
/* Concatenate strings into full paths for core_path, game_path */
@ -2600,12 +2603,12 @@ bool config_save_file(const char *path)
config_set_path(conf, "recording_config_directory", global->record.config_dir);
config_set_bool(conf, "suspend_screensaver_enable", settings->ui.suspend_screensaver_enable);
config_set_path(conf, "libretro_directory", settings->libretro_directory);
config_set_path(conf, "libretro_directory", settings->directory.libretro);
config_set_path(conf, "libretro_info_path", settings->libretro_info_path);
config_set_path(conf, "content_database_path", settings->content_database);
config_set_path(conf, "cheat_database_path", settings->cheat_database);
config_set_path(conf, "cursor_directory", settings->cursor_directory);
config_set_path(conf, "content_history_dir", settings->content_history_directory);
config_set_path(conf, "cursor_directory", settings->directory.cursor);
config_set_path(conf, "content_history_dir", settings->directory.content_history);
config_set_bool(conf, "rewind_enable", settings->rewind_enable);
config_set_int(conf, "audio_latency", settings->audio.latency);
config_set_bool(conf, "audio_sync", settings->audio.sync);
@ -2685,8 +2688,8 @@ bool config_save_file(const char *path)
config_set_bool(conf, "video_gpu_screenshot", settings->video.gpu_screenshot);
config_set_int(conf, "video_rotation", settings->video.rotation);
config_set_path(conf, "screenshot_directory",
*settings->screenshot_directory ?
settings->screenshot_directory : "default");
*settings->directory.screenshot ?
settings->directory.screenshot : "default");
config_set_bool(conf, "auto_screenshot_filename",
settings->auto_screenshot_filename);
config_set_int(conf, "aspect_ratio_index", settings->video.aspect_ratio_idx);
@ -2740,14 +2743,14 @@ bool config_save_file(const char *path)
config_set_bool(conf, "ips_pref", global->patch.ips_pref);
config_set_path(conf, "system_directory",
*settings->system_directory ?
settings->system_directory : "default");
*settings->directory.system ?
settings->directory.system : "default");
config_set_path(conf, "cache_directory",
settings->cache_directory);
settings->directory.cache);
config_set_path(conf, "input_remapping_directory",
settings->input_remapping_directory);
settings->directory.input_remapping);
config_set_path(conf, "resampler_directory",
settings->resampler_directory);
settings->directory.resampler);
config_set_string(conf, "audio_resampler", settings->audio.resampler);
config_set_path(conf, "savefile_directory",
*global->dir.savefile ? global->dir.savefile : "default");
@ -2764,20 +2767,20 @@ bool config_save_file(const char *path)
settings->audio.filter_dir : "default");
config_set_path(conf, "core_assets_directory",
*settings->core_assets_directory ?
settings->core_assets_directory : "default");
*settings->directory.core_assets ?
settings->directory.core_assets : "default");
config_set_path(conf, "assets_directory",
*settings->assets_directory ?
settings->assets_directory : "default");
*settings->directory.assets ?
settings->directory.assets : "default");
config_set_path(conf, "dynamic_wallpapers_directory",
*settings->dynamic_wallpapers_directory ?
settings->dynamic_wallpapers_directory : "default");
*settings->directory.dynamic_wallpapers ?
settings->directory.dynamic_wallpapers : "default");
config_set_path(conf, "thumbnails_directory",
*settings->thumbnails_directory ?
settings->thumbnails_directory : "default");
*settings->directory.thumbnails ?
settings->directory.thumbnails : "default");
config_set_path(conf, "playlist_directory",
*settings->playlist_directory ?
settings->playlist_directory : "default");
*settings->directory.playlist ?
settings->directory.playlist : "default");
#ifdef HAVE_MENU
config_set_int(conf, "xmb_scale_factor", settings->menu.xmb_scale_factor);
config_set_int(conf, "xmb_alpha_factor", settings->menu.xmb_alpha_factor);
@ -2788,11 +2791,11 @@ bool config_save_file(const char *path)
config_set_path(conf, "xmb_font",
!string_is_empty(settings->menu.xmb_font) ? settings->menu.xmb_font : "");
config_set_path(conf, "rgui_browser_directory",
*settings->menu_content_directory ?
settings->menu_content_directory : "default");
*settings->directory.menu_content ?
settings->directory.menu_content : "default");
config_set_path(conf, "rgui_config_directory",
*settings->menu_config_directory ?
settings->menu_config_directory : "default");
*settings->directory.menu_config ?
settings->directory.menu_config : "default");
config_set_bool(conf, "rgui_show_start_screen",
settings->menu_show_start_screen);
config_set_bool(conf, "menu_navigation_wraparound_enable",
@ -2819,7 +2822,7 @@ bool config_save_file(const char *path)
#ifdef HAVE_OVERLAY
config_set_path(conf, "overlay_directory",
*settings->overlay_directory ? settings->overlay_directory : "default");
*settings->directory.overlay ? settings->directory.overlay : "default");
config_set_path(conf, "input_overlay", settings->input.overlay);
config_set_bool(conf, "input_overlay_enable", settings->input.overlay_enable);
config_set_bool(conf, "input_overlay_enable_autopreferred", settings->input.overlay_enable_autopreferred);

View File

@ -321,31 +321,39 @@ typedef struct settings
char bundle_assets_dst_path[PATH_MAX_LENGTH];
char bundle_assets_dst_path_subdir[PATH_MAX_LENGTH];
struct
{
char content_history[PATH_MAX_LENGTH];
char libretro[PATH_MAX_LENGTH];
char cursor[PATH_MAX_LENGTH];
char input_remapping[PATH_MAX_LENGTH];
char overlay[PATH_MAX_LENGTH];
char resampler[PATH_MAX_LENGTH];
char screenshot[PATH_MAX_LENGTH];
char system[PATH_MAX_LENGTH];
char cache[PATH_MAX_LENGTH];
char playlist[PATH_MAX_LENGTH];
char core_assets[PATH_MAX_LENGTH];
char assets[PATH_MAX_LENGTH];
char dynamic_wallpapers[PATH_MAX_LENGTH];
char thumbnails[PATH_MAX_LENGTH];
char menu_config[PATH_MAX_LENGTH];
char menu_content[PATH_MAX_LENGTH];
} directory;
char core_options_path[PATH_MAX_LENGTH];
char content_history_path[PATH_MAX_LENGTH];
char content_history_directory[PATH_MAX_LENGTH];
unsigned content_history_size;
char libretro[PATH_MAX_LENGTH];
char libretro_directory[PATH_MAX_LENGTH];
unsigned libretro_log_level;
char libretro_info_path[PATH_MAX_LENGTH];
char content_database[PATH_MAX_LENGTH];
char cheat_database[PATH_MAX_LENGTH];
char cursor_directory[PATH_MAX_LENGTH];
char cheat_settings_path[PATH_MAX_LENGTH];
char input_remapping_directory[PATH_MAX_LENGTH];
char overlay_directory[PATH_MAX_LENGTH];
char resampler_directory[PATH_MAX_LENGTH];
char screenshot_directory[PATH_MAX_LENGTH];
char system_directory[PATH_MAX_LENGTH];
bool auto_screenshot_filename;
char cache_directory[PATH_MAX_LENGTH];
char playlist_directory[PATH_MAX_LENGTH];
bool history_list_enable;
bool rewind_enable;
size_t rewind_buffer_size;
@ -370,13 +378,7 @@ typedef struct settings
unsigned network_remote_base_port;
bool debug_panel_enable;
char core_assets_directory[PATH_MAX_LENGTH];
char assets_directory[PATH_MAX_LENGTH];
char dynamic_wallpapers_directory[PATH_MAX_LENGTH];
char thumbnails_directory[PATH_MAX_LENGTH];
char menu_config_directory[PATH_MAX_LENGTH];
#if defined(HAVE_MENU)
char menu_content_directory[PATH_MAX_LENGTH];
bool menu_show_start_screen;
#endif
bool fps_show;

View File

@ -1318,7 +1318,7 @@ static bool load_content_from_compressed_archive(
RARCH_LOG("Compressed file in case of need_fullpath."
" Now extracting to temporary directory.\n");
strlcpy(new_basedir, settings->cache_directory,
strlcpy(new_basedir, settings->directory.cache,
sizeof(new_basedir));
if (string_is_empty(new_basedir) || !path_is_directory(new_basedir))
@ -1534,8 +1534,8 @@ static bool init_content_file_extract(
if (!file_archive_extract_first_content_file(temp_content,
sizeof(temp_content), valid_ext,
*settings->cache_directory ?
settings->cache_directory : NULL,
*settings->directory.cache ?
settings->directory.cache : NULL,
new_path, sizeof(new_path)))
{
RARCH_ERR("Failed to extract content from zipped file: %s.\n",

View File

@ -182,7 +182,7 @@ static config_file_t *core_info_list_iterate(
strlcat(info_path_base, ".info", sizeof(info_path_base));
fill_pathname_join(info_path, (*settings->libretro_info_path) ?
settings->libretro_info_path : settings->libretro_directory,
settings->libretro_info_path : settings->directory.libretro,
info_path_base, sizeof(info_path));
return config_file_new(info_path);
@ -702,7 +702,7 @@ bool core_info_ctl(enum core_info_state state, void *data)
return false;
return core_info_list_update_missing_firmware(core_info_curr_list,
info->path, info->system_directory);
info->path, info->directory.system);
}
case CORE_INFO_CTL_FIND:
{

View File

@ -89,7 +89,10 @@ typedef struct
typedef struct core_info_ctx_firmware
{
const char *path;
const char *system_directory;
struct
{
const char *system;
} directory;
} core_info_ctx_firmware_t;
typedef struct core_info_ctx_find

View File

@ -715,7 +715,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
break;
case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY:
if (string_is_empty(settings->system_directory))
if (string_is_empty(settings->directory.system))
{
char *fullpath = NULL;
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
@ -731,9 +731,9 @@ bool rarch_environment_cb(unsigned cmd, void *data)
}
else
{
*(const char**)data = settings->system_directory;
*(const char**)data = settings->directory.system;
RARCH_LOG("Environ SYSTEM_DIRECTORY: \"%s\".\n",
settings->system_directory);
settings->directory.system);
}
break;
@ -1127,10 +1127,10 @@ bool rarch_environment_cb(unsigned cmd, void *data)
{
const char **dir = (const char**)data;
*dir = *settings->core_assets_directory ?
settings->core_assets_directory : NULL;
*dir = *settings->directory.core_assets ?
settings->directory.core_assets : NULL;
RARCH_LOG("Environ CORE_ASSETS_DIRECTORY: \"%s\".\n",
settings->core_assets_directory);
settings->directory.core_assets);
break;
}

View File

@ -122,7 +122,7 @@ bool input_remapping_save_file(const char *path)
config_file_t *conf = NULL;
settings_t *settings = config_get_ptr();
fill_pathname_join(buf, settings->input_remapping_directory,
fill_pathname_join(buf, settings->directory.input_remapping,
path, sizeof(buf));
fill_pathname_noext(remap_file, buf, ".rmp", sizeof(remap_file));

View File

@ -63,7 +63,7 @@ struct string_list *dir_list_new_special(const char *input_dir,
switch (type)
{
case DIR_LIST_CORES:
dir = settings->libretro_directory;
dir = settings->directory.libretro;
if (!frontend_driver_get_core_extension(ext_name, sizeof(ext_name)))
return NULL;
@ -93,7 +93,7 @@ struct string_list *dir_list_new_special(const char *input_dir,
exts = ext_shaders;
break;
case DIR_LIST_COLLECTIONS:
dir = settings->playlist_directory;
dir = settings->directory.playlist;
exts = "lpl";
break;
case DIR_LIST_DATABASES:

View File

@ -224,19 +224,19 @@ int generic_action_ok_displaylist_push(const char *path,
case ACTION_OK_DL_DOWNLOADS_DIR:
info.type = MENU_FILE_DIRECTORY;
info.directory_ptr = idx;
info_path = settings->core_assets_directory;
info_path = settings->directory.core_assets;
info_label = label;
break;
case ACTION_OK_DL_CONTENT_LIST:
info.type = MENU_FILE_DIRECTORY;
info.directory_ptr = idx;
info_path = settings->menu_content_directory;
info_path = settings->directory.menu_content;
info_label = label;
break;
case ACTION_OK_DL_REMAP_FILE:
info.type = type;
info.directory_ptr = idx;
info_path = settings->input_remapping_directory;
info_path = settings->directory.input_remapping;
info_label = label;
break;
case ACTION_OK_DL_RECORD_CONFIGFILE:
@ -248,7 +248,7 @@ int generic_action_ok_displaylist_push(const char *path,
case ACTION_OK_DL_DISK_IMAGE_APPEND_LIST:
info.type = type;
info.directory_ptr = idx;
info_path = settings->menu_content_directory;
info_path = settings->directory.menu_content;
info_label = label;
break;
case ACTION_OK_DL_PLAYLIST_COLLECTION:
@ -266,13 +266,13 @@ int generic_action_ok_displaylist_push(const char *path,
case ACTION_OK_DL_CORE_LIST:
info.type = type;
info.directory_ptr = idx;
info_path = settings->libretro_directory;
info_path = settings->directory.libretro;
info_label = label;
break;
case ACTION_OK_DL_CONTENT_COLLECTION_LIST:
info.type = type;
info.directory_ptr = idx;
info_path = settings->playlist_directory;
info_path = settings->directory.playlist;
info_label = label;
break;
case ACTION_OK_DL_RDB_ENTRY:
@ -292,10 +292,10 @@ int generic_action_ok_displaylist_push(const char *path,
case ACTION_OK_DL_CONFIGURATIONS_LIST:
info.type = type;
info.directory_ptr = idx;
if (string_is_empty(settings->menu_config_directory))
if (string_is_empty(settings->directory.menu_config))
info_path = label;
else
info_path = settings->menu_config_directory;
info_path = settings->directory.menu_config;
info_label = label;
break;
case ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH_DETECT_CORE:
@ -349,7 +349,7 @@ int generic_action_ok_displaylist_push(const char *path,
MENU_LABEL_DEFERRED_DATABASE_MANAGER_LIST);
break;
case ACTION_OK_DL_CURSOR_MANAGER_LIST:
fill_pathname_join(tmp, settings->cursor_directory,
fill_pathname_join(tmp, settings->directory.cursor,
path, sizeof(tmp));
info.directory_ptr = idx;
@ -390,13 +390,13 @@ int generic_action_ok_displaylist_push(const char *path,
break;
case ACTION_OK_DL_DEFERRED_CORE_LIST:
info.directory_ptr = idx;
info_path = settings->libretro_directory;
info_path = settings->directory.libretro;
info_label = menu_hash_to_str(MENU_LABEL_DEFERRED_CORE_LIST);
break;
case ACTION_OK_DL_DEFERRED_CORE_LIST_SET:
info.directory_ptr = idx;
rdb_entry_start_game_selection_ptr = idx;
info_path = settings->libretro_directory;
info_path = settings->directory.libretro;
info_label = menu_hash_to_str(
MENU_LABEL_DEFERRED_CORE_LIST_SET);
break;
@ -1018,8 +1018,11 @@ static int generic_action_ok_remap_file_save(const char *path,
if (info)
core_name = info->info.library_name;
fill_pathname_join(directory, settings->input_remapping_directory,
core_name, sizeof(directory));
fill_pathname_join(
directory,
settings->directory.input_remapping,
core_name,
sizeof(directory));
switch (action_type)
{
@ -1308,19 +1311,19 @@ static void cb_generic_download(void *task_data,
switch (transf->type_hash)
{
case CB_CORE_THUMBNAILS_DOWNLOAD:
dir_path = settings->thumbnails_directory;
dir_path = settings->directory.thumbnails;
break;
case CB_CORE_UPDATER_DOWNLOAD:
dir_path = settings->libretro_directory;
dir_path = settings->directory.libretro;
break;
case CB_CORE_CONTENT_DOWNLOAD:
dir_path = settings->core_assets_directory;
dir_path = settings->directory.core_assets;
break;
case CB_UPDATE_CORE_INFO_FILES:
dir_path = settings->libretro_info_path;
break;
case CB_UPDATE_ASSETS:
dir_path = settings->assets_directory;
dir_path = settings->directory.assets;
break;
case CB_UPDATE_AUTOCONFIG_PROFILES:
dir_path = settings->input.autoconfig_dir;
@ -1329,7 +1332,7 @@ static void cb_generic_download(void *task_data,
dir_path = settings->content_database;
break;
case CB_UPDATE_OVERLAYS:
dir_path = settings->overlay_directory;
dir_path = settings->directory.overlay;
break;
case CB_UPDATE_CHEATS:
dir_path = settings->cheat_database;

View File

@ -1007,7 +1007,7 @@ static void mui_font(void)
menu_display_ctl(MENU_DISPLAY_CTL_FONT_SIZE, &font_size);
fill_pathname_join(mediapath, settings->assets_directory,
fill_pathname_join(mediapath, settings->directory.assets,
"glui", sizeof(mediapath));
fill_pathname_join(fontpath, mediapath,
"Roboto-Regular.ttf", sizeof(fontpath));
@ -1243,8 +1243,11 @@ static void mui_context_reset(void *data)
if (!mui || !settings)
return;
fill_pathname_join(iconpath, settings->assets_directory,
"glui", sizeof(iconpath));
fill_pathname_join(
iconpath,
settings->directory.assets,
"glui",
sizeof(iconpath));
fill_pathname_slash(iconpath, sizeof(iconpath));
mui_layout(mui);

View File

@ -365,7 +365,7 @@ static void xmb_fill_default_background_path(xmb_handle_t *xmb,
strlcpy(xmb->icon.dir, "png", sizeof(xmb->icon.dir));
fill_pathname_join(mediapath, settings->assets_directory,
fill_pathname_join(mediapath, settings->directory.assets,
"xmb", sizeof(mediapath));
fill_pathname_join(themepath, mediapath, xmb_theme_ident(), sizeof(themepath));
fill_pathname_join(iconpath, themepath, xmb->icon.dir, sizeof(iconpath));
@ -675,8 +675,11 @@ static void xmb_update_thumbnail_path(void *data, unsigned i)
menu_entry_get(&entry, 0, i, NULL, true);
fill_pathname_join(xmb->thumbnail_file_path, settings->thumbnails_directory,
xmb->title_name, sizeof(xmb->thumbnail_file_path));
fill_pathname_join(
xmb->thumbnail_file_path,
settings->directory.thumbnails,
xmb->title_name,
sizeof(xmb->thumbnail_file_path));
fill_pathname_join(xmb->thumbnail_file_path, xmb->thumbnail_file_path,
xmb_thumbnails_ident(), sizeof(xmb->thumbnail_file_path));
@ -1039,8 +1042,11 @@ static void xmb_list_switch_new(xmb_handle_t *xmb,
if (tmp)
{
fill_pathname_join(path,
settings->dynamic_wallpapers_directory, tmp, sizeof(path));
fill_pathname_join(
path,
settings->directory.dynamic_wallpapers,
tmp,
sizeof(path));
path_remove_extension(path);
free(tmp);
}
@ -1279,7 +1285,9 @@ static void xmb_init_horizontal_list(xmb_handle_t *xmb)
strlcpy(info.label,
menu_hash_to_str(MENU_LABEL_CONTENT_COLLECTION_LIST),
sizeof(info.label));
strlcpy(info.path, settings->playlist_directory, sizeof(info.path));
strlcpy(info.path,
settings->directory.playlist,
sizeof(info.path));
strlcpy(info.exts, "lpl", sizeof(info.exts));
if (menu_displaylist_ctl(DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL, &info))
@ -1393,8 +1401,11 @@ static void xmb_refresh_horizontal_list(xmb_handle_t *xmb)
settings_t *settings = config_get_ptr();
fill_pathname_join(mediapath, settings->assets_directory,
"xmb", sizeof(mediapath));
fill_pathname_join(
mediapath,
settings->directory.assets,
"xmb",
sizeof(mediapath));
fill_pathname_join(themepath, mediapath, xmb_theme_ident(), sizeof(themepath));
xmb_context_destroy_horizontal_list(xmb);
@ -2250,8 +2261,11 @@ static void xmb_font(xmb_handle_t *xmb)
menu_display_ctl(MENU_DISPLAY_CTL_FONT_SIZE, &font_size);
fill_pathname_join(mediapath,
settings->assets_directory, "xmb", sizeof(mediapath));
fill_pathname_join(
mediapath,
settings->directory.assets,
"xmb",
sizeof(mediapath));
fill_pathname_join(themepath,
mediapath, xmb_theme_ident(), sizeof(themepath));
if (string_is_empty(settings->menu.xmb_font))
@ -2700,8 +2714,11 @@ static void xmb_context_reset(void *data)
xmb_fill_default_background_path(xmb,
xmb->background_file_path, sizeof(xmb->background_file_path));
fill_pathname_join(mediapath, settings->assets_directory,
"xmb", sizeof(mediapath));
fill_pathname_join(
mediapath,
settings->directory.assets,
"xmb",
sizeof(mediapath));
fill_pathname_join(themepath, mediapath, xmb_theme_ident(), sizeof(themepath));
fill_pathname_join(iconpath, themepath, xmb->icon.dir, sizeof(iconpath));
fill_pathname_slash(iconpath, sizeof(iconpath));

View File

@ -176,8 +176,11 @@ static void zarch_zui_font(void)
menu_display_ctl(MENU_DISPLAY_CTL_FONT_SIZE, &font_size);
fill_pathname_join(mediapath,
settings->assets_directory, "zarch", sizeof(mediapath));
fill_pathname_join(
mediapath,
settings->directory.assets,
"zarch",
sizeof(mediapath));
fill_pathname_join(fontpath,
mediapath, "Roboto-Condensed.ttf", sizeof(fontpath));
@ -597,7 +600,7 @@ static int zarch_zui_render_lay_root_load(zui_t *zui,
unsigned cwd_offset;
if (!zui->load_cwd)
zui->load_cwd = strdup(settings->menu_content_directory);
zui->load_cwd = strdup(settings->directory.menu_content);
if (!zui->load_dlist)
{

View File

@ -393,7 +393,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
core_info_ctx_firmware_t firmware_info;
firmware_info.path = core_info->path;
firmware_info.system_directory = settings->system_directory;
firmware_info.directory.system = settings->directory.system;
if (core_info_ctl(CORE_INFO_CTL_LIST_UPDATE_MISSING_FIRMWARE, &firmware_info))
{
@ -467,7 +467,7 @@ static int menu_displaylist_parse_debug_info(menu_displaylist_info_t *info)
MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
/* Assume libretro directory exists and check if stat works */
ret = path_is_directory(settings->libretro_directory);
ret = path_is_directory(settings->directory.libretro);
snprintf(tmp, sizeof(tmp), "- stat directory... %s",
ret ? "passed" : "failed");
menu_entries_add(info->list, tmp, "",
@ -475,7 +475,9 @@ static int menu_displaylist_parse_debug_info(menu_displaylist_info_t *info)
/* Try to create a "test" subdirectory on top of libretro directory */
fill_pathname_join(tmp,
settings->libretro_directory, ".retroarch", sizeof(tmp));
settings->directory.libretro,
".retroarch",
sizeof(tmp));
ret = path_mkdir(tmp);
snprintf(tmp, sizeof(tmp), "- create a directory... %s",
ret ? "passed" : "failed");
@ -536,9 +538,9 @@ static int menu_displaylist_parse_debug_info(menu_displaylist_info_t *info)
/* Check if system directory exists */
menu_entries_add(info->list, "System Directory", "",
MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
ret = path_is_directory(settings->system_directory);
ret = path_is_directory(settings->directory.system);
snprintf(tmp, sizeof(tmp), "- directory name: %s",
settings->system_directory);
settings->directory.system);
menu_entries_add(info->list, tmp, "",
MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
snprintf(tmp, sizeof(tmp), "- directory exists: %s",
@ -547,7 +549,7 @@ static int menu_displaylist_parse_debug_info(menu_displaylist_info_t *info)
MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
/* Check if save directory is writable */
fill_pathname_join(tmp, settings->system_directory, ".retroarch",
fill_pathname_join(tmp, settings->directory.system, ".retroarch",
sizeof(tmp));
ret = path_mkdir(tmp);
snprintf(tmp, sizeof(tmp), "- directory writable: %s",
@ -1527,7 +1529,7 @@ static int menu_displaylist_parse_database_entry(menu_displaylist_info_t *info)
path_remove_extension(path_base);
strlcat(path_base, ".lpl", sizeof(path_base));
fill_pathname_join(path_playlist, settings->playlist_directory, path_base,
fill_pathname_join(path_playlist, settings->directory.playlist, path_base,
sizeof(path_playlist));
playlist = content_playlist_init(path_playlist, COLLECTION_SIZE);
@ -2112,8 +2114,10 @@ static int menu_displaylist_parse_horizontal_list(
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_FREE, NULL);
fill_pathname_join(path_playlist,
settings->playlist_directory, item->path,
fill_pathname_join(
path_playlist,
settings->directory.playlist,
item->path,
sizeof(path_playlist));
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_INIT, (void*)path_playlist);
@ -2864,8 +2868,7 @@ static void menu_displaylist_parse_playlist_associations(
settings_t *settings = config_get_ptr();
struct string_list *stnames = string_split(settings->playlist_names, ";");
struct string_list *stcores = string_split(settings->playlist_cores, ";");
struct string_list *str_list =
dir_list_new_special(settings->playlist_directory,
struct string_list *str_list = dir_list_new_special(settings->directory.playlist,
DIR_LIST_COLLECTIONS, NULL);
if (str_list && str_list->size)
@ -2994,7 +2997,7 @@ static bool menu_displaylist_push_internal(
menu_hash_to_str(MENU_LABEL_CONTENT_COLLECTION_LIST),
sizeof(info->label));
if (string_is_empty(settings->playlist_directory))
if (string_is_empty(settings->directory.playlist))
{
menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list);
menu_entries_add(info->list,
@ -3008,8 +3011,11 @@ static bool menu_displaylist_push_internal(
}
else
{
strlcpy(info->path, settings->playlist_directory,
strlcpy(
info->path,
settings->directory.playlist,
sizeof(info->path));
if (!menu_displaylist_ctl(
DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL, info))
break;
@ -3714,8 +3720,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_FREE, NULL);
fill_pathname_join(path_playlist,
settings->playlist_directory, info->path,
fill_pathname_join(
path_playlist,
settings->directory.playlist,
info->path,
sizeof(path_playlist));
menu_driver_ctl(RARCH_MENU_CTL_PLAYLIST_INIT,
@ -3943,7 +3951,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
case DISPLAYLIST_DATABASE_CURSORS:
info->type_default = MENU_FILE_CURSOR;
strlcpy(info->exts, "dbc", sizeof(info->exts));
strlcpy(info->path, settings->cursor_directory, sizeof(info->path));
strlcpy(info->path, settings->directory.cursor, sizeof(info->path));
break;
case DISPLAYLIST_DATABASE_PLAYLISTS:
info->type_default = MENU_FILE_PLAIN;

View File

@ -5598,7 +5598,7 @@ static bool setting_append_list(
sizeof(settings->input.overlay),
menu_hash_to_str(MENU_LABEL_OVERLAY_PRESET),
menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_PRESET),
settings->overlay_directory,
settings->directory.overlay,
&group_info,
&subgroup_info,
parent_group,
@ -6783,8 +6783,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->system_directory,
sizeof(settings->system_directory),
settings->directory.system,
sizeof(settings->directory.system),
menu_hash_to_str(MENU_LABEL_SYSTEM_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_DIRECTORY),
"",
@ -6801,8 +6801,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->core_assets_directory,
sizeof(settings->core_assets_directory),
settings->directory.core_assets,
sizeof(settings->directory.core_assets),
menu_hash_to_str(MENU_LABEL_CORE_ASSETS_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_CORE_ASSETS_DIRECTORY),
"",
@ -6819,8 +6819,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->assets_directory,
sizeof(settings->assets_directory),
settings->directory.assets,
sizeof(settings->directory.assets),
menu_hash_to_str(MENU_LABEL_ASSETS_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_ASSETS_DIRECTORY),
"",
@ -6837,8 +6837,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->dynamic_wallpapers_directory,
sizeof(settings->dynamic_wallpapers_directory),
settings->directory.dynamic_wallpapers,
sizeof(settings->directory.dynamic_wallpapers),
menu_hash_to_str(MENU_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_DYNAMIC_WALLPAPERS_DIRECTORY),
"",
@ -6855,8 +6855,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->thumbnails_directory,
sizeof(settings->thumbnails_directory),
settings->directory.thumbnails,
sizeof(settings->directory.thumbnails),
menu_hash_to_str(MENU_LABEL_THUMBNAILS_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_THUMBNAILS_DIRECTORY),
"",
@ -6873,8 +6873,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->menu_content_directory,
sizeof(settings->menu_content_directory),
settings->directory.menu_content,
sizeof(settings->directory.menu_content),
menu_hash_to_str(MENU_LABEL_RGUI_BROWSER_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_RGUI_BROWSER_DIRECTORY),
"",
@ -6892,8 +6892,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->menu_config_directory,
sizeof(settings->menu_config_directory),
settings->directory.menu_config,
sizeof(settings->directory.menu_config),
menu_hash_to_str(MENU_LABEL_RGUI_CONFIG_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_RGUI_CONFIG_DIRECTORY),
"",
@ -6911,8 +6911,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->libretro_directory,
sizeof(settings->libretro_directory),
settings->directory.libretro,
sizeof(settings->directory.libretro),
menu_hash_to_str(MENU_LABEL_LIBRETRO_DIR_PATH),
menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH),
g_defaults.dir.core,
@ -6968,8 +6968,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->cursor_directory,
sizeof(settings->cursor_directory),
settings->directory.cursor,
sizeof(settings->directory.cursor),
menu_hash_to_str(MENU_LABEL_CURSOR_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_CURSOR_DIRECTORY),
"",
@ -7098,8 +7098,8 @@ static bool setting_append_list(
#ifdef HAVE_OVERLAY
CONFIG_DIR(
list, list_info,
settings->overlay_directory,
sizeof(settings->overlay_directory),
settings->directory.overlay,
sizeof(settings->directory.overlay),
menu_hash_to_str(MENU_LABEL_OVERLAY_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_DIRECTORY),
g_defaults.dir.overlay,
@ -7135,8 +7135,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->screenshot_directory,
sizeof(settings->screenshot_directory),
settings->directory.screenshot,
sizeof(settings->directory.screenshot),
menu_hash_to_str(MENU_LABEL_SCREENSHOT_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_SCREENSHOT_DIRECTORY),
"",
@ -7171,8 +7171,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->input_remapping_directory,
sizeof(settings->input_remapping_directory),
settings->directory.input_remapping,
sizeof(settings->directory.input_remapping),
menu_hash_to_str(MENU_LABEL_INPUT_REMAPPING_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY),
"",
@ -7189,8 +7189,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->playlist_directory,
sizeof(settings->playlist_directory),
settings->directory.playlist,
sizeof(settings->directory.playlist),
menu_hash_to_str(MENU_LABEL_PLAYLIST_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_PLAYLIST_DIRECTORY),
"",
@ -7243,8 +7243,8 @@ static bool setting_append_list(
CONFIG_DIR(
list, list_info,
settings->cache_directory,
sizeof(settings->cache_directory),
settings->directory.cache,
sizeof(settings->directory.cache),
menu_hash_to_str(MENU_LABEL_CACHE_DIRECTORY),
menu_hash_to_str(MENU_LABEL_VALUE_CACHE_DIRECTORY),
"",

View File

@ -115,7 +115,7 @@ void menu_shader_manager_init(menu_handle_t *menu)
{
char preset_path[PATH_MAX_LENGTH];
const char *shader_dir = *settings->video.shader_dir ?
settings->video.shader_dir : settings->system_directory;
settings->video.shader_dir : settings->directory.system;
fill_pathname_join(preset_path, shader_dir,
"menu.glslp", sizeof(preset_path));
@ -214,8 +214,9 @@ void menu_shader_manager_save_preset(
const char *basename, bool apply)
{
#ifdef HAVE_SHADER_MANAGER
char buffer[PATH_MAX_LENGTH], config_directory[PATH_MAX_LENGTH],
preset_path[PATH_MAX_LENGTH];
char buffer[PATH_MAX_LENGTH];
char config_directory[PATH_MAX_LENGTH];
char preset_path[PATH_MAX_LENGTH];
unsigned d, type = RARCH_SHADER_NONE;
const char *dirs[3] = {0};
config_file_t *conf = NULL;
@ -290,11 +291,13 @@ void menu_shader_manager_save_preset(
}
if (*global->path.config)
fill_pathname_basedir(config_directory,
global->path.config, sizeof(config_directory));
fill_pathname_basedir(
config_directory,
global->path.config,
sizeof(config_directory));
dirs[0] = settings->video.shader_dir;
dirs[1] = settings->menu_config_directory;
dirs[1] = settings->directory.menu_config;
dirs[2] = config_directory;
if (!(conf = (config_file_t*)config_file_new(NULL)))

View File

@ -380,7 +380,7 @@ static void set_special_paths(char **argv, unsigned num_content)
/* If this is already set,
* do not overwrite it as this was initialized before in
* a menu or otherwise. */
if (!string_is_empty(settings->system_directory))
if (!string_is_empty(settings->directory.system))
return;
RARCH_WARN("SYSTEM DIR is empty, assume CONTENT DIR %s\n",argv[0]);
@ -822,8 +822,8 @@ static void parse_input(int argc, char *argv[])
if (path_is_directory(optarg))
{
*settings->libretro = '\0';
strlcpy(settings->libretro_directory, optarg,
sizeof(settings->libretro_directory));
strlcpy(settings->directory.libretro, optarg,
sizeof(settings->directory.libretro));
global->has_set.libretro = true;
global->has_set.libretro_directory = true;
RARCH_WARN("Using old --libretro behavior. "
@ -1188,9 +1188,9 @@ bool rarch_game_options_validate(char *s, size_t len, bool mkdir)
/* Config directory: config_directory.
* Try config directory setting first,
* fallback to the location of the current configuration file. */
if (!string_is_empty(settings->menu_config_directory))
if (!string_is_empty(settings->directory.menu_config))
strlcpy(config_directory,
settings->menu_config_directory, sizeof(config_directory));
settings->directory.menu_config, sizeof(config_directory));
else if (!string_is_empty(global->path.config))
fill_pathname_basedir(config_directory,
global->path.config, sizeof(config_directory));

View File

@ -165,9 +165,9 @@ static bool take_screenshot_viewport(void)
if (!video_driver_ctl(RARCH_DISPLAY_CTL_READ_VIEWPORT, buffer))
goto done;
screenshot_dir = settings->screenshot_directory;
screenshot_dir = settings->directory.screenshot;
if (!*settings->screenshot_directory)
if (!*settings->directory.screenshot)
{
fill_pathname_basedir(screenshot_path, global->name.base,
sizeof(screenshot_path));
@ -199,9 +199,9 @@ static bool take_screenshot_raw(void)
video_driver_cached_frame_get(&data, &width, &height, &pitch);
screenshot_dir = settings->screenshot_directory;
screenshot_dir = settings->directory.screenshot;
if (!*settings->screenshot_directory)
if (!*settings->directory.screenshot)
{
fill_pathname_basedir(screenshot_path, global->name.base,
sizeof(screenshot_path));
@ -222,7 +222,7 @@ static bool take_screenshot_choice(void)
settings_t *settings = config_get_ptr();
/* No way to infer screenshot directory. */
if ((!*settings->screenshot_directory) && (!*global->name.base))
if ((!*settings->directory.screenshot) && (!*global->name.base))
return false;
if (video_driver_ctl(RARCH_DISPLAY_CTL_SUPPORTS_VIEWPORT_READ, NULL))

View File

@ -302,7 +302,7 @@ static int database_info_list_iterate_found_match(
path_remove_extension(db_playlist_base_str);
strlcat(db_playlist_base_str, ".lpl", sizeof(db_playlist_base_str));
fill_pathname_join(db_playlist_path, settings->playlist_directory,
fill_pathname_join(db_playlist_path, settings->directory.playlist,
db_playlist_base_str, sizeof(db_playlist_path));
playlist = content_playlist_init(db_playlist_path, COLLECTION_SIZE);