diff options
Diffstat (limited to 'src/common/media-svc-media-folder.c')
-rwxr-xr-x | src/common/media-svc-media-folder.c | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/src/common/media-svc-media-folder.c b/src/common/media-svc-media-folder.c index f70f3eb..46f3a93 100755 --- a/src/common/media-svc-media-folder.c +++ b/src/common/media-svc-media-folder.c @@ -40,7 +40,7 @@ int _media_svc_get_folder_id_by_foldername(sqlite3 *handle, const char *storage_ ret = _media_svc_sql_prepare_to_step(handle, sql, &sql_stmt); if (ret != MS_MEDIA_ERR_NONE) { if (ret == MS_MEDIA_ERR_DB_NO_RECORD) - media_svc_debug("there is no folder."); + media_svc_debug("No record"); else media_svc_error("error when _media_svc_get_folder_id_by_foldername. err = [%d]", ret); @@ -80,7 +80,7 @@ int _media_svc_get_folder_id_by_foldername_with_validity(sqlite3 *handle, const return ret; } -static int __media_svc_append_folder(const char *storage_id, ms_user_storage_type_e storage_type, +static int __media_svc_append_folder(bool is_direct, const char *storage_id, ms_user_storage_type_e storage_type, const char *folder_id, const char *folder_path, bool stack_query, uid_t uid) { int ret = MS_MEDIA_ERR_NONE; @@ -95,12 +95,15 @@ static int __media_svc_append_folder(const char *storage_id, ms_user_storage_typ if (_media_svc_check_pinyin_support()) _media_svc_get_pinyin_str(folder_name, &folder_name_pinyin); /* Sometime SQLITE3 returns NO_RECORD, so need to consider conflict case.. */ - media_svc_debug("UNIQUE:path[%s], storage_uuid[%s]", folder_path, storage_id); char *sql = sqlite3_mprintf("INSERT OR IGNORE INTO %q (folder_id, folder_path, folder_name, storage_uuid, folder_storage_type, folder_modified_time, folder_name_pinyin) values (%Q, %Q, %Q, %Q, '%d', '%d', %Q); ", MEDIA_SVC_DB_TABLE_FOLDER, folder_id, folder_path, folder_name, storage_id, storage_type, folder_modified_date, folder_name_pinyin); if (!stack_query) { - ret = _media_svc_sql_query(sql, uid); + if (is_direct) + ret = _media_svc_sql_query_direct(sql, uid); + else + ret = _media_svc_sql_query(sql, uid); + SQLITE3_SAFE_FREE(sql); } else { _media_svc_sql_query_add(&g_media_svc_insert_folder_query_list, &sql); @@ -127,7 +130,7 @@ int _media_svc_update_folder_modified_time_by_folder_uuid(const char *folder_uui return ret; } -static int __media_svc_get_and_append_parent_folder(sqlite3 *handle, const char *storage_id, const char *path, ms_user_storage_type_e storage_type, char *folder_id, uid_t uid) +static int __media_svc_get_and_append_parent_folder(sqlite3 *handle, bool is_direct, const char *storage_id, const char *path, ms_user_storage_type_e storage_type, char *folder_id, uid_t uid) { int ret = MS_MEDIA_ERR_NONE; unsigned int next_pos = 0; @@ -169,7 +172,7 @@ static int __media_svc_get_and_append_parent_folder(sqlite3 *handle, const char } else { dir_path = strndup(path, strlen(path)); folder_search_end = TRUE; - media_svc_error("[No-Error] End Path [%s]", dir_path); + media_svc_sec_debug("End Path[%s]", dir_path); } if (STRING_VALID(MEDIA_ROOT_PATH_EXTERNAL) && (g_strcmp0(dir_path, MEDIA_ROOT_PATH_EXTERNAL) == 0)) { @@ -187,13 +190,11 @@ static int __media_svc_get_and_append_parent_folder(sqlite3 *handle, const char return MS_MEDIA_ERR_INTERNAL; } - ret = __media_svc_append_folder(storage_id, storage_type, folder_uuid, dir_path, FALSE, uid); + ret = __media_svc_append_folder(is_direct, storage_id, storage_type, folder_uuid, dir_path, FALSE, uid); if (ret != MS_MEDIA_ERR_NONE) media_svc_error("__media_svc_append_folder is failed"); - media_svc_error("[No-Error] New Appended folder path [%s], folder_uuid [%s]", dir_path, folder_uuid); - } else { - media_svc_error("EXIST dir path : %s", dir_path); + media_svc_sec_debug("Append new folder path[%s] uuid[%s]", dir_path, folder_uuid); } SAFE_FREE(dir_path); @@ -209,7 +210,7 @@ static int __media_svc_get_and_append_parent_folder(sqlite3 *handle, const char return MS_MEDIA_ERR_NONE; } -static int __media_svc_update_parent_folder_validity(sqlite3 *handle, const char *storage_id, const char *path, uid_t uid) +static int __media_svc_update_parent_folder_validity(sqlite3 *handle, bool is_direct, const char *storage_id, const char *path, uid_t uid) { int ret = MS_MEDIA_ERR_NONE; unsigned int next_pos = 0; @@ -248,7 +249,7 @@ static int __media_svc_update_parent_folder_validity(sqlite3 *handle, const char } else { dir_path = strndup(path, strlen(path)); folder_search_end = TRUE; - media_svc_error("[No-Error] End Path [%s]", dir_path); + media_svc_sec_debug("End Path [%s]", dir_path); } if (STRING_VALID(MEDIA_ROOT_PATH_EXTERNAL) && (g_strcmp0(dir_path, MEDIA_ROOT_PATH_EXTERNAL) == 0)) { @@ -257,7 +258,7 @@ static int __media_svc_update_parent_folder_validity(sqlite3 *handle, const char continue; } - ret = _media_svc_set_folder_validity(handle, storage_id, dir_path, 1, false, uid); + ret = _media_svc_set_folder_validity(handle, is_direct, storage_id, dir_path, 1, false, uid); SAFE_FREE(dir_path); media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Fail to set folder validity"); } @@ -265,7 +266,7 @@ static int __media_svc_update_parent_folder_validity(sqlite3 *handle, const char return MS_MEDIA_ERR_NONE; } -int _media_svc_get_and_append_folder(sqlite3 *handle, const char *storage_id, const char *path, ms_user_storage_type_e storage_type, char *folder_id, uid_t uid) +int _media_svc_get_and_append_folder(sqlite3 *handle, bool is_direct, const char *storage_id, const char *path, ms_user_storage_type_e storage_type, char *folder_id, uid_t uid) { int ret = MS_MEDIA_ERR_NONE; int validity = -1; @@ -273,21 +274,21 @@ int _media_svc_get_and_append_folder(sqlite3 *handle, const char *storage_id, co ret = _media_svc_get_folder_id_by_foldername_with_validity(handle, storage_id, path, folder_id, uid, &validity); if (ret == MS_MEDIA_ERR_DB_NO_RECORD) - ret = __media_svc_get_and_append_parent_folder(handle, storage_id, path, storage_type, folder_id, uid); + ret = __media_svc_get_and_append_parent_folder(handle, is_direct, storage_id, path, storage_type, folder_id, uid); else if (ret == MS_MEDIA_ERR_NONE && validity == 0) - ret = __media_svc_update_parent_folder_validity(handle, storage_id, path, uid); + ret = __media_svc_update_parent_folder_validity(handle, is_direct, storage_id, path, uid); return ret; } -int _media_svc_get_and_append_folder_id_by_path(sqlite3 *handle, const char *storage_id, const char *path, ms_user_storage_type_e storage_type, char *folder_id, uid_t uid) +int _media_svc_get_and_append_folder_id_by_path(sqlite3 *handle, bool is_direct, const char *storage_id, const char *path, ms_user_storage_type_e storage_type, char *folder_id, uid_t uid) { char *dir_path = NULL; int ret = MS_MEDIA_ERR_NONE; dir_path = g_path_get_dirname(path); - ret = _media_svc_get_and_append_folder(handle, storage_id, dir_path, storage_type, folder_id, uid); + ret = _media_svc_get_and_append_folder(handle, is_direct, storage_id, dir_path, storage_type, folder_id, uid); SAFE_FREE(dir_path); @@ -308,11 +309,11 @@ int _media_svc_get_and_append_folder_id_by_folder_path(sqlite3 *handle, const ch ret = _media_svc_get_folder_id_by_foldername(handle, storage_id, path_name, folder_id, uid); if (ret == MS_MEDIA_ERR_DB_NO_RECORD) { - ret = __media_svc_get_and_append_parent_folder(handle, storage_id, path_name, storage_type, folder_id, uid); + ret = __media_svc_get_and_append_parent_folder(handle, true, storage_id, path_name, storage_type, folder_id, uid); } else { sql = sqlite3_mprintf("UPDATE %q SET validity=1 WHERE storage_uuid = '%q' AND folder_path = '%q';", MEDIA_SVC_DB_TABLE_FOLDER, storage_id, path); if (!stack_query) { - ret = _media_svc_sql_query(sql, uid); + ret = _media_svc_sql_query_direct(sql, uid); SQLITE3_SAFE_FREE(sql); } else { _media_svc_sql_query_add(&g_media_svc_insert_folder_query_list, &sql); @@ -324,25 +325,23 @@ int _media_svc_get_and_append_folder_id_by_folder_path(sqlite3 *handle, const ch return ret; } -int _media_svc_set_folder_validity(sqlite3 *handle, const char *storage_id, const char *start_path, int validity, bool is_recursive, uid_t uid) +int _media_svc_set_folder_validity(sqlite3 *handle, bool is_direct, const char *storage_id, const char *start_path, int validity, bool is_recursive, uid_t uid) { int ret = MS_MEDIA_ERR_NONE; char *sql = NULL; - char start_path_id[MEDIA_SVC_UUID_SIZE+1] = {0,}; if (is_recursive) { - ret = _media_svc_get_folder_id_by_foldername(handle, storage_id, start_path, start_path_id, uid); - media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "_media_svc_get_folder_id_by_foldername fail"); - media_svc_retvm_if(!STRING_VALID(start_path_id), MS_MEDIA_ERR_INVALID_PARAMETER, "start_path_id is NULL"); - - sql = sqlite3_mprintf("UPDATE %q SET validity = %d WHERE storage_uuid = '%q' AND (folder_path LIKE '%q/%%' OR folder_id='%q');", - MEDIA_SVC_DB_TABLE_FOLDER, validity, storage_id, start_path, start_path_id); + sql = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE storage_uuid='%q' AND (folder_path LIKE '%q/%%' OR folder_path='%q');", + MEDIA_SVC_DB_TABLE_FOLDER, validity, storage_id, start_path, start_path); } else { - sql = sqlite3_mprintf("UPDATE %q SET validity = %d WHERE storage_uuid = '%q' AND folder_path='%q';", + sql = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE storage_uuid='%q' AND folder_path='%q';", MEDIA_SVC_DB_TABLE_FOLDER, validity, storage_id, start_path); } - ret = _media_svc_sql_query(sql, uid); + if (is_direct) + ret = _media_svc_sql_query_direct(sql, uid); + else + ret = _media_svc_sql_query(sql, uid); SQLITE3_SAFE_FREE(sql); |