From 8bbfd52a5e8d1d84b7700f54700517454d785311 Mon Sep 17 00:00:00 2001 From: Tim Van den Langenbergh Date: Sun, 28 Jul 2019 11:55:46 +0200 Subject: [PATCH] Implement changes for Android, Xcode, C89 & CXX. Fix bad match in removal of parens and brackets. Use libretro string comparison features instead of a long char-wise comparison. --- griffin/griffin.c | 5 ++ .../playlists/label_sanitization.c | 68 ++++--------------- menu/cbs/menu_cbs_get_value.c | 6 +- menu/cbs/menu_cbs_left.c | 2 +- menu/cbs/menu_cbs_ok.c | 4 +- menu/cbs/menu_cbs_right.c | 2 +- menu/menu_displaylist.c | 9 +-- playlist.c | 2 +- 8 files changed, 34 insertions(+), 64 deletions(-) diff --git a/griffin/griffin.c b/griffin/griffin.c index 986abcdbe6..093589cbcf 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -1618,3 +1618,8 @@ SSL #ifdef HAVE_EASTEREGG #include "../cores/libretro-gong/gong.c" #endif + +/*============================================================ +PLAYLIST NAME SANITIZATION +============================================================ */ +#include "../libretro-common/playlists/label-sanitization.c" diff --git a/libretro-common/playlists/label_sanitization.c b/libretro-common/playlists/label_sanitization.c index 91ca5bd2fb..e47da1160d 100644 --- a/libretro-common/playlists/label_sanitization.c +++ b/libretro-common/playlists/label_sanitization.c @@ -21,6 +21,7 @@ */ #include +#include #include /* @@ -37,7 +38,7 @@ void label_sanitize(char *label, size_t size, bool (*left)(char*), bool (*right) { if (copy) { - // check for the start of the range + /* check for the start of the range */ if ((*left)(&label[lindex])) copy = false; @@ -80,35 +81,17 @@ bool left_parens_or_brackets(char *left) bool right_parens_or_brackets(char *right) { - return right[0] == ']' || right[0] == ']'; + return right[0] == ')' || right[0] == ']'; } bool left_parens_or_brackets_excluding_region(char *left) { if (left_parens_or_brackets(left)) { - if ((left[1] == 'A' - && left[2] == 'u' - && left[3] == 's' - && left[4] == 'r' - && left[5] == 'a' - && left[6] == 'l' - && left[7] == 'i' - && left[8] == 'a') - || (left[1] == 'E' - && left[2] == 'u' - && left[3] == 'r' - && left[4] == 'o' - && left[5] == 'p' - && left[6] == 'e') - || (left[1] == 'J' - && left[2] == 'a' - && left[3] == 'p' - && left[4] == 'a' - && left[5] == 'n') - || (left[1] == 'U' - && left[2] == 'S' - && left[3] == 'A')) + if (string_is_equal_fast(&left[1], "Australia", 9) + || string_is_equal_fast(&left[1], "Europe", 6) + || string_is_equal_fast(&left[1], "Japan", 5) + || string_is_equal_fast(&left[1], "USA", 3)) return false; else return true; @@ -121,10 +104,7 @@ bool left_parens_or_brackets_excluding_disc(char *left) { if (left_parens_or_brackets(left)) { - if (left[1] == 'D' - && left[2] == 'i' - && left[3] == 's' - && left[4] == 'c') + if (string_is_equal_fast(&left[1], "Disc", 4)) return false; else return true; @@ -137,32 +117,11 @@ bool left_parens_or_brackets_excluding_region_or_disc(char *left) { if (left_parens_or_brackets(left)) { - if ((left[1] == 'A' - && left[2] == 'u' - && left[3] == 's' - && left[4] == 'r' - && left[5] == 'a' - && left[6] == 'l' - && left[7] == 'i' - && left[8] == 'a') - || (left[1] == 'E' - && left[2] == 'u' - && left[3] == 'r' - && left[4] == 'o' - && left[5] == 'p' - && left[6] == 'e') - || (left[1] == 'J' - && left[2] == 'a' - && left[3] == 'p' - && left[4] == 'a' - && left[5] == 'n') - || (left[1] == 'U' - && left[2] == 'S' - && left[3] == 'A') - || (left[1] == 'D' - && left[2] == 'i' - && left[3] == 's' - && left[4] == 'c')) + if (string_is_equal_fast(&left[1], "Australia", 9) + || string_is_equal_fast(&left[1], "Disc", 4) + || string_is_equal_fast(&left[1], "Europe", 6) + || string_is_equal_fast(&left[1], "Japan", 5) + || string_is_equal_fast(&left[1], "USA", 3)) return false; else return true; @@ -174,6 +133,7 @@ bool left_parens_or_brackets_excluding_region_or_disc(char *left) void label_default_display(char *label, size_t size) { return; + /* The default display will keep the label the same. */ } void label_remove_parens(char *label, size_t size) diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index 96dd2234ad..d71d7cfc11 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -1113,7 +1113,11 @@ static void menu_action_setting_disp_set_label_playlist_label_display_mode( strlcpy(s2, path, len2); - strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT + label_display_mode * 3), len); + int msg_index = (int)label_display_mode; + msg_index = msg_index * 3; + msg_index = msg_index + (int)MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT; + + strlcpy(s, msg_hash_to_str((enum msg_hash_enums)msg_index), len); } static void menu_action_setting_disp_set_label_core_options(file_list_t* list, diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index ebf714924d..007dd1eebb 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -445,7 +445,7 @@ static int playlist_label_display_mode_left(unsigned type, const char *label, enum playlist_label_display_mode label_display_mode = playlist_get_label_display_mode(playlist); if (label_display_mode != LABEL_DISPLAY_MODE_DEFAULT) - label_display_mode--; + label_display_mode = (enum playlist_label_display_mode)((int)label_display_mode - 1); else if (wraparound) label_display_mode = LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index e865100e27..b6f506f1c2 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -2919,7 +2919,7 @@ static int action_ok_core_deferred_set(const char *new_core_path, strlcpy(resolved_core_path, new_core_path, sizeof(resolved_core_path)); playlist_resolve_path(PLAYLIST_SAVE, resolved_core_path, sizeof(resolved_core_path)); - /* the update function reads our entry + /* the update function reads our entry * as const, so these casts are safe */ entry.core_path = (char*)resolved_core_path; entry.core_name = core_display_name; @@ -5375,7 +5375,7 @@ static int action_ok_push_dropdown_item_playlist_label_display_mode(const char * { playlist_t *playlist = playlist_get_cached(); - playlist_set_label_display_mode(playlist, idx); + playlist_set_label_display_mode(playlist, (enum playlist_label_display_mode)idx); /* In all cases, update file on disk */ playlist_write_file(playlist); diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 4841a5d5a8..f371fbe8f2 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -558,7 +558,7 @@ static int playlist_label_display_mode_right(unsigned type, const char *label, enum playlist_label_display_mode label_display_mode = playlist_get_label_display_mode(playlist); if (label_display_mode != LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX) - label_display_mode++; + label_display_mode = (enum playlist_label_display_mode)((int)label_display_mode + 1); else if (wraparound) label_display_mode = LABEL_DISPLAY_MODE_DEFAULT; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 4c2a1ffce3..1a449571d8 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3521,7 +3521,7 @@ typedef struct menu_displaylist_build_info_selective { enum msg_hash_enums enum_idx; enum menu_displaylist_parse_type parse_type; bool checked; -} menu_displaylist_build_info_selective_t; +} menu_displaylist_build_info_selective_t; unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ctl_state type) { @@ -3752,11 +3752,12 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct if (playlist) { enum playlist_label_display_mode label_display_mode = playlist_get_label_display_mode(playlist); + int i; - for (int i = 0; MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT + i != MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX; i += 3) + for (i = 0; MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT + i != MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_KEEP_REGION_AND_DISC_INDEX; i += 3) { if (menu_entries_append_enum(list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT + i), + msg_hash_to_str((enum msg_hash_enums)((int)MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_DEFAULT + i)), "", MENU_ENUM_LABEL_NO_ITEMS, MENU_SETTING_DROPDOWN_ITEM_PLAYLIST_LABEL_DISPLAY_MODE, @@ -4205,7 +4206,7 @@ unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ct for (i = 0; i < ARRAY_SIZE(build_list); i++) { bool parse_setting = true; - if (build_list[i].checked && + if (build_list[i].checked && string_is_equal(ui_companion_driver_get_ident(), "null")) parse_setting = false; if (parse_setting && diff --git a/playlist.c b/playlist.c index 79eba48cde..65d244d8e7 100644 --- a/playlist.c +++ b/playlist.c @@ -2084,7 +2084,7 @@ json_cleanup: start++; if (*start >= '0' && *start <= '9') - playlist->label_display_mode = *start - '0'; + playlist->label_display_mode = (enum playlist_label_display_mode)(*start - '0'); } }