#define OPTVAL_CLEAR_ALL 1001
#define OPTVAL_UID 1002
-static int __process_request(uid_t uid);
-static void __print_usage();
static int __is_app_installed(char *pkgid, uid_t 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 *data);
-static int __convert_to_absolute_path(char *path);
-
-/* Supported options */
-/* Note: 'G' is reserved */
-const char *short_options = "iurwmcgxCkaADL:lsd:p:t:n:T:e:M:X:Y:Z:qhGS";
-const struct option long_options[] = {
- {"install", 0, NULL, 'i'},
- {"uninstall", 0, NULL, 'u'},
- {"reinstall", 0, NULL, 'r'},
- {"mount-install", 0, NULL, 'w'},
- {"move", 0, NULL, 'm'},
- {"clear", 0, NULL, 'c'},
- {"clear-all", 0, NULL, OPTVAL_CLEAR_ALL},
- {"getsize", 0, NULL, 'g'},
- {"activate", 0, NULL, 'A'},
- {"deactivate", 0, NULL, 'D'},
- {"activate with Label", 1, NULL, 'L'},
- {"check", 0, NULL, 'C'},
- {"kill", 0, NULL, 'k'},
- {"app-path", 0, NULL, 'a'},
- {"list", 0, NULL, 'l'},
- {"show", 0, NULL, 's'},
- {"descriptor", 1, NULL, 'd'},
- {"package-path", 1, NULL, 'p'},
- {"old_pkg", 1, NULL, 'X'},
- {"new_pkg", 1, NULL, 'Y'},
- {"delta_pkg", 1, NULL, 'Z'},
- {"package-type", 1, NULL, 't'},
- {"package-name", 1, NULL, 'n'},
- {"move-type", 1, NULL, 'T'},
- {"getsize-type", 1, NULL, 'T'},
- {"tep-path", 1, NULL, 'e'},
- {"tep-move", 1, NULL, 'M'},
- {"global", 0, NULL, OPTVAL_GLOBAL},
- {"quiet", 0, NULL, 'q'},
- {"help", 0, NULL, 'h'},
- {"debug-mode", 0, NULL, 'G'},
- {"getsizeinfo", 0, NULL, 'x'},
- {"uid", 1, NULL, OPTVAL_UID},
- {"skip-optimization", 0, NULL, 'S'},
- {0, 0, 0, 0} /* sentinel */
-};
enum pm_tool_request_e {
INSTALL_REQ = 1,
KILLAPP_REQ,
LIST_REQ,
SHOW_REQ,
- HELP_REQ,
CREATE_DELTA,
GET_PKG_SIZE_INFO_REQ
};
typedef enum pm_tool_request_e req_type;
-typedef int (*dispatch_func)(uid_t target_uid);
-
struct pm_tool_args_t {
req_type request;
char pkg_path[PATH_MAX];
bool skip_optimization;
};
typedef struct pm_tool_args_t pm_tool_args;
-pm_tool_args data;
+
+typedef int (*dispatch_func)(pm_tool_args *data, uid_t target_uid);
static GMainLoop *main_loop = NULL;
-static void __free_data()
+static void __free_data(pm_tool_args *data)
{
- if (data.resolved_path_pkg_old)
- free(data.resolved_path_pkg_old);
- if (data.resolved_path_pkg_new)
- free(data.resolved_path_pkg_new);
- if (data.resolved_path_delta_pkg)
- free(data.resolved_path_delta_pkg);
+ if (data->resolved_path_pkg_old)
+ free(data->resolved_path_pkg_old);
+ if (data->resolved_path_pkg_new)
+ free(data->resolved_path_pkg_new);
+ if (data->resolved_path_delta_pkg)
+ free(data->resolved_path_delta_pkg);
}
static void __error_no_to_string(int errnumber, char **errstr)
int ret_val;
char delims[] = ":";
char *ret_result = NULL;
+ pm_tool_args *data = (pm_tool_args *)priv_data;
if (strncmp(key, "error", strlen("error")) == 0) {
ret_val = atoi(val);
- data.result = ret_val;
+ data->result = ret_val;
ret_result = strstr((char *)val, delims);
if (ret_result)
req_id, pkg_type, pkgid, key, val);
if (strncmp(key, "end", strlen("end")) == 0) {
- if ((strncmp(val, "fail", strlen("fail")) == 0) && data.result == 0)
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ if ((strncmp(val, "fail", strlen("fail")) == 0) && data->result == 0)
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
g_main_loop_quit(main_loop);
}
const void *pmsg, void *priv_data)
{
int ret_val;
+ pm_tool_args *data = (pm_tool_args *)priv_data;
if (strncmp(key, "error", strlen("error")) == 0) {
ret_val = atoi(val);
- data.result = ret_val;
+ data->result = ret_val;
}
printf("__app_return_cb req_id[%d] pkg_type[%s] pkgid[%s] appid[%s] " \
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 = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ if ((strncmp(val, "fail", strlen("fail")) == 0) && data->result == 0)
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
g_main_loop_quit(main_loop);
}
return 0;
}
-static int __convert_to_absolute_path(char *path)
+static int __convert_to_absolute_path(pm_tool_args *data)
{
char abs[PKG_NAME_STRING_LEN_MAX] = {'\0'};
char temp[PKG_NAME_STRING_LEN_MAX] = {'\0'};
char *ptr = NULL;
- if (path == NULL) {
+ if (data->pkg_path[0] == '\0') {
printf("path is NULL\n");
return -1;
}
- strncpy(temp, path, PKG_NAME_STRING_LEN_MAX - 1);
- if (strchr(path, '/') == NULL) {
+ strncpy(temp, data->pkg_path, PKG_NAME_STRING_LEN_MAX - 1);
+ if (strchr(data->pkg_path, '/') == NULL) {
if (getcwd(abs, PKG_NAME_STRING_LEN_MAX - 1) == NULL) {
printf("getcwd() failed\n");
return -1;
}
- memset(data.pkg_path, '\0', PKG_NAME_STRING_LEN_MAX);
- snprintf(data.pkg_path, PKG_NAME_STRING_LEN_MAX - 1, "%s/%s", abs, temp);
+ memset(data->pkg_path, '\0', PKG_NAME_STRING_LEN_MAX);
+ snprintf(data->pkg_path, PKG_NAME_STRING_LEN_MAX - 1, "%s/%s", abs, temp);
return 0;
}
- if (strncmp(path, "./", 2) == 0) {
+ if (strncmp(data->pkg_path, "./", 2) == 0) {
ptr = temp;
if (getcwd(abs, PKG_NAME_STRING_LEN_MAX - 1) == NULL) {
printf("getcwd() failed\n");
return -1;
}
ptr = ptr + 2;
- memset(data.pkg_path, '\0', PKG_NAME_STRING_LEN_MAX);
- snprintf(data.pkg_path, PKG_NAME_STRING_LEN_MAX - 1, "%s/%s", abs, ptr);
+ memset(data->pkg_path, '\0', PKG_NAME_STRING_LEN_MAX);
+ snprintf(data->pkg_path, PKG_NAME_STRING_LEN_MAX - 1, "%s/%s", abs, ptr);
return 0;
}
return 0;
}
-static int __convert_to_absolute_tep_path(char *path)
+static int __convert_to_absolute_tep_path(pm_tool_args *data)
{
char abs[PATH_MAX] = {'\0'};
char temp[PATH_MAX] = {'\0'};
char *ptr = NULL;
- if (path == NULL) {
+ if (data->tep_path[0] == '\0') {
printf("path is NULL\n");
return -1;
}
- strncpy(temp, path, PATH_MAX - 1);
- if (strchr(path, '/') == NULL) {
+ strncpy(temp, data->tep_path, PATH_MAX - 1);
+ if (strchr(data->tep_path, '/') == NULL) {
if (getcwd(abs, PATH_MAX - 1) == NULL || abs[0] == '\0') {
printf("getcwd() failed\n");
return -1;
}
- memset(data.tep_path, '\0', PATH_MAX);
- snprintf(data.tep_path, PATH_MAX - 1, "%s/%s", abs, temp);
+ memset(data->tep_path, '\0', PATH_MAX);
+ snprintf(data->tep_path, PATH_MAX - 1, "%s/%s", abs, temp);
return 0;
}
- if (strncmp(path, "./", 2) == 0) {
+ if (strncmp(data->tep_path, "./", 2) == 0) {
ptr = temp;
if (getcwd(abs, PATH_MAX - 1) == NULL || abs[0] == '\0') {
printf("getcwd() failed\n");
return -1;
}
ptr = ptr + 2;
- memset(data.tep_path, '\0', PATH_MAX);
- snprintf(data.tep_path, PATH_MAX - 1, "%s/%s", abs, ptr);
+ memset(data->tep_path, '\0', PATH_MAX);
+ snprintf(data->tep_path, PATH_MAX - 1, "%s/%s", abs, ptr);
return 0;
}
return 0;
printf("pkgcmd -D -t app -n org.example.helloapp --global\n");
printf("\n");
- __free_data();
exit(0);
}
int ret = -1;
char *pkgid = NULL;
char *pkg_type = NULL;
+ pm_tool_args *data = (pm_tool_args *)user_data;
ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
if (ret == -1) {
ret = pkgmgr_client_usr_clear_user_data(pc, pkg_type, pkgid, PM_QUIET,
uid);
if (ret >= 0)
- ret = data.result;
+ ret = data->result;
pkgmgr_client_free(pc);
return ret;
}
-static void __invalid_arg_handler(void)
+static void __invalid_arg_handler(pm_tool_args *data)
{
printf("Please provide the arguments.\n");
printf("use -h option to see usage\n");
- data.result = PKGMGR_INSTALLER_ERRCODE_INVALID_VALUE;
+ data->result = PKGMGR_INSTALLER_ERRCODE_INVALID_VALUE;
}
-static int __install_req_dispatcher(uid_t target_uid)
+static int __install_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgr_client *pc;
- if (data.pkg_path[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkg_path[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
main_loop = g_main_loop_new(NULL, FALSE);
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
return -1;
}
- if (data.debug_mode)
+ if (data->debug_mode)
pkgmgr_client_set_debug_mode(pc, true);
- if (data.skip_optimization)
+ if (data->skip_optimization)
pkgmgr_client_set_skip_optimization(pc, true);
- if (data.tep_path[0] != '\0')
- pkgmgr_client_set_tep_path(pc, data.tep_path, data.tep_move);
+ if (data->tep_path[0] != '\0')
+ pkgmgr_client_set_tep_path(pc, data->tep_path, data->tep_move);
- if (data.des_path[0] == '\0')
+ if (data->des_path[0] == '\0')
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, target_uid);
+ data->pkg_type[0] != '\0' ? data->pkg_type : NULL,
+ NULL, data->pkg_path, NULL, PM_QUIET,
+ __return_cb, data, 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, target_uid);
+ data->pkg_type[0] != '\0' ? data->pkg_type : NULL,
+ data->des_path, data->pkg_path,
+ NULL, PM_QUIET, __return_cb, data, target_uid);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
- if (access(data.pkg_path, F_OK) != 0)
- data.result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ if (access(data->pkg_path, F_OK) != 0)
+ data->result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND;
pkgmgr_client_free(pc);
return ret;
}
g_main_loop_run(main_loop);
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
-static int __uninstall_req_dispatcher(uid_t target_uid)
+static int __uninstall_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgr_client *pc;
- if (data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
main_loop = g_main_loop_new(NULL, FALSE);
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
return -1;
}
- ret = __is_app_installed(data.pkgid, target_uid);
+ ret = __is_app_installed(data->pkgid, target_uid);
if (ret == -1) {
printf("package is not installed\n");
pkgmgr_client_free(pc);
return ret;
}
- ret = pkgmgr_client_usr_uninstall(pc, data.pkg_type, data.pkgid,
- PM_QUIET, __return_cb, NULL, target_uid);
+ ret = pkgmgr_client_usr_uninstall(pc, data->pkg_type, data->pkgid,
+ PM_QUIET, __return_cb, data, target_uid);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
- if (access(data.pkg_path, F_OK) != 0)
- data.result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ if (access(data->pkg_path, F_OK) != 0)
+ data->result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND;
pkgmgr_client_free(pc);
return ret;
}
g_main_loop_run(main_loop);
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
-static int __reinstall_req_dispatcher(uid_t target_uid)
+static int __reinstall_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgr_client *pc;
- if (data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
main_loop = g_main_loop_new(NULL, FALSE);
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
return -1;
}
- if (data.debug_mode)
+ if (data->debug_mode)
pkgmgr_client_set_debug_mode(pc, true);
- if (data.skip_optimization)
+ if (data->skip_optimization)
pkgmgr_client_set_skip_optimization(pc, true);
ret = pkgmgr_client_usr_reinstall(pc, NULL,
- data.pkgid, NULL, PM_QUIET, __return_cb, pc, target_uid);
+ data->pkgid, NULL, PM_QUIET, __return_cb, data, target_uid);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
- if (access(data.pkg_path, F_OK) != 0)
- data.result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ if (access(data->pkg_path, F_OK) != 0)
+ data->result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND;
pkgmgr_client_free(pc);
return ret;
}
g_main_loop_run(main_loop);
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
-static int __mount_install_req_dispatcher(uid_t target_uid)
+static int __mount_install_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgr_client *pc;
- if (data.pkg_path[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkg_path[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
main_loop = g_main_loop_new(NULL, FALSE);
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
return -1;
}
- if (data.debug_mode)
+ if (data->debug_mode)
pkgmgr_client_set_debug_mode(pc, true);
- if (data.skip_optimization)
+ if (data->skip_optimization)
pkgmgr_client_set_skip_optimization(pc, true);
- if (data.tep_path[0] != '\0')
- pkgmgr_client_set_tep_path(pc, data.tep_path, data.tep_move);
+ if (data->tep_path[0] != '\0')
+ pkgmgr_client_set_tep_path(pc, data->tep_path, data->tep_move);
- if (data.des_path[0] == '\0')
+ if (data->des_path[0] == '\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, target_uid);
+ data->pkg_type[0] != '\0' ? data->pkg_type : NULL,
+ NULL, data->pkg_path, NULL, PM_QUIET,
+ __return_cb, data, 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, target_uid);
+ data->pkg_type[0] != '\0' ? data->pkg_type : NULL,
+ data->des_path, data->pkg_path,
+ NULL, PM_QUIET, __return_cb, data, target_uid);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
- if (access(data.pkg_path, F_OK) != 0)
- data.result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ if (access(data->pkg_path, F_OK) != 0)
+ data->result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND;
pkgmgr_client_free(pc);
return ret;
}
g_main_loop_run(main_loop);
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
-static int __getsize_req_dispatcher(uid_t target_uid)
+static int __getsize_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgr_client *pc;
- if (data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
return -1;
}
- if (data.type == 9) {
+ if (data->type == 9) {
ret = pkgmgrinfo_pkginfo_get_usr_list(__pkg_list_cb,
(void *)(pc), target_uid);
pkgmgr_client_free(pc);
return ret;
}
- ret = pkgmgr_client_usr_request_service(PM_REQUEST_GET_SIZE, data.type,
- pc, NULL, data.pkgid, target_uid, NULL, NULL, NULL);
+ ret = pkgmgr_client_usr_request_service(PM_REQUEST_GET_SIZE, data->type,
+ pc, NULL, data->pkgid, target_uid, NULL, NULL, NULL);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
pkgmgr_client_free(pc);
return ret;
}
- printf("pkg[%s] size = %d\n", data.pkgid, ret);
+ printf("pkg[%s] size = %d\n", data->pkgid, ret);
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
-static int __clear_req_dispatcher(uid_t target_uid)
+static int __clear_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgr_client *pc;
- if (data.pkg_type[0] == '\0' || data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkg_type[0] == '\0' || data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
printf("PkgMgr Client Creation Failed\n");
return -1;
}
- ret = __is_app_installed(data.pkgid, target_uid);
+ ret = __is_app_installed(data->pkgid, target_uid);
if (ret == -1) {
printf("package is not installed\n");
pkgmgr_client_free(pc);
return ret;
}
- ret = pkgmgr_client_usr_clear_user_data(pc, data.pkg_type,
- data.pkgid, PM_QUIET, target_uid);
+ ret = pkgmgr_client_usr_clear_user_data(pc, data->pkg_type,
+ data->pkgid, PM_QUIET, target_uid);
if (ret < 0) {
pkgmgr_client_free(pc);
return ret;
}
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
-static int __clear_all_req_dispatcher(uid_t target_uid)
+static int __clear_all_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
- if (data.pkg_type[0] == '\0') {
+ if (data->pkg_type[0] == '\0') {
ret = pkgmgrinfo_pkginfo_get_usr_list(__pkgmgr_list_clear_cb,
- NULL, target_uid);
+ data, target_uid);
if (ret == -1)
printf("no packages found\n");
return ret;
}
ret = pkgmgrinfo_pkginfo_filter_add_string(handle,
- PMINFO_PKGINFO_PROP_PACKAGE_TYPE, data.pkg_type);
+ PMINFO_PKGINFO_PROP_PACKAGE_TYPE, data->pkg_type);
if (ret == -1) {
printf("Failed to add package type filter\n");
pkgmgrinfo_pkginfo_filter_destroy(handle);
}
ret = pkgmgrinfo_pkginfo_usr_filter_foreach_pkginfo(handle,
- __pkgmgr_list_clear_cb, NULL, target_uid);
+ __pkgmgr_list_clear_cb, data, target_uid);
if (ret != PMINFO_R_OK)
printf("no package filter list\n");
return ret;
}
-static int __move_req_dispatcher(uid_t target_uid)
+static int __move_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgr_client *pc;
- if (data.pkg_type[0] == '\0' || data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkg_type[0] == '\0' || data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
- if (data.type < 0 || data.type > 2) {
+ if (data->type < 0 || data->type > 2) {
printf("Invalid move type...See usage\n");
return -1;
}
printf("PkgMgr Client Creation Failed\n");
return -1;
}
- ret = __is_app_installed(data.pkgid, target_uid);
+ ret = __is_app_installed(data->pkgid, target_uid);
if (ret == -1) {
printf("package is not installed\n");
pkgmgr_client_free(pc);
return ret;
}
- ret = pkgmgr_client_usr_request_service(PM_REQUEST_MOVE, data.type, pc,
- data.pkg_type, data.pkgid, target_uid, NULL, __return_cb, NULL);
+ ret = pkgmgr_client_usr_request_service(PM_REQUEST_MOVE, data->type, pc,
+ data->pkg_type, data->pkgid, target_uid, NULL, __return_cb, data);
if (ret < 0) {
pkgmgr_client_free(pc);
g_main_loop_run(main_loop);
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
-static int __activate_req_dispatcher(uid_t target_uid)
+static int __activate_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgrinfo_appinfo_h appinfo_h;
pkgmgr_client *pc;
pkgmgr_client *listen_pc = NULL;
- if (data.pkg_type[0] == '\0' || data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkg_type[0] == '\0' || data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
return -1;
}
- if (strlen(data.label) != 0) {
- printf("requested label = %s\n", data.label);
+ if (strlen(data->label) != 0) {
+ printf("requested label = %s\n", data->label);
- ret = pkgmgr_client_usr_set_app_label(pc, data.pkgid,
- data.label, target_uid);
+ ret = pkgmgr_client_usr_set_app_label(pc, data->pkgid,
+ data->label, target_uid);
if (ret < 0) {
printf("set_app_label is failed\n");
pkgmgr_client_free(pc);
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);
+ 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;
+ target_uid = data->uid;
}
- ret = pkgmgrinfo_appinfo_get_usr_disabled_appinfo(data.pkgid,
+ 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);
+ printf("Failed to get appinfo[%s]\n", data->pkgid);
pkgmgr_client_free(pc);
return -1;
}
- if (data.global) {
- if (data.uid != -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, NULL,
+ 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, NULL, GLOBAL_USER);
+ ret = pkgmgr_client_usr_activate_app(pc, data->pkgid,
+ __app_return_cb, data, GLOBAL_USER);
} else {
/* enable local app */
- ret = pkgmgr_client_usr_activate_app(pc, data.pkgid,
- __app_return_cb, NULL, target_uid);
+ ret = pkgmgr_client_usr_activate_app(pc, data->pkgid,
+ __app_return_cb, data, target_uid);
}
pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h);
} else {
pkgmgr_client_free(pc);
return -1;
}
- ret = pkgmgr_client_listen_status(listen_pc, __return_cb, NULL);
+ 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,
+ ret = pkgmgr_client_usr_activate(pc, data->pkg_type, data->pkgid,
target_uid);
}
if (ret < 0) {
pkgmgr_client_free(pc);
if (listen_pc)
pkgmgr_client_free(listen_pc);
- return data.result;
+ return data->result;
}
-static int __deactivate_req_dispatcher(uid_t target_uid)
+static int __deactivate_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgrinfo_appinfo_h appinfo_h;
pkgmgr_client *pc;
pkgmgr_client *listen_pc = NULL;
- if (data.pkg_type[0] == '\0' || data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkg_type[0] == '\0' || data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
return -1;
}
- if (strcmp(data.pkg_type, "app") == 0) {
- ret = pkgmgrinfo_appinfo_get_usr_appinfo(data.pkgid,
+ 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);
+ 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);
+ 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)
+ 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,
+ 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,
+ ret = pkgmgr_client_usr_deactivate_app(pc, data->pkgid,
__app_return_cb, NULL, GLOBAL_USER);
} else {
/* disable local app */
- ret = pkgmgr_client_usr_deactivate_app(pc, data.pkgid,
+ ret = pkgmgr_client_usr_deactivate_app(pc, data->pkgid,
__app_return_cb, NULL, target_uid);
}
pkgmgr_client_free(pc);
return -1;
}
- ret = pkgmgr_client_listen_status(listen_pc, __return_cb, NULL);
+ 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,
+ ret = pkgmgr_client_usr_deactivate(pc, data->pkg_type, data->pkgid,
target_uid);
}
if (ret < 0) {
pkgmgr_client_free(pc);
if (listen_pc)
pkgmgr_client_free(listen_pc);
- return data.result;
+ return data->result;
}
-static int __apppath_req_dispatcher(uid_t target_uid)
+static int __apppath_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
char buf[1024];
- if (data.pkg_type[0] == '\0' && data.pkgid[0] == '\0') {
+ if (data->pkg_type[0] == '\0' && data->pkgid[0] == '\0') {
printf("Tizen Application Installation Path: %s\n",
APP_INSTALLATION_PATH_RW);
return 0;
}
- if ((data.pkg_type[0] == '\0') || (data.pkgid[0] == '\0')) {
+ if ((data->pkg_type[0] == '\0') || (data->pkgid[0] == '\0')) {
printf("Use -h option to see usage\n");
return -1;
}
- if (strncmp(data.pkg_type, "wgt", PKG_TYPE_STRING_LEN_MAX - 1) == 0) {
+ if (strncmp(data->pkg_type, "wgt", PKG_TYPE_STRING_LEN_MAX - 1) == 0) {
snprintf(buf, 1023, "%s/%s/res/wgt",
- APP_INSTALLATION_PATH_RW, data.pkgid);
+ APP_INSTALLATION_PATH_RW, data->pkgid);
printf("Tizen Application Installation Path: %s\n", buf);
return 0;
- } else if (strncmp(data.pkg_type, "tpk", PKG_TYPE_STRING_LEN_MAX - 1) == 0) {
- snprintf(buf, 1023, "%s/%s", APP_INSTALLATION_PATH_RW, data.pkgid);
+ } else if (strncmp(data->pkg_type, "tpk", PKG_TYPE_STRING_LEN_MAX - 1) == 0) {
+ snprintf(buf, 1023, "%s/%s", APP_INSTALLATION_PATH_RW, data->pkgid);
printf("Tizen Application Installation Path: %s\n", buf);
return 0;
} else {
}
}
-static int __checkapp_req_dispatcher(uid_t target_uid)
+static int __checkapp_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
int pid = -1;
pkgmgr_client *pc;
- if (data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
return -1;
}
- if (data.request == KILLAPP_REQ) {
+ if (data->request == KILLAPP_REQ) {
ret = pkgmgr_client_usr_request_service(PM_REQUEST_KILL_APP, 0, pc,
- NULL, data.pkgid, target_uid, NULL, NULL, &pid);
+ NULL, data->pkgid, target_uid, NULL, NULL, &pid);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
pkgmgr_client_free(pc);
return ret;
}
if (pid)
- printf("Pkgid: %s is Terminated\n", data.pkgid);
+ printf("Pkgid: %s is Terminated\n", data->pkgid);
else
- printf("Pkgid: %s is already Terminated\n", data.pkgid);
- } else if (data.request == CHECKAPP_REQ) {
+ 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, target_uid, NULL, NULL, &pid);
+ NULL, data->pkgid, target_uid, NULL, NULL, &pid);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
pkgmgr_client_free(pc);
return ret;
}
if (pid)
- printf("Pkgid: %s is Running\n", data.pkgid);
+ printf("Pkgid: %s is Running\n", data->pkgid);
else
- printf("Pkgid: %s is Not Running\n", data.pkgid);
+ printf("Pkgid: %s is Not Running\n", data->pkgid);
}
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
-static int __killapp_req_dispatcher(uid_t target_uid)
+static int __killapp_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
int pid = -1;
pkgmgr_client *pc;
- if (data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
return -1;
}
- if (data.request == KILLAPP_REQ) {
+ if (data->request == KILLAPP_REQ) {
ret = pkgmgr_client_usr_request_service(PM_REQUEST_KILL_APP, 0, pc,
- NULL, data.pkgid, target_uid, NULL, NULL, &pid);
+ NULL, data->pkgid, target_uid, NULL, NULL, &pid);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
pkgmgr_client_free(pc);
return ret;
}
if (pid)
- printf("Pkgid: %s is Terminated\n", data.pkgid);
+ printf("Pkgid: %s is Terminated\n", data->pkgid);
else
- printf("Pkgid: %s is already Terminated\n", data.pkgid);
- } else if (data.request == CHECKAPP_REQ) {
+ 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, target_uid, NULL, NULL, &pid);
+ NULL, data->pkgid, target_uid, NULL, NULL, &pid);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERRCODE_ERROR;
+ data->result = PKGMGR_INSTALLER_ERRCODE_ERROR;
pkgmgr_client_free(pc);
return ret;
}
if (pid)
- printf("Pkgid: %s is Running\n", data.pkgid);
+ printf("Pkgid: %s is Running\n", data->pkgid);
else
- printf("Pkgid: %s is Not Running\n", data.pkgid);
+ printf("Pkgid: %s is Not Running\n", data->pkgid);
}
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
-static int __list_req_dispatcher(uid_t target_uid)
+static int __list_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
- if (data.pkg_type[0] == '\0') {
+ if (data->pkg_type[0] == '\0') {
ret = pkgmgrinfo_pkginfo_get_usr_list(__pkgmgr_list_cb,
NULL, target_uid);
if (ret == -1)
}
ret = pkgmgrinfo_pkginfo_filter_add_string(handle,
- PMINFO_PKGINFO_PROP_PACKAGE_TYPE, data.pkg_type);
+ PMINFO_PKGINFO_PROP_PACKAGE_TYPE, data->pkg_type);
if (ret == -1) {
printf("Failed to add package type filter\n");
pkgmgrinfo_pkginfo_filter_destroy(handle);
}
/* unsupported */
-static int __show_req_dispatcher(uid_t target_uid)
+static int __show_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
return -1;
}
-static int __help_req_dispatcher(uid_t target_uid)
-{
- __print_usage();
- return 0;
-}
-
-static int __create_delta_dispatcher(uid_t target_uid)
+static int __create_delta_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
char pkg_old[PATH_MAX];
char pkg_new[PATH_MAX];
printf("CREATE_DELTA\n");
- if (data.pkg_old[0] == '\0' || data.pkg_new[0] == '\0') {
+ if (data->pkg_old[0] == '\0' || data->pkg_new[0] == '\0') {
printf("tpk pkg missing\n");
return -1;
}
- if (data.delta_pkg[0] == '\0') {
- data.resolved_path_delta_pkg = strdup("/tmp/delta_pkg");
+ if (data->delta_pkg[0] == '\0') {
+ data->resolved_path_delta_pkg = strdup("/tmp/delta_pkg");
printf("output file will be /tmp/delta_pkg.delta\n");
}
const char *unzip_argv[] = {"sh",
"/etc/package-manager/pkgmgr-unzip-pkg.sh", "-a",
- data.resolved_path_pkg_old, "-b", data.resolved_path_pkg_new, "-p",
- data.resolved_path_delta_pkg, NULL};
+ data->resolved_path_pkg_old, "-b", data->resolved_path_pkg_new, "-p",
+ data->resolved_path_delta_pkg, NULL};
ret = __xsystem(unzip_argv);
if (ret != 0) {
printf("unzip is fail .\n");
}
printf("unzip is success .\n");
char *ptr_old_pkg = NULL;
- ptr_old_pkg = strrchr(data.resolved_path_pkg_old, '/');
+ ptr_old_pkg = strrchr(data->resolved_path_pkg_old, '/');
if (!ptr_old_pkg) {
printf("not able to extract package name.\n");
}
ptr_old_pkg++;
char *ptr_new_pkg = NULL;
- ptr_new_pkg = strrchr(data.resolved_path_pkg_new, '/');
+ ptr_new_pkg = strrchr(data->resolved_path_pkg_new, '/');
if (!ptr_new_pkg) {
printf("not able to extract package name.\n");
const char *delta_argv[] = {"sh",
"/etc/package-manager/pkgmgr-create-delta.sh", "-a",
- data.resolved_path_pkg_old, "-b", data.resolved_path_pkg_new, "-p",
- data.resolved_path_delta_pkg, NULL};
+ data->resolved_path_pkg_old, "-b", data->resolved_path_pkg_new, "-p",
+ data->resolved_path_delta_pkg, NULL};
ret = __xsystem(delta_argv);
if (ret != 0) {
printf("create delta script fail .\n");
return ret;
}
-static int __get_pkg_size_info_req_dispatcher(uid_t target_uid)
+static int __get_pkg_size_info_req_dispatcher(pm_tool_args *data, uid_t target_uid)
{
int ret;
pkgmgr_client *pc;
- if (data.pkgid[0] == '\0') {
- __invalid_arg_handler();
+ if (data->pkgid[0] == '\0') {
+ __invalid_arg_handler(data);
return -1;
}
pc = pkgmgr_client_new(PC_REQUEST);
if (pc == NULL) {
printf("PkgMgr Client Creation Failed\n");
- data.result = PKGMGR_INSTALLER_ERR_FATAL_ERROR;
+ data->result = PKGMGR_INSTALLER_ERR_FATAL_ERROR;
return -1;
}
- if (strcmp(data.pkgid, PKG_SIZE_INFO_TOTAL) == 0)
+ if (strcmp(data->pkgid, PKG_SIZE_INFO_TOTAL) == 0)
ret = pkgmgr_client_usr_get_total_package_size_info(pc,
__total_pkg_size_info_recv_cb, NULL,
target_uid);
else
ret = pkgmgr_client_usr_get_package_size_info(pc,
- data.pkgid, __pkg_size_info_recv_cb, NULL,
+ data->pkgid, __pkg_size_info_recv_cb, NULL,
target_uid);
if (ret < 0) {
- data.result = PKGMGR_INSTALLER_ERR_FATAL_ERROR;
+ data->result = PKGMGR_INSTALLER_ERR_FATAL_ERROR;
pkgmgr_client_free(pc);
return ret;
}
- printf("pkg[%s] ret: %d\n", data.pkgid, ret);
+ printf("pkg[%s] ret: %d\n", data->pkgid, ret);
g_main_loop_run(main_loop);
pkgmgr_client_free(pc);
- return data.result;
+ return data->result;
}
static dispatch_func __process_request_func_ptr[] = {
[KILLAPP_REQ] = __killapp_req_dispatcher,
[LIST_REQ] = __list_req_dispatcher,
[SHOW_REQ] = __show_req_dispatcher,
- [HELP_REQ] = __help_req_dispatcher,
[CREATE_DELTA] = __create_delta_dispatcher,
[GET_PKG_SIZE_INFO_REQ] = __get_pkg_size_info_req_dispatcher,
};
-static int __process_request(uid_t target_uid)
+static int __process_request(pm_tool_args *data, uid_t target_uid)
{
int ret;
size_t req_size =
sizeof(__process_request_func_ptr) / sizeof(dispatch_func);
- if (data.request >= req_size || data.request == 0) {
+ if (data->request >= req_size || data->request == 0) {
printf("Wrong Request\n");
return -1;
}
- ret = __process_request_func_ptr[data.request](target_uid);
+ ret = __process_request_func_ptr[data->request](data, target_uid);
return ret;
}
long endtime;
struct timeval tv;
bool is_root_cmd = false;
+ pm_tool_args data = { 0 };
+ /* Supported options */
+ /* Note: 'G' is reserved */
+ const char *short_options = "iurwmcgxCkaADL:lsd:p:t:n:T:e:M:X:Y:Z:qhGS";
+ const struct option long_options[] = {
+ {"install", 0, NULL, 'i'},
+ {"uninstall", 0, NULL, 'u'},
+ {"reinstall", 0, NULL, 'r'},
+ {"mount-install", 0, NULL, 'w'},
+ {"move", 0, NULL, 'm'},
+ {"clear", 0, NULL, 'c'},
+ {"clear-all", 0, NULL, OPTVAL_CLEAR_ALL},
+ {"getsize", 0, NULL, 'g'},
+ {"activate", 0, NULL, 'A'},
+ {"deactivate", 0, NULL, 'D'},
+ {"activate with Label", 1, NULL, 'L'},
+ {"check", 0, NULL, 'C'},
+ {"kill", 0, NULL, 'k'},
+ {"app-path", 0, NULL, 'a'},
+ {"list", 0, NULL, 'l'},
+ {"show", 0, NULL, 's'},
+ {"descriptor", 1, NULL, 'd'},
+ {"package-path", 1, NULL, 'p'},
+ {"old_pkg", 1, NULL, 'X'},
+ {"new_pkg", 1, NULL, 'Y'},
+ {"delta_pkg", 1, NULL, 'Z'},
+ {"package-type", 1, NULL, 't'},
+ {"package-name", 1, NULL, 'n'},
+ {"move-type", 1, NULL, 'T'},
+ {"getsize-type", 1, NULL, 'T'},
+ {"tep-path", 1, NULL, 'e'},
+ {"tep-move", 1, NULL, 'M'},
+ {"global", 0, NULL, OPTVAL_GLOBAL},
+ {"quiet", 0, NULL, 'q'},
+ {"help", 0, NULL, 'h'},
+ {"debug-mode", 0, NULL, 'G'},
+ {"getsizeinfo", 0, NULL, 'x'},
+ {"uid", 1, NULL, OPTVAL_UID},
+ {"skip-optimization", 0, NULL, 'S'},
+ {0, 0, 0, 0} /* sentinel */
+ };
if (argc == 1)
__print_usage();
if (optarg)
snprintf(data.pkg_path, sizeof(data.pkg_path),
"%s", optarg);
- ret = __convert_to_absolute_path(data.pkg_path);
+ ret = __convert_to_absolute_path(&data);
if (ret == -1) {
printf("conversion of relative path to absolute path failed\n");
- __free_data();
+ __free_data(&data);
return -1;
}
printf("path is %s\n", data.pkg_path);
data.resolved_path_pkg_old = realpath(data.pkg_old, NULL);
if (data.resolved_path_pkg_old == NULL) {
printf("failed to set realpath\n");
- __free_data();
+ __free_data(&data);
return -1;
}
printf("pkg_old abs path is %s\n", data.resolved_path_pkg_old);
data.resolved_path_pkg_new = realpath(data.pkg_new, NULL);
if (data.resolved_path_pkg_new == NULL) {
printf("failed to set realpath\n");
- __free_data();
+ __free_data(&data);
return -1;
}
printf("pkg_new abs path is %s\n", data.resolved_path_pkg_new);
data.resolved_path_delta_pkg = realpath(data.delta_pkg, NULL);
if (data.resolved_path_delta_pkg == NULL) {
printf("failed to set realpath\n");
- __free_data();
+ __free_data(&data);
return -1;
}
printf("delta_pkg abs path is %s\n", data.resolved_path_delta_pkg);
if (optarg)
strncpy(data.tep_path, optarg,
PATH_MAX - 1);
- ret = __convert_to_absolute_tep_path(data.tep_path);
+ ret = __convert_to_absolute_tep_path(&data);
if (ret == -1) {
printf("conversion of relative tep path to absolute path failed\n");
- __free_data();
+ __free_data(&data);
return -1;
}
printf("TEP path is %s\n", data.tep_path);
break;
case 'h': /* help */
- data.request = HELP_REQ;
+ __free_data(&data);
+ __print_usage();
break;
case 'q': /* quiet mode is removed */
/* Otherwise */
case '?': /* Not an option */
+ __free_data(&data);
__print_usage();
break;
uid_t uid = getuid();
if (is_root_cmd && uid != OWNER_ROOT) {
printf("This cmd is allowed for only root user\n");
- __free_data();
+ __free_data(&data);
return -1;
}
if (data.global == 1)
uid = GLOBAL_USER;
- ret = __process_request(uid);
+ ret = __process_request(&data, uid);
if ((ret < 0) && (data.result == 0)) {
printf("Undefined error(%d)", ret);
data.result = PKGMGR_INSTALLER_ERRCODE_UNDEFINED_ERROR;
gettimeofday(&tv, NULL);
endtime = tv.tv_sec * 1000l + tv.tv_usec / 1000l;
printf("spend time for pkgcmd is [%d]ms\n", (int)(endtime - starttime));
- __free_data();
+ __free_data(&data);
return data.result;
}