return PACKAGE_MANAGER_ERROR_NONE;
}
+static int __request_mount_install(package_manager_request_h request,
+ const char *path, pkgmgr_handler event_cb, int *id)
+{
+ int retval;
+ retval = check_privilege(PRIVILEGE_PACKAGE_MANAGER_ADMIN);
+ if (retval != PACKAGE_MANAGER_ERROR_NONE)
+ return retval;
+
+ if (package_manager_client_validate_handle(request))
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ if (path == NULL)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+
+ 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 (id)
+ *id = request_id;
+
+ return PACKAGE_MANAGER_ERROR_NONE;
+}
+
+
API int package_manager_request_install(package_manager_request_h request,
const char *path, int *id)
{
return ret;
}
+API int package_manager_request_mount_install(package_manager_request_h request,
+ const char *path, int *id)
+{
+ return __request_mount_install(request, path, NULL, id);
+}
+
+API int package_manager_request_mount_install_with_cb(package_manager_request_h request,
+ const char *path, package_manager_request_event_cb callback,
+ void *user_data, int *id)
+{
+ int ret;
+ int req_id = 0;
+
+ if (request->request_cb_table == NULL)
+ __initialize_request_cb_table(request);
+
+ ret = __request_mount_install(request, path, internal_request_callback, &req_id);
+
+ if (req_id > 0) {
+ ret = __insert_request_cb_info(request, req_id, callback, user_data);
+ if (ret < 0)
+ return package_manager_error(PACKAGE_MANAGER_ERROR_OUT_OF_MEMORY,
+ __FUNCTION__, "failed to create request cb info");
+ if (id)
+ *id = req_id;
+ }
+
+ return ret;
+}
+
API int package_manager_create(package_manager_h *manager)
{
int retval;