From 7dffc6286b2effba707a50f93647f8222443010e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 28 Apr 2016 19:26:02 +0200 Subject: [PATCH] Internally change directory settings --- command_event.c | 6 +- configuration.c | 293 +++++++++++++++++++------------------- configuration.h | 38 ++--- content.c | 6 +- core_info.c | 4 +- core_info.h | 5 +- dynamic.c | 12 +- input/input_remapping.c | 2 +- list_special.c | 4 +- menu/cbs/menu_cbs_ok.c | 39 ++--- menu/drivers/materialui.c | 9 +- menu/drivers/xmb.c | 41 ++++-- menu/drivers/zarch.c | 9 +- menu/menu_displaylist.c | 40 +++--- menu/menu_setting.c | 58 ++++---- menu/menu_shader.c | 15 +- retroarch.c | 10 +- screenshot.c | 10 +- tasks/task_database.c | 2 +- 19 files changed, 324 insertions(+), 279 deletions(-) diff --git a/command_event.c b/command_event.c index 4775655205..7c270c2a44 100644 --- a/command_event.c +++ b/command_event.c @@ -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: diff --git a/configuration.c b/configuration.c index d0a13abdaa..37019a8935 100644 --- a/configuration.c +++ b/configuration.c @@ -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); diff --git a/configuration.h b/configuration.h index 2b6d7500c4..89fd710a03 100644 --- a/configuration.h +++ b/configuration.h @@ -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; diff --git a/content.c b/content.c index 9f34d36754..2f7315df7c 100644 --- a/content.c +++ b/content.c @@ -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", diff --git a/core_info.c b/core_info.c index f276157cd1..13ba6fb46a 100644 --- a/core_info.c +++ b/core_info.c @@ -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: { diff --git a/core_info.h b/core_info.h index 406d523e60..234b6ce831 100644 --- a/core_info.h +++ b/core_info.h @@ -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 diff --git a/dynamic.c b/dynamic.c index 35f4f89ba9..586d608abe 100644 --- a/dynamic.c +++ b/dynamic.c @@ -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; } diff --git a/input/input_remapping.c b/input/input_remapping.c index 3afc826fb4..6d32f58cdf 100644 --- a/input/input_remapping.c +++ b/input/input_remapping.c @@ -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)); diff --git a/list_special.c b/list_special.c index d3fae815a8..4390056c4e 100644 --- a/list_special.c +++ b/list_special.c @@ -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: diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 2298384e70..d2d5d20ed2 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -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; diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 4e8efe95d8..620cb40f2c 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -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); diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index af61be9b95..a227fde754 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -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)); diff --git a/menu/drivers/zarch.c b/menu/drivers/zarch.c index ceabfeb6b3..fb280406d4 100644 --- a/menu/drivers/zarch.c +++ b/menu/drivers/zarch.c @@ -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) { diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 8714bc61ba..d96e30c4b7 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -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; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 7993014ae7..d437a8fdfd 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -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), "", diff --git a/menu/menu_shader.c b/menu/menu_shader.c index f10bb9f2fc..ae5b988c85 100644 --- a/menu/menu_shader.c +++ b/menu/menu_shader.c @@ -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))) diff --git a/retroarch.c b/retroarch.c index 4d3ae1a3b4..90e06f07ea 100644 --- a/retroarch.c +++ b/retroarch.c @@ -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)); diff --git a/screenshot.c b/screenshot.c index 87e4173c37..9824715dfb 100644 --- a/screenshot.c +++ b/screenshot.c @@ -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)) diff --git a/tasks/task_database.c b/tasks/task_database.c index 40b7290e8f..530602b374 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -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);