From 671aa0f59c4e344af5f7d73c420cca5dbd27a3dd Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 26 Aug 2016 09:43:29 -0500 Subject: [PATCH] (ovr) add game overrides too --- command.c | 7 ++++-- command.h | 3 ++- configuration.c | 48 ++++++++++++++++------------------------- configuration.h | 4 ++-- intl/msg_hash_us.c | 10 ++++++--- menu/menu_displaylist.c | 5 ++++- menu/menu_setting.c | 18 ++++++++++++---- msg_hash.h | 6 ++++-- 8 files changed, 57 insertions(+), 44 deletions(-) diff --git a/command.c b/command.c index 1a5283f1c9..a2d5a0bec3 100644 --- a/command.c +++ b/command.c @@ -1613,7 +1613,7 @@ void command_event_save_current_config(int override_type) bool ret = false; char msg[128] = {0}; - ret = config_save_file_diff(override_type); + ret = config_save_overrides(override_type); return; } } @@ -2318,9 +2318,12 @@ bool command_event(enum event_command cmd, void *data) case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG: command_event_save_current_config(OVERRIDE_NONE); break; - case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE: + case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE: command_event_save_current_config(OVERRIDE_CORE); break; + case CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME: + command_event_save_current_config(OVERRIDE_GAME); + break; case CMD_EVENT_MENU_SAVE_CONFIG: if (!command_event_save_core_config()) return false; diff --git a/command.h b/command.h index 5e90d7f5fb..0771f4fc33 100644 --- a/command.h +++ b/command.h @@ -141,7 +141,8 @@ enum event_command CMD_EVENT_PAUSE, CMD_EVENT_PAUSE_CHECKS, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG, - CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE, + CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, + CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, CMD_EVENT_MENU_SAVE_CONFIG, CMD_EVENT_MENU_PAUSE_LIBRETRO, /* Toggles menu on/off. */ diff --git a/configuration.c b/configuration.c index 0cd1ac88f6..41e171981c 100644 --- a/configuration.c +++ b/configuration.c @@ -3386,24 +3386,25 @@ bool config_save_file(const char *path) } /** - * config_save_file: + * config_save_overrides: * @path : Path that shall be written to. * - * Writes a config file to disk. + * Writes a config file override to disk. * * Returns: true (1) on success, otherwise returns false (0). **/ -bool config_save_file_diff(int override_type) +bool config_save_overrides(int override_type) { unsigned i = 0; bool ret = false; - char buf[PATH_MAX_LENGTH] = {0}; - char config_directory[PATH_MAX_LENGTH] = {0}; - char core_path[PATH_MAX_LENGTH] = {0}; - char game_path[PATH_MAX_LENGTH] = {0}; - const char *core_name = NULL; - const char *game_name = NULL; - config_file_t *conf = NULL; + char buf[PATH_MAX_LENGTH] = {0}; + char config_directory[PATH_MAX_LENGTH] = {0}; + char override_directory[PATH_MAX_LENGTH] = {0}; + char core_path[PATH_MAX_LENGTH] = {0}; + char game_path[PATH_MAX_LENGTH] = {0}; + const char *core_name = NULL; + const char *game_name = NULL; + config_file_t *conf = NULL; global_t *global = global_get_ptr(); settings_t *overrides = config_get_ptr(); @@ -3454,6 +3455,12 @@ bool config_save_file_diff(int override_type) fill_pathname_application_special(config_directory, sizeof(config_directory), APPLICATION_SPECIAL_DIRECTORY_CONFIG); + fill_pathname_join(override_directory, config_directory, core_name, + sizeof(override_directory)); + + if(!path_file_exists(override_directory)) + path_mkdir(override_directory); + /* Concatenate strings into full paths for core_path, game_path */ fill_pathname_join_special_ext(game_path, config_directory, core_name, @@ -3467,36 +3474,20 @@ bool config_save_file_diff(int override_type) file_path_str(FILE_PATH_CONFIG_EXTENSION), sizeof(core_path)); - if (override_type == OVERRIDE_CORE) - { - RARCH_LOG ("[overrides] path %s\n", core_path); - /* Create a new config file from core_path */ - conf = config_file_new(core_path); - } - else if(override_type == OVERRIDE_GAME) - { - RARCH_LOG ("[overrides] path %s\n", game_path); - /* Create a new config file from core_path */ - conf = config_file_new(game_path); - } - else - return false; + if (!conf) + conf = config_file_new(NULL); /* Load the original config file in memory */ config_load_file(global->path.config, false, settings); bool_settings_size = populate_settings_bool(settings, bool_settings); populate_settings_bool (overrides, bool_overrides); - int_settings_size = populate_settings_int(settings, int_settings); populate_settings_int (overrides, int_overrides); - float_settings_size = populate_settings_float(settings, float_settings); populate_settings_float (overrides, float_overrides); - string_settings_size = populate_settings_string(settings, string_settings); populate_settings_string (overrides, string_overrides); - path_settings_size = populate_settings_path(settings, path_settings); populate_settings_path (overrides, path_overrides); @@ -3579,7 +3570,6 @@ bool config_save_file_diff(int override_type) else return false; - free(bool_settings); free(bool_overrides); free(int_settings); diff --git a/configuration.h b/configuration.h index e07771d38f..a8729f807f 100644 --- a/configuration.h +++ b/configuration.h @@ -658,14 +658,14 @@ bool config_save_autoconf_profile(const char *path, unsigned user); bool config_save_file(const char *path); /** - * config_save_file_diff: + * config_save_overrides: * @path : Path that shall be written to. * * Writes a config file override to disk. * * Returns: true (1) on success, otherwise returns false (0). **/ -bool config_save_file_diff(int override_type); +bool config_save_overrides(int override_type); /* Replaces currently loaded configuration file with * another one. Will load a dummy core to flush state diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index 9727242ee8..6bcfadc6c3 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -2064,8 +2064,10 @@ static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg) return "input_small_keyboard_enable"; case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG: return "save_current_config"; - case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE: - return "save_current_config_override"; + case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE: + return "save_current_config_override_core"; + case MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME: + return "save_current_config_override_game"; case MENU_ENUM_LABEL_STATE_SLOT: return "state_slot"; case MENU_ENUM_LABEL_CHEEVOS_USERNAME: @@ -3441,8 +3443,10 @@ const char *msg_hash_to_str_us(enum msg_hash_enums msg) return "Keyboard Gamepad Mapping Type"; case MENU_ENUM_LABEL_VALUE_INPUT_SMALL_KEYBOARD_ENABLE: return "Small Keyboard Enable"; - case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE: + case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE: return "Save Core Overrides"; + case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME: + return "Save Game Overrides"; case MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG: return "Save Current Config"; case MENU_ENUM_LABEL_VALUE_STATE_SLOT: diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 8334080ae4..e37375de44 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4374,7 +4374,10 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data) MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, PARSE_ACTION, false); menu_displaylist_parse_settings_enum(menu, info, - MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE, + MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, + PARSE_ACTION, false); + menu_displaylist_parse_settings_enum(menu, info, + MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, PARSE_ACTION, false); menu_displaylist_parse_settings_enum(menu, info, MENU_ENUM_LABEL_SAVE_NEW_CONFIG, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index d20c54608f..658077118d 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4165,13 +4165,23 @@ static bool setting_append_list( CONFIG_ACTION( list, list_info, - msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE), - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE), + msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE), &group_info, &subgroup_info, parent_group); - menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE); - menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE); + menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_CORE); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE); + + CONFIG_ACTION( + list, list_info, + msg_hash_to_str(MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME), + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME), + &group_info, + &subgroup_info, + parent_group); + menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_MENU_SAVE_CURRENT_CONFIG_OVERRIDE_GAME); + menu_settings_list_current_add_enum_idx(list, list_info, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME); CONFIG_ACTION( list, list_info, diff --git a/msg_hash.h b/msg_hash.h index 4c0dbf3e7d..204476de23 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1773,9 +1773,11 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC, MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG, - MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE, + MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, + MENU_ENUM_LABEL_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG, - MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE, + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_CORE, + MENU_ENUM_LABEL_VALUE_SAVE_CURRENT_CONFIG_OVERRIDE_GAME, MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS, MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_TITLE_SCREENS,