From 6f657ccdeb09705178b7a287fb9994dba531bb2c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 14 Jun 2015 16:11:46 +0200 Subject: [PATCH] (menu_setting.c) Refactor away some strcmp usage --- menu/menu_hash.h | 1 + menu/menu_setting.c | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/menu/menu_hash.h b/menu/menu_hash.h index 5f4fb2fc7c..0959cb1308 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -189,6 +189,7 @@ extern "C" { #define MENU_VALUE_FILE 0x6a496536U #define MENU_VALUE_RDB 0x0b00f54eU #define MENU_VALUE_DIR 0x0af95f55U +#define MENU_VALUE_NO_CORE 0x7d5472cbU #define MENU_LABEL_CONTENT_ACTIONS 0xa0d76970U #define MENU_LABEL_DETECT_CORE_LIST 0xaa07c341U diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 81a36aaaa4..bf1f066cc6 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -500,6 +500,7 @@ static void setting_reset_setting(rarch_setting_t* setting) int setting_set_with_string_representation(rarch_setting_t* setting, const char* value) { + uint32_t value_hash; if (!setting || !value) return -1; @@ -542,10 +543,17 @@ int setting_set_with_string_representation(rarch_setting_t* setting, strlcpy(setting->value.string, value, setting->size); break; case ST_BOOL: - if (!strcmp(value, "true")) - *setting->value.boolean = true; - else if (!strcmp(value, "false")) - *setting->value.boolean = false; + value_hash = djb2_calculate(value); + + switch (value_hash) + { + case MENU_VALUE_TRUE: + *setting->value.boolean = true; + break; + case MENU_VALUE_FALSE: + *setting->value.boolean = false; + break; + } break; /* TODO */ @@ -3573,8 +3581,9 @@ static bool setting_append_list_main_menu_options( { struct retro_system_info *info = (struct retro_system_info*) global ? &global->system.info : NULL; + uint32_t info_library_name_hash = info ? djb2_calculate(info->library_name) : 0; - if (info && strcmp(info->library_name, "No Core") != 0) + if (info && (info_library_name_hash == MENU_VALUE_NO_CORE)) CONFIG_ACTION( "unload_core", "Unload Core",