Reduce duplicated code 40/276940/1
authorSangyoon Jang <jeremy.jang@samsung.com>
Tue, 28 Jun 2022 05:16:23 +0000 (14:16 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Tue, 28 Jun 2022 05:17:42 +0000 (14:17 +0900)
Change-Id: I66c364576b6ee2d75a08663e1f2e63f7ad043d70
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/package_manager.c
src/package_manager_drm.c
src/package_manager_internal.c
src/package_manager_internal.h

index b00c7d0..1408af3 100644 (file)
@@ -824,19 +824,10 @@ static int __request_install(package_manager_request_h request,
        int request_id = 0;
        request_id = pkgmgr_client_install(request->pc, request->pkg_type, NULL,
                        path, NULL, request->mode, event_cb ? event_cb : request_event_handler, request);
-
-       if (request_id == PKGMGR_R_EINVAL)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOPKG)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOMEM)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EIO)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EPRIV)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ESYSTEM || request_id == PKGMGR_R_ECOMM || request_id == PKGMGR_R_ERROR)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
+       if (request_id < 0) {
+               retval = package_manager_convert_internal_error(request_id);
+               return package_manager_error(retval, __FUNCTION__, NULL);
+       }
 
        if (id)
                *id = request_id;
@@ -867,33 +858,10 @@ static int __request_install_packages(package_manager_request_h request,
        request_id = pkgmgr_client_install_packages(request->pc, paths,
                        n_paths, event_cb ? event_cb : request_event_handler,
                        request);
-
-       if (request_id == PKGMGR_R_EINVAL)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOPKG)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOMEM)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EIO)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_IO_ERROR,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EPRIV)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_PERMISSION_DENIED,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ESYSTEM ||
-                       request_id == PKGMGR_R_ECOMM ||
-                       request_id == PKGMGR_R_ERROR)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_SYSTEM_ERROR,
-                               __FUNCTION__, NULL);
+       if (request_id < 0) {
+               retval = package_manager_convert_internal_error(request_id);
+               return package_manager_error(retval, __FUNCTION__, NULL);
+       }
 
        if (id)
                *id = request_id;
@@ -918,19 +886,10 @@ static int __request_uninstall(package_manager_request_h request,
        int request_id = 0;
        request_id = pkgmgr_client_uninstall(request->pc, request->pkg_type,
                        name, request->mode, event_cb ? event_cb : request_event_handler, request);
-
-       if (request_id == PKGMGR_R_EINVAL)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOPKG)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOMEM)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EIO)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EPRIV)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ESYSTEM || request_id == PKGMGR_R_ECOMM || request_id == PKGMGR_R_ERROR)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
+       if (request_id < 0) {
+               retval = package_manager_convert_internal_error(request_id);
+               return package_manager_error(retval, __FUNCTION__, NULL);
+       }
 
        if (id)
                *id = request_id;
@@ -957,20 +916,10 @@ static int __request_move(package_manager_request_h request,
        request_id = pkgmgr_client_request_service(PM_REQUEST_MOVE, move_type,
                        request->pc, request->pkg_type, name,
                        NULL, event_cb ? event_cb : request_event_handler, request);
-
-       if (request_id == PKGMGR_R_EINVAL)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOPKG)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOMEM)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EIO)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EPRIV)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ESYSTEM || request_id == PKGMGR_R_ECOMM || request_id == PKGMGR_R_ERROR)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
-
+       if (request_id < 0) {
+               retval = package_manager_convert_internal_error(request_id);
+               return package_manager_error(retval, __FUNCTION__, NULL);
+       }
        if (id)
                *id = request_id;
 
@@ -994,19 +943,10 @@ static int __request_mount_install(package_manager_request_h request,
        int request_id = 0;
        request_id = pkgmgr_client_mount_install(request->pc, request->pkg_type, NULL,
                        path, NULL, request->mode, event_cb ? event_cb : request_event_handler, request);
-
-       if (request_id == PKGMGR_R_EINVAL)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOPKG)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOMEM)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EIO)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EPRIV)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ESYSTEM || request_id == PKGMGR_R_ECOMM || request_id == PKGMGR_R_ERROR)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
+       if (request_id < 0) {
+               retval = package_manager_convert_internal_error(request_id);
+               return package_manager_error(retval, __FUNCTION__, NULL);
+       }
 
        if (id)
                *id = request_id;
@@ -1037,33 +977,10 @@ static int __request_mount_install_packages(package_manager_request_h request,
        request_id = pkgmgr_client_mount_install_packages(request->pc, paths,
                        n_paths, event_cb ? event_cb : request_event_handler,
                        request);
-
-       if (request_id == PKGMGR_R_EINVAL)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOPKG)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOMEM)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EIO)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_IO_ERROR,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EPRIV)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_PERMISSION_DENIED,
-                               __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ESYSTEM ||
-                       request_id == PKGMGR_R_ECOMM ||
-                       request_id == PKGMGR_R_ERROR)
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_SYSTEM_ERROR,
-                               __FUNCTION__, NULL);
+       if (request_id < 0) {
+               retval = package_manager_convert_internal_error(request_id);
+               return package_manager_error(retval, __FUNCTION__, NULL);
+       }
 
        if (id)
                *id = request_id;
@@ -1084,18 +1001,10 @@ static int __request_res_copy(package_manager_request_h request,
 
        int request_id = 0;
        request_id = pkgmgr_client_res_copy(request->pc, event_cb, request);
-
-       if (request_id == PKGMGR_R_EINVAL)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOMEM)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EIO)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EPRIV)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ESYSTEM || request_id == PKGMGR_R_ECOMM || request_id == PKGMGR_R_ERROR)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
-
+       if (request_id < 0) {
+               retval = package_manager_convert_internal_error(request_id);
+               return package_manager_error(retval, __FUNCTION__, NULL);
+       }
        if (id)
                *id = request_id;
 
@@ -1115,17 +1024,10 @@ static int __request_res_create_dir(package_manager_request_h request,
 
        int request_id = 0;
        request_id = pkgmgr_client_res_create_dir(request->pc, event_cb, request);
-
-       if (request_id == PKGMGR_R_EINVAL)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOMEM)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EIO)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EPRIV)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ESYSTEM || request_id == PKGMGR_R_ECOMM || request_id == PKGMGR_R_ERROR)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
+       if (request_id < 0) {
+               retval = package_manager_convert_internal_error(request_id);
+               return package_manager_error(retval, __FUNCTION__, NULL);
+       }
 
        if (id)
                *id = request_id;
@@ -1146,17 +1048,10 @@ static int __request_res_remove(package_manager_request_h request,
 
        int request_id = 0;
        request_id = pkgmgr_client_res_remove(request->pc, event_cb, request);
-
-       if (request_id == PKGMGR_R_EINVAL)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ENOMEM)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EIO)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_EPRIV)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-       else if (request_id == PKGMGR_R_ESYSTEM || request_id == PKGMGR_R_ECOMM || request_id == PKGMGR_R_ERROR)
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
+       if (request_id < 0) {
+               retval = package_manager_convert_internal_error(request_id);
+               return package_manager_error(retval, __FUNCTION__, NULL);
+       }
 
        if (id)
                *id = request_id;
@@ -1957,21 +1852,9 @@ API int package_manager_clear_cache_dir(const char *package_id)
                return retval;
 
        int res = pkgmgr_client_clear_cache_dir(package_id);
-       if (res == PKGMGR_R_EINVAL) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       } else if (res == PKGMGR_R_ENOPKG) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
-       } else if (res == PKGMGR_R_ENOMEM) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-       } else if (res == PKGMGR_R_EIO) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-       } else if (res == PKGMGR_R_EPRIV) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-       } else if (res == PKGMGR_R_ESYSTEM || res == PKGMGR_R_ECOMM || res == PKGMGR_R_ERROR) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
-       } else if (res != PKGMGR_R_OK) {
-               _LOGE("Unexpected error");
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
+       if (res < 0) {
+               retval = package_manager_convert_internal_error(res);
+               return package_manager_error(retval, __FUNCTION__, NULL);
        }
 
        return PACKAGE_MANAGER_ERROR_NONE;
@@ -2014,21 +1897,9 @@ API int package_manager_clear_data_dir(const char *package_id)
        pkgmgr_client_free(pc);
        pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo);
 
-       if (retval == PKGMGR_R_EINVAL) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-       } else if (retval == PKGMGR_R_ENOPKG) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
-       } else if (retval == PKGMGR_R_ENOMEM) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-       } else if (retval == PKGMGR_R_EIO) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-       } else if (retval == PKGMGR_R_EPRIV) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-       } else if (retval == PKGMGR_R_ESYSTEM || retval == PKGMGR_R_ECOMM || retval == PKGMGR_R_ERROR) {
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
-       } else if (retval != PKGMGR_R_OK) {
-               _LOGE("Unexpected error");
-               return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
+       if (retval < 0) {
+               retval = package_manager_convert_internal_error(retval);
+               return package_manager_error(retval, __FUNCTION__, NULL);
        }
 
        return PACKAGE_MANAGER_ERROR_NONE;
@@ -2056,6 +1927,21 @@ static void __free_getsize_cbdata(struct getsize_cbdata *cbdata)
        free(cbdata);
 }
 
+static void __copy_size_info(const pkg_size_info_t *src, package_size_info_t *dst)
+{
+       if (src == NULL || dst == NULL) {
+               _LOGE("src or dst size info is NULL");
+               return;
+       }
+
+       dst->data_size = src->data_size;
+       dst->cache_size = src->cache_size;
+       dst->app_size = src->app_size;
+       dst->external_data_size = src->ext_data_size;
+       dst->external_cache_size = src->ext_cache_size;
+       dst->external_app_size = src->ext_app_size;
+}
+
 static void __result_cb(pkgmgr_client *pc, const char *pkgid, const pkg_size_info_t *result, void *user_data)
 {
        struct getsize_cbdata *cbdata = (struct getsize_cbdata *)user_data;
@@ -2067,12 +1953,7 @@ static void __result_cb(pkgmgr_client *pc, const char *pkgid, const pkg_size_inf
        }
 
        package_size_info_t size_info;
-       size_info.data_size  = result->data_size;
-       size_info.cache_size = result->cache_size;
-       size_info.app_size   = result->app_size;
-       size_info.external_data_size  = result->ext_data_size;
-       size_info.external_cache_size = result->ext_cache_size;
-       size_info.external_app_size   = result->ext_app_size;
+       __copy_size_info(result, &size_info);
 
        callback(pkgid, (package_size_info_h)&size_info, cbdata->user_data);
 
@@ -2090,12 +1971,7 @@ static void __total_result_cb(pkgmgr_client *pc, const pkg_size_info_t *result,
        }
 
        package_size_info_t size_info;
-       size_info.data_size  = result->data_size;
-       size_info.cache_size = result->cache_size;
-       size_info.app_size   = result->app_size;
-       size_info.external_data_size  = result->ext_data_size;
-       size_info.external_cache_size = result->ext_cache_size;
-       size_info.external_app_size   = result->ext_app_size;
+       __copy_size_info(result, &size_info);
 
        callback((package_size_info_h)&size_info, cbdata->user_data);
 
@@ -2131,22 +2007,8 @@ static int _get_pkg_size_info(const char *package_id, void *callback, void *user
 
        if (res != PKGMGR_R_OK) {
                __free_getsize_cbdata(cbdata);
-               if (res == PKGMGR_R_EINVAL) {
-                       return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
-               } else if (res == PKGMGR_R_ENOPKG) {
-                       return package_manager_error(PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE, __FUNCTION__, NULL);
-               } else if (res == PKGMGR_R_ENOMEM) {
-                       return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
-               } else if (res == PKGMGR_R_EIO) {
-                       return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
-               } else if (res == PKGMGR_R_EPRIV) {
-                       return package_manager_error(PACKAGE_MANAGER_ERROR_PERMISSION_DENIED, __FUNCTION__, NULL);
-               } else if (res == PKGMGR_R_ESYSTEM || res == PKGMGR_R_ECOMM || res == PKGMGR_R_ERROR) {
-                       return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
-               } else {
-                       _LOGE("Unexpected error");
-                       return package_manager_error(PACKAGE_MANAGER_ERROR_SYSTEM_ERROR, __FUNCTION__, NULL);
-               }
+               res = package_manager_convert_internal_error(res);
+               return package_manager_error(res, __FUNCTION__, NULL);
        }
 
        return PACKAGE_MANAGER_ERROR_NONE;
index 313b71f..8771946 100644 (file)
@@ -41,22 +41,9 @@ API int package_manager_drm_generate_license_request(const char *resp_data,
        ret = pkgmgr_client_generate_license_request(pc, resp_data, req_data,
                        license_url);
        pkgmgr_client_free(pc);
-       if (ret == PKGMGR_R_EINVAL) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
-                               __FUNCTION__, NULL);
-       } else if (ret == PKGMGR_R_ENOMEM) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
-                               __FUNCTION__, NULL);
-       } else if (ret == PKGMGR_R_EPRIV) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_PERMISSION_DENIED,
-                               __FUNCTION__, NULL);
-       } else if (ret != PKGMGR_R_OK) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_SYSTEM_ERROR,
-                               __FUNCTION__, NULL);
+       if (ret < 0) {
+               ret = package_manager_convert_internal_error(ret);
+               return package_manager_error(ret, __FUNCTION__, NULL);
        }
 
        return PACKAGE_MANAGER_ERROR_NONE;
@@ -81,22 +68,9 @@ API int package_manager_drm_register_license(const char *resp_data)
 
        ret = pkgmgr_client_register_license(pc, resp_data);
        pkgmgr_client_free(pc);
-       if (ret == PKGMGR_R_EINVAL) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
-                               __FUNCTION__, NULL);
-       } else if (ret == PKGMGR_R_ENOMEM) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
-                               __FUNCTION__, NULL);
-       } else if (ret == PKGMGR_R_EPRIV) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_PERMISSION_DENIED,
-                               __FUNCTION__, NULL);
-       } else if (ret != PKGMGR_R_OK) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_SYSTEM_ERROR,
-                               __FUNCTION__, NULL);
+       if (ret < 0) {
+               ret = package_manager_convert_internal_error(ret);
+               return package_manager_error(ret, __FUNCTION__, NULL);
        }
 
        return PACKAGE_MANAGER_ERROR_NONE;
@@ -122,22 +96,9 @@ API int package_manager_drm_decrypt_package(const char *drm_file_path,
        ret = pkgmgr_client_decrypt_package(pc, drm_file_path,
                        decrypted_file_path);
        pkgmgr_client_free(pc);
-       if (ret == PKGMGR_R_EINVAL) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_INVALID_PARAMETER,
-                               __FUNCTION__, NULL);
-       } else if (ret == PKGMGR_R_ENOMEM) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
-                               __FUNCTION__, NULL);
-       } else if (ret == PKGMGR_R_EPRIV) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_PERMISSION_DENIED,
-                               __FUNCTION__, NULL);
-       } else if (ret != PKGMGR_R_OK) {
-               return package_manager_error(
-                               PACKAGE_MANAGER_ERROR_SYSTEM_ERROR,
-                               __FUNCTION__, NULL);
+       if (ret < 0) {
+               ret = package_manager_convert_internal_error(ret);
+               return package_manager_error(ret, __FUNCTION__, NULL);
        }
 
        return PACKAGE_MANAGER_ERROR_NONE;
index 512821c..03e86eb 100644 (file)
@@ -20,6 +20,7 @@
 #include <sys/syscall.h>
 #include <unistd.h>
 
+#include <package-manager.h>
 #include <pkgmgr-info.h>
 #include <tzplatform_config.h>
 #include <cynara-client.h>
@@ -132,6 +133,30 @@ static const char *package_manager_error_to_string(package_manager_error_e
        }
 }
 
+int package_manager_convert_internal_error(int internal_error)
+{
+       switch (internal_error) {
+       case PKGMGR_R_ERROR:
+       case PKGMGR_R_ECOMM:
+       case PKGMGR_R_ESYSTEM:
+               return PACKAGE_MANAGER_ERROR_SYSTEM_ERROR;
+       case PKGMGR_R_EINVAL:
+               return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER;
+       case PKGMGR_R_ETIMEOUT:
+       case PKGMGR_R_EPRIV:
+               return PACKAGE_MANAGER_ERROR_PERMISSION_DENIED;
+       case PKGMGR_R_ENOPKG:
+               return PACKAGE_MANAGER_ERROR_NO_SUCH_PACKAGE;
+       case PKGMGR_R_ENOMEM:
+               return PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY;
+       case PKGMGR_R_EIO:
+               return PACKAGE_MANAGER_ERROR_IO_ERROR;
+       default:
+               _LOGE("Unexpected error");
+               return PACKAGE_MANAGER_ERROR_SYSTEM_ERROR;
+       }
+}
+
 int package_manager_error(package_manager_error_e error,
                                 const char *function, const char *description)
 {
@@ -212,4 +237,3 @@ int package_info_filter_foreach_package_info(pkgmgrinfo_pkginfo_filter_h handle,
 
        return PACKAGE_MANAGER_ERROR_NONE;
 }
-
index 81ae523..59407cd 100644 (file)
@@ -46,6 +46,8 @@ typedef enum {
 
 int check_privilege(privilege_type type);
 
+int package_manager_convert_internal_error(int internal_error);
+
 int package_manager_error(package_manager_error_e error, const char *function, const char *description);
 
 int package_info_get_package_info(const char *package, package_info_h *package_info);