MMFILE_LANGUAGE_MAX
} eMMFileSettingPhoneLanguage;
-const char *MMFILE_LOCALE_TABLE[MMFILE_LANGUAGE_MAX] = {
- "EUC-KR", /* Temporally - Language - English */
- "ISO8859-1", /* Language - German */
- "ISO8859-1", /* Language - French */
- "ISO8859-1", /* Language - Italian */
- "ISO8859-1", /* Temporally - Language - Dutch */
- "ISO8859-1", /* Language - Spanish */
- "ISO8859-7", /* Language - Greek */
- "ISO8859-1", /* Language - Portuguese */
- "ISO8859-3", /* Language - Turkish */
- "CP932", /* Language - Japan*/
- "GBK", /* Language - Simplified Chinese */
- "BIG5", /* Language - Traditional Chinese */
- "SHIFT_JIS" /* Language - Japanease */
+typedef struct {
+ int lang_type;
+ const char *char_set;
+ const char *lang_prefix;
+} mmf_locale_info_s;
+
+static mmf_locale_info_s g_locale_map[MMFILE_LANGUAGE_MAX] = {
+ {MMFILE_LANGUAGE_ENGLISH, "EUC-KR", "en"},
+ {MMFILE_LANGUAGE_GERMAN, "ISO8859-1", "de"},
+ {MMFILE_LANGUAGE_FRENCH, "ISO8859-1", "fr"},
+ {MMFILE_LANGUAGE_ITALIAN, "ISO8859-1", "it"},
+ {MMFILE_LANGUAGE_DUTCH, "ISO8859-1", "nl"},
+ {MMFILE_LANGUAGE_SPANISH, "ISO8859-1", "es"},
+ {MMFILE_LANGUAGE_GREEK, "ISO8859-7", "el"},
+ {MMFILE_LANGUAGE_PORTUGUESE, "ISO8859-1", "pt"},
+ {MMFILE_LANGUAGE_TURKISH, "ISO8859-3", "tr"},
+ {MMFILE_LANGUAGE_JAPAN_CP932, "CP932", NULL},
+ {MMFILE_LANGUAGE_SIM_CHINA, "GBK", "zh_CN"},
+ {MMFILE_LANGUAGE_TRA_CHINA, "BIG5", "zh"},
+ {MMFILE_LANGUAGE_JAPAN, "SHIFT_JIS", "ja_JP"},
#if 0
- /* Language - Bulgarian */
- /* Language - Arabic */
+ {MMFILE_LANGUAGE_BULGARIAN, NULL, NULL},
+ {MMFILE_LANGUAGE_ARABIC, NULL, NULL},
#endif
};
-
-static int _MMFileUtilGetLocaleindex()
+EXPORT_API
+char *MMFileUtilGetLocale()
{
- int index = MMFILE_LANGUAGE_ENGLISH;
char *lang = NULL;
-
- const char *china_prefix = "zh";
- const char *eng_prefix = "en";
-
- const char *china_lang = "zh_CN";
- /*const char *hongkong_lang = "zh_HK";*/
- /*const char *taiwan_lang = "zh_TW";*/
- const char *jpn_lang = "ja_JP";
+ int idx = 0;
lang = vconf_get_str(VCONFKEY_LANGSET);
if (lang != NULL) {
- if (strncmp(lang, china_prefix, strlen(china_prefix)) == 0) {
- /* This case is selected language is china */
- if (strncmp(lang, china_lang, strlen(china_lang)) == 0) {
- debug_msg(DEBUG, "[%s]character set is simplified chinese", lang);
- index = MMFILE_LANGUAGE_SIM_CHINA;
- } else {
- debug_msg(DEBUG, "[%s]character set is traditional chinese", lang);
- index = MMFILE_LANGUAGE_TRA_CHINA;
+ for (idx = 0; idx < MMFILE_LANGUAGE_MAX; idx++) {
+ if (g_locale_map[idx].lang_prefix != NULL) {
+ if (strncmp(lang, g_locale_map[idx].lang_prefix, strlen(g_locale_map[idx].lang_prefix)) == 0) {
+ debug_msg(DEBUG, "[%s]find character set [%d]", lang, idx);
+ break;
+ }
}
- } else if (strncmp(lang, eng_prefix, strlen(eng_prefix)) == 0) {
- /* This case is selected language is engilish
- In case of engilish, the character set is related with region of target binary */
- debug_msg(DEBUG, "[%s]character set is engilish", lang);
- index = MMFILE_LANGUAGE_ENGLISH;
- } else if (strncmp(lang, jpn_lang, strlen(jpn_lang)) == 0) {
- /* This case is selected language is japanease */
- debug_msg(DEBUG, "[%s]character set is japanease", lang);
- index = MMFILE_LANGUAGE_JAPAN;
- } else {
- debug_error(DEBUG, "use default character set");
- index = MMFILE_LANGUAGE_ENGLISH;
}
} else {
debug_error(DEBUG, "language value is NULL, use default character set");
- index = MMFILE_LANGUAGE_ENGLISH;
+ idx = 0;
+ }
+
+ if (idx >= MMFILE_LANGUAGE_MAX) {
+ debug_msg(DEBUG, "[%s]Cannot find character set. Use default one", lang);
+ idx = 0;
}
if (lang) {
lang = NULL;
}
- return index;
-}
-
-EXPORT_API
-char *MMFileUtilGetLocale(int *error)
-{
- int index = 0;
- int err = 0;
- index = _MMFileUtilGetLocaleindex();
-
- if (index < 0 || index >= MMFILE_LANGUAGE_MAX) {
- debug_error(DEBUG, "invalid index\n");
- err = MMFILE_UTIL_FAIL;
- return NULL;
- }
-
- err = MMFILE_UTIL_SUCCESS;
- if (error) {
- *error = err;
- }
-
- return (char *)MMFILE_LOCALE_TABLE[index];
+ return (char *)g_locale_map[idx].char_set;
}
-
int mm_file_get_bool_value_from_xml_string(const char* xml_str, const char* param_name, bool* value)
{
- char *value_start, *value_end;
+ char *value_start = NULL;
+ char *value_end = NULL;
int value_length = 0;
if (!xml_str || !param_name || !strstr(xml_str, param_name)) {
}
value_start = strstr(xml_str, param_name) + strlen(param_name);
- while ((value_start[0] == ' ') || (value_start[0] == '\t'))
+ while ((value_start != NULL) && ((value_start[0] == ' ') || (value_start[0] == '\t')))
value_start++;
value_end = strchr(value_start, '<');
- if (!value_end) {
- debug_error(DEBUG, "error: incorrect XML\n");
+ if (value_end == NULL) {
+ debug_error(DEBUG, "error: incorrect XML.");
return MMFILE_UTIL_FAIL;
}
static bool make_characterset_array(char ***charset_array)
{
- char *locale = MMFileUtilGetLocale(NULL);
+ char *locale = MMFileUtilGetLocale();
*charset_array = calloc(AV_ID3V2_MAX, sizeof(char *));
EXPORT_API
bool mm_file_id3tag_parse_v110(AvFileContentInfo *pInfo, unsigned char *buffer)
{
- const char *locale = MMFileUtilGetLocale(NULL);
+ const char *locale = MMFileUtilGetLocale();
char *pFullStr = NULL;
debug_msg(RELEASE, "ID3tag v110--------------------------------------------------------------\n");