Fix package_manager_set_event_status 63/111963/1
authorSangyoon Jang <s89.jang@samsung.com>
Wed, 25 Jan 2017 06:48:34 +0000 (15:48 +0900)
committerSangyoon Jang <s89.jang@samsung.com>
Wed, 25 Jan 2017 06:48:34 +0000 (15:48 +0900)
Convert input package_manager_status_type_e to proper value.

Change-Id: Ice900a1b080cece0bda2a65e65a25847b54b80b3
Signed-off-by: Sangyoon Jang <s89.jang@samsung.com>
src/package_manager.c

index 0fbd8f2..c572d67 100644 (file)
@@ -821,14 +821,43 @@ static int global_event_handler(uid_t target_uid, int req_id, const char *pkg_ty
        return PACKAGE_MANAGER_ERROR_NONE;
 }
 
+static int __convert_status_type(package_manager_status_type_e type)
+{
+       switch (type) {
+       case PACKAGE_MANAGER_STATUS_TYPE_ALL:
+               return PKGMGR_CLIENT_STATUS_ALL;
+       case PACKAGE_MANAGER_STATUS_TYPE_INSTALL:
+               return PKGMGR_CLIENT_STATUS_INSTALL;
+       case PACKAGE_MANAGER_STATUS_TYPE_UNINSTALL:
+               return PKGMGR_CLIENT_STATUS_UNINSTALL;
+       case PACKAGE_MANAGER_STATUS_TYPE_UPGRADE:
+               return PKGMGR_CLIENT_STATUS_UPGRADE;
+       case PACKAGE_MANAGER_STATUS_TYPE_MOVE:
+               return PKGMGR_CLIENT_STATUS_MOVE;
+       case PACKAGE_MANAGER_STATUS_TYPE_CLEAR_DATA:
+               return PKGMGR_CLIENT_STATUS_CLEAR_DATA;
+       case PACKAGE_MANAGER_STATUS_TYPE_INSTALL_PROGRESS:
+               return PKGMGR_CLIENT_STATUS_INSTALL_PROGRESS;
+       case PACKAGE_MANAGER_STATUS_TYPE_GET_SIZE:
+               return PKGMGR_CLIENT_STATUS_GET_SIZE;
+       default:
+               return -1;
+       }
+}
+
 API int package_manager_set_event_status(package_manager_h manager, int status_type)
 {
        int retval;
+       int type;
 
        if (manager == NULL)
                return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
 
-       retval = pkgmgr_client_set_status_type(manager->pc, status_type);
+       type = __convert_status_type(status_type);
+       if (type == -1)
+               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+       retval = pkgmgr_client_set_status_type(manager->pc, type);
 
        if (retval < 0)
                return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);