GumUser *g_guser = NULL;
uid_t g_uid = 301; // app_fw
gid_t g_gid = 301; // app_fw
-GumUserType g_ut = GUM_USERTYPE_NONE;
gchar *g_user_type = NULL;
char *g_dir_config_base = NULL;
}
-EXPORT_API
-int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgid, const char *appid, GList *list)
+static gchar* __get_user_type(GumUser *user)
{
- LOGD("METADATA INSTALL");
- LOGD("pkgid(%s) appid(%s) list(%u)", pkgid, appid, g_list_length(list));
-
- int ret = -1;
- ret = pkgmgr_installer_info_get_target_uid(&g_uid);
- if (ret < 0) {
- LOGE("[ERROR] Fail to get target uid");
- return 0;
- } else {
- LOGD("uid(%u)", g_uid);
- printf("[Parser Debug][DEBUG] uid(%u)", g_uid);
- }
+ GumUserType gumut = GUM_USERTYPE_NONE;
+ g_object_get(G_OBJECT(user), "usertype", &gumut, NULL);
+ gchar* user_type = g_strdup(gum_user_type_to_string(gumut));
+ return user_type;
+}
- uid_t globalapp_uid = tzplatform_getuid(TZ_SYS_GLOBALAPP_USER);
+static int __get_global_user_type(uid_t globalapp_uid)
+{
if (globalapp_uid == g_uid) {
g_user_type = g_strdup("admin");
} else {
}
g_object_get(G_OBJECT(g_guser), "gid", &g_gid, NULL);
- g_object_get(G_OBJECT(g_guser), "usertype", &g_ut, NULL);
- g_user_type = g_strdup(gum_user_type_to_string(g_ut));
+ g_user_type = __get_user_type(g_guser);
}
if (NULL == g_user_type) {
LOGE("[ERROR] Fail to allocate memory");
- if (NULL != g_guser) {
- g_object_unref(g_guser);
- g_guser = NULL;
- }
+ g_object_unref(g_guser);
+ g_guser = NULL;
return -1;
}
return -1;
}
+ return 0;
+}
+
+static int __get_user_list(GumUserService **gus, GumUserList **users)
+{
+ if (NULL == gus || NULL == users) {
+ return -1;
+ }
+
+ GumUserService *temp_gus = NULL;
+ GumUserList *temp_users = NULL;
+
+ temp_gus = gum_user_service_create_sync(TRUE);
+ if (!temp_gus) {
+ LOGE("Failed to create gum user service");
+ return -1;
+ }
+
+ gchar **query = g_strsplit("admin,normal", ",", -1);
+ temp_users = gum_user_service_get_user_list_sync(temp_gus, (const gchar *const *)query);
+ g_strfreev(query);
+
+ if (!temp_users) {
+ LOGD("NO users");
+ }
+
+ *gus = temp_gus;
+ *users = temp_users;
+ return 0;
+}
+
+EXPORT_API
+int PKGMGR_MDPARSER_PLUGIN_INSTALL(const char *pkgid, const char *appid, GList *list)
+{
+ LOGD("METADATA INSTALL");
+ LOGD("pkgid(%s) appid(%s) list(%u)", pkgid, appid, g_list_length(list));
+
+ if (0 > pkgmgr_installer_info_get_target_uid(&g_uid)) {
+ LOGE("[ERROR] Fail to get target uid");
+ return 0;
+ }
+
+ LOGD("uid(%u)", g_uid);
+ printf("[Parser Debug][DEBUG] uid(%u)", g_uid);
+
+ uid_t globalapp_uid = tzplatform_getuid(TZ_SYS_GLOBALAPP_USER);
+ if (0 != __get_global_user_type(globalapp_uid)) {
+ return -1;
+ }
+
if (globalapp_uid == g_uid) {
/* global directory */
LOGD("[DEBUG] usertype: %s", g_user_type);
GumUserService *gus = NULL;
GumUserList *users = NULL;
- GumUserList *iter = NULL;
- GumUser *user = NULL;
- gchar **query;
- GumUserType gumut = GUM_USERTYPE_NONE;
- gchar *user_type = NULL;
-
- uid_t uid;
- gid_t gid;
- gchar *home_dir = NULL;
-
- gus = gum_user_service_create_sync(TRUE);
- if (!gus) {
- LOGE("Failed to create gum user service");
- G_FREE(g_user_type)
- return -1;
- }
-
- query = g_strsplit("admin,normal", ",", -1);
-
- users = gum_user_service_get_user_list_sync(gus, (const gchar *const *)query);
- g_strfreev(query);
- if (!users) {
- LOGD("NO users");
- g_object_unref(gus);
- gus = NULL;
+ if (0 != __get_user_list(&gus, &users)) {
G_FREE(g_user_type)
- return 0;
+ return -1;
}
/* Make new user list */
-
- iter = users;
+ GumUserList *iter = users;
while (iter != NULL) {
- user = (GumUser*) iter->data;
- g_object_get(G_OBJECT(user), "uid", &uid, NULL);
- G_FREE(home_dir)
-
- g_object_get(G_OBJECT(user), "gid", &gid, NULL);
- g_object_get(G_OBJECT(user), "homedir", &home_dir, NULL);
- g_object_get(G_OBJECT(user), "usertype", &gumut, NULL);
- user_type = g_strdup(gum_user_type_to_string(gumut));
+ GumUser *user = (GumUser*) iter->data;
+ gchar *user_type = __get_user_type(user);
if (NULL == user_type) {
gum_user_service_list_free(users);
- G_FREE(home_dir)
g_object_unref(gus);
gus = NULL;
return -1;
}
+ gchar *home_dir = NULL;
+ g_object_get(G_OBJECT(user), "homedir", &home_dir, NULL);
LOGD("[DEBUG] user info");
if (NULL != home_dir) {
+ uid_t uid;
+ gid_t gid;
+ g_object_get(G_OBJECT(user), "uid", &uid, NULL);
+ g_object_get(G_OBJECT(user), "gid", &gid, NULL);
LOGD("[DEBUG] uid(%u), gid(%u), user_type(%s), home_dir(%s)", uid, gid, user_type, home_dir);
+
FREE(g_dir_config_base);
FREE(g_dir_home);
FREE(g_dir_engine_base);
LOGE("[ERROR] Fail to make engine info file");
}
- G_FREE(home_dir)
}
+ G_FREE(home_dir)
G_FREE(user_type)
iter = g_list_next(iter);
}
- gum_user_service_list_free(users);
+ if (users) {
+ gum_user_service_list_free(users);
+ }
g_object_unref(gus);
gus = NULL;
} else {
/* user directory */
LOGD("[DEBUG] usertype: %s", g_user_type);
- ret = tzplatform_set_user(g_uid);
- if (ret < 0) {
+ if (0 > tzplatform_set_user(g_uid)) {
LOGE("[ERROR] Invalid uid");
g_object_unref(g_guser);
g_guser = NULL;
LOGD("METADATA UNINSTALL");
LOGD("pkgid(%s) appid(%s) list(%u)", pkgid, appid, g_list_length(list));
- int ret = -1;
- ret = pkgmgr_installer_info_get_target_uid(&g_uid);
- if (ret < 0) {
+ if (0 > pkgmgr_installer_info_get_target_uid(&g_uid)) {
LOGE("[ERROR] Fail to get target uid");
return 0;
- } else {
- LOGD("uid(%u)", g_uid);
- printf("[Parser Debug][DEBUG] uid(%u)", g_uid);
}
- uid_t globalapp_uid = tzplatform_getuid(TZ_SYS_GLOBALAPP_USER);
- if (globalapp_uid == g_uid) {
- g_user_type = g_strdup("admin");
- LOGD("[DEBUG] g_user_type: %s (%u)", g_user_type, globalapp_uid);
- } else {
- g_guser = gum_user_get_sync(g_uid, FALSE);
- if (NULL == g_guser) {
- LOGE("[ERROR] g_guser is NULL");
- return -1;
- }
-
- g_object_get(G_OBJECT(g_guser), "usertype", &g_ut, NULL);
- g_user_type = g_strdup(gum_user_type_to_string(g_ut));
-
- LOGD("[DEBUG] g_user_type: %s (%u)", g_user_type, globalapp_uid);
- }
-
- if (NULL == g_user_type) {
- LOGE("[ERROR] Fail to allocate memory");
- if (NULL != g_guser) {
- g_object_unref(g_guser);
- g_guser = NULL;
- }
- return -1;
- }
+ LOGD("uid(%u)", g_uid);
+ printf("[Parser Debug][DEBUG] uid(%u)", g_uid);
- if (0 == strcmp(g_user_type, "none")) {
- /* GUM_USERTYPE_NONE */
- LOGE("[ERROR] Fail to get target uid");
- g_object_unref(g_guser);
- g_guser = NULL;
- G_FREE(g_user_type)
+ uid_t globalapp_uid = tzplatform_getuid(TZ_SYS_GLOBALAPP_USER);
+ if (0 != __get_global_user_type(globalapp_uid)) {
return -1;
}
GumUserService *gus = NULL;
GumUserList *users = NULL;
- GumUserList *iter = NULL;
- GumUser *user = NULL;
- gchar **query;
- GumUserType gumut = GUM_USERTYPE_NONE;
- gchar *user_type = NULL;
- uid_t uid;
- gchar *home_dir = NULL;
-
- GList *md_iter = NULL;
- metadata *md = NULL;
-
- gus = gum_user_service_create_sync(TRUE);
- if (!gus) {
- LOGE("Failed to create gum user service");
+ if (0 != __get_user_list(&gus, &users)) {
G_FREE(g_user_type)
return -1;
}
- query = g_strsplit("admin,normal", ",", -1);
-
- users = gum_user_service_get_user_list_sync(gus, (const gchar *const *)query);
- g_strfreev(query);
-
- if (!users) {
- LOGD("NO users");
- g_object_unref(gus);
- gus = NULL;
- G_FREE(g_user_type)
- return 0;
- }
-
/* Make new user list */
-
- iter = users;
+ GumUserList *iter = users;
while (iter != NULL) {
- user = (GumUser*) iter->data;
- g_object_get(G_OBJECT(user), "uid", &uid, NULL);
- G_FREE(home_dir)
- g_object_get(G_OBJECT(user), "homedir", &home_dir, NULL);
- g_object_get(G_OBJECT(user), "usertype", &gumut, NULL);
- user_type = g_strdup(gum_user_type_to_string(gumut));
+ GumUser *user = (GumUser*) iter->data;
+ gchar *user_type = __get_user_type(user);
if (NULL == user_type) {
gum_user_service_list_free(users);
- G_FREE(home_dir)
g_object_unref(gus);
gus = NULL;
return -1;
}
+ gchar *home_dir = NULL;
+ g_object_get(G_OBJECT(user), "homedir", &home_dir, NULL);
if (NULL != home_dir) {
FREE(g_dir_engine_info);
g_dir_engine_info = (char*)calloc(strlen(home_dir) + 34, sizeof(char));
snprintf(g_dir_engine_info, strlen(home_dir) + 34, "%s/share/.voice/tts/1.0/engine-info", home_dir);
- md_iter = g_list_first(list);
+ GList *md_iter = g_list_first(list);
while (NULL != md_iter) {
- md = (metadata *)md_iter->data;
+ metadata *md = (metadata *)md_iter->data;
LOGD(" - key(%s) value(%s)", md->key, md->value);
md_iter = g_list_next(md_iter);
}
+ uid_t uid;
+ g_object_get(G_OBJECT(user), "uid", &uid, NULL);
if (0 != __remove_engine_info_xml(pkgid, user_type, uid)) {
LOGE("[ERROR] Fail to remove engine info file");
}
- G_FREE(home_dir)
}
+
+ G_FREE(home_dir)
G_FREE(user_type)
LOGD("Finish release memory");
LOGD("Finish next iter");
}
- gum_user_service_list_free(users);
+ if (users) {
+ gum_user_service_list_free(users);
+ }
g_object_unref(gus);
gus = NULL;
} else {
/* user directory */
LOGD("[DEBUG] usertype: %s", g_user_type);
- ret = tzplatform_set_user(g_uid);
- if (ret < 0) {
+ if (0 > tzplatform_set_user(g_uid)) {
LOGE("[ERROR] Invalid uid");
g_object_unref(g_guser);
g_guser = NULL;
if (0 != __remove_engine_info_xml(pkgid, g_user_type, g_uid)) {
LOGE("[ERROR] Fail to remove engine info file");
}
-
}
if (NULL != g_guser) {