void *state_data;
dp_interface_progress_cb progress;
void *progress_data;
+ char *saved_temp_path;
+ char *downloaded_path;
} dp_interface_slot;
// declare the variables
int dp_interface_set_destination(const int id, const char *path)
{
char set_filename[DOWNLOAD_FILENAME_MAX] = {0, };
+ char *resolved_path = NULL;
+ int index = __get_my_slot_index(id);
+
+ if (index < 0)
+ return DOWNLOAD_ADAPTOR_ERROR_INVALID_PARAMETER;
if (path == NULL)
return __dp_ipc_echo(id, DP_SEC_UNSET, DP_PROP_DESTINATION, __FUNCTION__);
- if (storage_get_origin_internal_path(path, DOWNLOAD_FILENAME_MAX, set_filename) == 0) {
+ if (g_interface_slots[index].downloaded_path)
+ free(g_interface_slots[index].downloaded_path);
+
+ g_interface_slots[index].downloaded_path = strdup(path);
+ resolved_path = realpath(g_interface_slots[index].downloaded_path, NULL);
+ if (!resolved_path) {
+ TRACE_ERROR("Invalid path");
+ return DOWNLOAD_ADAPTOR_ERROR_INVALID_PARAMETER;
+ }
+
+ if (storage_get_origin_internal_path(resolved_path,
+ DOWNLOAD_FILENAME_MAX, set_filename) == 0) {
/* Converted. Use converted path. */
- TRACE_ERROR("Converted filename : %s -> %s", path, set_filename);
- return __dp_ipc_set_string(id, DP_SEC_SET, DP_PROP_DESTINATION, set_filename, __FUNCTION__);
+ TRACE_ERROR("Converted filename : %s -> %s",
+ resolved_path, set_filename);
+ return __dp_ipc_set_string(id, DP_SEC_SET,
+ DP_PROP_DESTINATION, set_filename, __FUNCTION__);
}
- return __dp_ipc_set_string(id, DP_SEC_SET, DP_PROP_DESTINATION, path, __FUNCTION__);
+ return __dp_ipc_set_string(id, DP_SEC_SET,
+ DP_PROP_DESTINATION, resolved_path, __FUNCTION__);
}
int dp_interface_get_destination(const int id, char **path)
{
- char compat_filename[DOWNLOAD_FILENAME_MAX] = {0, };
- int ret = 0;
-
- if (!path)
- return DP_ERROR_INVALID_PARAMETER ;
+ int index = __get_my_slot_index(id);
- ret = __dp_ipc_get_string(id, DP_PROP_DESTINATION, path, __FUNCTION__);
+ if (index < 0 || !path)
+ return DOWNLOAD_ADAPTOR_ERROR_INVALID_PARAMETER;
- if (storage_get_compat_internal_path(*path, DOWNLOAD_FILENAME_MAX, compat_filename) == 0) {
- /* Converted. Use converted path. */
- TRACE_ERROR("Converted filename : %s -> %s", *path, compat_filename);
- *path = strdup(compat_filename);
+ if (!g_interface_slots[index].downloaded_path) {
+ *path = NULL;
+ return DOWNLOAD_ADAPTOR_ERROR_NO_DATA;
}
- return ret;
+
+ *path = strdup(g_interface_slots[index].downloaded_path);
+ return DOWNLOAD_ADAPTOR_ERROR_NONE;
}
int dp_interface_set_file_name(const int id, const char *file_name)
int dp_interface_get_temp_path(const int id, char **temp_path)
{
- char compat_filename[DOWNLOAD_FILENAME_MAX] = {0, };
- int ret = 0;
+ int index = __get_my_slot_index(id);
- if (temp_path == NULL)
- return DP_ERROR_INVALID_PARAMETER;
- ret = __dp_ipc_get_string(id, DP_PROP_TEMP_SAVED_PATH, temp_path, __FUNCTION__);
+ if (index < 0 || !temp_path)
+ return DOWNLOAD_ADAPTOR_ERROR_INVALID_PARAMETER;
- if (storage_get_compat_internal_path(*temp_path, DOWNLOAD_FILENAME_MAX, compat_filename) == 0) {
- /* Converted. Use converted path. */
- TRACE_ERROR("Converted filename : %s -> %s", *temp_path, compat_filename);
- *temp_path = strdup(compat_filename);
+ if (!g_interface_slots[index].saved_temp_path) {
+ *temp_path = NULL;
+ return DOWNLOAD_ADAPTOR_ERROR_NO_DATA;
}
- return ret;
+
+ *temp_path = strdup(g_interface_slots[index].saved_temp_path);
+ return DOWNLOAD_ADAPTOR_ERROR_NONE;
}
int dp_interface_get_content_name(const int id, char **content_name)
int dp_interface_set_temp_file_path(const int id, const char *path)
{
char set_filename[DOWNLOAD_FILENAME_MAX] = {0, };
+ char *resolved_path = NULL;
+ int index = __get_my_slot_index(id);
- if (storage_get_origin_internal_path(path, DOWNLOAD_FILENAME_MAX, set_filename) == 0) {
- /* Converted. Use converted path. */
- TRACE_ERROR("Converted filename : %s -> %s", path, set_filename);
- return __dp_ipc_set_string(id, DP_SEC_SET, DP_PROP_TEMP_SAVED_PATH, set_filename, __FUNCTION__);
+ if (index < 0)
+ return DOWNLOAD_ADAPTOR_ERROR_INVALID_PARAMETER;
+
+ if (g_interface_slots[index].saved_temp_path)
+ free(g_interface_slots[index].saved_temp_path);
+
+ g_interface_slots[index].saved_temp_path = strdup(path);
+ resolved_path = realpath(g_interface_slots[index].saved_temp_path, NULL);
+ if (!resolved_path) {
+ TRACE_ERROR("Invalid path");
+ return DOWNLOAD_ADAPTOR_ERROR_INVALID_PARAMETER;
+ } else {
+ if (storage_get_origin_internal_path(resolved_path,
+ DOWNLOAD_FILENAME_MAX, set_filename) == 0) {
+ /* Converted. Use converted path. */
+ TRACE_ERROR("Converted filename : %s -> %s",
+ resolved_path, set_filename);
+ return __dp_ipc_set_string(id, DP_SEC_SET,
+ DP_PROP_TEMP_SAVED_PATH, set_filename, __FUNCTION__);
+ }
}
- return __dp_ipc_set_string(id, DP_SEC_SET, DP_PROP_TEMP_SAVED_PATH, path, __FUNCTION__);
+ return __dp_ipc_set_string(id, DP_SEC_SET,
+ DP_PROP_TEMP_SAVED_PATH, resolved_path, __FUNCTION__);
}
int dp_interface_set_network_type(const int id, int net_type)