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'};
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();
break;
}
+ main_loop = g_main_loop_new(NULL, FALSE);
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
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') {
break;
}
+ main_loop = g_main_loop_new(NULL, FALSE);
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
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;