From: Sangyoon Jang Date: Fri, 22 May 2020 07:17:55 +0000 (+0900) Subject: Fix error handling when multi pkg install X-Git-Tag: submit/tizen/20200601.023448~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F47%2F234147%2F1;p=platform%2Fcore%2Fappfw%2Fpkgmgr-tool.git Fix error handling when multi pkg install Exit with PACKAGE_NOT_FOUND error when the input package does not exist. Change-Id: I5b7119012efa08b7022f8f6ea60171d868b87610 Signed-off-by: Sangyoon Jang --- diff --git a/src/pkg_cmd.c b/src/pkg_cmd.c index 930c051..b60eba2 100644 --- a/src/pkg_cmd.c +++ b/src/pkg_cmd.c @@ -646,6 +646,8 @@ static int __install_req_dispatcher(pm_tool_args *data, uid_t target_uid) { int ret; pkgmgr_client *pc; + GList *list; + char *pkg; if (data->pkg_path[0] == '\0') { __invalid_arg_handler(data); @@ -677,6 +679,13 @@ static int __install_req_dispatcher(pm_tool_args *data, uid_t target_uid) data->result = PKGMGR_INSTALLER_ERRCODE_ERROR; if (access(data->pkg_path, F_OK) != 0) data->result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND; + for (list = data->pkgs; list; list = list->next) { + pkg = (char *)list->data; + if (access(pkg, F_OK) != 0) { + data->result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND; + break; + } + } pkgmgr_client_free(pc); return ret; } @@ -839,6 +848,8 @@ static int __mount_install_req_dispatcher(pm_tool_args *data, uid_t target_uid) { int ret; pkgmgr_client *pc; + GList *list; + char *pkg; if (data->pkg_path[0] == '\0') { __invalid_arg_handler(data); @@ -870,6 +881,13 @@ static int __mount_install_req_dispatcher(pm_tool_args *data, uid_t target_uid) data->result = PKGMGR_INSTALLER_ERRCODE_ERROR; if (access(data->pkg_path, F_OK) != 0) data->result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND; + for (list = data->pkgs; list; list = list->next) { + pkg = (char *)list->data; + if (access(pkg, F_OK) != 0) { + data->result = PKGMGR_INSTALLER_ERRCODE_PACKAGE_NOT_FOUND; + break; + } + } pkgmgr_client_free(pc); return ret; } @@ -1684,11 +1702,8 @@ int main(int argc, char *argv[]) "%s", optarg); __parse_multiple_pkgs(&data, argc, argv); ret = __convert_to_absolute_path(&data); - if (ret == -1) { + if (ret == -1) printf("conversion of relative path to absolute path failed\n"); - __free_data(&data); - return -1; - } printf("path is %s\n", data.pkg_path); break;