if (ret != PMINFO_R_OK)
goto catch;
- if ((job->req_type == REQUEST_TYPE_DISABLE_APP ||
- job->req_type == REQUEST_TYPE_ENABLE_APP) &&
- *is_global) {
- ret = PMINFO_R_ERROR;
- goto catch;
- } else if ((job->req_type == REQUEST_TYPE_DISABLE_GLOBAL_APP_FOR_UID ||
- job->req_type ==
- REQUEST_TYPE_ENABLE_GLOBAL_APP_FOR_UID) &&
+ if ((job->req_type == REQUEST_TYPE_DISABLE_GLOBAL_APP_FOR_UID ||
+ job->req_type ==
+ REQUEST_TYPE_ENABLE_GLOBAL_APP_FOR_UID) &&
!*is_global) {
ret = PMINFO_R_ERROR;
goto catch;
char *backend_cmd;
char **argv;
char args[MAX_PKG_ARGS_LEN];
+ gchar *req_id;
+ gchar *pkgid;
int pid;
backend_cmd = job->backend_path;
if (backend_cmd == NULL)
return -1;
+ req_id = g_shell_quote(job->req_id);
+ pkgid = g_shell_quote(job->pkgid);
+ if (!req_id || !pkgid)
+ return -1;
+
snprintf(args, sizeof(args), "%s -k %s -i %s -u %d %s", backend_cmd,
- job->req_id, job->pkgid, (int)job->target_uid, job->args);
+ req_id, pkgid, (int)job->target_uid, job->args);
argv = __generate_argv(args);
pid = __fork_and_exec_with_args(argv, APPFW_UID);
g_strfreev(argv);
+ g_free(req_id);
+ g_free(pkgid);
return pid;
}
char *backend_cmd;
char **argv;
char args[MAX_PKG_ARGS_LEN];
+ gchar *req_id;
+ gchar *pkgid;
int pid;
backend_cmd = job->backend_path;
if (backend_cmd == NULL)
return -1;
+ req_id = g_shell_quote(job->req_id);
+ pkgid = g_shell_quote(job->pkgid);
+ if (!req_id || !pkgid)
+ return -1;
+
snprintf(args, sizeof(args), "%s -k %s -w %s -u %d %s", backend_cmd,
- job->req_id, job->pkgid, (int)job->target_uid, job->args);
+ req_id, pkgid, (int)job->target_uid, job->args);
argv = __generate_argv(args);
pid = __fork_and_exec_with_args(argv, APPFW_UID);
g_strfreev(argv);
+ g_free(req_id);
+ g_free(pkgid);
return pid;
}
char *backend_cmd;
char **argv;
char args[MAX_PKG_ARGS_LEN];
+ gchar *req_id;
+ gchar *pkgid;
int pid;
backend_cmd = job->backend_path;
if (backend_cmd == NULL)
return -1;
+ req_id = g_shell_quote(job->req_id);
+ pkgid = g_shell_quote(job->pkgid);
+ if (!req_id || !pkgid)
+ return -1;
+
snprintf(args, sizeof(args), "%s -k %s -r %s -u %d", backend_cmd,
- job->req_id, job->pkgid, (int)job->target_uid);
+ req_id, pkgid, (int)job->target_uid);
argv = __generate_argv(args);
pid = __fork_and_exec_with_args(argv, APPFW_UID);
g_strfreev(argv);
+ g_free(req_id);
+ g_free(pkgid);
return pid;
}
if (ret != PMINFO_R_OK || strlen(job->appid) == 0) {
_send_app_signal(job->target_uid, job->req_id, job->pkgid, job->pkgid,
PKGMGR_INSTALLER_START_KEY_STR,
- PKGMGR_INSTALLER_GLOBAL_APP_ENABLE_FOR_UID,
+ PKGMGR_INSTALLER_APP_ENABLE_EVENT_STR,
job->req_type);
_send_app_signal(job->target_uid, job->req_id, job->pkgid, job->pkgid,
PKGMGR_INSTALLER_END_KEY_STR,
_send_app_signal(job->target_uid, job->req_id, job->pkgid, job->appid,
PKGMGR_INSTALLER_START_KEY_STR,
- PKGMGR_INSTALLER_GLOBAL_APP_ENABLE_FOR_UID,
+ PKGMGR_INSTALLER_APP_ENABLE_EVENT_STR,
job->req_type);
ret = pkgmgr_parser_update_global_app_disable_for_uid_info_in_db(
_send_app_signal(job->target_uid, job->req_id,
job->pkgid, job->pkgid,
PKGMGR_INSTALLER_START_KEY_STR,
- PKGMGR_INSTALLER_GLOBAL_APP_DISABLE_FOR_UID,
+ PKGMGR_INSTALLER_APP_DISABLE_EVENT_STR,
job->req_type);
_send_app_signal(job->target_uid, job->req_id, job->pkgid, job->pkgid,
PKGMGR_INSTALLER_END_KEY_STR,
_send_app_signal(job->target_uid, job->req_id,
job->pkgid, job->appid,
PKGMGR_INSTALLER_START_KEY_STR,
- PKGMGR_INSTALLER_GLOBAL_APP_DISABLE_FOR_UID,
+ PKGMGR_INSTALLER_APP_DISABLE_EVENT_STR,
job->req_type);
ret = __kill_app(job->appid, job->target_uid);
static int __process_cleardata(struct backend_job *job)
{
- char *backend_cmd;
+ static const char *backend_cmd = "/usr/bin/pkg_cleardata";
char **argv;
char args[MAX_PKG_ARGS_LEN];
int pid;
- backend_cmd = job->backend_path;
- if (backend_cmd == NULL)
+ if ((int)job->target_uid < REGULAR_USER)
return -1;
- /* TODO: set movetype */
- snprintf(args, sizeof(args), "%s -k %s -c %s -u %d", backend_cmd,
- job->req_id, job->pkgid, (int)job->target_uid);
+ snprintf(args, sizeof(args), "%s -d -n %s -u %d",
+ backend_cmd, job->pkgid, job->target_uid);
argv = __generate_argv(args);
-
pid = __fork_and_exec_with_args(argv, APPFW_UID);
g_strfreev(argv);
-
return pid;
}
static int __process_clearcache(struct backend_job *job)
{
- static const char *backend_cmd = "/usr/bin/pkg_clearcache";
+ static const char *backend_cmd = "/usr/bin/pkg_cleardata";
char **argv;
char args[MAX_PKG_ARGS_LEN];
int pid;
- snprintf(args, sizeof(args), "%s %s", backend_cmd, job->pkgid);
+ if ((int)job->target_uid < REGULAR_USER)
+ return -1;
+
+ snprintf(args, sizeof(args), "%s -c -n %s -u %d",
+ backend_cmd, job->pkgid, job->target_uid);
argv = __generate_argv(args);
- pid = __fork_and_exec_with_args(argv, job->target_uid);
+ pid = __fork_and_exec_with_args(argv, APPFW_UID);
g_strfreev(argv);
-
return pid;
}
return ret;
}
+static int __process_migrate_external_image(struct backend_job *job)
+{
+ char *backend_cmd;
+ char **argv;
+ char args[MAX_PKG_ARGS_LEN];
+ int pid;
+
+ backend_cmd = job->backend_path;
+ if (backend_cmd == NULL)
+ return -1;
+
+ snprintf(args, sizeof(args), "%s -k %s --migrate-extimg %s -u %d %s",
+ backend_cmd, job->req_id, job->pkgid,
+ (int)job->target_uid, job->args);
+
+ argv = __generate_argv(args);
+
+ pid = __fork_and_exec_with_args(argv, APPFW_UID);
+ g_strfreev(argv);
+
+ return pid;
+}
+
static int __post_process(int ret, int x, struct backend_job *job)
{
if (ret < 0) {
/* all backend messages queue are empty or busy */
if (x == num_of_backends || job == NULL) {
- DBG("no job left");
+ DBG("no job available");
return FALSE;
}
ret = -1;
_send_fail_signal(job);
_free_backend_job(job);
- return FALSE;
+ return TRUE;
}
}
#endif
ret = __process_set_app_label(job);
_free_backend_job(job);
break;
+ case REQUEST_TYPE_MIGRATE_EXTERNAL_IMAGE:
+ __set_backend_busy(x);
+ ret = __process_migrate_external_image(job);
+ __post_process(ret, x, job);
+ break;
default:
ret = -1;
break;
}
- return FALSE;
+ return TRUE;
}
int main(int argc, char *argv[])