Set LC_ALL to "C" for portability 49/167149/2
authorSemun Lee <semun.lee@samsung.com>
Tue, 16 Jan 2018 00:51:58 +0000 (09:51 +0900)
committerSemun Lee <semun.lee@samsung.com>
Tue, 16 Jan 2018 00:56:02 +0000 (09:56 +0900)
Some Tizen devices might not have other locales.

Change-Id: I7af64cbfdfd8a30e8af0cdb2837da188d36baca9
Signed-off-by: Semun Lee <semun.lee@samsung.com>
src/base/appcore_base.c

index e195253..d0d27ba 100644 (file)
@@ -618,8 +618,15 @@ static void __update_lang(void)
                r = setlocale(LC_ALL, "");
                if (r == NULL) {
                        r = setlocale(LC_ALL, "en_US.UTF-8");
-                       if (r != NULL)
+                       if (r != NULL) {
                                _DBG("*****appcore setlocale=%s\n", r);
+                       } else {
+                               _DBG("*****appcore setlocale=\"C\"");
+                               setenv("LC_ALL", "C", 1);
+                               r = setlocale(LC_ALL, "");
+                               if (r == NULL)
+                                       _ERR("failed to setlocale");
+                       }
                }
                free(lang);
        }
@@ -644,8 +651,15 @@ static void __update_region(void)
                setenv("LC_MEASUREMENT", region, 1);
                setenv("LC_IDENTIFICATION", region, 1);
                r = setlocale(LC_ALL, "");
-               if (r != NULL)
+               if (r != NULL) {
                        _DBG("*****appcore setlocale=%s\n", r);
+               } else {
+                       _DBG("*****appcore setlocale=\"C\"");
+                       setenv("LC_ALL", "C", 1);
+                       r = setlocale(LC_ALL, "");
+                       if (r == NULL)
+                               _ERR("failed to setlocale");
+               }
 
                free(region);
        }
@@ -895,10 +909,17 @@ static int __set_i18n(const char *domain, const char *dir)
        /* if locale is not set properly, try to set "en_US" again */
        if (r == NULL) {
                r = setlocale(LC_ALL, "en_US.UTF-8");
-               _DBG("*****appcore setlocale=%s\n", r);
+               if (r != NULL)
+                       _DBG("*****appcore setlocale=%s\n", r);
        }
-       if (r == NULL)
+       if (r == NULL) {
                _ERR("appcore: setlocale() error");
+               _DBG("*****appcore setlocale=\"C\"");
+               setenv("LC_ALL", "C", 1);
+               r = setlocale(LC_ALL, "");
+               if (r == NULL)
+                       _ERR("failed to setlocale");
+       }
 
        r = bindtextdomain(domain, dir);
        if (r == NULL)