* @retval #APP_CONTROL_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #APP_CONTROL_ERROR_OUT_OF_MEMORY Out of memory
* @retval #APP_CONTROL_ERROR_IO_ERROR I/O error
+ *
+ * @remarks This function is only available for platform level signed applications.
*/
int app_control_prepare_app_defined_loader(app_control_h app_control, const char *loader_id);
app_control_type_e type;
bundle *data;
int launch_pid;
- int loader_id;
};
typedef struct app_control_request_context_s {
int app_control_prepare_app_defined_loader(app_control_h app_control,
const char *loader_id)
{
+ const char *loader_name = loader_id; /* for readability */
int ret;
- if (!app_control || !loader_id) {
+ if (!app_control || !loader_name) {
return app_control_error(APP_CONTROL_ERROR_INVALID_PARAMETER,
__FUNCTION__, "Inivalid parameter");
}
__FUNCTION__, "Invalid parameter");
}
- ret = aul_prepare_app_defined_loader(loader_id);
+ ret = aul_prepare_app_defined_loader(loader_name);
if (ret < 0) {
return app_control_error(__convert_aul_error(ret),
__FUNCTION__,
"Failed to prepare app defined loader");
}
- app_control->loader_id = ret;
+ bundle_del(app_control->data, AUL_K_APP_DEFINED_LOADER);
+ bundle_add(app_control->data, AUL_K_APP_DEFINED_LOADER, loader_name);
+
+ ret = aul_svc_set_loader_id(app_control->data, ret);
+ if (ret < 0) {
+ if (ret == AUL_SVC_RET_EINVAL)
+ ret = APP_CONTROL_ERROR_INVALID_PARAMETER;
+ else
+ ret = APP_CONTROL_ERROR_OUT_OF_MEMORY;
+
+ return app_control_error(ret, __FUNCTION__,
+ "Failed to set loader id");
+ }
return APP_CONTROL_ERROR_NONE;
}