pkgmgrinfo_pkginfo_filter_h pkgmgrinfo_pkginfo_filter;
};
+struct package_updateinfo_request_s {
+ pkgmgr_client *pc;
+ pkg_update_info_t *updateinfo_handle;
+};
+
static int package_manager_request_new_id()
{
static int request_handle_id = 0;
*ext_app_size = size_info->external_app_size;
return PACKAGE_MANAGER_ERROR_NONE;
}
+
+API int package_manager_updateinfo_set_pkgid(package_updateinfo_request_h pkg_updateinfo_req, const char *pkgid)
+{
+ struct package_updateinfo_request_s *request;
+
+ if (pkg_updateinfo_req == NULL || pkg_updateinfo_req->updateinfo_handle == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ request = (struct package_updateinfo_request_s *)pkg_updateinfo_req;
+ if (request->updateinfo_handle->pkgid)
+ free(request->updateinfo_handle->pkgid);
+ request->updateinfo_handle->pkgid = strdup(pkgid);
+ if (request->updateinfo_handle->pkgid == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+API int package_manager_updateinfo_set_version(package_updateinfo_request_h pkg_updateinfo_req, const char *version)
+{
+ struct package_updateinfo_request_s *request;
+
+ if (pkg_updateinfo_req == NULL || pkg_updateinfo_req->updateinfo_handle == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ request = (struct package_updateinfo_request_s *)pkg_updateinfo_req;
+ if (request->updateinfo_handle->version)
+ free(request->updateinfo_handle->version);
+ request->updateinfo_handle->version = strdup(version);
+ if (request->updateinfo_handle->pkgid == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+static int package_manager_updateinfo_convert_property(package_updateinfo_type_e property, pkgmgr_updateinfo_type *converted_property)
+{
+ if (converted_property == NULL)
+ return -1;
+
+ if (property == PACKAGE_UPDATEINFO_TYPE_FORCE)
+ *converted_property = PM_UPDATEINFO_TYPE_FORCE;
+ else if (property == PACKAGE_UPDATEINFO_TYPE_OPTIONAL)
+ *converted_property = PM_UPDATEINFO_TYPE_OPTIONAL;
+ else if (property == PACKAGE_UPDATEINFO_TYPE_NONE)
+ *converted_property = PM_UPDATEINFO_TYPE_NONE;
+ else
+ return -1;
+
+ return 0;
+}
+
+API int package_manager_updateinfo_set_type(package_updateinfo_request_h pkg_updateinfo_req, package_updateinfo_type_e type)
+{
+ int retval;
+ pkgmgr_updateinfo_type converted_type;
+ struct package_updateinfo_request_s *request;
+
+ if (pkg_updateinfo_req == NULL || pkg_updateinfo_req->updateinfo_handle == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ request = (struct package_updateinfo_request_s *)pkg_updateinfo_req;
+ retval = package_manager_updateinfo_convert_property(type, &converted_type);
+ if (retval != 0)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ request->updateinfo_handle->type = converted_type;
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+API int package_manager_updateinfo_request_destroy(package_updateinfo_request_h pkg_updateinfo_req)
+{
+ struct package_updateinfo_request_s *request;
+
+ if (pkg_updateinfo_req == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ request = (struct package_updateinfo_request_s *)pkg_updateinfo_req;
+ if (request->pc)
+ pkgmgr_client_free(request->pc);
+
+ if (request->updateinfo_handle) {
+ if (request->updateinfo_handle->pkgid)
+ free(request->updateinfo_handle->pkgid);
+ if (request->updateinfo_handle->version)
+ free(request->updateinfo_handle->version);
+ free(request->updateinfo_handle);
+ }
+ free(request);
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+API int package_manager_updateinfo_request_create(package_updateinfo_request_h *pkg_updateinfo_req)
+{
+ struct package_updateinfo_request_s *request;
+ pkg_update_info_t *update_info;
+
+ if (pkg_updateinfo_req == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ request = calloc(1, sizeof(struct package_updateinfo_request_s));
+ if (request == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
+
+ request->pc = pkgmgr_client_new(PC_REQUEST);
+ if (request->pc == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
+
+ update_info = calloc(1, sizeof(pkg_update_info_t));
+ if (update_info == NULL) {
+ pkgmgr_client_free(request->pc);
+ return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
+ }
+ request->updateinfo_handle = update_info;
+
+ *pkg_updateinfo_req = request;
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+API int package_manager_updateinfo_request_register(package_updateinfo_request_h pkg_updateinfo_req)
+{
+ struct package_updateinfo_request_s *update_info;
+ int retval;
+
+ if (pkg_updateinfo_req == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+ update_info = (struct package_updateinfo_request_s *)pkg_updateinfo_req;
+
+ retval = pkgmgr_client_register_pkg_update_info(update_info->pc, update_info->updateinfo_handle);
+ if (retval == PKGMGR_R_EINVAL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+API int package_manager_updateinfo_request_unregister(package_updateinfo_request_h pkg_updateinfo_req, const char *pkgid)
+{
+ int retval;
+ struct package_updateinfo_request_s *update_info;
+
+ retval = check_privilege(PRIVILEGE_PACKAGE_MANAGER_ADMIN);
+ if (retval != PACKAGE_MANAGER_ERROR_NONE)
+ return retval;
+
+ if (pkg_updateinfo_req == NULL || pkgid == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ update_info = (struct package_updateinfo_request_s *)pkg_updateinfo_req;
+ retval = pkgmgr_client_unregister_pkg_update_info(update_info->pc, pkgid);
+ if (retval != PMINFO_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+API int package_manager_updateinfo_request_unregister_all(package_updateinfo_request_h pkg_updateinfo_req)
+{
+ int retval;
+ struct package_updateinfo_request_s *update_info;
+
+ retval = check_privilege(PRIVILEGE_PACKAGE_MANAGER_ADMIN);
+ if (retval != PACKAGE_MANAGER_ERROR_NONE)
+ return retval;
+
+ if (pkg_updateinfo_req == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ update_info = (struct package_updateinfo_request_s *)pkg_updateinfo_req;
+ retval = pkgmgr_client_unregister_all_pkg_update_info(update_info->pc);
+
+ if (retval != PMINFO_R_OK)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_IO_ERROR, __FUNCTION__, NULL);
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}