if (!provider_handle || !data_handle || (data_handle->sticker_info_id > 0) || !data_handle->uri)
return STICKER_ERROR_INVALID_PARAMETER;
- ret = sticker_dbus_check_file_exists(provider_handle->gdbus_connection, data_handle->uri, &is_exist);
+ int len = strlen(STICKER_DIRECTORY) + strlen(data_handle->app_id) + strlen(data_handle->uri) + 3;
+ char *new_path = (char *)calloc(len, sizeof(char));
+
+ if (data_handle->uri[0] == '/')
+ snprintf(new_path, len, "%s/%s%s",STICKER_DIRECTORY, data_handle->app_id, data_handle->uri);
+ else
+ snprintf(new_path, len, "%s/%s/%s",STICKER_DIRECTORY, data_handle->app_id, data_handle->uri);
+
+ ret = sticker_dbus_check_file_exists(provider_handle->gdbus_connection, new_path, &is_exist);
if (ret != STICKER_ERROR_NONE) {
LOGE("Failed to check file exists : %d", ret);
- return STICKER_ERROR_OPERATION_FAILED;
+ ret = STICKER_ERROR_OPERATION_FAILED;
+ goto cleanup;
}
if (is_exist) {
LOGE("Sticker already exists");
- return STICKER_ERROR_FILE_EXISTS;
+ ret = STICKER_ERROR_FILE_EXISTS;
+ goto cleanup;
}
ret = sticker_dbus_insert_sticker_info(provider_handle->gdbus_connection, data_handle);
if (ret != STICKER_ERROR_NONE) {
LOGE("Failed to insert sticker information : %d", ret);
if (ret == STICKER_CLIENT_ERROR_NO_SUCH_FILE)
- return STICKER_ERROR_NO_SUCH_FILE;
+ ret = STICKER_ERROR_NO_SUCH_FILE;
else
- return STICKER_ERROR_OPERATION_FAILED;
+ ret = STICKER_ERROR_OPERATION_FAILED;
}
- return STICKER_ERROR_NONE;
+
+cleanup:
+ if (new_path) {
+ free(new_path);
+ new_path = NULL;
+ }
+
+ return ret;
}
EXPORT_API int sticker_provider_insert_data_by_json_file(sticker_provider_h provider_handle, const char *json_path, sticker_provider_insert_finished_cb callback, void *user_data)