From: Ilho Kim Date: Thu, 2 May 2024 07:53:46 +0000 (+0900) Subject: Refactor function for activate,deactivate X-Git-Tag: accepted/tizen/unified/20240813.181631~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=82390c339ec24d79f3bbd76e581316e03d197370;p=platform%2Fcore%2Fappfw%2Fpkgmgr-tool.git Refactor function for activate,deactivate Since different operations are required depending on whether the type is an app or not, a if statement exists for this purpose Due to the corresponding if statement, the depth of the code increased, so each logic was functionalized to reduce the depth Change-Id: I297e4987c0a096a694f13b5ac9043ca4edef8931 Signed-off-by: Ilho Kim --- diff --git a/src/pkgcmd/pkg_cmd.c b/src/pkgcmd/pkg_cmd.c index 4ee59db..8a0f68c 100644 --- a/src/pkgcmd/pkg_cmd.c +++ b/src/pkgcmd/pkg_cmd.c @@ -1086,17 +1086,95 @@ static int __move_req_dispatcher(pm_tool_args *data, uid_t target_uid) return data->result; } -static int __activate_req_dispatcher(pm_tool_args *data, uid_t target_uid) +static int __activate_app(pkgmgr_client *pc, + pm_tool_args *data, uid_t target_uid) { int ret; pkgmgrinfo_appinfo_h appinfo_h; - pkgmgr_client *pc; - pkgmgr_client *listen_pc = NULL; const char **pkgs = NULL; GList *list; int i; int n_apps = 0; + if (data->global && data->uid != -1) { + if (data->uid != __get_current_user_id()) { + printf("Invalid uid : %d\n", data->uid); + return -1; + } + target_uid = data->uid; + } + ret = pkgmgrinfo_appinfo_get_usr_disabled_appinfo(data->pkgid, + target_uid, &appinfo_h); + if (ret != PMINFO_R_OK) { + printf("Failed to get appinfo[%s]\n", data->pkgid); + return -1; + } + pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h); + + if (data->global) { + if (data->uid != -1) + /* enable global app for this user only */ + ret = pkgmgr_client_activate_global_app_for_uid(pc, + data->pkgid, __app_return_cb, data, + __get_current_user_id()); + else + /* enable global app for all user */ + ret = pkgmgr_client_usr_activate_app(pc, data->pkgid, + __app_return_cb, data, GLOBAL_USER); + } else { + /* enable local apps */ + n_apps = g_list_length(data->pkgs); + if (n_apps) { + pkgs = malloc(sizeof(char *) * n_apps); + if (pkgs == NULL) { + printf("Out of memory\n"); + return -1; + } + + for (list = data->pkgs, i = 0; list; list = list->next, i++) + pkgs[i] = (char *)list->data; + + data->end_count = n_apps; + ret = pkgmgr_client_usr_activate_apps(pc, pkgs, n_apps, + __apps_return_cb, data, target_uid); + + if (pkgs) + free(pkgs); + } else { + /* enable local app */ + ret = pkgmgr_client_usr_activate_app(pc, data->pkgid, + __app_return_cb, data, target_uid); + } + } + + return ret; +} + +static int __activate_pkg(pkgmgr_client *pc, pkgmgr_client **listen_pc, + pm_tool_args *data, uid_t target_uid) +{ + int ret; + + *listen_pc = pkgmgr_client_new(PC_LISTENING); + if (*listen_pc == NULL) { + printf("PkgMgr Client Creation Failed\n"); + return -1; + } + ret = pkgmgr_client_listen_status(*listen_pc, __return_cb, data); + if (ret < 0) { + printf("Failed to set callback[%d]\n", ret); + return ret; + } + return pkgmgr_client_usr_activate(pc, data->pkg_type, data->pkgid, + target_uid); +} + +static int __activate_req_dispatcher(pm_tool_args *data, uid_t target_uid) +{ + int ret; + pkgmgr_client *pc; + pkgmgr_client *listen_pc = NULL; + if (data->pkg_type[0] == '\0' || data->pkgid[0] == '\0') { __invalid_arg_handler(data); return -1; @@ -1123,77 +1201,11 @@ static int __activate_req_dispatcher(pm_tool_args *data, uid_t target_uid) printf("set_app_label is done\n"); } - if (strcmp(data->pkg_type, "app") == 0) { - if (data->global && data->uid != -1) { - if (data->uid != __get_current_user_id()) { - printf("Invalid uid : %d\n", data->uid); - pkgmgr_client_free(pc); - return -1; - } - target_uid = data->uid; - } - ret = pkgmgrinfo_appinfo_get_usr_disabled_appinfo(data->pkgid, - target_uid, &appinfo_h); - if (ret != PMINFO_R_OK) { - printf("Failed to get appinfo[%s]\n", data->pkgid); - pkgmgr_client_free(pc); - return -1; - } - - if (data->global) { - if (data->uid != -1) - /* enable global app for this user only */ - ret = pkgmgr_client_activate_global_app_for_uid(pc, - data->pkgid, __app_return_cb, data, - __get_current_user_id()); - else - /* enable global app for all user */ - ret = pkgmgr_client_usr_activate_app(pc, data->pkgid, - __app_return_cb, data, GLOBAL_USER); - } else { - /* enable local apps */ - n_apps = g_list_length(data->pkgs); - if (n_apps) { - pkgs = malloc(sizeof(char *) * n_apps); - if (pkgs == NULL) - printf("Out of memory\n"); - - for (list = data->pkgs, i = 0; list; list = list->next, i++) { - printf("ensable multiple apps %s\n", (char *)list->data); - pkgs[i] = (char *)list->data; - } - - data->end_count = n_apps; - ret = pkgmgr_client_usr_activate_apps(pc, pkgs, n_apps, - __apps_return_cb, data, target_uid); + if (strcmp(data->pkg_type, "app") == 0) + ret = __activate_app(pc, data, target_uid); + else + ret = __activate_pkg(pc, &listen_pc, data, target_uid); - if (pkgs) - free(pkgs); - } else { - /* enable local app */ - printf("enable apps %s\n", data->pkgid); - ret = pkgmgr_client_usr_activate_app(pc, data->pkgid, - __app_return_cb, data, target_uid); - } - } - pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h); - } else { - listen_pc = pkgmgr_client_new(PC_LISTENING); - if (listen_pc == NULL) { - printf("PkgMgr Client Creation Failed\n"); - pkgmgr_client_free(pc); - return -1; - } - ret = pkgmgr_client_listen_status(listen_pc, __return_cb, data); - if (ret < 0) { - printf("Failed to set callback[%d]\n", ret); - pkgmgr_client_free(pc); - pkgmgr_client_free(listen_pc); - return ret; - } - ret = pkgmgr_client_usr_activate(pc, data->pkg_type, data->pkgid, - target_uid); - } if (ret < 0) { pkgmgr_client_free(pc); if (listen_pc) @@ -1209,17 +1221,92 @@ static int __activate_req_dispatcher(pm_tool_args *data, uid_t target_uid) return data->result; } -static int __deactivate_req_dispatcher(pm_tool_args *data, uid_t target_uid) +static int __deactivate_app(pkgmgr_client *pc, + pm_tool_args *data, uid_t target_uid) { int ret; pkgmgrinfo_appinfo_h appinfo_h; - pkgmgr_client *pc; - pkgmgr_client *listen_pc = NULL; const char **pkgs = NULL; GList *list; int i; int n_apps = 0; + ret = pkgmgrinfo_appinfo_get_usr_appinfo(data->pkgid, + target_uid, &appinfo_h); + if (ret != PMINFO_R_OK) { + printf("Failed to get appinfo[%s]\n", data->pkgid); + return -1; + } + pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h); + + if (data->global) { + if (data->uid != -1 && data->uid != getuid()) { + printf("Invalid uid : %d\n", data->uid); + return -1; + } + if (data->uid != -1) + /* disable global app for this user only */ + ret = pkgmgr_client_deactivate_global_app_for_uid(pc, + data->pkgid, __app_return_cb, NULL, + __get_current_user_id()); + else + /* disable global app for all user */ + ret = pkgmgr_client_usr_deactivate_app(pc, data->pkgid, + __app_return_cb, NULL, GLOBAL_USER); + } else { + /* disable local apps */ + n_apps = g_list_length(data->pkgs); + if (n_apps) { + pkgs = malloc(sizeof(char *) * n_apps); + if (pkgs == NULL) { + printf("Out of memory\n"); + return -1; + } + + for (list = data->pkgs, i = 0; list; list = list->next, i++) + pkgs[i] = (char *)list->data; + + data->end_count = n_apps; + ret = pkgmgr_client_usr_deactivate_apps(pc, pkgs, n_apps, + __apps_return_cb, data, target_uid); + + if (pkgs) + free(pkgs); + } else { + /* disable local app */ + ret = pkgmgr_client_usr_deactivate_app(pc, data->pkgid, + __app_return_cb, NULL, target_uid); + } + } + + return ret; +} + +static int __deactivate_pkg(pkgmgr_client *pc, pkgmgr_client **listen_pc, + pm_tool_args *data, uid_t target_uid) +{ + int ret; + + *listen_pc = pkgmgr_client_new(PC_LISTENING); + if (*listen_pc == NULL) { + printf("PkgMgr Client Creation Failed\n"); + return -1; + } + ret = pkgmgr_client_listen_status(*listen_pc, __return_cb, data); + if (ret < 0) { + printf("Failed to set callback[%d]\n", ret); + return ret; + } + return pkgmgr_client_usr_deactivate(pc, data->pkg_type, data->pkgid, + target_uid); +} + +static int __deactivate_req_dispatcher(pm_tool_args *data, uid_t target_uid) +{ + int ret; + pkgmgr_client *pc; + pkgmgr_client *listen_pc = NULL; + if (data->pkg_type[0] == '\0' || data->pkgid[0] == '\0') { __invalid_arg_handler(data); return -1; @@ -1232,75 +1319,11 @@ static int __deactivate_req_dispatcher(pm_tool_args *data, uid_t target_uid) return -1; } - if (strcmp(data->pkg_type, "app") == 0) { - ret = pkgmgrinfo_appinfo_get_usr_appinfo(data->pkgid, - target_uid, &appinfo_h); - if (ret != PMINFO_R_OK) { - printf("Failed to get appinfo[%s]\n", data->pkgid); - pkgmgr_client_free(pc); - return -1; - } - - if (data->global) { - if (data->uid != -1 && data->uid != getuid()) { - printf("Invalid uid : %d\n", data->uid); - pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h); - pkgmgr_client_free(pc); - return -1; - } - if (data->uid != -1) - /* disable global app for this user only */ - ret = pkgmgr_client_deactivate_global_app_for_uid(pc, - data->pkgid, __app_return_cb, NULL, - __get_current_user_id()); - else - /* disable global app for all user */ - ret = pkgmgr_client_usr_deactivate_app(pc, data->pkgid, - __app_return_cb, NULL, GLOBAL_USER); - } else { - /* disable local apps */ - n_apps = g_list_length(data->pkgs); - if (n_apps) { - pkgs = malloc(sizeof(char *) * n_apps); - if (pkgs == NULL) - printf("Out of memory\n"); - - for (list = data->pkgs, i = 0; list; list = list->next, i++) { - printf("disable multiple apps %s\n", (char *)list->data); - pkgs[i] = (char *)list->data; - } - - data->end_count = n_apps; - ret = pkgmgr_client_usr_deactivate_apps(pc, pkgs, n_apps, - __apps_return_cb, data, target_uid); - - if (pkgs) - free(pkgs); - } else { - /* disable local app */ - ret = pkgmgr_client_usr_deactivate_app(pc, data->pkgid, - __app_return_cb, NULL, target_uid); - } - } + if (strcmp(data->pkg_type, "app") == 0) + ret = __deactivate_app(pc, data, target_uid); + else + ret = __deactivate_pkg(pc, &listen_pc, data, target_uid); - pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h); - } else { - listen_pc = pkgmgr_client_new(PC_LISTENING); - if (listen_pc == NULL) { - printf("PkgMgr Client Creation Failed\n"); - pkgmgr_client_free(pc); - return -1; - } - ret = pkgmgr_client_listen_status(listen_pc, __return_cb, data); - if (ret < 0) { - printf("Failed to set callback[%d]\n", ret); - pkgmgr_client_free(pc); - pkgmgr_client_free(listen_pc); - return ret; - } - ret = pkgmgr_client_usr_deactivate(pc, data->pkg_type, data->pkgid, - target_uid); - } if (ret < 0) { pkgmgr_client_free(pc); if (listen_pc)