#define OWNER_ROOT 0
#define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)
+#define DEFAULT_USER tzplatform_getuid(TZ_SYS_DEFAULT_USER)
#define OPTVAL_GLOBAL 1000
#define OPTVAL_CLEAR_ALL 1001
}
}
+static uid_t __get_current_user_id(void)
+{
+ uid_t uid = getuid();
+
+ if (uid == OWNER_ROOT)
+ uid = DEFAULT_USER;
+
+ return uid;
+}
+
static int __return_cb(uid_t target_uid, int req_id, const char *pkg_type,
const char *pkgid, const char *key, const char *val,
const void *pmsg, void *priv_data)
return ret;
}
-static int __process_request(uid_t uid)
+static int __process_request(uid_t target_uid)
{
int ret = -1;
pkgmgr_client *pc = NULL;
ret = pkgmgr_client_usr_install(pc,
data.pkg_type[0] != '\0' ? data.pkg_type : NULL,
NULL, data.pkg_path, NULL, PM_QUIET,
- __return_cb, pc, uid);
+ __return_cb, pc, target_uid);
else
ret = pkgmgr_client_usr_install(pc,
data.pkg_type[0] != '\0' ? data.pkg_type : NULL,
data.des_path, data.pkg_path,
- NULL, PM_QUIET, __return_cb, pc, uid);
+ NULL, PM_QUIET, __return_cb, pc, target_uid);
if (ret < 0) {
data.result = PKGCMD_ERRCODE_ERROR;
break;
}
- ret = __is_app_installed(data.pkgid, uid);
+ ret = __is_app_installed(data.pkgid, target_uid);
if (ret == -1) {
printf("package is not installed\n");
break;
}
ret = pkgmgr_client_usr_uninstall(pc, data.pkg_type, data.pkgid,
- PM_QUIET, __return_cb, NULL, uid);
+ PM_QUIET, __return_cb, NULL, target_uid);
if (ret < 0) {
data.result = PKGCMD_ERRCODE_ERROR;
if (access(data.pkg_path, F_OK) != 0)
break;
}
- ret = pkgmgr_client_usr_reinstall(pc, NULL, data.pkgid, NULL, PM_QUIET, __return_cb, pc, uid);
+ ret = pkgmgr_client_usr_reinstall(pc, NULL, data.pkgid, NULL, PM_QUIET, __return_cb, pc, target_uid);
if (ret < 0) {
data.result = PKGCMD_ERRCODE_ERROR;
if (access(data.pkg_path, F_OK) != 0)
ret = pkgmgr_client_usr_mount_install(pc,
data.pkg_type[0] != '\0' ? data.pkg_type : NULL,
NULL, data.pkg_path, NULL, PM_QUIET,
- __return_cb, pc, uid);
+ __return_cb, pc, target_uid);
else
ret = pkgmgr_client_usr_mount_install(pc,
data.pkg_type[0] != '\0' ? data.pkg_type : NULL,
data.des_path, data.pkg_path,
- NULL, PM_QUIET, __return_cb, pc, uid);
+ NULL, PM_QUIET, __return_cb, pc, target_uid);
if (ret < 0) {
data.result = PKGCMD_ERRCODE_ERROR;
ret = -1;
break;
}
- ret = __is_app_installed(data.pkgid, uid);
+ ret = __is_app_installed(data.pkgid, target_uid);
if (ret == -1) {
printf("package is not installed\n");
break;
}
ret = pkgmgr_client_usr_clear_user_data(pc, data.pkg_type,
- data.pkgid, PM_QUIET, uid);
+ data.pkgid, PM_QUIET, target_uid);
if (ret < 0)
break;
ret = data.result;
case CLEAR_ALL_REQ:
if (data.pkg_type[0] == '\0') {
ret = 0;
- if (uid != GLOBAL_USER)
- ret = pkgmgrinfo_pkginfo_get_usr_list(__pkgmgr_list_clear_cb, NULL, uid);
+ if (target_uid != GLOBAL_USER)
+ ret = pkgmgrinfo_pkginfo_get_usr_list(__pkgmgr_list_clear_cb, NULL, target_uid);
else
ret = pkgmgrinfo_pkginfo_get_list(__pkgmgr_list_clear_cb, NULL);
break;
}
- if (uid != GLOBAL_USER)
- ret = pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(handle, __pkgmgr_list_clear_cb, NULL, uid);
+ if (target_uid != GLOBAL_USER)
+ ret = pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(handle, __pkgmgr_list_clear_cb, NULL, target_uid);
else
ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, __pkgmgr_list_clear_cb, NULL);
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());
+ ret = pkgmgr_client_activate_global_app_for_uid(pc, data.pkgid,
+ __app_return_cb, __get_current_user_id());
else
/* enable app which belongs to this user */
- ret = pkgmgr_client_usr_activate_app(pc, data.pkgid, __app_return_cb, uid);
+ ret = pkgmgr_client_usr_activate_app(pc, data.pkgid, __app_return_cb, target_uid);
} else {
listen_pc = pkgmgr_client_new(PC_LISTENING);
if (listen_pc == NULL) {
printf("Failed to set callback[%d]\n", ret);
break;
}
- ret = pkgmgr_client_usr_activate(pc, data.pkg_type, data.pkgid, uid);
+ ret = pkgmgr_client_usr_activate(pc, data.pkg_type, data.pkgid, target_uid);
}
if (ret < 0)
break;
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());
+ ret = pkgmgr_client_deactivate_global_app_for_uid(pc, data.pkgid,
+ __app_return_cb, __get_current_user_id());
else
/* disable app which belongs to this user */
- ret = pkgmgr_client_usr_deactivate_app(pc, data.pkgid, __app_return_cb, uid);
+ ret = pkgmgr_client_usr_deactivate_app(pc, data.pkgid, __app_return_cb, target_uid);
} else {
listen_pc = pkgmgr_client_new(PC_LISTENING);
if (listen_pc == NULL) {
printf("Failed to set callback[%d]\n", ret);
break;
}
- ret = pkgmgr_client_usr_deactivate(pc, data.pkg_type, data.pkgid, uid);
+ ret = pkgmgr_client_usr_deactivate(pc, data.pkg_type, data.pkgid, target_uid);
}
if (ret < 0)
break;
ret = -1;
break;
}
- ret = __is_app_installed(data.pkgid, uid);
+ ret = __is_app_installed(data.pkgid, target_uid);
if (ret == -1) {
printf("package is not installed\n");
break;
}
ret = pkgmgr_client_usr_request_service(PM_REQUEST_MOVE, data.type, pc,
- data.pkg_type, data.pkgid, uid, NULL, __return_cb, NULL);
+ data.pkg_type, data.pkgid, target_uid, NULL, __return_cb, NULL);
if (ret < 0)
break;
}
if (data.request == KILLAPP_REQ) {
- ret = pkgmgr_client_usr_request_service(PM_REQUEST_KILL_APP, 0, pc, NULL, data.pkgid, uid, NULL, NULL, &pid);
+ ret = pkgmgr_client_usr_request_service(PM_REQUEST_KILL_APP, 0, pc,
+ NULL, data.pkgid, target_uid, NULL, NULL, &pid);
if (ret < 0) {
data.result = PKGCMD_ERRCODE_ERROR;
break;
printf("Pkgid: %s is already Terminated\n", data.pkgid);
} else if (data.request == CHECKAPP_REQ) {
- ret = pkgmgr_client_usr_request_service(PM_REQUEST_CHECK_APP, 0, pc, NULL, data.pkgid, uid, NULL, NULL, &pid);
+ ret = pkgmgr_client_usr_request_service(PM_REQUEST_CHECK_APP, 0, pc,
+ NULL, data.pkgid, target_uid, NULL, NULL, &pid);
if (ret < 0) {
data.result = PKGCMD_ERRCODE_ERROR;
break;
case LIST_REQ:
if (data.pkg_type[0] == '\0') {
ret = 0;
- if (uid != GLOBAL_USER)
- ret = pkgmgrinfo_pkginfo_get_usr_list(__pkgmgr_list_cb, NULL, uid);
+ if (target_uid != GLOBAL_USER)
+ ret = pkgmgrinfo_pkginfo_get_usr_list(__pkgmgr_list_cb, NULL, target_uid);
else
ret = pkgmgrinfo_pkginfo_get_list(__pkgmgr_list_cb, NULL);
break;
}
- if (uid != GLOBAL_USER)
- ret = pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(handle, __pkgmgr_list_cb, NULL, uid);
+ if (target_uid != GLOBAL_USER)
+ ret = pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(handle, __pkgmgr_list_cb, NULL, target_uid);
else
ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle, __pkgmgr_list_cb, NULL);
}
if (data.type == 9) {
- ret = pkgmgrinfo_pkginfo_get_usr_list(__pkg_list_cb, (void *)pc, uid);
+ ret = pkgmgrinfo_pkginfo_get_usr_list(__pkg_list_cb, (void *)pc, target_uid);
break;
}
ret = pkgmgr_client_usr_request_service(PM_REQUEST_GET_SIZE, data.type,
- pc, NULL, data.pkgid, uid, NULL, NULL, NULL);
+ pc, NULL, data.pkgid, target_uid, NULL, NULL, NULL);
if (ret < 0) {
data.result = PKGCMD_ERRCODE_ERROR;
break;
}
uid_t uid = getuid();
- if (!is_root_cmd && uid == OWNER_ROOT) {
- printf("Current User is Root! : Only regular users are allowed\n");
+ if (is_root_cmd && uid != OWNER_ROOT) {
+ printf("This cmd is allowed for only root user\n");
return -1;
}
+ if (uid == OWNER_ROOT) {
+ uid = DEFAULT_USER;
+ printf("Current User is Root! : " \
+ "target_uid will be default user(%d)\n", uid);
+ }
+
if (data.global == 1)
uid = GLOBAL_USER;
+ printf("target uid(%d)\n", uid);
ret = __process_request(uid);
if ((ret < 0) && (data.result == 0)) {