[PLM P180706-00145]Fix character set issue for some languages used in Europe. And... 69/183869/1 submit/tizen/20180712.041051
authorhj kim <backto.kim@samsung.com>
Thu, 12 Jul 2018 03:57:19 +0000 (12:57 +0900)
committerhj kim <backto.kim@samsung.com>
Thu, 12 Jul 2018 03:57:39 +0000 (12:57 +0900)
Change-Id: I90bdeb4d5ba89b0f130995bfe575766a24ce37bb

formats/ffmpeg/mm_file_format_imelody.c
formats/ffmpeg/mm_file_format_midi.c
utils/include/mm_file_utils.h
utils/mm_file_util_locale.c
utils/mm_file_util_mime.c
utils/mm_file_util_tag.c

index 14607534158a9ad60d78b0d05c757335cbfd6f75..dd31c80ed7e8c7b1f5754fd389b38cca6bf89511 100755 (executable)
@@ -229,7 +229,7 @@ int mmfile_format_read_tag_imy(MMFileFormatContext *formatContext)
        tMMFileImelodyTagInfo taginfo = {0, };
        unsigned int tag_len;
        unsigned int cnv_len;
-       const char *locale = MMFileUtilGetLocale(NULL);
+       const char *locale = MMFileUtilGetLocale();
 
        if (!formatContext) {
                debug_error(DEBUG, "formatContext is NULL\n");
index bc944f5809201673f0c4539a79e8d7d90a4c413f..1f6085f8245fc1018e0672429189079aec1edc59 100755 (executable)
@@ -341,7 +341,7 @@ int mmfile_format_read_tag_mid(MMFileFormatContext *formatContext)
 {
        int ret = MMFILE_FORMAT_FAIL;
        MIDI_INFO_SIMPLE *info = NULL;
-       const char *locale = MMFileUtilGetLocale(NULL);
+       const char *locale = MMFileUtilGetLocale();
        unsigned int tag_len;
        unsigned int cnv_len;
 
index b289a9efac3d45b97f0733ec8b18ba9543bee36d..db2baf6cc8557b493ab17fef6a7aee419eb13f56 100755 (executable)
@@ -158,8 +158,6 @@ int                 mmfile_close(MMFileIOHandle *h);
 #define MMFILE_FILE_EXT_MAX_LEN 7
 
 int mmfile_util_get_ffmpeg_format(const char *mime, char *ffmpegFormat);
-int mmfile_util_get_file_ext(const char *mime, char *ext);
-
 
 
 /*////////////////////////////////////////////////////////////////////// */
@@ -189,7 +187,7 @@ char *mmfile_strdup(const char *str);
 /*////////////////////////////////////////////////////////////////////// */
 /*                            LOCALE API                              // */
 /*////////////////////////////////////////////////////////////////////// */
-char *MMFileUtilGetLocale(int *error);
+char *MMFileUtilGetLocale();
 
 
 
index 1fd6d334479934e72c0df395e499b051cebae6dc..b75f51f9e2e862f51fd32eccf91accf1fb8bfcb5 100755 (executable)
@@ -53,68 +53,57 @@ typedef enum {
        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) {
@@ -122,27 +111,5 @@ static int _MMFileUtilGetLocaleindex()
                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;
 }
-
index 0a4e8990623e1c4b5e1ac718528a3f38bd3314d2..7295d47d7d46e9221137d67d683ce78f8ef9f2d6 100755 (executable)
@@ -155,32 +155,3 @@ int mmfile_util_get_ffmpeg_format(const char *mime, char *ffmpegFormat)
        return MMFILE_UTIL_SUCCESS;
 }
 
-
-EXPORT_API
-int mmfile_util_get_file_ext(const char *mime, char *ext)
-{
-       int i = 0;
-       int table_size = sizeof(MMFILE_FFMPEG_MIME_TABLE) / sizeof(MMFileAVMimeType);
-
-       if (NULL == mime || NULL == ext) {
-               debug_error(DEBUG, "error: mmfile_util_get_file_ext\n");
-               return MMFILE_UTIL_FAIL;
-       }
-
-       for (i = 0; i < table_size; i++) {
-               if (!strcasecmp(MMFILE_FFMPEG_MIME_TABLE[i].mimetype, mime)) {
-                       break;
-               }
-       }
-
-       if (i == table_size) {
-               debug_error(DEBUG, "error: not found[%s]\n", mime);
-               return MMFILE_UTIL_FAIL;
-       }
-
-       memcpy(ext, MMFILE_FFMPEG_MIME_TABLE[i].extension, strlen(MMFILE_FFMPEG_MIME_TABLE[i].extension));
-
-       return MMFILE_UTIL_SUCCESS;
-}
-
-
index dd63f2a69f4c6dcabe785afead184f4a677eb018..4e0af78d6d851bc40b09298c2279338e58949b08 100755 (executable)
@@ -1839,7 +1839,8 @@ int mm_file_get_string_value_from_xml_string(const char* xml_str, const char* pa
 
 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)) {
@@ -1848,12 +1849,12 @@ int mm_file_get_bool_value_from_xml_string(const char* xml_str, const char* para
        }
 
        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;
        }
 
@@ -2452,7 +2453,7 @@ bool safe_atoi(char *buffer, int *si)
 
 static bool make_characterset_array(char ***charset_array)
 {
-       char *locale = MMFileUtilGetLocale(NULL);
+       char *locale = MMFileUtilGetLocale();
 
        *charset_array = calloc(AV_ID3V2_MAX, sizeof(char *));
 
@@ -2529,7 +2530,7 @@ static void init_content_info(AvFileContentInfo *pInfo)
 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");