* limitations under the License.
*/
+#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>
da_ret_t __divide_file_name_into_pure_name_N_extesion(const char *in_file_name, char **out_pure_file_name, char **out_extension)
{
- char *file_name = DA_NULL;
- char *tmp_ptr = DA_NULL;
- char temp_file[DA_MAX_FILE_PATH_LEN] = {0,};
- char tmp_ext[DA_MAX_STR_LEN] = {0,};
- int len = 0;
- da_ret_t ret = DA_RESULT_OK;
-
- DA_LOGV("");
-
- if (!in_file_name)
- return DA_ERR_INVALID_ARGUMENT;
-
- file_name = (char *)in_file_name;
- tmp_ptr = strrchr(file_name, '.');
- if (tmp_ptr)
- tmp_ptr++;
- if (tmp_ptr && out_extension) {
- strncpy((char*) tmp_ext, tmp_ptr, sizeof(tmp_ext) - 1);
- *out_extension = strdup((const char*) tmp_ext);
- DA_SECURE_LOGD("extension [%s]", *out_extension);
- }
-
- if (!out_pure_file_name)
- return ret;
-
- if (tmp_ptr)
- len = tmp_ptr - file_name - 1;
- else
- len = strlen(file_name);
-
- if (len >= DA_MAX_FILE_PATH_LEN) {
- strncpy((char*) temp_file, file_name,
- DA_MAX_FILE_PATH_LEN - 1);
- } else {
- strncpy((char*) temp_file, file_name, len);
- }
-
- delete_prohibited_char((char*) temp_file,
- strlen((char*) temp_file));
- if (strlen(temp_file) < 1) {
- *out_pure_file_name = strdup(NO_NAME_TEMP_STR);
- } else {
- *out_pure_file_name = strdup(
- (const char*) temp_file);
- }
-
- DA_LOGV( "pure file name [%s]", *out_pure_file_name);
- return ret;
+ char *file_name = DA_NULL;
+ char *tmp_ptr = DA_NULL;
+ char temp_file[DA_MAX_FILE_NAME_LEN + 1] = {0,};
+ char tmp_ext[DA_MAX_STR_LEN] = {0,};
+ int len = 0;
+ da_ret_t ret = DA_RESULT_OK;
+
+ DA_LOGD("");
+
+ if (!in_file_name)
+ return DA_ERR_INVALID_ARGUMENT;
+
+ file_name = (char *)in_file_name;
+ tmp_ptr = strrchr(file_name, '.');
+ if (tmp_ptr)
+ tmp_ptr++;
+ if (tmp_ptr && out_extension) {
+ strncpy((char*) tmp_ext, tmp_ptr, sizeof(tmp_ext) - 1);
+ *out_extension = strdup((const char*) tmp_ext);
+ DA_SECURE_LOGD("extension [%s]", *out_extension);
+ }
+
+ if (!out_pure_file_name)
+ return ret;
+
+ if (tmp_ptr)
+ len = tmp_ptr - file_name - 1;
+ else
+ len = strlen(file_name);
+
+ if (len >= DA_MAX_FILE_NAME_LEN) {
+ strncpy((char*) temp_file, file_name, DA_MAX_FILE_NAME_LEN);
+ temp_file[DA_MAX_FILE_NAME_LEN] = '\0';
+ } else {
+ strncpy((char*) temp_file, file_name, len);
+ temp_file[len] = '\0';
+ }
+
+ delete_prohibited_char((char*) temp_file,
+ strlen((char*) temp_file));
+ if (strlen(temp_file) < 1) {
+ *out_pure_file_name = strdup(NO_NAME_TEMP_STR);
+ } else {
+ *out_pure_file_name = strdup(
+ (const char*) temp_file);
+ }
+
+ DA_LOGV( "pure file name [%s]", *out_pure_file_name);
+ return ret;
}
da_ret_t __file_write_buf_make_buf(file_info_t *file_info)
/* Priority 1 */
if (mime_type && !is_ambiguous_MIME_Type(mime_type)) {
- char *extension = DA_NULL;
- da_ret_t ret = get_extension_from_mime_type(mime_type, &extension);
- if (ret == DA_RESULT_OK && extension)
- return extension;
+ if (url) {
+ DA_LOGV("If the file extension exists and mime type exists, choose the file extension over mime type");
+ da_bool_t b_ret = da_get_extension_name_from_url(url, &extension);
+ if (b_ret && extension)
+ return extension;
+ }
+ char *extension = DA_NULL;
+ da_ret_t ret = get_extension_from_mime_type(mime_type, &extension);
+ if (ret == DA_RESULT_OK && extension)
+ return extension;
}
/* Priority 2-1 */
if (file_name_from_header) {
{
da_ret_t ret = DA_RESULT_OK;
- DA_LOGV("");
+ DA_LOGD("");
/* Priority 1 */
if (user_file_name) {
return ret ;
/* Priority 3 */
if (url) {
- DA_LOGV("Get file name from url");
+ DA_LOGD("Get file name from url");
da_get_file_name_from_url(url, out_pure_file_name);
}
if (*out_pure_file_name)
// for resume
tmp_file_path = get_full_path_avoided_duplication(install_dir,
- file_info->pure_file_name, file_info->extension);
+ file_info->pure_file_name, file_info->extension);
if (tmp_file_path) {
- file_info->file_path = tmp_file_path;
- tmp_file_path = DA_NULL;
+ file_info->file_path = tmp_file_path;
+ tmp_file_path = DA_NULL;
} else {
- ret = DA_ERR_FAIL_TO_ACCESS_FILE;
- goto ERR;
+ ret = DA_ERR_FAIL_TO_ACCESS_FILE;
+ goto ERR;
}
ERR:
DA_SECURE_LOGI("decided file path [%s]", file_info->file_path);
- free(file_name);
- free(extension);
+ if(file_name)
+ free(file_name);
+ if(extension)
+ free(extension);
return ret;
}
#include "download-agent-mime-util.h"
#include "download-agent-pthread.h"
-#define IS_PROHIBITED_CHAR(c) ((c) == ';' || (c) == '\\' || (c) == '/' || (c) == ':' || (c) == '*' || (c) == '?' || (c) == '"' || (c) == '>' || (c) == '<' || (c) == '|' || (c) == '(' || (c) == ')')
+#define IS_PROHIBITED_CHAR(c) ((c) == '/' || (c) == '\\' || (c) == '?' || (c) == '%' || (c) == '*' || (c) == ':' || (c) == '|' || (c) == '"' || (c) == '<' || (c) == '>')
#define IS_SPACE_CHARACTER(c) ((c) == '\t')
#define MAX_EXT_TABLE_INDEX 16
int i = 0;
int j = 0;
int len_name = 0;
- char name_buff[DA_MAX_FILE_PATH_LEN] = {0,};
+ char name_buff[DA_MAX_FILE_NAME_LEN + 1] = {0,};
DA_LOGV("");
}
End = strstr(buff, "?");
if (DA_NULL != End) {
- Start = End -1;
- while(*(Start) != '/') {
- Start--;
- }
- if ((*(Start) == '/') && ((len_name = (End - Start)) > 1)) {
- Start++;
- if (DA_MAX_FILE_PATH_LEN <= len_name) {
- strncpy(name_buff, Start, DA_MAX_FILE_PATH_LEN-1);
- name_buff[DA_MAX_FILE_PATH_LEN-1] = '\0';
- } else {
- strncpy(name_buff, Start, len_name);
- name_buff[len_name] = '\0';
- }
- } else {
- ret = DA_FALSE;
- goto ERR ; /*Name not found*/
- }
+ Start = End -1;
+ while(*(Start) != '/') {
+ Start--;
+ }
+ if ((*(Start) == '/') && ((len_name = (End - Start)) > 1)) {
+ Start++;
+ if (DA_MAX_FILE_NAME_LEN <= len_name) {
+ strncpy(name_buff, Start, DA_MAX_FILE_NAME_LEN);
+ name_buff[DA_MAX_FILE_NAME_LEN] = '\0';
+ } else {
+ strncpy(name_buff, Start, len_name);
+ name_buff[len_name] = '\0';
+ }
+ } else {
+ ret = DA_FALSE;
+ goto ERR ; /*Name not found*/
+ }
} else {
int urlLen = strlen (buff);
int Start_pos = 0;
}
Start_pos++;
if (Start_pos == 0 || urlLen - Start_pos <= 0) {
- ret = DA_FALSE;
- goto ERR;
+ ret = DA_FALSE;
+ goto ERR;
}
while(Start_pos < urlLen) {
- name_buff[len_name++] = buff[Start_pos++];
- if (DA_MAX_FILE_PATH_LEN <= len_name) {
- name_buff[DA_MAX_FILE_PATH_LEN-1] ='\0';
- break;
- }
+ name_buff[len_name++] = buff[Start_pos++];
+ if (DA_MAX_FILE_NAME_LEN <= len_name) {
+ name_buff[DA_MAX_FILE_NAME_LEN] ='\0';
+ break;
+ }
}
}
int i = 0;
int j = 0;
int tar_len = 0;
-
+ DA_LOGD("");
if(szTarget == NULL || str_len <= 0 || strlen(szTarget) != str_len) {
DA_LOGE("Invaild Parameter\n");
return;