diff options
author | Tianjie Xu <xunchang@google.com> | 2016-04-20 23:55:29 +0200 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-04-20 23:55:30 +0200 |
commit | 8b86373fd954276b18a6fba81afbe42c9caa49d3 (patch) | |
tree | ec4717f9994e572e6ec26e5ef4184bfbf9ea6e5c /minui | |
parent | Merge "Remove trailing punctuation from recovery strings." into nyc-dev (diff) | |
parent | Fix matches_locale function (diff) | |
download | android_bootable_recovery-8b86373fd954276b18a6fba81afbe42c9caa49d3.tar android_bootable_recovery-8b86373fd954276b18a6fba81afbe42c9caa49d3.tar.gz android_bootable_recovery-8b86373fd954276b18a6fba81afbe42c9caa49d3.tar.bz2 android_bootable_recovery-8b86373fd954276b18a6fba81afbe42c9caa49d3.tar.lz android_bootable_recovery-8b86373fd954276b18a6fba81afbe42c9caa49d3.tar.xz android_bootable_recovery-8b86373fd954276b18a6fba81afbe42c9caa49d3.tar.zst android_bootable_recovery-8b86373fd954276b18a6fba81afbe42c9caa49d3.zip |
Diffstat (limited to 'minui')
-rw-r--r-- | minui/minui.h | 2 | ||||
-rw-r--r-- | minui/resources.cpp | 21 |
2 files changed, 10 insertions, 13 deletions
diff --git a/minui/minui.h b/minui/minui.h index e3bc00548..fb0bbe10c 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -84,6 +84,8 @@ int ev_get_epollfd(); // Resources // +bool matches_locale(const char* prefix, const char* locale); + // res_create_*_surface() functions return 0 if no error, else // negative. // diff --git a/minui/resources.cpp b/minui/resources.cpp index 5d69ea2d0..40d3c2c88 100644 --- a/minui/resources.cpp +++ b/minui/resources.cpp @@ -370,21 +370,16 @@ int res_create_alpha_surface(const char* name, GRSurface** pSurface) { return result; } -static int matches_locale(const char* loc, const char* locale) { - if (locale == NULL) return 0; +// This function tests if a locale string stored in PNG (prefix) matches +// the locale string provided by the system (locale). +bool matches_locale(const char* prefix, const char* locale) { + if (locale == NULL) return false; - if (strcmp(loc, locale) == 0) return 1; + // Return true if the whole string of prefix matches the top part of + // locale. For instance, prefix == "en" matches locale == "en_US"; + // and prefix == "zh_CN" matches locale == "zh_CN_#Hans". - // if loc does *not* have an underscore, and it matches the start - // of locale, and the next character in locale *is* an underscore, - // that's a match. For instance, loc == "en" matches locale == - // "en_US". - - int i; - for (i = 0; loc[i] != 0 && loc[i] != '_'; ++i); - if (loc[i] == '_') return 0; - - return (strncmp(locale, loc, i) == 0 && locale[i] == '_'); + return (strncmp(prefix, locale, strlen(prefix)) == 0); } int res_create_localized_alpha_surface(const char* name, |