Fix getting locale resource path 77/74377/4 accepted/tizen/common/20160615.193234 accepted/tizen/ivi/20160615.001443 accepted/tizen/mobile/20160615.001615 accepted/tizen/tv/20160615.001526 accepted/tizen/wearable/20160615.001542 submit/tizen/20160614.094055
authorHwankyu Jhun <h.jhun@samsung.com>
Tue, 14 Jun 2016 05:38:32 +0000 (14:38 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Tue, 14 Jun 2016 06:53:45 +0000 (15:53 +0900)
Change-Id: I6f772ab8ac4b7fedd041c55c799d2bafdd47bfea
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/appcore-agent.c

index 5a5a4f0..f9d019b 100644 (file)
        } while (0)
 
 #define APPID_MAX 256
-#define PKGNAME_MAX 256
-#define PATH_RES "/res"
-#define PATH_LOCALE "/locale"
+#define PATH_LOCALE "locale"
 
 static pid_t _pid;
 
@@ -877,13 +875,29 @@ static gboolean __init_suspend(gpointer data)
 }
 #endif
 
+static int __get_locale_resource_dir(char *locale_dir, int size)
+{
+       const char *res_path;
+
+       res_path = aul_get_app_resource_path();
+       if (res_path == NULL) {
+               _ERR("Failed to get resource path");
+               return -1;
+       }
+
+       snprintf(locale_dir, size, "%s" PATH_LOCALE, res_path);
+       if (access(locale_dir, R_OK) != 0)
+               return -1;
+
+       return 0;
+}
+
 EXPORT_API int appcore_agent_init(const struct agent_ops *ops,
                            int argc, char **argv)
 {
        int r;
-       const char *dirname;
+       char locale_dir[PATH_MAX];
        char *app_name = NULL;
-       int pid;
 
        if (core.state != 0) {
                errno = EALREADY;
@@ -895,15 +909,14 @@ EXPORT_API int appcore_agent_init(const struct agent_ops *ops,
                return -1;
        }
 
-       pid = getpid();
-       r = __get_package_app_name(pid, &app_name);
+       r = __get_package_app_name(getpid(), &app_name);
        if (r < 0)
                return -1;
 
-       dirname = aul_get_app_root_path();
-       SECURE_LOGD("dir : %s", dirname);
+       r = __get_locale_resource_dir(locale_dir, sizeof(locale_dir));
+       SECURE_LOGD("dir : %s", locale_dir);
        SECURE_LOGD("app name : %s", app_name);
-       r = appcore_set_i18n(app_name, dirname);
+       r = appcore_set_i18n(app_name, locale_dir);
        free(app_name);
        _retv_if(r == -1, -1);