diff --git a/autosave.c b/autosave.c index 7e2a599efb..a1d4d8058d 100644 --- a/autosave.c +++ b/autosave.c @@ -196,10 +196,10 @@ void lock_autosave(void) unsigned i; global_t *global = global_get_ptr(); - for (i = 0; i < global->num_autosave; i++) + for (i = 0; i < global->autosave.num; i++) { - if (global->autosave[i]) - autosave_lock(global->autosave[i]); + if (global->autosave.list[i]) + autosave_lock(global->autosave.list[i]); } } @@ -213,10 +213,10 @@ void unlock_autosave(void) unsigned i; global_t *global = global_get_ptr(); - for (i = 0; i < global->num_autosave; i++) + for (i = 0; i < global->autosave.num; i++) { - if (global->autosave[i]) - autosave_unlock(global->autosave[i]); + if (global->autosave.list[i]) + autosave_unlock(global->autosave.list[i]); } } diff --git a/command_event.c b/command_event.c index 733b3a302b..840be2c942 100644 --- a/command_event.c +++ b/command_event.c @@ -102,11 +102,11 @@ static void event_init_autosave(void) if (settings->autosave_interval < 1 || !global->savefiles) return; - if (!(global->autosave = (autosave_t**)calloc(global->savefiles->size, - sizeof(*global->autosave)))) + if (!(global->autosave.list = (autosave_t**)calloc(global->savefiles->size, + sizeof(*global->autosave.list)))) return; - global->num_autosave = global->savefiles->size; + global->autosave.num = global->savefiles->size; for (i = 0; i < global->savefiles->size; i++) { @@ -116,12 +116,12 @@ static void event_init_autosave(void) if (pretro_get_memory_size(type) <= 0) continue; - global->autosave[i] = autosave_new(path, + global->autosave.list[i] = autosave_new(path, pretro_get_memory_data(type), pretro_get_memory_size(type), settings->autosave_interval); - if (!global->autosave[i]) + if (!global->autosave.list[i]) RARCH_WARN("%s\n", msg_hash_to_str(MSG_AUTOSAVE_FAILED)); } } @@ -131,14 +131,14 @@ static void event_deinit_autosave(void) unsigned i; global_t *global = global_get_ptr(); - for (i = 0; i < global->num_autosave; i++) - autosave_free(global->autosave[i]); + for (i = 0; i < global->autosave.num; i++) + autosave_free(global->autosave.list[i]); - if (global->autosave) - free(global->autosave); - global->autosave = NULL; + if (global->autosave.list) + free(global->autosave.list); - global->num_autosave = 0; + global->autosave.list = NULL; + global->autosave.num = 0; } #endif @@ -147,7 +147,7 @@ static void event_save_files(void) unsigned i; global_t *global = global_get_ptr(); - if (!global->savefiles || !global->use_sram) + if (!global->savefiles || !global->sram.use) return; for (i = 0; i < global->savefiles->size; i++) @@ -543,9 +543,11 @@ static void event_deinit_core(bool reinit) /* per-core saves: restore the original path so the config is not affected */ if(settings->sort_savefiles_enable) - strlcpy(global->savefile_dir,orig_savefile_dir,sizeof(global->savefile_dir)); + strlcpy(global->dir.savefile, orig_savefile_dir, + sizeof(global->dir.savefile)); if(settings->sort_savestates_enable) - strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); + strlcpy(global->dir.savestate, orig_savestate_dir, + sizeof(global->dir.savestate)); /* auto overrides: reload the original config */ if(global->overrides_active) @@ -583,7 +585,7 @@ static bool event_load_save_files(void) if (!global) return false; - if (!global->savefiles || global->sram_load_disable) + if (!global->savefiles || global->sram.load_disable) return false; for (i = 0; i < global->savefiles->size; i++) @@ -602,14 +604,14 @@ static void event_load_auto_state(void) global_t *global = global_get_ptr(); #ifdef HAVE_NETPLAY - if (global->netplay_enable && !global->netplay_is_spectate) + if (global->netplay.enable && !global->netplay.is_spectate) return; #endif if (!settings->savestate_auto_load) return; - fill_pathname_noext(savestate_name_auto, global->savestate_name, + fill_pathname_noext(savestate_name_auto, global->name.savestate, ".auto", sizeof(savestate_name_auto)); if (!path_file_exists(savestate_name_auto)) @@ -645,9 +647,9 @@ static void event_set_savestate_auto_index(void) * /foo/path/content.state%d, where %d is the largest number available. */ - fill_pathname_basedir(state_dir, global->savestate_name, + fill_pathname_basedir(state_dir, global->name.savestate, sizeof(state_dir)); - fill_pathname_base(state_base, global->savestate_name, + fill_pathname_base(state_base, global->name.savestate, sizeof(state_base)); if (!(dir_list = dir_list_new_special(state_dir, DIR_LIST_PLAIN))) @@ -686,16 +688,16 @@ static bool event_init_content(void) /* No content to be loaded for dummy core, * just successfully exit. */ - if (global->core_type == CORE_TYPE_DUMMY) + if (global->inited.core.type == CORE_TYPE_DUMMY) return true; - if (!global->libretro_no_content) + if (!global->inited.core.no_content) rarch_fill_pathnames(); if (!init_content_file()) return false; - if (global->libretro_no_content) + if (global->inited.core.no_content) return true; event_set_savestate_auto_index(); @@ -719,9 +721,11 @@ static bool event_init_core(void) /* per-core saves: save the original path */ if(orig_savefile_dir[0] == '\0') - strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(orig_savefile_dir)); + strlcpy(orig_savefile_dir, global->dir.savefile, + sizeof(orig_savefile_dir)); if(orig_savestate_dir[0] == '\0') - strlcpy(orig_savestate_dir,global->savestate_dir,sizeof(orig_savestate_dir)); + strlcpy(orig_savestate_dir, global->dir.savestate, + sizeof(orig_savestate_dir)); /* auto overrides: apply overrides */ if(settings->auto_overrides_enable) @@ -742,14 +746,14 @@ static bool event_init_core(void) config_load_remap(); /* per-core saves: reset redirection paths */ - if((settings->sort_savestates_enable || settings->sort_savefiles_enable) && !global->libretro_no_content) - set_paths_redirect(global->basename); + if((settings->sort_savestates_enable || settings->sort_savefiles_enable) && !global->inited.core.no_content) + set_paths_redirect(global->name.base); rarch_verify_api_version(); pretro_init(); - global->use_sram = (global->core_type == CORE_TYPE_PLAIN) && - !global->libretro_no_content; + global->sram.use = (global->inited.core.type == CORE_TYPE_PLAIN) && + !global->inited.core.no_content; if (!event_init_content()) return false; @@ -768,11 +772,11 @@ static bool event_save_auto_state(void) global_t *global = global_get_ptr(); if (!settings->savestate_auto_save || - (global->core_type == CORE_TYPE_DUMMY) || - global->libretro_no_content) + (global->inited.core.type == CORE_TYPE_DUMMY) || + global->inited.core.no_content) return false; - fill_pathname_noext(savestate_name_auto, global->savestate_name, + fill_pathname_noext(savestate_name_auto, global->name.savestate, ".auto", sizeof(savestate_name_auto)); ret = save_state(savestate_name_auto); @@ -817,8 +821,8 @@ static bool event_save_core_config(void) if (*settings->menu_config_directory) strlcpy(config_dir, settings->menu_config_directory, sizeof(config_dir)); - else if (*global->config_path) /* Fallback */ - fill_pathname_basedir(config_dir, global->config_path, + else if (*global->path.config) /* Fallback */ + fill_pathname_basedir(config_dir, global->path.config, sizeof(config_dir)); else { @@ -878,8 +882,8 @@ static bool event_save_core_config(void) if ((ret = config_save_file(config_path))) { - strlcpy(global->config_path, config_path, - sizeof(global->config_path)); + strlcpy(global->path.config, config_path, + sizeof(global->path.config)); snprintf(msg, sizeof(msg), "Saved new config to \"%s\".", config_path); RARCH_LOG("%s\n", msg); @@ -960,12 +964,12 @@ static void event_main_state(unsigned cmd) if (settings->state_slot > 0) snprintf(path, sizeof(path), "%s%d", - global->savestate_name, settings->state_slot); + global->name.savestate, settings->state_slot); else if (settings->state_slot < 0) fill_pathname_join_delim(path, - global->savestate_name, "auto", '.', sizeof(path)); + global->name.savestate, "auto", '.', sizeof(path)); else - strlcpy(path, global->savestate_name, sizeof(path)); + strlcpy(path, global->name.savestate, sizeof(path)); if (pretro_serialize_size()) { @@ -999,11 +1003,11 @@ static bool event_update_system_info(struct retro_system_info *_info, libretro_get_system_info(settings->libretro, _info, load_no_content); #endif - if (!global->core_info) + if (!global->core_info.list) return false; - if (!core_info_list_get_info(global->core_info, - global->core_info_current, settings->libretro)) + if (!core_info_list_get_info(global->core_info.list, + global->core_info.current, settings->libretro)) return false; return true; @@ -1052,7 +1056,7 @@ bool event_command(enum event_command cmd) rarch_environment_cb(RETRO_ENVIRONMENT_SET_LIBRETRO_PATH, (void*)settings->libretro); rarch_environment_cb(RETRO_ENVIRONMENT_EXEC, - (void*)global->fullpath); + (void*)global->path.fullpath); event_command(EVENT_CMD_QUIT); #endif break; @@ -1138,7 +1142,7 @@ bool event_command(enum event_command cmd) #endif rarch_main_data_deinit(); - *global->fullpath = '\0'; + *global->path.fullpath = '\0'; rarch_main_set_state(RARCH_ACTION_STATE_LOAD_CONTENT); } @@ -1330,9 +1334,9 @@ bool event_command(enum event_command cmd) if (!global) break; - if (global->core_info) - core_info_list_free(global->core_info); - global->core_info = NULL; + if (global->core_info.list) + core_info_list_free(global->core_info.list); + global->core_info.list = NULL; break; case EVENT_CMD_DATA_RUNLOOP_FREE: rarch_main_data_free(); @@ -1341,7 +1345,7 @@ bool event_command(enum event_command cmd) event_command(EVENT_CMD_CORE_INFO_DEINIT); if (*settings->libretro_directory) - global->core_info = core_info_list_new(); + global->core_info.list = core_info_list_new(); break; case EVENT_CMD_CORE_DEINIT: { @@ -1405,9 +1409,9 @@ bool event_command(enum event_command cmd) break; case EVENT_CMD_RESTART_RETROARCH: #if defined(GEKKO) && defined(HW_RVL) - fill_pathname_join(global->fullpath, g_defaults.core_dir, + fill_pathname_join(global->path.fullpath, g_defaults.dir.core, SALAMANDER_FILE, - sizeof(global->fullpath)); + sizeof(global->path.fullpath)); #endif if (driver->frontend_ctx && driver->frontend_ctx->set_fork) driver->frontend_ctx->set_fork(true, false); @@ -1504,17 +1508,17 @@ bool event_command(enum event_command cmd) global->savefiles = NULL; break; case EVENT_CMD_SAVEFILES_INIT: - global->use_sram = global->use_sram && !global->sram_save_disable + global->sram.use = global->sram.use && !global->sram.save_disable #ifdef HAVE_NETPLAY - && (!driver->netplay_data || !global->netplay_is_client) + && (!driver->netplay_data || !global->netplay.is_client) #endif ; - if (!global->use_sram) + if (!global->sram.use) RARCH_LOG("%s\n", msg_hash_to_str(MSG_SRAM_WILL_NOT_BE_SAVED)); - if (global->use_sram) + if (global->sram.use) event_command(EVENT_CMD_AUTOSAVE_INIT); break; case EVENT_CMD_MSG_QUEUE_DEINIT: diff --git a/configuration.c b/configuration.c index 9336680b3c..f7e063b055 100644 --- a/configuration.c +++ b/configuration.c @@ -645,7 +645,7 @@ static void config_set_defaults(void) { settings->input.joypad_map[i] = i; settings->input.analog_dpad_mode[i] = ANALOG_DPAD_NONE; - if (!global->has_set_libretro_device[i]) + if (!global->has_set.libretro_device[i]) settings->input.libretro_device[i] = RETRO_DEVICE_JOYPAD; } @@ -655,21 +655,21 @@ static void config_set_defaults(void) /* Make sure settings from other configs carry over into defaults * for another config. */ - if (!global->has_set_save_path) - *global->savefile_dir = '\0'; - if (!global->has_set_state_path) - *global->savestate_dir = '\0'; + if (!global->has_set.save_path) + *global->dir.savefile = '\0'; + if (!global->has_set.state_path) + *global->dir.savestate = '\0'; *settings->libretro_info_path = '\0'; - if (!global->has_set_libretro_directory) + if (!global->has_set.libretro_directory) *settings->libretro_directory = '\0'; - if (!global->has_set_ups_pref) - global->ups_pref = false; - if (!global->has_set_bps_pref) - global->bps_pref = false; - if (!global->has_set_ips_pref) - global->ips_pref = false; + if (!global->has_set.ups_pref) + global->patch.ups_pref = false; + if (!global->has_set.bps_pref) + global->patch.bps_pref = false; + if (!global->has_set.ips_pref) + global->patch.ips_pref = false; *global->record.output_dir = '\0'; *global->record.config_dir = '\0'; @@ -728,117 +728,117 @@ static void config_set_defaults(void) global->console.sound.mode = SOUND_MODE_NORMAL; #endif - if (*g_defaults.wallpapers_dir) + if (*g_defaults.dir.wallpapers) strlcpy(settings->dynamic_wallpapers_directory, - g_defaults.wallpapers_dir, sizeof(settings->dynamic_wallpapers_directory)); - if (*g_defaults.remap_dir) + g_defaults.dir.wallpapers, sizeof(settings->dynamic_wallpapers_directory)); + if (*g_defaults.dir.remap) strlcpy(settings->input_remapping_directory, - g_defaults.remap_dir, sizeof(settings->input_remapping_directory)); - if (*g_defaults.extraction_dir) + g_defaults.dir.remap, sizeof(settings->input_remapping_directory)); + if (*g_defaults.dir.extraction) strlcpy(settings->extraction_directory, - g_defaults.extraction_dir, sizeof(settings->extraction_directory)); - if (*g_defaults.audio_filter_dir) + g_defaults.dir.extraction, sizeof(settings->extraction_directory)); + if (*g_defaults.dir.audio_filter) strlcpy(settings->audio.filter_dir, - g_defaults.audio_filter_dir, sizeof(settings->audio.filter_dir)); - if (*g_defaults.video_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.video_filter_dir, sizeof(settings->video.filter_dir)); - if (*g_defaults.assets_dir) + g_defaults.dir.video_filter, sizeof(settings->video.filter_dir)); + if (*g_defaults.dir.assets) strlcpy(settings->assets_directory, - g_defaults.assets_dir, sizeof(settings->assets_directory)); - if (*g_defaults.core_assets_dir) + g_defaults.dir.assets, sizeof(settings->assets_directory)); + if (*g_defaults.dir.core_assets) strlcpy(settings->core_assets_directory, - g_defaults.core_assets_dir, sizeof(settings->core_assets_directory)); - if (*g_defaults.playlist_dir) + g_defaults.dir.core_assets, sizeof(settings->core_assets_directory)); + if (*g_defaults.dir.playlist) strlcpy(settings->playlist_directory, - g_defaults.playlist_dir, sizeof(settings->playlist_directory)); - if (*g_defaults.core_dir) + g_defaults.dir.playlist, sizeof(settings->playlist_directory)); + if (*g_defaults.dir.core) fill_pathname_expand_special(settings->libretro_directory, - g_defaults.core_dir, sizeof(settings->libretro_directory)); - if (*g_defaults.core_path) - strlcpy(settings->libretro, g_defaults.core_path, + g_defaults.dir.core, sizeof(settings->libretro_directory)); + if (*g_defaults.path.core) + strlcpy(settings->libretro, g_defaults.path.core, sizeof(settings->libretro)); - if (*g_defaults.database_dir) - strlcpy(settings->content_database, g_defaults.database_dir, + if (*g_defaults.dir.database) + strlcpy(settings->content_database, g_defaults.dir.database, sizeof(settings->content_database)); - if (*g_defaults.cursor_dir) - strlcpy(settings->cursor_directory, g_defaults.cursor_dir, + if (*g_defaults.dir.cursor) + strlcpy(settings->cursor_directory, g_defaults.dir.cursor, sizeof(settings->cursor_directory)); - if (*g_defaults.cheats_dir) - strlcpy(settings->cheat_database, g_defaults.cheats_dir, + if (*g_defaults.dir.cheats) + strlcpy(settings->cheat_database, g_defaults.dir.cheats, sizeof(settings->cheat_database)); - if (*g_defaults.core_info_dir) + if (*g_defaults.dir.core_info) fill_pathname_expand_special(settings->libretro_info_path, - g_defaults.core_info_dir, sizeof(settings->libretro_info_path)); + g_defaults.dir.core_info, sizeof(settings->libretro_info_path)); #ifdef HAVE_OVERLAY - if (*g_defaults.overlay_dir) + if (*g_defaults.dir.overlay) { - fill_pathname_expand_special(global->overlay_dir, - g_defaults.overlay_dir, sizeof(global->overlay_dir)); + fill_pathname_expand_special(global->dir.overlay, + g_defaults.dir.overlay, sizeof(global->dir.overlay)); #ifdef RARCH_MOBILE if (!*settings->input.overlay) fill_pathname_join(settings->input.overlay, - global->overlay_dir, + global->dir.overlay, "gamepads/retropad/retropad.cfg", sizeof(settings->input.overlay)); #endif } - if (*g_defaults.osk_overlay_dir) + if (*g_defaults.dir.osk_overlay) { - fill_pathname_expand_special(global->osk_overlay_dir, - g_defaults.osk_overlay_dir, sizeof(global->osk_overlay_dir)); + fill_pathname_expand_special(global->dir.osk_overlay, + g_defaults.dir.osk_overlay, sizeof(global->dir.osk_overlay)); #ifdef RARCH_MOBILE if (!*settings->input.overlay) fill_pathname_join(settings->osk.overlay, - global->osk_overlay_dir, + global->dir.osk_overlay, "overlays/keyboards/US-101/US-101.cfg", sizeof(settings->osk.overlay)); #endif } else - strlcpy(global->osk_overlay_dir, - global->overlay_dir, sizeof(global->osk_overlay_dir)); + strlcpy(global->dir.osk_overlay, + global->dir.overlay, sizeof(global->dir.osk_overlay)); #endif #ifdef HAVE_MENU - if (*g_defaults.menu_config_dir) + if (*g_defaults.dir.menu_config) strlcpy(settings->menu_config_directory, - g_defaults.menu_config_dir, + g_defaults.dir.menu_config, sizeof(settings->menu_config_directory)); #endif - if (*g_defaults.shader_dir) + if (*g_defaults.dir.shader) fill_pathname_expand_special(settings->video.shader_dir, - g_defaults.shader_dir, sizeof(settings->video.shader_dir)); - if (*g_defaults.autoconfig_dir) + g_defaults.dir.shader, sizeof(settings->video.shader_dir)); + if (*g_defaults.dir.autoconfig) strlcpy(settings->input.autoconfig_dir, - g_defaults.autoconfig_dir, + g_defaults.dir.autoconfig, sizeof(settings->input.autoconfig_dir)); - if (!global->has_set_state_path && *g_defaults.savestate_dir) - strlcpy(global->savestate_dir, - g_defaults.savestate_dir, sizeof(global->savestate_dir)); - if (!global->has_set_save_path && *g_defaults.sram_dir) - strlcpy(global->savefile_dir, - g_defaults.sram_dir, sizeof(global->savefile_dir)); - if (*g_defaults.system_dir) + if (!global->has_set.state_path && *g_defaults.dir.savestate) + strlcpy(global->dir.savestate, + g_defaults.dir.savestate, sizeof(global->dir.savestate)); + if (!global->has_set.save_path && *g_defaults.dir.sram) + strlcpy(global->dir.savefile, + g_defaults.dir.sram, sizeof(global->dir.savefile)); + if (*g_defaults.dir.system) strlcpy(settings->system_directory, - g_defaults.system_dir, sizeof(settings->system_directory)); - if (*g_defaults.screenshot_dir) + g_defaults.dir.system, sizeof(settings->system_directory)); + if (*g_defaults.dir.screenshot) strlcpy(settings->screenshot_directory, - g_defaults.screenshot_dir, + g_defaults.dir.screenshot, sizeof(settings->screenshot_directory)); - if (*g_defaults.resampler_dir) + if (*g_defaults.dir.resampler) strlcpy(settings->resampler_directory, - g_defaults.resampler_dir, + g_defaults.dir.resampler, sizeof(settings->resampler_directory)); - if (*g_defaults.content_history_dir) + if (*g_defaults.dir.content_history) strlcpy(settings->content_history_directory, - g_defaults.content_history_dir, + g_defaults.dir.content_history, sizeof(settings->content_history_directory)); - if (*g_defaults.config_path) - fill_pathname_expand_special(global->config_path, - g_defaults.config_path, sizeof(global->config_path)); + if (*g_defaults.path.config) + fill_pathname_expand_special(global->path.config, + g_defaults.path.config, sizeof(global->path.config)); settings->config_save_on_exit = config_save_on_exit; @@ -1050,8 +1050,8 @@ static config_file_t *open_default_config_file(void) if (!conf) return NULL; - strlcpy(global->config_path, conf_path, - sizeof(global->config_path)); + strlcpy(global->path.config, conf_path, + sizeof(global->path.config)); return conf; } @@ -1199,7 +1199,7 @@ static bool config_load_file(const char *path, bool set_defaults) if (set_defaults) config_set_defaults(); - strlcpy(tmp_append_path, global->append_config_path, + strlcpy(tmp_append_path, global->path.append_config, sizeof(tmp_append_path)); extra_path = strtok_r(tmp_append_path, "|", &save); @@ -1420,24 +1420,24 @@ static bool config_load_file(const char *path, bool set_defaults) snprintf(buf, sizeof(buf), "input_player%u_analog_dpad_mode", i + 1); CONFIG_GET_INT_BASE(conf, settings, input.analog_dpad_mode[i], buf); - if (!global->has_set_libretro_device[i]) + if (!global->has_set.libretro_device[i]) { snprintf(buf, sizeof(buf), "input_libretro_device_p%u", i + 1); CONFIG_GET_INT_BASE(conf, settings, input.libretro_device[i], buf); } } - if (!global->has_set_ups_pref) + if (!global->has_set.ups_pref) { - CONFIG_GET_BOOL_BASE(conf, global, ups_pref, "ups_pref"); + CONFIG_GET_BOOL_BASE(conf, global, patch.ups_pref, "ups_pref"); } - if (!global->has_set_bps_pref) + if (!global->has_set.bps_pref) { - CONFIG_GET_BOOL_BASE(conf, global, bps_pref, "bps_pref"); + CONFIG_GET_BOOL_BASE(conf, global, patch.bps_pref, "bps_pref"); } - if (!global->has_set_ips_pref) + if (!global->has_set.ips_pref) { - CONFIG_GET_BOOL_BASE(conf, global, ips_pref, "ips_pref"); + CONFIG_GET_BOOL_BASE(conf, global, patch.ips_pref, "ips_pref"); } /* Audio settings. */ @@ -1474,9 +1474,9 @@ static bool config_load_file(const char *path, bool set_defaults) CONFIG_GET_STRING_BASE(conf, settings, input.joypad_driver, "input_joypad_driver"); CONFIG_GET_STRING_BASE(conf, settings, input.keyboard_layout, "input_keyboard_layout"); - if (!global->has_set_libretro) + if (!global->has_set.libretro) config_get_path(conf, "libretro_path", settings->libretro, sizeof(settings->libretro)); - if (!global->has_set_libretro_directory) + if (!global->has_set.libretro_directory) config_get_path(conf, "libretro_directory", settings->libretro_directory, sizeof(settings->libretro_directory)); /* Safe-guard against older behavior. */ @@ -1551,7 +1551,7 @@ static bool config_load_file(const char *path, bool set_defaults) #endif CONFIG_GET_INT_BASE(conf, settings, libretro_log_level, "libretro_log_level"); - if (!global->has_set_verbosity) + if (!global->has_set.verbosity) CONFIG_GET_BOOL_BASE(conf, global, verbosity, "log_verbosity"); CONFIG_GET_BOOL_BASE(conf, global, perfcnt_enable, "perfcnt_enable"); @@ -1562,9 +1562,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", global->overlay_dir, sizeof(global->overlay_dir)); - if (!strcmp(global->overlay_dir, "default")) - *global->overlay_dir = '\0'; + config_get_path(conf, "overlay_directory", global->dir.overlay, sizeof(global->dir.overlay)); + if (!strcmp(global->dir.overlay, "default")) + *global->dir.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"); @@ -1573,9 +1573,9 @@ static bool config_load_file(const char *path, bool set_defaults) CONFIG_GET_FLOAT_BASE(conf, settings, input.overlay_opacity, "input_overlay_opacity"); CONFIG_GET_FLOAT_BASE(conf, settings, input.overlay_scale, "input_overlay_scale"); - config_get_path(conf, "osk_overlay_directory", global->osk_overlay_dir, sizeof(global->osk_overlay_dir)); - if (!strcmp(global->osk_overlay_dir, "default")) - *global->osk_overlay_dir = '\0'; + config_get_path(conf, "osk_overlay_directory", global->dir.osk_overlay, sizeof(global->dir.osk_overlay)); + if (!strcmp(global->dir.osk_overlay, "default")) + *global->dir.osk_overlay = '\0'; config_get_path(conf, "input_osk_overlay", settings->osk.overlay, sizeof(settings->osk.overlay)); CONFIG_GET_BOOL_BASE(conf, settings, osk.enable, "input_osk_overlay_enable"); @@ -1635,58 +1635,58 @@ static bool config_load_file(const char *path, bool set_defaults) CONFIG_GET_BOOL_BASE(conf, settings, input.autodetect_enable, "input_autodetect_enable"); CONFIG_GET_PATH_BASE(conf, settings, input.autoconfig_dir, "joypad_autoconfig_dir"); - if (!global->has_set_username) + if (!global->has_set.username) CONFIG_GET_PATH_BASE(conf, settings, username, "netplay_nickname"); CONFIG_GET_INT_BASE(conf, settings, user_language, "user_language"); #ifdef HAVE_NETPLAY - if (!global->has_set_netplay_mode) - CONFIG_GET_BOOL_BASE(conf, global, netplay_is_spectate, + if (!global->has_set.netplay_mode) + CONFIG_GET_BOOL_BASE(conf, global, netplay.is_spectate, "netplay_spectator_mode_enable"); - if (!global->has_set_netplay_mode) - CONFIG_GET_BOOL_BASE(conf, global, netplay_is_client, "netplay_mode"); - if (!global->has_set_netplay_ip_address) - CONFIG_GET_PATH_BASE(conf, global, netplay_server, "netplay_ip_address"); - if (!global->has_set_netplay_delay_frames) - CONFIG_GET_INT_BASE(conf, global, netplay_sync_frames, "netplay_delay_frames"); - if (!global->has_set_netplay_ip_port) - CONFIG_GET_INT_BASE(conf, global, netplay_port, "netplay_ip_port"); + if (!global->has_set.netplay_mode) + CONFIG_GET_BOOL_BASE(conf, global, netplay.is_client, "netplay_mode"); + if (!global->has_set.netplay_ip_address) + CONFIG_GET_PATH_BASE(conf, global, netplay.server, "netplay_ip_address"); + if (!global->has_set.netplay_delay_frames) + CONFIG_GET_INT_BASE(conf, global, netplay.sync_frames, "netplay_delay_frames"); + if (!global->has_set.netplay_ip_port) + CONFIG_GET_INT_BASE(conf, global, netplay.port, "netplay_ip_port"); #endif CONFIG_GET_BOOL_BASE(conf, settings, config_save_on_exit, "config_save_on_exit"); - if (!global->has_set_save_path && + if (!global->has_set.save_path && config_get_path(conf, "savefile_directory", tmp_str, sizeof(tmp_str))) { if (!strcmp(tmp_str, "default")) - strlcpy(global->savefile_dir, g_defaults.sram_dir, - sizeof(global->savefile_dir)); + strlcpy(global->dir.savefile, g_defaults.dir.sram, + sizeof(global->dir.savefile)); else if (path_is_directory(tmp_str)) { - strlcpy(global->savefile_dir, tmp_str, - sizeof(global->savefile_dir)); - strlcpy(global->savefile_name, tmp_str, - sizeof(global->savefile_name)); - fill_pathname_dir(global->savefile_name, global->basename, - ".srm", sizeof(global->savefile_name)); + strlcpy(global->dir.savefile, tmp_str, + sizeof(global->dir.savefile)); + strlcpy(global->name.savefile, tmp_str, + sizeof(global->name.savefile)); + fill_pathname_dir(global->name.savefile, global->name.base, + ".srm", sizeof(global->name.savefile)); } else RARCH_WARN("savefile_directory is not a directory, ignoring ...\n"); } - if (!global->has_set_state_path && + if (!global->has_set.state_path && config_get_path(conf, "savestate_directory", tmp_str, sizeof(tmp_str))) { if (!strcmp(tmp_str, "default")) - strlcpy(global->savestate_dir, g_defaults.savestate_dir, - sizeof(global->savestate_dir)); + strlcpy(global->dir.savestate, g_defaults.dir.savestate, + sizeof(global->dir.savestate)); else if (path_is_directory(tmp_str)) { - strlcpy(global->savestate_dir, tmp_str, - sizeof(global->savestate_dir)); - strlcpy(global->savestate_name, tmp_str, - sizeof(global->savestate_name)); - fill_pathname_dir(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); + strlcpy(global->dir.savestate, tmp_str, + sizeof(global->dir.savestate)); + strlcpy(global->name.savestate, tmp_str, + sizeof(global->name.savestate)); + fill_pathname_dir(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); } else RARCH_WARN("savestate_directory is not a directory, ignoring ...\n"); @@ -1704,7 +1704,7 @@ static bool config_load_file(const char *path, bool set_defaults) else { fill_pathname_resolve_relative(settings->content_history_path, - global->config_path, "content_history.lpl", + global->path.config, "content_history.lpl", sizeof(settings->content_history_path)); } } @@ -1749,12 +1749,12 @@ static void config_load_core_specific(void) settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - *global->core_specific_config_path = '\0'; + *global->path.core_specific_config = '\0'; if (!*settings->libretro) return; #ifdef HAVE_DYNAMIC - if (global->core_type == CORE_TYPE_DUMMY) + if (global->inited.core.type == CORE_TYPE_DUMMY) return; #endif @@ -1763,34 +1763,34 @@ static void config_load_core_specific(void) { path_resolve_realpath(settings->menu_config_directory, sizeof(settings->menu_config_directory)); - strlcpy(global->core_specific_config_path, + strlcpy(global->path.core_specific_config, settings->menu_config_directory, - sizeof(global->core_specific_config_path)); + sizeof(global->path.core_specific_config)); } else #endif { /* Use original config file's directory as a fallback. */ - fill_pathname_basedir(global->core_specific_config_path, - global->config_path, sizeof(global->core_specific_config_path)); + fill_pathname_basedir(global->path.core_specific_config, + global->path.config, sizeof(global->path.core_specific_config)); } - fill_pathname_dir(global->core_specific_config_path, settings->libretro, - ".cfg", sizeof(global->core_specific_config_path)); + fill_pathname_dir(global->path.core_specific_config, settings->libretro, + ".cfg", sizeof(global->path.core_specific_config)); if (settings->core_specific_config) { char tmp[PATH_MAX_LENGTH] = {0}; /* Toggle has_save_path to false so it resets */ - global->has_set_save_path = false; - global->has_set_state_path = false; + global->has_set.save_path = false; + global->has_set.state_path = false; strlcpy(tmp, settings->libretro, sizeof(tmp)); RARCH_LOG("Loading core-specific config from: %s.\n", - global->core_specific_config_path); + global->path.core_specific_config); - if (!config_load_file(global->core_specific_config_path, true)) + if (!config_load_file(global->path.core_specific_config, true)) RARCH_WARN("Core-specific config not found, reusing last config.\n"); /* Force some parameters which are implied when using core specific configs. @@ -1801,8 +1801,8 @@ static void config_load_core_specific(void) settings->core_specific_config = true; /* Reset save paths */ - global->has_set_save_path = true; - global->has_set_state_path = true; + global->has_set.save_path = true; + global->has_set.state_path = true; } } @@ -1839,7 +1839,7 @@ bool config_load_override(void) if (!info->info.library_name || !strcmp(info->info.library_name,"No Core")) return false; - RARCH_LOG("Game name: %s\n", global->basename); + RARCH_LOG("Game name: %s\n", global->name.base); RARCH_LOG("Core name: %s\n", info->info.library_name); if (!global || !settings ) @@ -1853,8 +1853,8 @@ bool config_load_override(void) * fallback to the location of the current configuration file. */ if (settings->menu_config_directory[0] != '\0') strlcpy(config_directory, settings->menu_config_directory, PATH_MAX_LENGTH); - else if (global->config_path[0] != '\0') - fill_pathname_basedir(config_directory, global->config_path, PATH_MAX_LENGTH); + else if (global->path.config[0] != '\0') + fill_pathname_basedir(config_directory, global->path.config, PATH_MAX_LENGTH); else { RARCH_WARN("No config directory set under Settings > Path and retroarch.cfg not found.\n"); @@ -1864,7 +1864,7 @@ bool config_load_override(void) RARCH_LOG("Config directory: %s\n", config_directory); core_name = info->info.library_name; - game_name = path_basename(global->basename); + game_name = path_basename(global->name.base); /* Concatenate strings into full paths for core_path, game_path */ fill_pathname_join(core_path, config_directory, core_name, PATH_MAX_LENGTH); @@ -1887,7 +1887,7 @@ bool config_load_override(void) return false; } RARCH_LOG("Core-specific overrides found at %s. Appending.\n", core_path); - strlcpy(global->append_config_path, core_path, sizeof(global->append_config_path)); + strlcpy(global->path.append_config, core_path, sizeof(global->path.append_config)); should_append = true; } else @@ -1902,11 +1902,11 @@ bool config_load_override(void) RARCH_LOG("Game-specific overrides found at %s. Appending.\n", game_path); if (should_append) { - strlcat(global->append_config_path, "|", sizeof(global->append_config_path)); - strlcat(global->append_config_path, game_path, sizeof(global->append_config_path)); + strlcat(global->path.append_config, "|", sizeof(global->path.append_config)); + strlcat(global->path.append_config, game_path, sizeof(global->path.append_config)); } else - strlcpy(global->append_config_path, game_path, sizeof(global->append_config_path)); + strlcpy(global->path.append_config, game_path, sizeof(global->path.append_config)); should_append = true; } @@ -1925,7 +1925,7 @@ bool config_load_override(void) } #ifdef HAVE_NETPLAY - if (global->netplay_enable) + if (global->netplay.enable) { RARCH_WARN("Can't use overrides in conjunction with netplay, disabling overrides\n"); return false; @@ -1936,10 +1936,10 @@ bool config_load_override(void) strlcpy(buf,settings->libretro,sizeof(buf)); /* Toggle has_save_path to false so it resets */ - global->has_set_save_path = false; - global->has_set_state_path = false; + global->has_set.save_path = false; + global->has_set.state_path = false; - if (config_load_file(global->config_path, false)) + if (config_load_file(global->path.config, false)) { /* Restore the libretro_path we're using * since it will be overwritten by the override when reloading. */ @@ -1947,8 +1947,8 @@ bool config_load_override(void) rarch_main_msg_queue_push("Configuration override loaded", 1, 100, true); /* Reset save paths */ - global->has_set_save_path = true; - global->has_set_state_path = true; + global->has_set.save_path = true; + global->has_set.state_path = true; return true; } } @@ -1971,19 +1971,19 @@ bool config_load_override(void) if (!global) return false; - *global->append_config_path = '\0'; + *global->path.append_config = '\0'; /* Toggle has_save_path to false so it resets */ - global->has_set_save_path = false; - global->has_set_state_path = false; + global->has_set.save_path = false; + global->has_set.state_path = false; - if (config_load_file(global->config_path, false)) + if (config_load_file(global->path.config, false)) { RARCH_LOG("Configuration overrides unloaded, original configuration reset\n"); /* Reset save paths */ - global->has_set_save_path = true; - global->has_set_state_path = true; + global->has_set.save_path = true; + global->has_set.state_path = true; return true; } @@ -2020,7 +2020,7 @@ bool config_load_remap(void) if (!info->info.library_name || !strcmp(info->info.library_name,"No Core")) return false; - RARCH_LOG("Game name: %s\n", global->basename); + RARCH_LOG("Game name: %s\n", global->name.base); RARCH_LOG("Core name: %s\n", info->info.library_name); /* Remap directory: remap_directory. @@ -2035,7 +2035,7 @@ bool config_load_remap(void) RARCH_LOG("Remap directory: %s\n", remap_directory); core_name = info->info.library_name; - game_name = path_basename(global->basename); + game_name = path_basename(global->name.base); /* Concatenate strings into full paths for core_path, game_path */ fill_pathname_join(core_path, remap_directory, core_name, PATH_MAX_LENGTH); @@ -2096,25 +2096,25 @@ bool config_load_remap(void) static void parse_config_file(void) { global_t *global = global_get_ptr(); - bool ret = config_load_file((*global->config_path) - ? global->config_path : NULL, false); + bool ret = config_load_file((*global->path.config) + ? global->path.config : NULL, false); - if (*global->config_path) + if (*global->path.config) { - RARCH_LOG("Loading config from: %s.\n", global->config_path); + RARCH_LOG("Loading config from: %s.\n", global->path.config); } else { RARCH_LOG("Loading default config.\n"); - if (*global->config_path) - RARCH_LOG("Found default config: %s.\n", global->config_path); + if (*global->path.config) + RARCH_LOG("Found default config: %s.\n", global->path.config); } if (ret) return; RARCH_ERR("Couldn't find config at path: \"%s\"\n", - global->config_path); + global->path.config); } @@ -2287,12 +2287,12 @@ void config_load(void) global_t *global = global_get_ptr(); /* Flush out per-core configs before loading a new config. */ - if (*global->core_specific_config_path && + if (*global->path.core_specific_config && settings->config_save_on_exit && settings->core_specific_config) - config_save_file(global->core_specific_config_path); + config_save_file(global->path.core_specific_config); /* Flush out some states that could have been set by core environment variables */ - global->has_set_input_descriptors = false; + global->has_set.input_descriptors = false; if (!global->block_config_read) { @@ -2562,12 +2562,12 @@ bool config_save_file(const char *path) config_set_float(conf, "video_font_size", settings->video.font_size); config_set_bool(conf, "video_font_enable", settings->video.font_enable); - if (!global->has_set_ups_pref) - config_set_bool(conf, "ups_pref", global->ups_pref); - if (!global->has_set_bps_pref) - config_set_bool(conf, "bps_pref", global->bps_pref); - if (!global->has_set_ips_pref) - config_set_bool(conf, "ips_pref", global->ips_pref); + if (!global->has_set.ups_pref) + config_set_bool(conf, "ups_pref", global->patch.ups_pref); + if (!global->has_set.bps_pref) + config_set_bool(conf, "bps_pref", global->patch.bps_pref); + if (!global->has_set.ips_pref) + config_set_bool(conf, "ips_pref", global->patch.ips_pref); config_set_path(conf, "system_directory", *settings->system_directory ? @@ -2582,9 +2582,9 @@ bool config_save_file(const char *path) settings->resampler_directory); config_set_string(conf, "audio_resampler", settings->audio.resampler); config_set_path(conf, "savefile_directory", - *global->savefile_dir ? global->savefile_dir : "default"); + *global->dir.savefile ? global->dir.savefile : "default"); config_set_path(conf, "savestate_directory", - *global->savestate_dir ? global->savestate_dir : "default"); + *global->dir.savestate ? global->dir.savestate : "default"); config_set_path(conf, "video_shader_dir", *settings->video.shader_dir ? settings->video.shader_dir : "default"); @@ -2647,7 +2647,7 @@ bool config_save_file(const char *path) #ifdef HAVE_OVERLAY config_set_path(conf, "overlay_directory", - *global->overlay_dir ? global->overlay_dir : "default"); + *global->dir.overlay ? global->dir.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); @@ -2658,7 +2658,7 @@ bool config_save_file(const char *path) settings->input.overlay_scale); config_set_path(conf, "osk_overlay_directory", - *global->osk_overlay_dir ? global->osk_overlay_dir : "default"); + *global->dir.osk_overlay ? global->dir.osk_overlay : "default"); config_set_path(conf, "input_osk_overlay", settings->osk.overlay); config_set_bool(conf, "input_osk_overlay_enable", settings->osk.enable); #endif @@ -2720,11 +2720,11 @@ bool config_save_file(const char *path) #ifdef HAVE_NETPLAY config_set_bool(conf, "netplay_spectator_mode_enable", - global->netplay_is_spectate); - config_set_bool(conf, "netplay_mode", global->netplay_is_client); - config_set_string(conf, "netplay_ip_address", global->netplay_server); - config_set_int(conf, "netplay_ip_port", global->netplay_port); - config_set_int(conf, "netplay_delay_frames", global->netplay_sync_frames); + global->netplay.is_spectate); + config_set_bool(conf, "netplay_mode", global->netplay.is_client); + config_set_string(conf, "netplay_ip_address", global->netplay.server); + config_set_int(conf, "netplay_ip_port", global->netplay.port); + config_set_int(conf, "netplay_delay_frames", global->netplay.sync_frames); #endif config_set_string(conf, "netplay_nickname", settings->username); config_set_int(conf, "user_language", settings->user_language); diff --git a/content.c b/content.c index b1566d35fe..60c777be1b 100644 --- a/content.c +++ b/content.c @@ -73,7 +73,7 @@ static bool read_content_file(unsigned i, const char *path, void **buf, return true; /* Attempt to apply a patch. */ - if (!global->block_patch) + if (!global->patch.block_patch) patch_content(&ret_buf, length); #ifdef HAVE_ZLIB @@ -610,7 +610,7 @@ bool init_content_file(void) attr.i |= system->info.need_fullpath << 1; attr.i |= (!system->no_content) << 2; string_list_append(content, - (global->libretro_no_content && settings->core.set_supports_no_game_enable) ? "" : global->fullpath, attr); + (global->inited.core.no_content && settings->core.set_supports_no_game_enable) ? "" : global->path.fullpath, attr); } #ifdef HAVE_ZLIB @@ -655,7 +655,7 @@ bool init_content_file(void) ret = load_content(special, content); error: - global->content_is_init = (ret) ? true : false; + global->inited.content = (ret) ? true : false; if (content) string_list_free(content); diff --git a/dir_list_special.c b/dir_list_special.c index 9fdcb9c040..0a8913ec76 100644 --- a/dir_list_special.c +++ b/dir_list_special.c @@ -39,7 +39,7 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty break; case DIR_LIST_CORE_INFO: dir = input_dir; - exts = (global->core_info) ? core_info_list_get_all_extensions(global->core_info) : NULL; + exts = (global->core_info.list) ? core_info_list_get_all_extensions(global->core_info.list) : NULL; break; case DIR_LIST_SHADERS: dir = settings->video.shader_dir; diff --git a/dynamic.c b/dynamic.c index 1f2b032349..3d62694de7 100644 --- a/dynamic.c +++ b/dynamic.c @@ -704,9 +704,9 @@ bool rarch_environment_cb(unsigned cmd, void *data) char buf[PATH_MAX_LENGTH] = {0}; const char *options_path = settings->core_options_path; - if (!*options_path && *global->config_path) + if (!*options_path && *global->path.config) { - fill_pathname_resolve_relative(buf, global->config_path, + fill_pathname_resolve_relative(buf, global->path.config, "retroarch-core-options.cfg", sizeof(buf)); options_path = buf; } @@ -754,8 +754,8 @@ bool rarch_environment_cb(unsigned cmd, void *data) case RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY: if (!settings->system_directory || settings->system_directory[0] == '\0') { - RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",global->fullpath); - fill_pathname_basedir(buf, global->fullpath, + RARCH_WARN("SYSTEM DIR is empty, fill assume CONTENT DIR %s\n",global->path.fullpath); + fill_pathname_basedir(buf, global->path.fullpath, sizeof(buf)); } @@ -767,10 +767,10 @@ bool rarch_environment_cb(unsigned cmd, void *data) break; case RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY: - *(const char**)data = *global->savefile_dir ? - global->savefile_dir : NULL; + *(const char**)data = *global->dir.savefile ? + global->dir.savefile : NULL; RARCH_LOG("Environ SAVE_DIRECTORY: \"%s\".\n", - global->savefile_dir); + global->dir.savefile); break; case RETRO_ENVIRONMENT_GET_USERNAME: @@ -895,7 +895,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) } } - global->has_set_input_descriptors = true; + global->has_set.input_descriptors = true; break; } @@ -1022,7 +1022,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) return false; #ifdef HAVE_NETPLAY - if (global->netplay_enable) + if (global->netplay.enable) return false; #endif @@ -1041,7 +1041,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) #ifdef HAVE_NETPLAY /* retro_run() will be called in very strange and * mysterious ways, have to disable it. */ - if (global->netplay_enable) + if (global->netplay.enable) return false; #endif @@ -1261,11 +1261,10 @@ bool rarch_environment_cb(unsigned cmd, void *data) case RETRO_ENVIRONMENT_EXEC: case RETRO_ENVIRONMENT_EXEC_ESCAPE: + *global->path.fullpath = '\0'; if (data) - strlcpy(global->fullpath, (const char*)data, - sizeof(global->fullpath)); - else - *global->fullpath = '\0'; + strlcpy(global->path.fullpath, (const char*)data, + sizeof(global->path.fullpath)); #if defined(RARCH_CONSOLE) if (driver->frontend_ctx && driver->frontend_ctx->set_fork) diff --git a/frontend/drivers/platform_android.c b/frontend/drivers/platform_android.c index 1983a69806..1725ba7a46 100644 --- a/frontend/drivers/platform_android.c +++ b/frontend/drivers/platform_android.c @@ -744,93 +744,91 @@ static void frontend_android_get_environment_settings(int *argc, RARCH_LOG("Application location: [%s].\n", app_dir); if (args && *app_dir) { - fill_pathname_join(g_defaults.assets_dir, app_dir, - "assets", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.extraction_dir, app_dir, - "tmp", sizeof(g_defaults.extraction_dir)); - fill_pathname_join(g_defaults.shader_dir, app_dir, - "shaders", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.overlay_dir, app_dir, - "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.core_dir, app_dir, - "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, - app_dir, "info", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.autoconfig_dir, - app_dir, "autoconfig", sizeof(g_defaults.autoconfig_dir)); - fill_pathname_join(g_defaults.audio_filter_dir, - app_dir, "audio_filters", sizeof(g_defaults.audio_filter_dir)); - fill_pathname_join(g_defaults.video_filter_dir, - app_dir, "video_filters", sizeof(g_defaults.video_filter_dir)); - strlcpy(g_defaults.content_history_dir, - app_dir, sizeof(g_defaults.content_history_dir)); - fill_pathname_join(g_defaults.database_dir, - app_dir, "database/rdb", sizeof(g_defaults.database_dir)); - fill_pathname_join(g_defaults.cursor_dir, - app_dir, "database/cursors", sizeof(g_defaults.cursor_dir)); - fill_pathname_join(g_defaults.cheats_dir, - app_dir, "cheats", sizeof(g_defaults.cheats_dir)); - fill_pathname_join(g_defaults.playlist_dir, - app_dir, "playlists", sizeof(g_defaults.playlist_dir)); - fill_pathname_join(g_defaults.remap_dir, - app_dir, "remaps", sizeof(g_defaults.remap_dir)); - fill_pathname_join(g_defaults.wallpapers_dir, - app_dir, "wallpapers", sizeof(g_defaults.wallpapers_dir)); + fill_pathname_join(g_defaults.dir.assets, app_dir, + "assets", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.extraction, app_dir, + "tmp", sizeof(g_defaults.dir.extraction)); + fill_pathname_join(g_defaults.dir.shader, app_dir, + "shaders", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.dir.overlay, app_dir, + "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.core, app_dir, + "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, + app_dir, "info", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.autoconfig, + app_dir, "autoconfig", sizeof(g_defaults.dir.autoconfig)); + fill_pathname_join(g_defaults.dir.audio_filter, + app_dir, "audio_filters", sizeof(g_defaults.dir.audio_filter)); + fill_pathname_join(g_defaults.dir.video_filter, + app_dir, "video_filters", sizeof(g_defaults.dir.video_filter)); + strlcpy(g_defaults.dir.content_history, + app_dir, sizeof(g_defaults.dir.content_history)); + fill_pathname_join(g_defaults.dir.database, + app_dir, "database/rdb", sizeof(g_defaults.dir.database)); + fill_pathname_join(g_defaults.dir.cursor, + app_dir, "database/cursors", sizeof(g_defaults.dir.cursor)); + fill_pathname_join(g_defaults.dir.cheats, + app_dir, "cheats", sizeof(g_defaults.dir.cheats)); + fill_pathname_join(g_defaults.dir.playlist, + app_dir, "playlists", sizeof(g_defaults.dir.playlist)); + fill_pathname_join(g_defaults.dir.remap, + app_dir, "remaps", sizeof(g_defaults.dir.remap)); + fill_pathname_join(g_defaults.dir.wallpapers, + app_dir, "wallpapers", sizeof(g_defaults.dir.wallpapers)); if(*downloads_dir && test_permissions(downloads_dir)) { - fill_pathname_join(g_defaults.core_assets_dir, - downloads_dir, "", sizeof(g_defaults.core_assets_dir)); + fill_pathname_join(g_defaults.dir.core_assets, + downloads_dir, "", sizeof(g_defaults.dir.core_assets)); } else { - fill_pathname_join(g_defaults.core_assets_dir, - app_dir, "downloads", sizeof(g_defaults.core_assets_dir)); - path_mkdir(g_defaults.core_assets_dir); + fill_pathname_join(g_defaults.dir.core_assets, + app_dir, "downloads", sizeof(g_defaults.dir.core_assets)); + path_mkdir(g_defaults.dir.core_assets); } - RARCH_LOG("Default download folder: [%s]", g_defaults.core_assets_dir); + RARCH_LOG("Default download folder: [%s]", g_defaults.dir.core_assets); if(*screenshot_dir && test_permissions(screenshot_dir)) { - fill_pathname_join(g_defaults.screenshot_dir, - screenshot_dir, "", sizeof(g_defaults.screenshot_dir)); + fill_pathname_join(g_defaults.dir.screenshot, + screenshot_dir, "", sizeof(g_defaults.dir.screenshot)); } else { - fill_pathname_join(g_defaults.screenshot_dir, - app_dir, "screenshots", sizeof(g_defaults.screenshot_dir)); - path_mkdir(g_defaults.screenshot_dir); + fill_pathname_join(g_defaults.dir.screenshot, + app_dir, "screenshots", sizeof(g_defaults.dir.screenshot)); + path_mkdir(g_defaults.dir.screenshot); } - RARCH_LOG("Default screenshot folder: [%s]", g_defaults.screenshot_dir); + RARCH_LOG("Default screenshot folder: [%s]", g_defaults.dir.screenshot); switch (perms) { case SDCARD_EXT_DIR_WRITABLE: - fill_pathname_join(g_defaults.sram_dir, - ext_dir, "saves", sizeof(g_defaults.sram_dir)); - path_mkdir(g_defaults.sram_dir); + fill_pathname_join(g_defaults.dir.sram, + ext_dir, "saves", sizeof(g_defaults.dir.sram)); + path_mkdir(g_defaults.dir.sram); - fill_pathname_join(g_defaults.savestate_dir, - ext_dir, "states", sizeof(g_defaults.savestate_dir)); - path_mkdir(g_defaults.savestate_dir); + fill_pathname_join(g_defaults.dir.savestate, + ext_dir, "states", sizeof(g_defaults.dir.savestate)); + path_mkdir(g_defaults.dir.savestate); - fill_pathname_join(g_defaults.system_dir, - ext_dir, "system", sizeof(g_defaults.system_dir)); - path_mkdir(g_defaults.system_dir); + fill_pathname_join(g_defaults.dir.system, + ext_dir, "system", sizeof(g_defaults.dir.system)); + path_mkdir(g_defaults.dir.system); break; case SDCARD_NOT_WRITABLE: - fill_pathname_join(g_defaults.sram_dir, - app_dir, "saves", sizeof(g_defaults.sram_dir)); - path_mkdir(g_defaults.sram_dir); - - fill_pathname_join(g_defaults.savestate_dir, - app_dir, "states", sizeof(g_defaults.savestate_dir)); - path_mkdir(g_defaults.savestate_dir); - - fill_pathname_join(g_defaults.system_dir, - app_dir, "system", sizeof(g_defaults.system_dir)); - path_mkdir(g_defaults.system_dir); + fill_pathname_join(g_defaults.dir.sram, + app_dir, "saves", sizeof(g_defaults.dir.sram)); + path_mkdir(g_defaults.dir.sram); + fill_pathname_join(g_defaults.dir.savestate, + app_dir, "states", sizeof(g_defaults.dir.savestate)); + path_mkdir(g_defaults.dir.savestate); + fill_pathname_join(g_defaults.dir.system, + app_dir, "system", sizeof(g_defaults.dir.system)); + path_mkdir(g_defaults.dir.system); break; case SDCARD_ROOT_WRITABLE: default: @@ -864,9 +862,9 @@ static void frontend_android_get_environment_settings(int *argc, ext_dir, "system", sizeof(buf)); path_mkdir(buf); - RARCH_LOG("Default savefile folder: [%s]", g_defaults.sram_dir); - RARCH_LOG("Default savestate folder: [%s]", g_defaults.savestate_dir); - RARCH_LOG("Default system folder: [%s]", g_defaults.system_dir); + RARCH_LOG("Default savefile folder: [%s]", g_defaults.dir.sram); + RARCH_LOG("Default savestate folder: [%s]", g_defaults.dir.savestate); + RARCH_LOG("Default system folder: [%s]", g_defaults.dir.system); } } } diff --git a/frontend/drivers/platform_ctr.c b/frontend/drivers/platform_ctr.c index b6fa2c294a..f9509aa4ec 100644 --- a/frontend/drivers/platform_ctr.c +++ b/frontend/drivers/platform_ctr.c @@ -56,27 +56,27 @@ static void frontend_ctr_get_environment_settings(int *argc, char *argv[], #endif #endif - fill_pathname_basedir(g_defaults.port_dir, elf_path_cst, sizeof(g_defaults.port_dir)); - RARCH_LOG("port dir: [%s]\n", g_defaults.port_dir); + fill_pathname_basedir(g_defaults.dir.port, elf_path_cst, sizeof(g_defaults.dir.port)); + RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port); - fill_pathname_join(g_defaults.core_assets_dir, g_defaults.port_dir, - "downloads", sizeof(g_defaults.core_assets_dir)); - fill_pathname_join(g_defaults.assets_dir, g_defaults.port_dir, - "media", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.core_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir, - "savestates", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.playlist_dir, g_defaults.core_dir, - "playlists", sizeof(g_defaults.playlist_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.port_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); + fill_pathname_join(g_defaults.dir.core_assets, g_defaults.dir.port, + "downloads", sizeof(g_defaults.dir.core_assets)); + fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port, + "media", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, + "savestates", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core, + "playlists", sizeof(g_defaults.dir.playlist)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, + "retroarch.cfg", sizeof(g_defaults.path.config)); #ifndef IS_SALAMANDER #if 0 diff --git a/frontend/drivers/platform_darwin.m b/frontend/drivers/platform_darwin.m index 778157f647..f0b89daf4f 100644 --- a/frontend/drivers/platform_darwin.m +++ b/frontend/drivers/platform_darwin.m @@ -337,52 +337,52 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], #ifdef OSX strlcat(home_dir_buf, "/RetroArch", sizeof(home_dir_buf)); #endif - fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_glsl", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.core_dir, home_dir_buf, "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, home_dir_buf, "info", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.overlay_dir, home_dir_buf, "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.autoconfig_dir, home_dir_buf, "autoconfig", sizeof(g_defaults.autoconfig_dir)); - fill_pathname_join(g_defaults.core_assets_dir, home_dir_buf, "downloads", sizeof(g_defaults.core_assets_dir)); - fill_pathname_join(g_defaults.assets_dir, home_dir_buf, "assets", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.system_dir, home_dir_buf, "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.menu_config_dir, home_dir_buf, "configs", sizeof(g_defaults.menu_config_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.menu_config_dir, "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.database_dir, home_dir_buf, "rdb", sizeof(g_defaults.database_dir)); - fill_pathname_join(g_defaults.cursor_dir, home_dir_buf, "cursors", sizeof(g_defaults.cursor_dir)); - fill_pathname_join(g_defaults.cheats_dir, home_dir_buf, "cht", sizeof(g_defaults.cheats_dir)); - fill_pathname_join(g_defaults.sram_dir, home_dir_buf, "saves", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.savestate_dir, home_dir_buf, "states", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.remap_dir, home_dir_buf, "remaps", sizeof(g_defaults.remap_dir)); + fill_pathname_join(g_defaults.dir.shader, home_dir_buf, "shaders_glsl", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.dir.core, home_dir_buf, "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, home_dir_buf, "info", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.overlay, home_dir_buf, "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.autoconfig, home_dir_buf, "autoconfig", sizeof(g_defaults.dir.autoconfig)); + fill_pathname_join(g_defaults.dir.core_assets, home_dir_buf, "downloads", sizeof(g_defaults.dir.core_assets)); + fill_pathname_join(g_defaults.dir.assets, home_dir_buf, "assets", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.system, home_dir_buf, "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.menu_config, home_dir_buf, "configs", sizeof(g_defaults.dir.menu_config)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.menu_config, "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.database, home_dir_buf, "rdb", sizeof(g_defaults.dir.database)); + fill_pathname_join(g_defaults.dir.cursor, home_dir_buf, "cursors", sizeof(g_defaults.dir.cursor)); + fill_pathname_join(g_defaults.dir.cheats, home_dir_buf, "cht", sizeof(g_defaults.dir.cheats)); + fill_pathname_join(g_defaults.dir.sram, home_dir_buf, "saves", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.savestate, home_dir_buf, "states", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.remap, home_dir_buf, "remaps", sizeof(g_defaults.dir.remap)); #if defined(OSX) #ifdef HAVE_CG - fill_pathname_join(g_defaults.shader_dir, home_dir_buf, "shaders_cg", sizeof(g_defaults.shader_dir)); + fill_pathname_join(g_defaults.dir.shader, home_dir_buf, "shaders_cg", sizeof(g_defaults.dir.shader)); #endif - fill_pathname_join(g_defaults.audio_filter_dir, home_dir_buf, "audio_filters", sizeof(g_defaults.audio_filter_dir)); - fill_pathname_join(g_defaults.video_filter_dir, home_dir_buf, "video_filters", sizeof(g_defaults.video_filter_dir)); - fill_pathname_join(g_defaults.playlist_dir, home_dir_buf, "playlists", sizeof(g_defaults.playlist_dir)); + fill_pathname_join(g_defaults.dir.audio_filter, home_dir_buf, "audio_filters", sizeof(g_defaults.dir.audio_filter)); + fill_pathname_join(g_defaults.dir.video_filter, home_dir_buf, "video_filters", sizeof(g_defaults.dir.video_filter)); + fill_pathname_join(g_defaults.dir.playlist, home_dir_buf, "playlists", sizeof(g_defaults.dir.playlist)); #endif #ifdef RELEASE_BUILD - fill_pathname_join(g_defaults.remap_dir, bundle_path_buf, "Contents/Resources/remaps", sizeof(g_defaults.remap_dir)); - fill_pathname_join(g_defaults.playlist_dir, bundle_path_buf, "Contents/Resources/playlists", sizeof(g_defaults.playlist_dir)); - fill_pathname_join(g_defaults.shader_dir, bundle_path_buf, "Contents/Resources/shaders", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.core_dir, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, bundle_path_buf, "Contents/Resources/info", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.overlay_dir, bundle_path_buf, "Contents/Resources/overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.autoconfig_dir, bundle_path_buf, "Contents/Resources/autoconfig", sizeof(g_defaults.autoconfig_dir)); - fill_pathname_join(g_defaults.core_assets_dir, bundle_path_buf, "Contents/Resources/downloads", sizeof(g_defaults.core_assets_dir)); - fill_pathname_join(g_defaults.assets_dir, bundle_path_buf, "Contents/Resources/assets", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.system_dir, bundle_path_buf, "Contents/Resources/system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.menu_config_dir, bundle_path_buf, "Contents/Resources/configs", sizeof(g_defaults.menu_config_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.menu_config_dir, "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.database_dir, bundle_path_buf, "Contents/Resources/rdb", sizeof(g_defaults.database_dir)); - fill_pathname_join(g_defaults.cursor_dir, bundle_path_buf, "Contents/Resources/cursors", sizeof(g_defaults.cursor_dir)); - fill_pathname_join(g_defaults.cheats_dir, bundle_path_buf, "Contents/Resources/cht", sizeof(g_defaults.cheats_dir)); - fill_pathname_join(g_defaults.sram_dir, bundle_path_buf, "Contents/Resources/saves", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.savestate_dir, bundle_path_buf, "Contents/Resources/states", sizeof(g_defaults.savestate_dir)); + fill_pathname_join(g_defaults.dir.remap, bundle_path_buf, "Contents/Resources/remaps", sizeof(g_defaults.dir.remap)); + fill_pathname_join(g_defaults.dir.playlist, bundle_path_buf, "Contents/Resources/playlists", sizeof(g_defaults.dir.playlist)); + fill_pathname_join(g_defaults.dir.shader, bundle_path_buf, "Contents/Resources/shaders", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.dir.core, bundle_path_buf, "Contents/Resources/cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, bundle_path_buf, "Contents/Resources/info", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.overlay, bundle_path_buf, "Contents/Resources/overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.autoconfig, bundle_path_buf, "Contents/Resources/autoconfig", sizeof(g_defaults.dir.autoconfig)); + fill_pathname_join(g_defaults.dir.core_assets, bundle_path_buf, "Contents/Resources/downloads", sizeof(g_defaults.dir.core_assets)); + fill_pathname_join(g_defaults.dir.assets, bundle_path_buf, "Contents/Resources/assets", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.system, bundle_path_buf, "Contents/Resources/system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.menu_config, bundle_path_buf, "Contents/Resources/configs", sizeof(g_defaults.dir.menu_config)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.menu_config, "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.database, bundle_path_buf, "Contents/Resources/rdb", sizeof(g_defaults.dir.database)); + fill_pathname_join(g_defaults.dir.cursor, bundle_path_buf, "Contents/Resources/cursors", sizeof(g_defaults.dir.cursor)); + fill_pathname_join(g_defaults.dir.cheats, bundle_path_buf, "Contents/Resources/cht", sizeof(g_defaults.dir.cheats)); + fill_pathname_join(g_defaults.dir.sram, bundle_path_buf, "Contents/Resources/saves", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.savestate, bundle_path_buf, "Contents/Resources/states", sizeof(g_defaults.dir.savestate)); #endif CFTemporaryDirectory(temp_dir, sizeof(temp_dir)); - strlcpy(g_defaults.extraction_dir, temp_dir, sizeof(g_defaults.extraction_dir)); + strlcpy(g_defaults.dir.extraction, temp_dir, sizeof(g_defaults.dir.extraction)); path_mkdir(bundle_path_buf); @@ -390,10 +390,10 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[], RARCH_ERR("Failed to create or access base directory: %s\n", bundle_path_buf); else { - path_mkdir(g_defaults.system_dir); + path_mkdir(g_defaults.dir.system); - if (access(g_defaults.system_dir, 0755) != 0) - RARCH_ERR("Failed to create or access system directory: %s.\n", g_defaults.system_dir); + if (access(g_defaults.dir.system, 0755) != 0) + RARCH_ERR("Failed to create or access system directory: %s.\n", g_defaults.dir.system); } CFRelease(bundle_path); @@ -598,7 +598,7 @@ static int frontend_darwin_parse_drive_list(void *data) menu_list_push(list, "/var/mobile/", "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, - g_defaults.core_dir, "", MENU_FILE_DIRECTORY, 0, 0); + g_defaults.dir.core, "", MENU_FILE_DIRECTORY, 0, 0); menu_list_push(list, "/", "", MENU_FILE_DIRECTORY, 0, 0); diff --git a/frontend/drivers/platform_gx.c b/frontend/drivers/platform_gx.c index 2af1113b92..3a90cf7f24 100644 --- a/frontend/drivers/platform_gx.c +++ b/frontend/drivers/platform_gx.c @@ -183,30 +183,30 @@ static void frontend_gx_get_environment_settings(int *argc, char *argv[], #ifdef HW_DOL chdir("carda:/retroarch"); #endif - getcwd(g_defaults.core_dir, MAXPATHLEN); - char *last_slash = strrchr(g_defaults.core_dir, '/'); + getcwd(g_defaults.dir.core, MAXPATHLEN); + char *last_slash = strrchr(g_defaults.dir.core, '/'); if (last_slash) *last_slash = 0; - char *device_end = strchr(g_defaults.core_dir, '/'); + char *device_end = strchr(g_defaults.dir.core, '/'); if (device_end) - snprintf(g_defaults.port_dir, sizeof(g_defaults.port_dir), - "%.*s/retroarch", device_end - g_defaults.core_dir, - g_defaults.core_dir); + snprintf(g_defaults.dir.port, sizeof(g_defaults.dir.port), + "%.*s/retroarch", device_end - g_defaults.dir.core, + g_defaults.dir.core); else - fill_pathname_join(g_defaults.port_dir, g_defaults.port_dir, - "retroarch", sizeof(g_defaults.port_dir)); - fill_pathname_join(g_defaults.overlay_dir, g_defaults.core_dir, - "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.port_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.system_dir, g_defaults.port_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.port_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.port_dir, - "savefiles", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.playlist_dir, g_defaults.port_dir, - "playlists", sizeof(g_defaults.playlist_dir)); + fill_pathname_join(g_defaults.dir.port, g_defaults.dir.port, + "retroarch", sizeof(g_defaults.dir.port)); + fill_pathname_join(g_defaults.dir.overlay, g_defaults.dir.core, + "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.port, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.port, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.port, + "savefiles", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.port, + "playlists", sizeof(g_defaults.dir.playlist)); #ifdef IS_SALAMANDER if (*argc > 2 && argv[1] != NULL && argv[2] != NULL) @@ -340,7 +340,7 @@ static void frontend_gx_exitspawn(char *s, size_t len) /* FIXME/TODO - hack * direct loading failed (out of memory), try to jump to Salamander, * then load the correct core */ - fill_pathname_join(s, g_defaults.core_dir, + fill_pathname_join(s, g_defaults.dir.core, "boot.dol", len); #endif frontend_gx_exec(s, should_load_game); diff --git a/frontend/drivers/platform_ps3.c b/frontend/drivers/platform_ps3.c index 80927e4a3c..07120213be 100644 --- a/frontend/drivers/platform_ps3.c +++ b/frontend/drivers/platform_ps3.c @@ -186,15 +186,15 @@ static void frontend_ps3_get_environment_settings(int *argc, char *argv[], == CELL_GAME_ATTRIBUTE_APP_HOME) RARCH_LOG("RetroArch was launched from host machine (APP_HOME).\n"); - ret = cellGameContentPermit(contentInfoPath, g_defaults.port_dir); + ret = cellGameContentPermit(contentInfoPath, g_defaults.dir.port); #ifdef HAVE_MULTIMAN if (multiman_detected) { fill_pathname_join(contentInfoPath, "/dev_hdd0/game/", EMULATOR_CONTENT_DIR, sizeof(contentInfoPath)); - fill_pathname_join(g_defaults.port_dir, contentInfoPath, - "USRDIR", sizeof(g_defaults.port_dir)); + fill_pathname_join(g_defaults.dir.port, contentInfoPath, + "USRDIR", sizeof(g_defaults.dir.port)); } #endif @@ -204,29 +204,29 @@ static void frontend_ps3_get_environment_settings(int *argc, char *argv[], { RARCH_LOG("cellGameContentPermit() OK.\n"); RARCH_LOG("contentInfoPath : [%s].\n", contentInfoPath); - RARCH_LOG("usrDirPath : [%s].\n", g_defaults.port_dir); + RARCH_LOG("usrDirPath : [%s].\n", g_defaults.dir.port); } - fill_pathname_join(g_defaults.core_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir, - "savestates", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.shader_dir, g_defaults.core_dir, - "shaders_cg", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.port_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.overlay_dir, g_defaults.core_dir, - "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.assets_dir, g_defaults.core_dir, - "media", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.playlist_dir, g_defaults.core_dir, - "playlists", sizeof(g_defaults.playlist_dir)); + fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, + "savestates", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.shader, g_defaults.dir.core, + "shaders_cg", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.overlay, g_defaults.dir.core, + "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.core, + "media", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core, + "playlists", sizeof(g_defaults.dir.playlist)); } #ifndef IS_SALAMANDER @@ -364,9 +364,9 @@ static void frontend_ps3_exec(const char *path, bool should_load_game) NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M); } #else - if (should_load_game && global->fullpath[0] != '\0') + if (should_load_game && global->path.fullpath[0] != '\0') { - strlcpy(game_path, global->fullpath, sizeof(game_path)); + strlcpy(game_path, global->path.fullpath, sizeof(game_path)); const char * const spawn_argv[] = { game_path, diff --git a/frontend/drivers/platform_psp.c b/frontend/drivers/platform_psp.c index 8ed2075a7b..6240c1b392 100644 --- a/frontend/drivers/platform_psp.c +++ b/frontend/drivers/platform_psp.c @@ -68,29 +68,29 @@ static void frontend_psp_get_environment_settings(int *argc, char *argv[], strlcpy(eboot_path, argv[0], sizeof(eboot_path)); - fill_pathname_basedir(g_defaults.port_dir, argv[0], sizeof(g_defaults.port_dir)); - RARCH_LOG("port dir: [%s]\n", g_defaults.port_dir); + fill_pathname_basedir(g_defaults.dir.port, argv[0], sizeof(g_defaults.dir.port)); + RARCH_LOG("port dir: [%s]\n", g_defaults.dir.port); - fill_pathname_join(g_defaults.assets_dir, g_defaults.port_dir, - "media", sizeof(g_defaults.assets_dir)); - fill_pathname_join(g_defaults.core_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, g_defaults.port_dir, - "cores", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir, - "savestates", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.playlist_dir, g_defaults.core_dir, - "playlists", sizeof(g_defaults.playlist_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.port_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.cheats_dir, g_defaults.cheats_dir, - "cheats", sizeof(g_defaults.cheats_dir)); - fill_pathname_join(g_defaults.remap_dir, g_defaults.remap_dir, - "remaps", sizeof(g_defaults.remap_dir)); + fill_pathname_join(g_defaults.dir.assets, g_defaults.dir.port, + "media", sizeof(g_defaults.dir.assets)); + fill_pathname_join(g_defaults.dir.core, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, g_defaults.dir.port, + "cores", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, + "savestates", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.playlist, g_defaults.dir.core, + "playlists", sizeof(g_defaults.dir.playlist)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.port, + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.cheats, g_defaults.dir.cheats, + "cheats", sizeof(g_defaults.dir.cheats)); + fill_pathname_join(g_defaults.dir.remap, g_defaults.dir.remap, + "remaps", sizeof(g_defaults.dir.remap)); #ifndef IS_SALAMANDER if (argv[1] && (argv[1][0] != '\0')) @@ -205,10 +205,10 @@ static void frontend_psp_exec(const char *path, bool should_load_game) #ifndef IS_SALAMANDER global_t *global = global_get_ptr(); - if (should_load_game && global->fullpath[0] != '\0') + if (should_load_game && global->path.fullpath[0] != '\0') { argp[args] = '\0'; - strlcat(argp + args, global->fullpath, sizeof(argp) - args); + strlcat(argp + args, global->path.fullpath, sizeof(argp) - args); args += strlen(argp + args) + 1; } #endif diff --git a/frontend/drivers/platform_qnx.c b/frontend/drivers/platform_qnx.c index 20cb293f4e..fe48376906 100644 --- a/frontend/drivers/platform_qnx.c +++ b/frontend/drivers/platform_qnx.c @@ -45,18 +45,18 @@ static int frontend_qnx_get_rating(void) static void frontend_qnx_get_environment_settings(int *argc, char *argv[], void *data, void *params_data) { - fill_pathname_join(g_defaults.config_path, "app/native", - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.shader_dir, "app/native", - "shaders_glsl", sizeof(g_defaults.shader_dir)); - fill_pathname_join(g_defaults.overlay_dir, "app/native", - "overlays", sizeof(g_defaults.overlay_dir)); - fill_pathname_join(g_defaults.core_dir, "app/native", - "lib", sizeof(g_defaults.core_dir)); - fill_pathname_join(g_defaults.core_info_dir, "app/native", - "info", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.playlist_dir, "app/native", - "playlists", sizeof(g_defaults.playlist_dir)); + fill_pathname_join(g_defaults.path.config, "app/native", + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.shader, "app/native", + "shaders_glsl", sizeof(g_defaults.dir.shader)); + fill_pathname_join(g_defaults.dir.overlay, "app/native", + "overlays", sizeof(g_defaults.dir.overlay)); + fill_pathname_join(g_defaults.dir.core, "app/native", + "lib", sizeof(g_defaults.dir.core)); + fill_pathname_join(g_defaults.dir.core_info, "app/native", + "info", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.dir.playlist, "app/native", + "playlists", sizeof(g_defaults.dir.playlist)); } enum frontend_architecture frontend_qnx_get_architecture(void) diff --git a/frontend/drivers/platform_wii.c b/frontend/drivers/platform_wii.c index db83ac5455..609b6279ad 100644 --- a/frontend/drivers/platform_wii.c +++ b/frontend/drivers/platform_wii.c @@ -132,7 +132,7 @@ void system_exec_wii(const char *_path, bool should_load_game) #ifdef IS_SALAMANDER strlcpy(game_path, gx_rom_path, sizeof(game_path)); #else - strlcpy(game_path, global->fullpath, sizeof(game_path)); + strlcpy(game_path, global->path.fullpath, sizeof(game_path)); #endif } diff --git a/frontend/drivers/platform_xdk.c b/frontend/drivers/platform_xdk.c index de5b159138..b13b81ccdc 100644 --- a/frontend/drivers/platform_xdk.c +++ b/frontend/drivers/platform_xdk.c @@ -176,34 +176,34 @@ static void frontend_xdk_get_environment_settings(int *argc, char *argv[], #endif #if defined(_XBOX1) - strlcpy(g_defaults.core_dir, "D:", sizeof(g_defaults.core_dir)); - strlcpy(g_defaults.core_info_dir, "D:", sizeof(g_defaults.core_info_dir)); - fill_pathname_join(g_defaults.config_path, g_defaults.core_dir, - "retroarch.cfg", sizeof(g_defaults.config_path)); - fill_pathname_join(g_defaults.savestate_dir, g_defaults.core_dir, - "savestates", sizeof(g_defaults.savestate_dir)); - fill_pathname_join(g_defaults.sram_dir, g_defaults.core_dir, - "savefiles", sizeof(g_defaults.sram_dir)); - fill_pathname_join(g_defaults.system_dir, g_defaults.core_dir, - "system", sizeof(g_defaults.system_dir)); - fill_pathname_join(g_defaults.screenshot_dir, g_defaults.core_dir, - "screenshots", sizeof(g_defaults.screenshot_dir)); + strlcpy(g_defaults.dir.core, "D:", sizeof(g_defaults.dir.core)); + strlcpy(g_defaults.dir.core_info, "D:", sizeof(g_defaults.dir.core_info)); + fill_pathname_join(g_defaults.path.config, g_defaults.dir.core, + "retroarch.cfg", sizeof(g_defaults.path.config)); + fill_pathname_join(g_defaults.dir.savestate, g_defaults.dir.core, + "savestates", sizeof(g_defaults.dir.savestate)); + fill_pathname_join(g_defaults.dir.sram, g_defaults.dir.core, + "savefiles", sizeof(g_defaults.dir.sram)); + fill_pathname_join(g_defaults.dir.system, g_defaults.dir.core, + "system", sizeof(g_defaults.dir.system)); + fill_pathname_join(g_defaults.dir.screenshot, g_defaults.dir.core, + "screenshots", sizeof(g_defaults.dir.screenshot)); #elif defined(_XBOX360) - strlcpy(g_defaults.core_dir, "game:", sizeof(g_defaults.core_dir)); - strlcpy(g_defaults.core_info_dir, - "game:", sizeof(g_defaults.core_info_dir)); - strlcpy(g_defaults.config_path, - "game:\\retroarch.cfg", sizeof(g_defaults.config_path)); - strlcpy(g_defaults.screenshot_dir, - "game:", sizeof(g_defaults.screenshot_dir)); - strlcpy(g_defaults.savestate_dir, - "game:\\savestates", sizeof(g_defaults.savestate_dir)); - strlcpy(g_defaults.playlist_dir, - "game:\\playlists", sizeof(g_defaults.playlist_dir)); - strlcpy(g_defaults.sram_dir, - "game:\\savefiles", sizeof(g_defaults.sram_dir)); - strlcpy(g_defaults.system_dir, - "game:\\system", sizeof(g_defaults.system_dir)); + strlcpy(g_defaults.dir.core, "game:", sizeof(g_defaults.dir.core)); + strlcpy(g_defaults.dir.core_info, + "game:", sizeof(g_defaults.dir.core_info)); + strlcpy(g_defaults.path.config, + "game:\\retroarch.cfg", sizeof(g_defaults.path.config)); + strlcpy(g_defaults.dir.screenshot, + "game:", sizeof(g_defaults.dir.screenshot)); + strlcpy(g_defaults.dir.savestate, + "game:\\savestates", sizeof(g_defaults.dir.savestate)); + strlcpy(g_defaults.dir.playlist, + "game:\\playlists", sizeof(g_defaults.dir.playlist)); + strlcpy(g_defaults.dir.sram, + "game:\\savefiles", sizeof(g_defaults.dir.sram)); + strlcpy(g_defaults.dir.system, + "game:\\system", sizeof(g_defaults.dir.system)); #endif #ifndef IS_SALAMANDER diff --git a/frontend/frontend.c b/frontend/frontend.c index d555421bb4..612caa50d0 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -40,24 +40,26 @@ void main_exit_save_config(void) global_t *global = global_get_ptr(); rarch_system_info_t *info = rarch_system_info_get_ptr(); - if (settings->config_save_on_exit && *global->config_path) + if (settings->config_save_on_exit && *global->path.config) { /* restore original paths in case per-core organization is enabled */ if (settings->sort_savefiles_enable && orig_savefile_dir[0] != '\0') - strlcpy(global->savefile_dir,orig_savefile_dir,sizeof(global->savefile_dir)); + strlcpy(global->dir.savefile, orig_savefile_dir, + sizeof(global->dir.savefile)); if (settings->sort_savestates_enable && orig_savestate_dir[0] != '\0') - strlcpy(global->savestate_dir,orig_savestate_dir,sizeof(global->savestate_dir)); + strlcpy(global->dir.savestate, orig_savestate_dir, + sizeof(global->dir.savestate)); /* Save last core-specific config to the default config location, * needed on consoles for core switching and reusing last good * config for new cores. */ - config_save_file(global->config_path); + config_save_file(global->path.config); /* Flush out the core specific config. */ - if (*global->core_specific_config_path && + if (*global->path.core_specific_config && settings->core_specific_config) - config_save_file(global->core_specific_config_path); + config_save_file(global->path.core_specific_config); } event_command(EVENT_CMD_AUTOSAVE_STATE); @@ -81,7 +83,7 @@ void main_exit(void *args) main_exit_save_config(); - if (global->main_is_init) + if (global->inited.main) { #ifdef HAVE_MENU /* Do not want menu context to live any more. */ @@ -125,50 +127,50 @@ void main_exit(void *args) static void check_defaults_dirs(void) { - if (*g_defaults.core_assets_dir) - path_mkdir(g_defaults.core_assets_dir); - if (*g_defaults.remap_dir) - path_mkdir(g_defaults.remap_dir); - if (*g_defaults.autoconfig_dir) - path_mkdir(g_defaults.autoconfig_dir); - if (*g_defaults.audio_filter_dir) - path_mkdir(g_defaults.audio_filter_dir); - if (*g_defaults.video_filter_dir) - path_mkdir(g_defaults.video_filter_dir); - if (*g_defaults.assets_dir) - path_mkdir(g_defaults.assets_dir); - if (*g_defaults.playlist_dir) - path_mkdir(g_defaults.playlist_dir); - if (*g_defaults.core_dir) - path_mkdir(g_defaults.core_dir); - if (*g_defaults.core_info_dir) - path_mkdir(g_defaults.core_info_dir); - if (*g_defaults.overlay_dir) - path_mkdir(g_defaults.overlay_dir); - if (*g_defaults.port_dir) - path_mkdir(g_defaults.port_dir); - if (*g_defaults.shader_dir) - path_mkdir(g_defaults.shader_dir); - if (*g_defaults.savestate_dir) - path_mkdir(g_defaults.savestate_dir); - if (*g_defaults.sram_dir) - path_mkdir(g_defaults.sram_dir); - if (*g_defaults.system_dir) - path_mkdir(g_defaults.system_dir); - if (*g_defaults.resampler_dir) - path_mkdir(g_defaults.resampler_dir); - if (*g_defaults.menu_config_dir) - path_mkdir(g_defaults.menu_config_dir); - if (*g_defaults.content_history_dir) - path_mkdir(g_defaults.content_history_dir); - if (*g_defaults.extraction_dir) - path_mkdir(g_defaults.extraction_dir); - if (*g_defaults.database_dir) - path_mkdir(g_defaults.database_dir); - if (*g_defaults.cursor_dir) - path_mkdir(g_defaults.cursor_dir); - if (*g_defaults.cheats_dir) - path_mkdir(g_defaults.cheats_dir); + if (*g_defaults.dir.core_assets) + path_mkdir(g_defaults.dir.core_assets); + if (*g_defaults.dir.remap) + path_mkdir(g_defaults.dir.remap); + if (*g_defaults.dir.autoconfig) + path_mkdir(g_defaults.dir.autoconfig); + if (*g_defaults.dir.audio_filter) + path_mkdir(g_defaults.dir.audio_filter); + if (*g_defaults.dir.video_filter) + path_mkdir(g_defaults.dir.video_filter); + if (*g_defaults.dir.assets) + path_mkdir(g_defaults.dir.assets); + if (*g_defaults.dir.playlist) + path_mkdir(g_defaults.dir.playlist); + if (*g_defaults.dir.core) + path_mkdir(g_defaults.dir.core); + if (*g_defaults.dir.core_info) + path_mkdir(g_defaults.dir.core_info); + if (*g_defaults.dir.overlay) + path_mkdir(g_defaults.dir.overlay); + if (*g_defaults.dir.port) + path_mkdir(g_defaults.dir.port); + if (*g_defaults.dir.shader) + path_mkdir(g_defaults.dir.shader); + if (*g_defaults.dir.savestate) + path_mkdir(g_defaults.dir.savestate); + if (*g_defaults.dir.sram) + path_mkdir(g_defaults.dir.sram); + if (*g_defaults.dir.system) + path_mkdir(g_defaults.dir.system); + if (*g_defaults.dir.resampler) + path_mkdir(g_defaults.dir.resampler); + if (*g_defaults.dir.menu_config) + path_mkdir(g_defaults.dir.menu_config); + if (*g_defaults.dir.content_history) + path_mkdir(g_defaults.dir.content_history); + if (*g_defaults.dir.extraction) + path_mkdir(g_defaults.dir.extraction); + if (*g_defaults.dir.database) + path_mkdir(g_defaults.dir.database); + if (*g_defaults.dir.cursor) + path_mkdir(g_defaults.dir.cursor); + if (*g_defaults.dir.cheats) + path_mkdir(g_defaults.dir.cheats); } static void history_playlist_push(content_playlist_t *playlist, @@ -179,7 +181,7 @@ static void history_playlist_push(content_playlist_t *playlist, global_t *global = global_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); - if (!playlist || (global->core_type == CORE_TYPE_DUMMY) || !info) + if (!playlist || (global->inited.core.type == CORE_TYPE_DUMMY) || !info) return; /* Path can be relative here. @@ -251,7 +253,7 @@ bool main_load_content(int argc, char **argv, void *args, rarch_argc_ptr = (int*)&rarch_argc; } - if (global->main_is_init) + if (global->inited.main) rarch_main_deinit(); if ((ret = rarch_main_init(*rarch_argc_ptr, rarch_argv_ptr))) @@ -322,10 +324,10 @@ int rarch_main(int argc, char *argv[], void *data) global_t *global = global_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); - if (global->content_is_init || system->no_content) + if (global->inited.content || system->no_content) history_playlist_push( g_defaults.history, - global->fullpath, + global->path.fullpath, settings->libretro, system ? &system->info : NULL); } diff --git a/frontend/frontend_salamander.c b/frontend/frontend_salamander.c index b026c31847..78d6174efa 100644 --- a/frontend/frontend_salamander.c +++ b/frontend/frontend_salamander.c @@ -89,11 +89,11 @@ static void find_and_set_first_file(char *s, size_t len, char first_file[PATH_MAX_LENGTH] = {0}; find_first_libretro_core(first_file, sizeof(first_file), - g_defaults.core_dir, ext); + g_defaults.dir.core, ext); if (first_file[0] != '\0') { - fill_pathname_join(s, g_defaults.core_dir, first_file, len); + fill_pathname_join(s, g_defaults.dir.core, first_file, len); RARCH_LOG("libretro_path now set to: %s.\n", s); } else @@ -105,13 +105,13 @@ static void salamander_init(char *s, size_t len) /* normal executable loading path */ bool config_file_exists = false; - if (path_file_exists(g_defaults.config_path)) + if (path_file_exists(g_defaults.path.config)) config_file_exists = true; if (config_file_exists) { char tmp_str[PATH_MAX_LENGTH]; - config_file_t * conf = (config_file_t*)config_file_new(g_defaults.config_path); + config_file_t * conf = (config_file_t*)config_file_new(g_defaults.path.config); if (conf) { @@ -137,7 +137,7 @@ static void salamander_init(char *s, size_t len) if (conf) { config_set_string(conf, "libretro_path", s); - config_file_write(conf, g_defaults.config_path); + config_file_write(conf, g_defaults.path.config); config_file_free(conf); } } diff --git a/general.h b/general.h index ae4a19af9c..80650c274a 100644 --- a/general.h +++ b/general.h @@ -71,33 +71,40 @@ enum sound_mode_enums struct defaults { - char core_assets_dir[PATH_MAX_LENGTH]; - char menu_config_dir[PATH_MAX_LENGTH]; - char config_path[PATH_MAX_LENGTH]; - char core_path[PATH_MAX_LENGTH]; - char autoconfig_dir[PATH_MAX_LENGTH]; - char audio_filter_dir[PATH_MAX_LENGTH]; - char video_filter_dir[PATH_MAX_LENGTH]; - char assets_dir[PATH_MAX_LENGTH]; - char core_dir[PATH_MAX_LENGTH]; - char core_info_dir[PATH_MAX_LENGTH]; - char overlay_dir[PATH_MAX_LENGTH]; - char osk_overlay_dir[PATH_MAX_LENGTH]; - char port_dir[PATH_MAX_LENGTH]; - char shader_dir[PATH_MAX_LENGTH]; - char savestate_dir[PATH_MAX_LENGTH]; - char resampler_dir[PATH_MAX_LENGTH]; - char sram_dir[PATH_MAX_LENGTH]; - char screenshot_dir[PATH_MAX_LENGTH]; - char system_dir[PATH_MAX_LENGTH]; - char playlist_dir[PATH_MAX_LENGTH]; - char content_history_dir[PATH_MAX_LENGTH]; - char remap_dir[PATH_MAX_LENGTH]; - char extraction_dir[PATH_MAX_LENGTH]; - char wallpapers_dir[PATH_MAX_LENGTH]; - char database_dir[PATH_MAX_LENGTH]; - char cursor_dir[PATH_MAX_LENGTH]; - char cheats_dir[PATH_MAX_LENGTH]; + struct + { + char core_assets[PATH_MAX_LENGTH]; + char menu_config[PATH_MAX_LENGTH]; + char autoconfig[PATH_MAX_LENGTH]; + char audio_filter[PATH_MAX_LENGTH]; + char video_filter[PATH_MAX_LENGTH]; + char assets[PATH_MAX_LENGTH]; + char core[PATH_MAX_LENGTH]; + char core_info[PATH_MAX_LENGTH]; + char overlay[PATH_MAX_LENGTH]; + char osk_overlay[PATH_MAX_LENGTH]; + char port[PATH_MAX_LENGTH]; + char shader[PATH_MAX_LENGTH]; + char savestate[PATH_MAX_LENGTH]; + char resampler[PATH_MAX_LENGTH]; + char sram[PATH_MAX_LENGTH]; + char screenshot[PATH_MAX_LENGTH]; + char system[PATH_MAX_LENGTH]; + char playlist[PATH_MAX_LENGTH]; + char content_history[PATH_MAX_LENGTH]; + char remap[PATH_MAX_LENGTH]; + char extraction[PATH_MAX_LENGTH]; + char wallpapers[PATH_MAX_LENGTH]; + char database[PATH_MAX_LENGTH]; + char cursor[PATH_MAX_LENGTH]; + char cheats[PATH_MAX_LENGTH]; + } dir; + + struct + { + char config[PATH_MAX_LENGTH]; + char core[PATH_MAX_LENGTH]; + } path; struct { @@ -146,7 +153,7 @@ static INLINE void rarch_fail(int error_code, const char *error) /* We cannot longjmp unless we're in rarch_main_init(). * If not, something went very wrong, and we should * just exit right away. */ - rarch_assert(global->error_in_init); + rarch_assert(global->inited.error); strlcpy(global->error_string, error, sizeof(global->error_string)); diff --git a/libretro_version_1.c b/libretro_version_1.c index ff958198d5..a11d863839 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -131,13 +131,13 @@ static bool input_apply_turbo(unsigned port, unsigned id, bool res) settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - if (res && global->turbo_frame_enable[port]) - global->turbo_enable[port] |= (1 << id); + if (res && global->turbo.frame_enable[port]) + global->turbo.enable[port] |= (1 << id); else if (!res) - global->turbo_enable[port] &= ~(1 << id); + global->turbo.enable[port] &= ~(1 << id); - if (global->turbo_enable[port] & (1 << id)) - return res && ((global->turbo_count % settings->input.turbo_period) + if (global->turbo.enable[port] & (1 << id)) + return res && ((global->turbo.count % settings->input.turbo_period) < settings->input.turbo_duty_cycle); return res; } @@ -283,10 +283,10 @@ void retro_init_libretro_cbs(void *data) if (!driver->netplay_data) return; - if (global->netplay_is_spectate) + if (global->netplay.is_spectate) { pretro_set_input_state( - (global->netplay_is_client ? + (global->netplay.is_client ? input_state_spectate_client : input_state_spectate) ); } diff --git a/menu/cbs/menu_cbs_deferred_push.c b/menu/cbs/menu_cbs_deferred_push.c index 7cfd35f85c..242c50306c 100644 --- a/menu/cbs/menu_cbs_deferred_push.c +++ b/menu/cbs/menu_cbs_deferred_push.c @@ -330,9 +330,9 @@ static int deferred_archive_open_detect_core(menu_displaylist_info_t *info) info->setting = menu_setting_find(info->label); - if (global->core_info) + if (global->core_info.list) strlcpy(info->exts, core_info_list_get_all_extensions( - global->core_info), sizeof(info->exts)); + global->core_info.list), sizeof(info->exts)); else if (global->menu.info.valid_extensions) { if (*global->menu.info.valid_extensions) @@ -585,9 +585,9 @@ static int deferred_push_detect_core_list(menu_displaylist_info_t *info) global_t *global = global_get_ptr(); info->type_default = MENU_FILE_PLAIN; - if (global->core_info) + if (global->core_info.list) strlcpy(info->exts, core_info_list_get_all_extensions( - global->core_info), sizeof(info->exts)); + global->core_info.list), sizeof(info->exts)); (void)settings; diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index ebb5bc5f58..d2e0e1c724 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -80,8 +80,8 @@ static void menu_action_setting_disp_set_label_configurations( *w = 19; strlcpy(s2, path, len2); - if (global && *global->config_path) - fill_pathname_base(s, global->config_path, + if (global && *global->path.config) + fill_pathname_base(s, global->path.config, len); else strlcpy(s, menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), len); diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index c15364d034..69cdbdace7 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -81,7 +81,7 @@ static int rarch_defer_core_wrapper(menu_displaylist_info_t *info, sizeof(menu_path_new)); } - ret = rarch_defer_core(global->core_info, + ret = rarch_defer_core(global->core_info.list, menu_path_new, path, menu_label, menu->deferred_path, sizeof(menu->deferred_path)); @@ -165,7 +165,7 @@ static int action_ok_file_load_detect_core(const char *path, settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - strlcpy(global->fullpath, detect_content_path, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, detect_content_path, sizeof(global->path.fullpath)); strlcpy(settings->libretro, path, sizeof(settings->libretro)); event_command(EVENT_CMD_LOAD_CORE); menu_common_load_content(false, CORE_TYPE_PLAIN); @@ -910,7 +910,7 @@ static int action_ok_remap_file_save_game(const char *path, settings_t *settings = config_get_ptr(); rarch_system_info_t *info = rarch_system_info_get_ptr(); const char *core_name = info ? info->info.library_name : NULL; - const char *game_name = global ? path_basename(global->basename) : NULL; + const char *game_name = global ? path_basename(global->name.base) : NULL; fill_pathname_join(directory,settings->input_remapping_directory,core_name,PATH_MAX_LENGTH); fill_pathname_join(file,core_name,game_name,PATH_MAX_LENGTH); @@ -984,8 +984,8 @@ static int action_ok_core_load_deferred(const char *path, if (path) strlcpy(settings->libretro, path, sizeof(settings->libretro)); - strlcpy(global->fullpath, menu->deferred_path, - sizeof(global->fullpath)); + strlcpy(global->path.fullpath, menu->deferred_path, + sizeof(global->path.fullpath)); menu_common_load_content(false, CORE_TYPE_PLAIN); @@ -1051,7 +1051,7 @@ static int action_ok_core_load(const char *path, if (menu->load_no_content && settings->core.set_supports_no_game_enable) { - *global->fullpath = '\0'; + *global->path.fullpath = '\0'; menu_common_load_content(false, CORE_TYPE_PLAIN); return -1; @@ -1263,8 +1263,8 @@ static int action_ok_file_load_ffmpeg(const char *path, menu_list_get_last(menu_list->menu_stack, &menu_path, NULL, NULL, NULL); - fill_pathname_join(global->fullpath, menu_path, path, - sizeof(global->fullpath)); + fill_pathname_join(global->path.fullpath, menu_path, path, + sizeof(global->path.fullpath)); menu_common_load_content(true, CORE_TYPE_FFMPEG); @@ -1285,8 +1285,8 @@ static int action_ok_file_load_imageviewer(const char *path, menu_list_get_last(menu_list->menu_stack, &menu_path, NULL, NULL, NULL); - fill_pathname_join(global->fullpath, menu_path, path, - sizeof(global->fullpath)); + fill_pathname_join(global->path.fullpath, menu_path, path, + sizeof(global->path.fullpath)); menu_common_load_content(true, CORE_TYPE_IMAGEVIEWER); @@ -1331,11 +1331,11 @@ static int action_ok_file_load(const char *path, else { if (type == MENU_FILE_IN_CARCHIVE) - fill_pathname_join_delim(global->fullpath, menu_path_new, path, - '#',sizeof(global->fullpath)); + fill_pathname_join_delim(global->path.fullpath, menu_path_new, path, + '#',sizeof(global->path.fullpath)); else - fill_pathname_join(global->fullpath, menu_path_new, path, - sizeof(global->fullpath)); + fill_pathname_join(global->path.fullpath, menu_path_new, path, + sizeof(global->path.fullpath)); menu_common_load_content(true, CORE_TYPE_PLAIN); @@ -1648,12 +1648,12 @@ static int action_ok_file_load_or_resume(const char *path, if (!menu) return -1; - if (!strcmp(menu->deferred_path, global->fullpath)) + if (!strcmp(menu->deferred_path, global->path.fullpath)) return generic_action_ok_command(EVENT_CMD_RESUME); else { - strlcpy(global->fullpath, - menu->deferred_path, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, + menu->deferred_path, sizeof(global->path.fullpath)); event_command(EVENT_CMD_LOAD_CORE); rarch_main_set_state(RARCH_ACTION_STATE_LOAD_CONTENT); return -1; @@ -1804,7 +1804,7 @@ static int action_ok_load_archive(const char *path, fill_pathname_join(detect_content_path, menu_path, content_path, sizeof(detect_content_path)); - strlcpy(global->fullpath, detect_content_path, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, detect_content_path, sizeof(global->path.fullpath)); event_command(EVENT_CMD_LOAD_CORE); menu_common_load_content(false, CORE_TYPE_PLAIN); @@ -1827,7 +1827,7 @@ static int action_ok_load_archive_detect_core(const char *path, if (!menu || !menu_list) return -1; - ret = rarch_defer_core(global->core_info, menu_path, content_path, label, + ret = rarch_defer_core(global->core_info.list, menu_path, content_path, label, menu->deferred_path, sizeof(menu->deferred_path)); fill_pathname_join(detect_content_path, menu_path, content_path, diff --git a/menu/menu.c b/menu/menu.c index f42425d2a6..ae9a2bc486 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -41,15 +41,15 @@ static void menu_environment_get(int *argc, char *argv[], return; wrap_args->no_content = menu->load_no_content; - if (!global->has_set_verbosity) + if (!global->has_set.verbosity) wrap_args->verbose = global->verbosity; - wrap_args->config_path = *global->config_path ? global->config_path : NULL; - wrap_args->sram_path = *global->savefile_dir ? global->savefile_dir : NULL; - wrap_args->state_path = *global->savestate_dir ? global->savestate_dir : NULL; - wrap_args->content_path = *global->fullpath ? global->fullpath : NULL; + wrap_args->config_path = *global->path.config ? global->path.config : NULL; + wrap_args->sram_path = *global->dir.savefile ? global->dir.savefile : NULL; + wrap_args->state_path = *global->dir.savestate ? global->dir.savestate : NULL; + wrap_args->content_path = *global->path.fullpath ? global->path.fullpath : NULL; - if (!global->has_set_libretro) + if (!global->has_set.libretro) wrap_args->libretro_path = *settings->libretro ? settings->libretro : NULL; wrap_args->touched = true; } @@ -62,18 +62,18 @@ static void menu_push_to_history_playlist(void) if (!settings->history_list_enable) return; - if (*global->fullpath) + if (*global->path.fullpath) { char tmp[PATH_MAX_LENGTH] = {0}; char str[PATH_MAX_LENGTH] = {0}; - fill_pathname_base(tmp, global->fullpath, sizeof(tmp)); + fill_pathname_base(tmp, global->path.fullpath, sizeof(tmp)); snprintf(str, sizeof(str), "INFO - Loading %s ...", tmp); rarch_main_msg_queue_push(str, 1, 1, false); } content_playlist_push(g_defaults.history, - global->fullpath, + global->path.fullpath, NULL, settings->libretro, global->menu.info.library_name, @@ -110,7 +110,7 @@ bool menu_load_content(enum rarch_core_type type) char name[PATH_MAX_LENGTH] = {0}; char msg[PATH_MAX_LENGTH] = {0}; - fill_pathname_base(name, global->fullpath, sizeof(name)); + fill_pathname_base(name, global->path.fullpath, sizeof(name)); snprintf(msg, sizeof(msg), "Failed to load %s.\n", name); rarch_main_msg_queue_push(msg, 1, 90, false); @@ -124,7 +124,7 @@ bool menu_load_content(enum rarch_core_type type) event_command(EVENT_CMD_HISTORY_INIT); - if (*global->fullpath || (menu && menu->load_no_content)) + if (*global->path.fullpath || (menu && menu->load_no_content)) menu_push_to_history_playlist(); event_command(EVENT_CMD_VIDEO_SET_ASPECT_RATIO); @@ -218,8 +218,8 @@ void *menu_init(const void *data) if (menu_init_entries(&menu->entries) != 0) goto error; - global->core_info_current = (core_info_t*)calloc(1, sizeof(core_info_t)); - if (!global->core_info_current) + global->core_info.current = (core_info_t*)calloc(1, sizeof(core_info_t)); + if (!global->core_info.current) goto error; #ifdef HAVE_SHADER_MANAGER @@ -261,9 +261,9 @@ error: if (menu->entries.menu_list) menu_list_free(menu->entries.menu_list); menu->entries.menu_list = NULL; - if (global->core_info_current) - free(global->core_info_current); - global->core_info_current = NULL; + if (global->core_info.current) + free(global->core_info.current); + global->core_info.current = NULL; if (menu->shader) free(menu->shader); menu->shader = NULL; @@ -324,12 +324,12 @@ void menu_free(menu_handle_t *menu) event_command(EVENT_CMD_HISTORY_DEINIT); - if (global->core_info) - core_info_list_free(global->core_info); + if (global->core_info.list) + core_info_list_free(global->core_info.list); - if (global->core_info_current) - free(global->core_info_current); - global->core_info_current = NULL; + if (global->core_info.current) + free(global->core_info.current); + global->core_info.current = NULL; menu_driver_unset_alive(); diff --git a/menu/menu_display.c b/menu/menu_display.c index 66002adb45..d6f7af8ba5 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -79,7 +79,7 @@ void menu_display_fb(void) if (!settings->menu.pause_libretro) { - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) { bool block_libretro_input = driver->block_libretro_input; driver->block_libretro_input = true; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 942e982453..a5ec08874b 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -145,7 +145,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info) char tmp[PATH_MAX_LENGTH] = {0}; settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - core_info_t *core_info = global ? (core_info_t*)global->core_info_current : NULL; + core_info_t *core_info = global ? (core_info_t*)global->core_info.current : NULL; if (!core_info || !core_info->data) { @@ -241,7 +241,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info) if (core_info->firmware_count > 0) { core_info_list_update_missing_firmware( - global->core_info, core_info->path, + global->core_info.list, core_info->path, settings->system_directory); strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_FIRMWARE), sizeof(tmp)); @@ -1582,7 +1582,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t if (!menu) return -1; - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) { rarch_system_info_t *system = rarch_system_info_get_ptr(); @@ -1621,7 +1621,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t menu_hash_to_str(MENU_LABEL_CORE_OPTIONS), MENU_SETTING_ACTION, 0, 0); - if (global->has_set_input_descriptors) + if (global->has_set.input_descriptors) menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INPUT_REMAPPING_OPTIONS), menu_hash_to_str(MENU_LABEL_CORE_INPUT_REMAPPING_OPTIONS), @@ -1630,7 +1630,7 @@ static int menu_displaylist_parse_load_content_settings(menu_displaylist_info_t menu_hash_to_str(MENU_LABEL_VALUE_CORE_CHEAT_OPTIONS), menu_hash_to_str(MENU_LABEL_CORE_CHEAT_OPTIONS), MENU_SETTING_ACTION, 0, 0); - if ((global->core_type != CORE_TYPE_DUMMY) && system && system->disk_control.get_num_images) + if ((global->inited.core.type != CORE_TYPE_DUMMY) && system && system->disk_control.get_num_images) menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DISK_OPTIONS), menu_hash_to_str(MENU_LABEL_DISK_OPTIONS), @@ -1664,8 +1664,8 @@ static int menu_displaylist_parse_horizontal_content_actions(menu_displaylist_in if (!menu) return -1; - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY) - && !strcmp(menu->deferred_path, global->fullpath)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY) + && !strcmp(menu->deferred_path, global->path.fullpath)) menu_displaylist_parse_load_content_settings(info); else menu_list_push(info->list, "Run", "collection", @@ -1766,7 +1766,7 @@ static int menu_displaylist_parse_load_content_list(menu_displaylist_info_t *inf menu_hash_to_str(MENU_LABEL_LOAD_CONTENT), MENU_SETTING_ACTION, 0, 0); - if (global->core_info && core_info_list_num_info_files(global->core_info)) + if (core_info_list_num_info_files(global->core_info.list)) { menu_list_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DETECT_CORE_LIST), @@ -2156,8 +2156,7 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool *n fill_pathname_join(core_path, dir, path, sizeof(core_path)); - if (global->core_info && - core_info_list_get_display_name(global->core_info, + if (core_info_list_get_display_name(global->core_info.list, core_path, display_name, sizeof(display_name))) menu_list_set_alt_at_offset(info->list, i, display_name); } @@ -2516,7 +2515,7 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) { const core_info_t *core_info = NULL; - core_info_list_get_supported_cores(global->core_info, + core_info_list_get_supported_cores(global->core_info.list, menu->deferred_path, &core_info, &list_size); if (list_size <= 0) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index db4230089f..a7d0247fff 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -2268,7 +2268,7 @@ static void general_write_handler(void *data) break; case MENU_LABEL_LOG_VERBOSITY: global->verbosity = *setting->value.boolean; - global->has_set_verbosity = *setting->value.boolean; + global->has_set.verbosity = *setting->value.boolean; break; case MENU_LABEL_VIDEO_SMOOTH: video_driver_set_filtering(1, settings->video.smooth); @@ -2306,25 +2306,25 @@ static void general_write_handler(void *data) break; case MENU_LABEL_NETPLAY_IP_ADDRESS: #ifdef HAVE_NETPLAY - global->has_set_netplay_ip_address = (setting->value.string[0] != '\0'); + global->has_set.netplay_ip_address = (setting->value.string[0] != '\0'); #endif break; case MENU_LABEL_NETPLAY_MODE: #ifdef HAVE_NETPLAY - if (!global->netplay_is_client) - *global->netplay_server = '\0'; - global->has_set_netplay_mode = true; + if (!global->netplay.is_client) + *global->netplay.server = '\0'; + global->has_set.netplay_mode = true; #endif break; case MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE: #ifdef HAVE_NETPLAY - if (global->netplay_is_spectate) - *global->netplay_server = '\0'; + if (global->netplay.is_spectate) + *global->netplay.server = '\0'; #endif break; case MENU_LABEL_NETPLAY_DELAY_FRAMES: #ifdef HAVE_NETPLAY - global->has_set_netplay_delay_frames = (global->netplay_sync_frames > 0); + global->has_set.netplay_delay_frames = (global->netplay.sync_frames > 0); #endif break; } @@ -2501,7 +2501,7 @@ static bool setting_append_list_main_menu_options( START_GROUP(group_info,main_menu, parent_group); START_SUB_GROUP(list, list_info, "State", group_info.name, subgroup_info, parent_group); - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) { CONFIG_ACTION( menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), @@ -4633,7 +4633,7 @@ static bool setting_append_list_overlay_options( settings->input.overlay, menu_hash_to_str(MENU_LABEL_OVERLAY_PRESET), menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_PRESET), - global->overlay_dir, + global->dir.overlay, group_info.name, subgroup_info.name, parent_group, @@ -4681,7 +4681,7 @@ static bool setting_append_list_overlay_options( settings->osk.overlay, menu_hash_to_str(MENU_LABEL_KEYBOARD_OVERLAY_PRESET), menu_hash_to_str(MENU_LABEL_VALUE_KEYBOARD_OVERLAY_PRESET), - global->osk_overlay_dir, + global->dir.osk_overlay, group_info.name, subgroup_info.name, parent_group, @@ -5243,7 +5243,7 @@ static bool setting_append_list_netplay_options( START_SUB_GROUP(list, list_info, "Netplay", group_info.name, subgroup_info, parent_group); CONFIG_BOOL( - global->netplay_enable, + global->netplay.enable, menu_hash_to_str(MENU_LABEL_NETPLAY_ENABLE), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_ENABLE), false, @@ -5269,7 +5269,7 @@ static bool setting_append_list_netplay_options( general_read_handler); CONFIG_STRING( - global->netplay_server, + global->netplay.server, menu_hash_to_str(MENU_LABEL_NETPLAY_IP_ADDRESS), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_IP_ADDRESS), "", @@ -5281,7 +5281,7 @@ static bool setting_append_list_netplay_options( settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_INPUT); CONFIG_BOOL( - global->netplay_is_client, + global->netplay.is_client, menu_hash_to_str(MENU_LABEL_NETPLAY_MODE), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_MODE), false, @@ -5294,7 +5294,7 @@ static bool setting_append_list_netplay_options( general_read_handler); CONFIG_BOOL( - global->netplay_is_spectate, + global->netplay.is_spectate, menu_hash_to_str(MENU_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_SPECTATOR_MODE_ENABLE), false, @@ -5307,7 +5307,7 @@ static bool setting_append_list_netplay_options( general_read_handler); CONFIG_UINT( - global->netplay_sync_frames, + global->netplay.sync_frames, menu_hash_to_str(MENU_LABEL_NETPLAY_DELAY_FRAMES), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_DELAY_FRAMES), 0, @@ -5320,7 +5320,7 @@ static bool setting_append_list_netplay_options( settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); CONFIG_UINT( - global->netplay_port, + global->netplay.port, menu_hash_to_str(MENU_LABEL_NETPLAY_TCP_UDP_PORT), menu_hash_to_str(MENU_LABEL_VALUE_NETPLAY_TCP_UDP_PORT), RARCH_DEFAULT_PORT, @@ -5691,7 +5691,7 @@ static bool setting_append_list_directory_options( settings->libretro_directory, menu_hash_to_str(MENU_LABEL_LIBRETRO_DIR_PATH), menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_DIR_PATH), - g_defaults.core_dir, + g_defaults.dir.core, menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), group_info.name, subgroup_info.name, @@ -5708,7 +5708,7 @@ static bool setting_append_list_directory_options( settings->libretro_info_path, menu_hash_to_str(MENU_LABEL_LIBRETRO_INFO_PATH), menu_hash_to_str(MENU_LABEL_VALUE_LIBRETRO_INFO_PATH), - g_defaults.core_info_dir, + g_defaults.dir.core_info, menu_hash_to_str(MENU_VALUE_DIRECTORY_NONE), group_info.name, subgroup_info.name, @@ -5807,7 +5807,7 @@ static bool setting_append_list_directory_options( settings->video.shader_dir, menu_hash_to_str(MENU_LABEL_VIDEO_SHADER_DIR), menu_hash_to_str(MENU_LABEL_VALUE_VIDEO_SHADER_DIR), - g_defaults.shader_dir, + g_defaults.dir.shader, menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), group_info.name, subgroup_info.name, @@ -5855,10 +5855,10 @@ static bool setting_append_list_directory_options( } #ifdef HAVE_OVERLAY CONFIG_DIR( - global->overlay_dir, + global->dir.overlay, menu_hash_to_str(MENU_LABEL_OVERLAY_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_OVERLAY_DIRECTORY), - g_defaults.overlay_dir, + g_defaults.dir.overlay, menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), group_info.name, subgroup_info.name, @@ -5871,10 +5871,10 @@ static bool setting_append_list_directory_options( SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); CONFIG_DIR( - global->osk_overlay_dir, + global->dir.osk_overlay, menu_hash_to_str(MENU_LABEL_OSK_OVERLAY_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_OSK_OVERLAY_DIRECTORY), - g_defaults.osk_overlay_dir, + g_defaults.dir.osk_overlay, menu_hash_to_str(MENU_VALUE_DIRECTORY_DEFAULT), group_info.name, subgroup_info.name, @@ -5952,7 +5952,7 @@ static bool setting_append_list_directory_options( SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); CONFIG_DIR( - global->savefile_dir, + global->dir.savefile, menu_hash_to_str(MENU_LABEL_SAVEFILE_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_SAVEFILE_DIRECTORY), "", @@ -5968,7 +5968,7 @@ static bool setting_append_list_directory_options( SD_FLAG_ALLOW_EMPTY | SD_FLAG_PATH_DIR | SD_FLAG_BROWSER_ACTION); CONFIG_DIR( - global->savestate_dir, + global->dir.savestate, menu_hash_to_str(MENU_LABEL_SAVESTATE_DIRECTORY), menu_hash_to_str(MENU_LABEL_VALUE_SAVESTATE_DIRECTORY), "", @@ -6115,7 +6115,7 @@ static bool setting_append_list_input_player_options( if ( settings->input.input_descriptor_label_show && (i < RARCH_FIRST_META_KEY) - && (global->has_set_input_descriptors) + && (global->has_set.input_descriptors) && (i != RARCH_TURBO_ENABLE) ) { diff --git a/menu/menu_shader.c b/menu/menu_shader.c index ede4fe10ff..047874104c 100644 --- a/menu/menu_shader.c +++ b/menu/menu_shader.c @@ -47,11 +47,11 @@ void menu_shader_manager_init(menu_handle_t *menu) shader = (struct video_shader*)menu->shader; - if (*global->core_specific_config_path + if (*global->path.core_specific_config && settings->core_specific_config) - config_path = global->core_specific_config_path; - else if (*global->config_path) - config_path = global->config_path; + config_path = global->path.core_specific_config; + else if (*global->path.config) + config_path = global->path.config; /* In a multi-config setting, we can't have * conflicts on menu.cgp/menu.glslp. */ @@ -236,9 +236,9 @@ void menu_shader_manager_save_preset( strlcpy(buffer, conf_path, sizeof(buffer)); } - if (*global->config_path) + if (*global->path.config) fill_pathname_basedir(config_directory, - global->config_path, sizeof(config_directory)); + global->path.config, sizeof(config_directory)); dirs[0] = settings->video.shader_dir; dirs[1] = settings->menu_config_directory; diff --git a/menu/menu_video.c b/menu/menu_video.c index ac07f7a1bb..91ed5424ad 100644 --- a/menu/menu_video.c +++ b/menu/menu_video.c @@ -129,7 +129,7 @@ void menu_video_frame_background( menu_display_set_viewport(); if ((settings->menu.pause_libretro - || !global->main_is_init || (global->core_type == CORE_TYPE_DUMMY)) + || !global->inited.main || (global->inited.core.type == CORE_TYPE_DUMMY)) && !force_transparency && texture) coords.color = color; diff --git a/netplay.c b/netplay.c index 114f332a3b..4983cc1ad2 100644 --- a/netplay.c +++ b/netplay.c @@ -1655,7 +1655,7 @@ bool init_netplay(void) settings_t *settings = config_get_ptr(); global_t *global = global_get_ptr(); - if (!global->netplay_enable) + if (!global->netplay.enable) return false; if (global->bsv.movie_start_playback) @@ -1666,24 +1666,24 @@ bool init_netplay(void) retro_set_default_callbacks(&cbs); - if (*global->netplay_server) + if (*global->netplay.server) { RARCH_LOG("Connecting to netplay host...\n"); - global->netplay_is_client = true; + global->netplay.is_client = true; } else RARCH_LOG("Waiting for client...\n"); driver->netplay_data = (netplay_t*)netplay_new( - global->netplay_is_client ? global->netplay_server : NULL, - global->netplay_port ? global->netplay_port : RARCH_DEFAULT_PORT, - global->netplay_sync_frames, &cbs, global->netplay_is_spectate, + global->netplay.is_client ? global->netplay.server : NULL, + global->netplay.port ? global->netplay.port : RARCH_DEFAULT_PORT, + global->netplay.sync_frames, &cbs, global->netplay.is_spectate, settings->username); if (driver->netplay_data) return true; - global->netplay_is_client = false; + global->netplay.is_client = false; RARCH_WARN("%s\n", msg_hash_to_str(MSG_NETPLAY_FAILED)); rarch_main_msg_queue_push_new( diff --git a/patch.c b/patch.c index 481fcf2a8f..e2eff32aec 100644 --- a/patch.c +++ b/patch.c @@ -518,42 +518,42 @@ error: static bool try_bps_patch(uint8_t **buf, ssize_t *size) { global_t *global = global_get_ptr(); - bool allow_bps = !global->ups_pref && !global->ips_pref; + bool allow_bps = !global->patch.ups_pref && !global->patch.ips_pref; if (!allow_bps) return false; - if (global->bps_name[0] == '\0') + if (global->name.bps[0] == '\0') return false; - return apply_patch_content(buf, size, "BPS", global->bps_name, + return apply_patch_content(buf, size, "BPS", global->name.bps, bps_apply_patch); } static bool try_ups_patch(uint8_t **buf, ssize_t *size) { global_t *global = global_get_ptr(); - bool allow_ups = !global->bps_pref && !global->ips_pref; + bool allow_ups = !global->patch.bps_pref && !global->patch.ips_pref; if (!allow_ups) return false; - if (global->ups_name[0] == '\0') + if (global->name.ups[0] == '\0') return false; - return apply_patch_content(buf, size, "UPS", global->ups_name, + return apply_patch_content(buf, size, "UPS", global->name.ups, ups_apply_patch); } static bool try_ips_patch(uint8_t **buf, ssize_t *size) { global_t *global = global_get_ptr(); - bool allow_ips = !global->ups_pref && !global->bps_pref; + bool allow_ips = !global->patch.ups_pref && !global->patch.bps_pref; if (!allow_ips) return false; - if (global->ips_name[0] == '\0') + if (global->name.ips[0] == '\0') return false; - return apply_patch_content(buf, size, "IPS", global->ips_name, + return apply_patch_content(buf, size, "IPS", global->name.ips, ips_apply_patch); } @@ -569,7 +569,7 @@ void patch_content(uint8_t **buf, ssize_t *size) { global_t *global = global_get_ptr(); - if (global->ips_pref + global->bps_pref + global->ups_pref > 1) + if (global->patch.ips_pref + global->patch.bps_pref + global->patch.ups_pref > 1) { RARCH_WARN("Several patches are explicitly defined, ignoring all ...\n"); return; diff --git a/record/record_driver.c b/record/record_driver.c index dfbf37e242..779a98d625 100644 --- a/record/record_driver.c +++ b/record/record_driver.c @@ -299,7 +299,7 @@ bool recording_init(void) if (!global->record.enable) return false; - if (global->core_type == CORE_TYPE_DUMMY) + if (global->inited.core.type == CORE_TYPE_DUMMY) { RARCH_WARN(msg_hash_to_str(MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED)); return false; diff --git a/retroarch.c b/retroarch.c index 557a2c85df..fce65e751d 100644 --- a/retroarch.c +++ b/retroarch.c @@ -245,8 +245,8 @@ static void set_basename(const char *path) char *dst = NULL; global_t *global = global_get_ptr(); - strlcpy(global->fullpath, path, sizeof(global->fullpath)); - strlcpy(global->basename, path, sizeof(global->basename)); + strlcpy(global->path.fullpath, path, sizeof(global->path.fullpath)); + strlcpy(global->name.base, path, sizeof(global->name.base)); #ifdef HAVE_COMPRESSION /* Removing extension is a bit tricky for compressed files. @@ -268,11 +268,11 @@ static void set_basename(const char *path) * directory then and the name of srm and states are meaningful. * */ - path_basedir(global->basename); - fill_pathname_dir(global->basename, path, "", sizeof(global->basename)); + path_basedir(global->name.base); + fill_pathname_dir(global->name.base, path, "", sizeof(global->name.base)); #endif - if ((dst = strrchr(global->basename, '.'))) + if ((dst = strrchr(global->name.base, '.'))) *dst = '\0'; } @@ -297,17 +297,17 @@ static void set_special_paths(char **argv, unsigned num_content) /* We defer SRAM path updates until we can resolve it. * It is more complicated for special content types. */ - if (!global->has_set_state_path) - fill_pathname_noext(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); + if (!global->has_set.state_path) + fill_pathname_noext(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); - if (path_is_directory(global->savestate_name)) + if (path_is_directory(global->name.savestate)) { - fill_pathname_dir(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); + fill_pathname_dir(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVESTATE_TO), - global->savestate_name); + global->name.savestate); } /* If this is already set, @@ -337,76 +337,79 @@ void set_paths_redirect(const char *path) (global_library_name_hash != MENU_VALUE_NO_CORE)) { /* per-core saves: append the library_name to the save location */ - if (settings->sort_savefiles_enable && global->savefile_dir[0] != '\0') + if (settings->sort_savefiles_enable && global->dir.savefile[0] != '\0') { - strlcpy(orig_savefile_dir,global->savefile_dir,sizeof(global->savefile_dir)); + strlcpy(orig_savefile_dir,global->dir.savefile, + sizeof(orig_savefile_dir)); fill_pathname_dir( - global->savefile_dir, - global->savefile_dir, + global->dir.savefile, + global->dir.savefile, info->info.library_name, - sizeof(global->savefile_dir)); + sizeof(global->dir.savefile)); /* If path doesn't exist, try to create it, * if everything fails revert to the original path. */ - if(!path_is_directory(global->savefile_dir) && global->savestate_dir[0] != '\0') - if(!path_mkdir(global->savefile_dir)) - strlcpy(global->savefile_dir, + if(!path_is_directory(global->dir.savefile) && global->dir.savestate[0] != '\0') + if(!path_mkdir(global->dir.savefile)) + strlcpy(global->dir.savefile, orig_savefile_dir, - sizeof(global->savefile_dir)); + sizeof(global->dir.savefile)); } /* per-core states: append the library_name to the save location */ - if (settings->sort_savestates_enable && global->savefile_dir[0] != '\0') + if (settings->sort_savestates_enable && global->dir.savefile[0] != '\0') { strlcpy(orig_savestate_dir, - global->savestate_dir, - sizeof(global->savestate_dir)); - fill_pathname_dir(global->savestate_dir, - global->savestate_dir, + global->dir.savestate, + sizeof(orig_savestate_dir)); + fill_pathname_dir(global->dir.savestate, + global->dir.savestate, info->info.library_name, - sizeof(global->savestate_dir)); + sizeof(global->dir.savestate)); /* If path doesn't exist, try to create it. * If everything fails, revert to the original path. */ - if(!path_is_directory(global->savestate_dir)) - if(!path_mkdir(global->savestate_dir)) - strlcpy(global->savestate_dir, + if(!path_is_directory(global->dir.savestate)) + if(!path_mkdir(global->dir.savestate)) + strlcpy(global->dir.savestate, orig_savestate_dir, - sizeof(global->savestate_dir)); + sizeof(global->dir.savestate)); } } - if(path_is_directory(global->savefile_dir)) - strlcpy(global->savefile_name,global->savefile_dir,sizeof(global->savefile_dir)); + if(path_is_directory(global->dir.savefile)) + strlcpy(global->name.savefile, global->dir.savefile, + sizeof(global->name.savefile)); - if(path_is_directory(global->savestate_dir)) - strlcpy(global->savestate_name,global->savestate_dir,sizeof(global->savestate_dir)); + if(path_is_directory(global->dir.savestate)) + strlcpy(global->name.savestate, global->dir.savestate, + sizeof(global->name.savestate)); - if (path_is_directory(global->savefile_name)) + if (path_is_directory(global->name.savefile)) { - fill_pathname_dir(global->savefile_name, global->basename, - ".srm", sizeof(global->savefile_name)); + fill_pathname_dir(global->name.savefile, global->name.base, + ".srm", sizeof(global->name.savefile)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVEFILE_TO), - global->savefile_name); + global->name.savefile); } - if (path_is_directory(global->savestate_name)) + if (path_is_directory(global->name.savestate)) { - fill_pathname_dir(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); + fill_pathname_dir(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVESTATE_TO), - global->savestate_name); + global->name.savestate); } - if (path_is_directory(global->cheatfile_name)) + if (path_is_directory(global->name.cheatfile)) { - fill_pathname_dir(global->cheatfile_name, global->basename, - ".state", sizeof(global->cheatfile_name)); + fill_pathname_dir(global->name.cheatfile, global->name.base, + ".state", sizeof(global->name.cheatfile)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_CHEATFILE_TO), - global->cheatfile_name); + global->name.cheatfile); } } @@ -417,14 +420,14 @@ void rarch_set_paths(const char *path) set_basename(path); - if (!global->has_set_save_path) - fill_pathname_noext(global->savefile_name, global->basename, - ".srm", sizeof(global->savefile_name)); - if (!global->has_set_state_path) - fill_pathname_noext(global->savestate_name, global->basename, - ".state", sizeof(global->savestate_name)); - fill_pathname_noext(global->cheatfile_name, global->basename, - ".cht", sizeof(global->cheatfile_name)); + if (!global->has_set.save_path) + fill_pathname_noext(global->name.savefile, global->name.base, + ".srm", sizeof(global->name.savefile)); + if (!global->has_set.state_path) + fill_pathname_noext(global->name.savestate, global->name.base, + ".state", sizeof(global->name.savestate)); + fill_pathname_noext(global->name.cheatfile, global->name.base, + ".cht", sizeof(global->name.cheatfile)); set_paths_redirect(path); } @@ -555,36 +558,36 @@ static void parse_input(int argc, char *argv[]) { NULL, 0, NULL, 0 } }; - global->libretro_no_content = false; - global->core_type = CORE_TYPE_PLAIN; + global->inited.core.no_content = false; + global->inited.core.type = CORE_TYPE_PLAIN; *global->subsystem = '\0'; - global->has_set_save_path = false; - global->has_set_state_path = false; - global->has_set_libretro = false; - global->has_set_libretro_directory = false; - global->has_set_verbosity = false; + global->has_set.save_path = false; + global->has_set.state_path = false; + global->has_set.libretro = false; + global->has_set.libretro_directory = false; + global->has_set.verbosity = false; - global->has_set_netplay_mode = false; - global->has_set_username = false; - global->has_set_netplay_ip_address = false; - global->has_set_netplay_delay_frames = false; - global->has_set_netplay_ip_port = false; + global->has_set.netplay_mode = false; + global->has_set.username = false; + global->has_set.netplay_ip_address = false; + global->has_set.netplay_delay_frames = false; + global->has_set.netplay_ip_port = false; - global->has_set_ups_pref = false; - global->has_set_bps_pref = false; - global->has_set_ips_pref = false; - global->ups_pref = false; - global->bps_pref = false; - global->ips_pref = false; - *global->ups_name = '\0'; - *global->bps_name = '\0'; - *global->ips_name = '\0'; + global->has_set.ups_pref = false; + global->has_set.bps_pref = false; + global->has_set.ips_pref = false; + global->patch.ups_pref = false; + global->patch.bps_pref = false; + global->patch.ips_pref = false; + *global->name.ups = '\0'; + *global->name.bps = '\0'; + *global->name.ips = '\0'; global->overrides_active = false; if (argc < 2) { - global->core_type = CORE_TYPE_DUMMY; + global->inited.core.type = CORE_TYPE_DUMMY; return; } @@ -627,7 +630,7 @@ static void parse_input(int argc, char *argv[]) rarch_fail(1, "parse_input()"); } settings->input.libretro_device[port - 1] = id; - global->has_set_libretro_device[port - 1] = true; + global->has_set.libretro_device[port - 1] = true; break; } @@ -640,13 +643,13 @@ static void parse_input(int argc, char *argv[]) rarch_fail(1, "parse_input()"); } settings->input.libretro_device[port - 1] = RETRO_DEVICE_ANALOG; - global->has_set_libretro_device[port - 1] = true; + global->has_set.libretro_device[port - 1] = true; break; case 's': - strlcpy(global->savefile_name, optarg, - sizeof(global->savefile_name)); - global->has_set_save_path = true; + strlcpy(global->name.savefile, optarg, + sizeof(global->name.savefile)); + global->has_set.save_path = true; break; case 'f': @@ -654,14 +657,14 @@ static void parse_input(int argc, char *argv[]) break; case 'S': - strlcpy(global->savestate_name, optarg, - sizeof(global->savestate_name)); - global->has_set_state_path = true; + strlcpy(global->name.savestate, optarg, + sizeof(global->name.savestate)); + global->has_set.state_path = true; break; case 'v': global->verbosity = true; - global->has_set_verbosity = true; + global->has_set.verbosity = true; break; case 'N': @@ -673,12 +676,12 @@ static void parse_input(int argc, char *argv[]) rarch_fail(1, "parse_input()"); } settings->input.libretro_device[port - 1] = RETRO_DEVICE_NONE; - global->has_set_libretro_device[port - 1] = true; + global->has_set.libretro_device[port - 1] = true; break; case 'c': - strlcpy(global->config_path, optarg, - sizeof(global->config_path)); + strlcpy(global->path.config, optarg, + sizeof(global->path.config)); break; case 'r': @@ -694,15 +697,15 @@ static void parse_input(int argc, char *argv[]) *settings->libretro = '\0'; strlcpy(settings->libretro_directory, optarg, sizeof(settings->libretro_directory)); - global->has_set_libretro = true; - global->has_set_libretro_directory = true; + global->has_set.libretro = true; + global->has_set.libretro_directory = true; RARCH_WARN("Using old --libretro behavior. Setting libretro_directory to \"%s\" instead.\n", optarg); } else { strlcpy(settings->libretro, optarg, sizeof(settings->libretro)); - global->has_set_libretro = true; + global->has_set.libretro = true; } break; #endif @@ -717,13 +720,13 @@ static void parse_input(int argc, char *argv[]) case 'M': if (!strcmp(optarg, "noload-nosave")) { - global->sram_load_disable = true; - global->sram_save_disable = true; + global->sram.load_disable = true; + global->sram.save_disable = true; } else if (!strcmp(optarg, "noload-save")) - global->sram_load_disable = true; + global->sram.load_disable = true; else if (!strcmp(optarg, "load-nosave")) - global->sram_save_disable = true; + global->sram.save_disable = true; else if (strcmp(optarg, "load-save") != 0) { RARCH_ERR("Invalid argument in --sram-mode.\n"); @@ -734,47 +737,47 @@ static void parse_input(int argc, char *argv[]) #ifdef HAVE_NETPLAY case 'H': - global->has_set_netplay_ip_address = true; - global->netplay_enable = true; - *global->netplay_server = '\0'; + global->has_set.netplay_ip_address = true; + global->netplay.enable = true; + *global->netplay.server = '\0'; break; case 'C': - global->has_set_netplay_ip_address = true; - global->netplay_enable = true; - strlcpy(global->netplay_server, optarg, - sizeof(global->netplay_server)); + global->has_set.netplay_ip_address = true; + global->netplay.enable = true; + strlcpy(global->netplay.server, optarg, + sizeof(global->netplay.server)); break; case 'F': - global->netplay_sync_frames = strtol(optarg, NULL, 0); - global->has_set_netplay_delay_frames = true; + global->netplay.sync_frames = strtol(optarg, NULL, 0); + global->has_set.netplay_delay_frames = true; break; #endif case RA_OPT_BPS: - strlcpy(global->bps_name, optarg, - sizeof(global->bps_name)); - global->bps_pref = true; - global->has_set_bps_pref = true; + strlcpy(global->name.bps, optarg, + sizeof(global->name.bps)); + global->patch.bps_pref = true; + global->has_set.bps_pref = true; break; case 'U': - strlcpy(global->ups_name, optarg, - sizeof(global->ups_name)); - global->ups_pref = true; - global->has_set_ups_pref = true; + strlcpy(global->name.ups, optarg, + sizeof(global->name.ups)); + global->patch.ups_pref = true; + global->has_set.ups_pref = true; break; case RA_OPT_IPS: - strlcpy(global->ips_name, optarg, - sizeof(global->ips_name)); - global->ips_pref = true; - global->has_set_ips_pref = true; + strlcpy(global->name.ips, optarg, + sizeof(global->name.ips)); + global->patch.ips_pref = true; + global->has_set.ips_pref = true; break; case RA_OPT_NO_PATCH: - global->block_patch = true; + global->patch.block_patch = true; break; case 'D': @@ -784,23 +787,23 @@ static void parse_input(int argc, char *argv[]) break; case RA_OPT_MENU: - global->core_type = CORE_TYPE_DUMMY; + global->inited.core.type = CORE_TYPE_DUMMY; break; #ifdef HAVE_NETPLAY case RA_OPT_PORT: - global->has_set_netplay_ip_port = true; - global->netplay_port = strtoul(optarg, NULL, 0); + global->has_set.netplay_ip_port = true; + global->netplay.port = strtoul(optarg, NULL, 0); break; case RA_OPT_SPECTATE: - global->has_set_netplay_mode = true; - global->netplay_is_spectate = true; + global->has_set.netplay_mode = true; + global->netplay.is_spectate = true; break; #endif case RA_OPT_NICK: - global->has_set_username = true; + global->has_set.username = true; strlcpy(settings->username, optarg, sizeof(settings->username)); break; @@ -815,8 +818,8 @@ static void parse_input(int argc, char *argv[]) #endif case RA_OPT_APPENDCONFIG: - strlcpy(global->append_config_path, optarg, - sizeof(global->append_config_path)); + strlcpy(global->path.append_config, optarg, + sizeof(global->path.append_config)); break; case RA_OPT_SIZE: @@ -872,7 +875,7 @@ static void parse_input(int argc, char *argv[]) } } - if (global->core_type == CORE_TYPE_DUMMY) + if (global->inited.core.type == CORE_TYPE_DUMMY) { if (optind < argc) { @@ -885,19 +888,19 @@ static void parse_input(int argc, char *argv[]) else if (*global->subsystem && optind < argc) set_special_paths(argv + optind, argc - optind); else - global->libretro_no_content = true; + global->inited.core.no_content = true; /* Copy SRM/state dirs used, so they can be reused on reentrancy. */ - if (global->has_set_save_path && - path_is_directory(global->savefile_name)) - strlcpy(global->savefile_dir, global->savefile_name, - sizeof(global->savefile_dir)); + if (global->has_set.save_path && + path_is_directory(global->name.savefile)) + strlcpy(global->dir.savefile, global->name.savefile, + sizeof(global->dir.savefile)); - if (global->has_set_state_path && - path_is_directory(global->savestate_name)) - strlcpy(global->savestate_dir, global->savestate_name, - sizeof(global->savestate_dir)); + if (global->has_set.state_path && + path_is_directory(global->name.savestate)) + strlcpy(global->dir.savestate, global->name.savestate, + sizeof(global->dir.savestate)); } static void rarch_init_savefile_paths(void) @@ -926,7 +929,7 @@ static void rarch_init_savefile_paths(void) global->subsystem_fullpaths ? global->subsystem_fullpaths->size : 0); - bool use_sram_dir = path_is_directory(global->savefile_dir); + bool use_sram_dir = path_is_directory(global->dir.savefile); for (i = 0; i < num_content; i++) { @@ -944,7 +947,7 @@ static void rarch_init_savefile_paths(void) if (use_sram_dir) { /* Redirect content fullpath to save directory. */ - strlcpy(path, global->savefile_dir, sizeof(path)); + strlcpy(path, global->dir.savefile, sizeof(path)); fill_pathname_dir(path, global->subsystem_fullpaths->elems[i].data, ext, sizeof(path)); @@ -961,16 +964,16 @@ static void rarch_init_savefile_paths(void) } /* Let other relevant paths be inferred from the main SRAM location. */ - if (!global->has_set_save_path) - fill_pathname_noext(global->savefile_name, global->basename, ".srm", - sizeof(global->savefile_name)); - if (path_is_directory(global->savefile_name)) + if (!global->has_set.save_path) + fill_pathname_noext(global->name.savefile, global->name.base, ".srm", + sizeof(global->name.savefile)); + if (path_is_directory(global->name.savefile)) { - fill_pathname_dir(global->savefile_name, global->basename, ".srm", - sizeof(global->savefile_name)); + fill_pathname_dir(global->name.savefile, global->name.base, ".srm", + sizeof(global->name.savefile)); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_REDIRECTING_SAVEFILE_TO), - global->savefile_name); + global->name.savefile); } } else @@ -979,12 +982,12 @@ static void rarch_init_savefile_paths(void) char savefile_name_rtc[PATH_MAX_LENGTH] = {0}; attr.i = RETRO_MEMORY_SAVE_RAM; - string_list_append(global->savefiles, global->savefile_name, attr); + string_list_append(global->savefiles, global->name.savefile, attr); /* Infer .rtc save path from save ram path. */ attr.i = RETRO_MEMORY_RTC; fill_pathname(savefile_name_rtc, - global->savefile_name, ".rtc", sizeof(savefile_name_rtc)); + global->name.savefile, ".rtc", sizeof(savefile_name_rtc)); string_list_append(global->savefiles, savefile_name_rtc, attr); } } @@ -994,21 +997,21 @@ void rarch_fill_pathnames(void) global_t *global = global_get_ptr(); rarch_init_savefile_paths(); - fill_pathname(global->bsv.movie_path, global->savefile_name, "", + strlcpy(global->bsv.movie_path, global->name.savefile, sizeof(global->bsv.movie_path)); - if (!*global->basename) + if (!*global->name.base) return; - if (!*global->ups_name) - fill_pathname_noext(global->ups_name, global->basename, ".ups", - sizeof(global->ups_name)); - if (!*global->bps_name) - fill_pathname_noext(global->bps_name, global->basename, ".bps", - sizeof(global->bps_name)); - if (!*global->ips_name) - fill_pathname_noext(global->ips_name, global->basename, ".ips", - sizeof(global->ips_name)); + if (!*global->name.ups) + fill_pathname_noext(global->name.ups, global->name.base, ".ups", + sizeof(global->name.ups)); + if (!*global->name.bps) + fill_pathname_noext(global->name.bps, global->name.base, ".bps", + sizeof(global->name.bps)); + if (!*global->name.ips) + fill_pathname_noext(global->name.ips, global->name.base, ".ips", + sizeof(global->name.ips)); } static bool init_state(void) @@ -1029,7 +1032,7 @@ static void main_clear_state_drivers(void) bool inited = false; if (!global) return; - inited = global->main_is_init; + inited = global->inited.main; if (!inited) return; @@ -1181,8 +1184,8 @@ int rarch_main_init(int argc, char *argv[]) RARCH_ERR("Fatal error received in: \"%s\"\n", global->error_string); return sjlj_ret; } - global->error_in_init = true; - global->log_file = stderr; + global->inited.error = true; + global->log_file = stderr; parse_input(argc, argv); if (global->verbosity) @@ -1209,15 +1212,15 @@ int rarch_main_init(int argc, char *argv[]) if (settings && (settings->multimedia.builtin_mediaplayer_enable || settings->multimedia.builtin_imageviewer_enable)) { - switch (rarch_path_is_media_type(global->fullpath)) + switch (rarch_path_is_media_type(global->path.fullpath)) { case RARCH_CONTENT_MOVIE: case RARCH_CONTENT_MUSIC: if (settings->multimedia.builtin_mediaplayer_enable) { #ifdef HAVE_FFMPEG - global->has_set_libretro = false; - global->core_type = CORE_TYPE_FFMPEG; + global->has_set.libretro = false; + global->inited.core.type = CORE_TYPE_FFMPEG; #endif } break; @@ -1225,8 +1228,8 @@ int rarch_main_init(int argc, char *argv[]) case RARCH_CONTENT_IMAGE: if (settings->multimedia.builtin_imageviewer_enable) { - global->has_set_libretro = false; - global->core_type = CORE_TYPE_IMAGEVIEWER; + global->has_set.libretro = false; + global->inited.core.type = CORE_TYPE_IMAGEVIEWER; } break; #endif @@ -1236,7 +1239,7 @@ int rarch_main_init(int argc, char *argv[]) } } - init_libretro_sym(global->core_type); + init_libretro_sym(global->inited.core.type); rarch_system_info_init(); init_drivers_pre(); @@ -1278,14 +1281,14 @@ int rarch_main_init(int argc, char *argv[]) } #endif - global->error_in_init = false; - global->main_is_init = true; + global->inited.error = false; + global->inited.main = true; return 0; error: event_command(EVENT_CMD_CORE_DEINIT); - global->main_is_init = false; + global->inited.main = false; return 1; } @@ -1476,7 +1479,7 @@ void rarch_main_deinit(void) event_command(EVENT_CMD_NETPLAY_DEINIT); event_command(EVENT_CMD_COMMAND_DEINIT); - if (global->use_sram) + if (global->sram.use) event_command(EVENT_CMD_AUTOSAVE_DEINIT); event_command(EVENT_CMD_RECORD_DEINIT); @@ -1494,7 +1497,7 @@ void rarch_main_deinit(void) event_command(EVENT_CMD_SUBSYSTEM_FULLPATHS_DEINIT); event_command(EVENT_CMD_SAVEFILES_DEINIT); - global->main_is_init = false; + global->inited.main = false; } /** @@ -1573,7 +1576,7 @@ int rarch_defer_core(core_info_list_t *core_info, const char *dir, if (menu_label_hash == MENU_LABEL_LOAD_CONTENT) { - info = (const core_info_t*)&global->core_info_current; + info = (const core_info_t*)&global->core_info.current; if (info) { @@ -1589,7 +1592,7 @@ int rarch_defer_core(core_info_list_t *core_info, const char *dir, if (supported != 1) return 0; - strlcpy(global->fullpath, s, sizeof(global->fullpath)); + strlcpy(global->path.fullpath, s, sizeof(global->path.fullpath)); if (path_file_exists(new_core_path)) strlcpy(settings->libretro, new_core_path, @@ -1624,13 +1627,13 @@ bool rarch_replace_config(const char *path) /* If config file to be replaced is the same as the * current config file, exit. */ - if (!strcmp(path, global->config_path)) + if (!strcmp(path, global->path.config)) return false; - if (settings->config_save_on_exit && *global->config_path) - config_save_file(global->config_path); + if (settings->config_save_on_exit && *global->path.config) + config_save_file(global->path.config); - strlcpy(global->config_path, path, sizeof(global->config_path)); + strlcpy(global->path.config, path, sizeof(global->path.config)); global->block_config_read = false; *settings->libretro = '\0'; /* Load core in new config. */ diff --git a/runloop.c b/runloop.c index a22a64097b..a3f689f0fc 100644 --- a/runloop.c +++ b/runloop.c @@ -423,7 +423,7 @@ static void do_state_check_menu_toggle(settings_t *settings, global_t *global) { if (menu_driver_alive()) { - if (global->main_is_init && (global->core_type != CORE_TYPE_DUMMY)) + if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY)) rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); return; } @@ -459,7 +459,7 @@ static int do_pre_state_checks(settings_t *settings, event_command(EVENT_CMD_GRAB_MOUSE_TOGGLE); #ifdef HAVE_MENU - if (cmd->menu_pressed || (global->core_type == CORE_TYPE_DUMMY)) + if (cmd->menu_pressed || (global->inited.core.type == CORE_TYPE_DUMMY)) do_state_check_menu_toggle(settings, global); #endif @@ -751,7 +751,7 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver, if (!driver->input || !driver->input_data) return 0; - global->turbo_count++; + global->turbo.count++; driver->block_libretro_input = check_block_hotkey(driver, settings, driver->input->key_pressed( @@ -764,13 +764,13 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver, input_push_analog_dpad(settings->input.autoconf_binds[i], settings->input.analog_dpad_mode[i]); - global->turbo_frame_enable[i] = 0; + global->turbo.frame_enable[i] = 0; } if (!driver->block_libretro_input) { for (i = 0; i < settings->input.max_users; i++) - global->turbo_frame_enable[i] = input_driver_state(binds, + global->turbo.frame_enable[i] = input_driver_state(binds, i, RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE); } diff --git a/runloop.h b/runloop.h index 1fb7dc9242..9b914e3205 100644 --- a/runloop.h +++ b/runloop.h @@ -74,45 +74,65 @@ typedef struct global struct string_list *temporary_content; - core_info_list_t *core_info; - core_info_t *core_info_current; + struct + { + core_info_list_t *list; + core_info_t *current; + } core_info; uint32_t content_crc; - char gb_rom_path[PATH_MAX_LENGTH]; - char bsx_rom_path[PATH_MAX_LENGTH]; - char sufami_rom_path[2][PATH_MAX_LENGTH]; - bool has_set_input_descriptors; - bool has_set_save_path; - bool has_set_state_path; - bool has_set_libretro_device[MAX_USERS]; - bool has_set_libretro; - bool has_set_libretro_directory; - bool has_set_verbosity; + struct + { + char gb_rom[PATH_MAX_LENGTH]; + char bsx_rom[PATH_MAX_LENGTH]; + char sufami_rom[2][PATH_MAX_LENGTH]; + /* Config associated with global "default" config. */ + char config[PATH_MAX_LENGTH]; + char append_config[PATH_MAX_LENGTH]; + char input_config[PATH_MAX_LENGTH]; +#ifdef HAVE_FILE_LOGGER + char default_log[PATH_MAX_LENGTH]; +#endif + char fullpath[PATH_MAX_LENGTH]; + /* Config file associated with per-core configs. */ + char core_specific_config[PATH_MAX_LENGTH]; + } path; - bool has_set_netplay_mode; - bool has_set_username; - bool has_set_netplay_ip_address; - bool has_set_netplay_delay_frames; - bool has_set_netplay_ip_port; + struct + { + bool input_descriptors; + bool save_path; + bool state_path; + bool libretro_device[MAX_USERS]; + bool libretro; + bool libretro_directory; + bool verbosity; + + bool netplay_mode; + bool username; + bool netplay_ip_address; + bool netplay_delay_frames; + bool netplay_ip_port; + + bool ups_pref; + bool bps_pref; + bool ips_pref; + } has_set; - bool has_set_ups_pref; - bool has_set_bps_pref; - bool has_set_ips_pref; bool overrides_active; - /* Config associated with global "default" config. */ - char config_path[PATH_MAX_LENGTH]; - char append_config_path[PATH_MAX_LENGTH]; - char input_config_path[PATH_MAX_LENGTH]; - -#ifdef HAVE_FILE_LOGGER - char default_log_file[PATH_MAX_LENGTH]; -#endif - - char basename[PATH_MAX_LENGTH]; - char fullpath[PATH_MAX_LENGTH]; + struct + { + char base[PATH_MAX_LENGTH]; + char savefile[PATH_MAX_LENGTH]; + char savestate[PATH_MAX_LENGTH]; + char cheatfile[PATH_MAX_LENGTH]; + char ups[PATH_MAX_LENGTH]; + char bps[PATH_MAX_LENGTH]; + char ips[PATH_MAX_LENGTH]; + } name; /* A list of save types and associated paths for all content. */ struct string_list *savefiles; @@ -121,26 +141,24 @@ typedef struct global char subsystem[PATH_MAX_LENGTH]; struct string_list *subsystem_fullpaths; - char savefile_name[PATH_MAX_LENGTH]; - char savestate_name[PATH_MAX_LENGTH]; - char cheatfile_name[PATH_MAX_LENGTH]; - - /* Used on reentrancy to use a savestate dir. */ - char savefile_dir[PATH_MAX_LENGTH]; - char savestate_dir[PATH_MAX_LENGTH]; - + struct + { + /* Used on reentrancy to use a savestate dir. */ + char savefile[PATH_MAX_LENGTH]; + char savestate[PATH_MAX_LENGTH]; #ifdef HAVE_OVERLAY - char overlay_dir[PATH_MAX_LENGTH]; - char osk_overlay_dir[PATH_MAX_LENGTH]; + char overlay[PATH_MAX_LENGTH]; + char osk_overlay[PATH_MAX_LENGTH]; #endif + } dir; - bool block_patch; - bool ups_pref; - bool bps_pref; - bool ips_pref; - char ups_name[PATH_MAX_LENGTH]; - char bps_name[PATH_MAX_LENGTH]; - char ips_name[PATH_MAX_LENGTH]; + struct + { + bool block_patch; + bool ups_pref; + bool bps_pref; + bool ips_pref; + } patch; struct { @@ -180,28 +198,39 @@ typedef struct global bool movie_end; } bsv; - bool sram_load_disable; - bool sram_save_disable; - bool use_sram; - + struct + { + bool load_disable; + bool save_disable; + bool use; + } sram; /* Turbo support. */ - bool turbo_frame_enable[MAX_USERS]; - uint16_t turbo_enable[MAX_USERS]; - unsigned turbo_count; + struct + { + bool frame_enable[MAX_USERS]; + uint16_t enable[MAX_USERS]; + unsigned count; + } turbo; /* Autosave support. */ - autosave_t **autosave; - unsigned num_autosave; + struct + { + autosave_t **list; + unsigned num; + } autosave; #ifdef HAVE_NETPLAY /* Netplay. */ - char netplay_server[PATH_MAX_LENGTH]; - bool netplay_enable; - bool netplay_is_client; - bool netplay_is_spectate; - unsigned netplay_sync_frames; - unsigned netplay_port; + struct + { + char server[PATH_MAX_LENGTH]; + bool enable; + bool is_client; + bool is_spectate; + unsigned sync_frames; + unsigned port; + } netplay; #endif /* Recording. */ @@ -275,18 +304,20 @@ typedef struct global * will write to this file. */ FILE *log_file; - bool main_is_init; - bool content_is_init; - bool error_in_init; - char error_string[PATH_MAX_LENGTH]; + struct + { + bool main; + bool content; + bool error; + struct + { + bool no_content; + enum rarch_core_type type; + } core; + } inited; + jmp_buf error_sjlj_context; - - bool libretro_no_content; - enum rarch_core_type core_type; - - /* Config file associated with per-core configs. */ - char core_specific_config_path[PATH_MAX_LENGTH]; - + char error_string[PATH_MAX_LENGTH]; retro_keyboard_event_t frontend_key_event; } global_t; diff --git a/screenshot.c b/screenshot.c index f5beade3c4..44793c15e7 100644 --- a/screenshot.c +++ b/screenshot.c @@ -203,7 +203,7 @@ static bool take_screenshot_viewport(void) if (!*settings->screenshot_directory) { - fill_pathname_basedir(screenshot_path, global->basename, + fill_pathname_basedir(screenshot_path, global->name.base, sizeof(screenshot_path)); screenshot_dir = screenshot_path; } @@ -237,7 +237,7 @@ static bool take_screenshot_raw(void) if (!*settings->screenshot_directory) { - fill_pathname_basedir(screenshot_path, global->basename, + fill_pathname_basedir(screenshot_path, global->name.base, sizeof(screenshot_path)); screenshot_dir = screenshot_path; } @@ -268,7 +268,7 @@ bool take_screenshot(void) (const struct retro_hw_render_callback*)video_driver_callback(); /* No way to infer screenshot directory. */ - if ((!*settings->screenshot_directory) && (!*global->basename)) + if ((!*settings->screenshot_directory) && (!*global->name.base)) return false; viewport_read = (settings->video.gpu_screenshot || diff --git a/tasks/task_http.c b/tasks/task_http.c index 73af83fca5..125275c6fd 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -230,7 +230,7 @@ static int cb_update_databases(void *data, size_t len) static int cb_update_overlays(void *data, size_t len) { global_t *global = global_get_ptr(); - return cb_generic_download(data, len, global->overlay_dir); + return cb_generic_download(data, len, global->dir.overlay); } static int cb_update_cheats(void *data, size_t len)