From: Junghyun Yeon Date: Mon, 25 Jan 2016 06:13:18 +0000 (+0900) Subject: Implement app signal related with app disable/enable X-Git-Tag: submit/tizen/20160201.060916^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fdevel%2Fivi;p=platform%2Fcore%2Fappfw%2Fpkgmgr-tool.git Implement app signal related with app disable/enable Changes applied at [pkgmgr-tool][pkgmgr-info][slp-pkgmgr][pkgmgr-server] Change-Id: I83150dde0b73b1f1a234b0ea31249dd1d342cad3 Signed-off-by: Junghyun Yeon --- diff --git a/src/pkg_cmd.c b/src/pkg_cmd.c index 9f451ee..122fc3f 100644 --- a/src/pkg_cmd.c +++ b/src/pkg_cmd.c @@ -270,6 +270,30 @@ static int __return_cb(uid_t target_uid, int req_id, const char *pkg_type, return 0; } +static int __app_return_cb(uid_t target_uid, int req_id, const char *pkg_type, + const char *pkgid, const char *appid, const char *key, const char *val, + const void *pmsg, void *priv_data) +{ + int ret_val; + + if (strncmp(key, "error", strlen("error")) == 0) { + ret_val = atoi(val); + data.result = ret_val; + } + + printf("__app_return_cb req_id[%d] pkg_type[%s] pkgid[%s] appid[%s] " \ + "key[%s] val[%s]\n", + req_id, pkg_type, pkgid, appid, key, val); + + if (strncmp(key, "end", strlen("end")) == 0) { + if ((strncmp(val, "fail", strlen("fail")) == 0) && data.result == 0) + data.result = PKGCMD_ERRCODE_ERROR; + g_main_loop_quit(main_loop); + } + + return 0; +} + static int __convert_to_absolute_path(char *path) { char abs[PKG_NAME_STRING_LEN_MAX] = {'\0'}; @@ -528,6 +552,7 @@ static int __process_request(uid_t uid) char pkg_old[PATH_MAX] = {0, }; char pkg_new[PATH_MAX] = {0, }; bool blacklist; + pkgmgrinfo_pkginfo_h pkginfo; #if !GLIB_CHECK_VERSION(2,35,0) g_type_init(); @@ -710,6 +735,7 @@ static int __process_request(uid_t uid) break; } + main_loop = g_main_loop_new(NULL, FALSE); pc = pkgmgr_client_new(PC_REQUEST); if (pc == NULL) { printf("PkgMgr Client Creation Failed\n"); @@ -717,29 +743,31 @@ static int __process_request(uid_t uid) break; } - if ( strcmp(data.pkg_type, "app") == 0 ) { - if (strlen(data.label) == 0) { - ret = pkgmgr_client_usr_activate_app(pc, data.pkgid, uid); - if (ret < 0) - break; - } else { + if (strcmp(data.pkg_type, "app") == 0 ) { + if (data.global) + /* enable global app for this user only */ + ret = pkgmgr_client_activate_global_app_for_uid(pc, data.pkgid, __app_return_cb, getuid()); + else if (strlen(data.label) == 0) + /* enable app which belongs to this user */ + ret = pkgmgr_client_usr_activate_app(pc, data.pkgid, __app_return_cb, uid); + else { + /* deprecated? */ printf("label [%s]\n", data.label); char *largv[3] = {NULL, }; largv[0] = "-l"; largv[1] = data.label; ret = pkgmgr_client_usr_activate_appv(pc, data.pkgid, largv, uid); - if (ret < 0) - break; } - } else { - ret = pkgmgr_client_usr_activate(pc, data.pkg_type, data.pkgid, uid); - if (ret < 0) - break; - } - ret = data.result; + } else + /* enable package which belongs to this user */ + ret = pkgmgr_client_usr_activate(pc, data.pkg_type, data.pkgid, uid); - break; + if (ret < 0) + break; + g_main_loop_run(main_loop); + ret = data.result; + break; case DEACTIVATE_REQ: if (data.pkg_type[0] == '\0' || data.pkgid[0] == '\0') { @@ -749,6 +777,7 @@ static int __process_request(uid_t uid) break; } + main_loop = g_main_loop_new(NULL, FALSE); pc = pkgmgr_client_new(PC_REQUEST); if (pc == NULL) { printf("PkgMgr Client Creation Failed\n"); @@ -756,15 +785,21 @@ static int __process_request(uid_t uid) break; } - if ( strcmp(data.pkg_type, "app") == 0 ) { - ret = pkgmgr_client_usr_deactivate_app(pc, data.pkgid, uid); - if (ret < 0) - break; - }else { + if (strcmp(data.pkg_type, "app") == 0 ) { + if (data.global) + /* disable global app for this user only*/ + ret = pkgmgr_client_deactivate_global_app_for_uid(pc, data.pkgid, __app_return_cb, getuid()); + else + /* disable app which belongs to this user */ + ret = pkgmgr_client_usr_deactivate_app(pc, data.pkgid, __app_return_cb, uid); + } else + /* disable package which belongs to this user*/ ret = pkgmgr_client_usr_deactivate(pc, data.pkg_type, data.pkgid, uid); - if (ret < 0) - break; - } + + if (ret < 0) + break; + + g_main_loop_run(main_loop); ret = data.result; break;