Add sql_autoptr type 38/310838/3
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 9 May 2024 01:46:28 +0000 (10:46 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Tue, 4 Jun 2024 07:13:10 +0000 (16:13 +0900)
sql_autoptr:
__attribute__((cleanup(sqlite3_free))) char *

Change-Id: I28876307617e052a85296fcc0bf366d3f5016f02
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
include/media-svc-db-utils.h
include/media-svc-media.h
packaging/libmedia-service.spec
src/media-svc-album.c
src/media-svc-db-utils.c
src/media-svc-media-folder.c
src/media-svc-media.c
src/media-svc-storage.c
src/media-svc-util.c
src/media-svc.c

index e5acdc7..6a63ac5 100755 (executable)
 #include <glib.h>
 #include "media-svc-env.h"
 
-#define SQLITE3_FINALIZE(x)            if (x != NULL) sqlite3_finalize(x);
-#define SQLITE3_SAFE_FREE(x)     {if (x != NULL) {sqlite3_free(x); x = NULL; } }
+static inline void __sqlfree(void *p)
+{
+    void **pp = (void **)p;
+    sqlite3_free(*pp);
+}
+#define sql_autoptr __attribute__((cleanup(__sqlfree))) char *
 
 int _media_svc_make_table_query(const char *table_name, media_svc_table_slist_e list, uid_t uid);
 int _media_svc_init_table_query(void);
index d2f750c..088caf7 100755 (executable)
@@ -39,6 +39,6 @@ int _media_svc_update_thumbnail_path(const char *path, const char *thumb_path, u
 int _media_svc_get_noti_info(sqlite3 *handle, const char *path, media_svc_noti_item **item);
 
 int _media_svc_append_query_list(const char *query, uid_t uid);
-int _media_svc_get_media(sqlite3 *handle, const char *sql, GList **path_list);
+int _media_svc_get_media(sqlite3 *handle, const char *query, GList **path_list);
 
 #endif /*_MEDIA_SVC_MEDIA_H_*/
index 15909c7..6be4817 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmedia-service
 Summary:    Media information service library for multimedia applications
-Version:    0.6.4
+Version:    0.6.5
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index be2bb7c..aaf4e7e 100755 (executable)
 int _media_svc_get_album_id(sqlite3 *handle, const char *album, const char *artist, int *album_id)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
+       sqlite3_stmt *stmt = NULL;
+       sql_autoptr q = NULL;
 
        media_svc_retvm_if(!album, MS_MEDIA_ERR_INVALID_PARAMETER, "album is NULL");
        media_svc_retvm_if(!artist, MS_MEDIA_ERR_INVALID_PARAMETER, "artist is NULL");
 
-       sql = sqlite3_mprintf("SELECT album_id FROM %s WHERE name=%Q AND artist=%Q", DB_TABLE_ALBUM, album, artist);
-       ret = _media_svc_get_result_with_check_record(handle, sql, &sql_stmt);
-       SQLITE3_SAFE_FREE(sql);
+       q = sqlite3_mprintf("SELECT album_id FROM %s WHERE name=%Q AND artist=%Q", DB_TABLE_ALBUM, album, artist);
+       ret = _media_svc_get_result_with_check_record(handle, q, &stmt);
        if (ret != MS_MEDIA_ERR_NONE) {
                if (ret == MS_MEDIA_ERR_DB_NO_RECORD)
                        media_svc_debug("there is no album.");
@@ -44,9 +43,9 @@ int _media_svc_get_album_id(sqlite3 *handle, const char *album, const char *arti
                return ret;
        }
 
-       *album_id = sqlite3_column_int(sql_stmt, 0);
+       *album_id = sqlite3_column_int(stmt, 0);
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return ret;
 }
@@ -55,13 +54,13 @@ int _media_svc_append_album(sqlite3 *handle, bool is_direct, const char *album,
 {
        int ret = MS_MEDIA_ERR_NONE;
 
-       char *sql = sqlite3_mprintf("INSERT INTO %s(name, artist, album_art) VALUES (%Q, %Q, %Q);", DB_TABLE_ALBUM, album, artist, album_art);
+       sql_autoptr q = sqlite3_mprintf("INSERT INTO %s(name, artist, album_art) VALUES (%Q, %Q, %Q);",
+                               DB_TABLE_ALBUM, album, artist, album_art);
        if (is_direct)
-               ret = _media_svc_sql_query_direct(sql, uid);
+               ret = _media_svc_sql_query_direct(q, uid);
        else
-               ret = _media_svc_sql_query(sql, uid);
+               ret = _media_svc_sql_query(q, uid);
 
-       SQLITE3_SAFE_FREE(sql);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
        int inserted_album_id = 0;
index 51153b3..9c3ecb9 100755 (executable)
@@ -99,10 +99,9 @@ static void __add_column_info(GSList **slist,
 
 static int __create_playlist_view(uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
        GSList *iter = NULL;
        column_info_s *col_ptr = NULL;
-       char *sql = NULL;
+       sql_autoptr q = NULL;
        GString *table_query = g_string_new(NULL);
        media_svc_retvm_if(!table_query, MS_MEDIA_ERR_INTERNAL, "g_string_new failed");
 
@@ -148,20 +147,17 @@ static int __create_playlist_view(uid_t uid)
                        g_string_append_printf(table_query, ", media.%s", col_ptr->name);
        }
 
-       sql = sqlite3_mprintf(DB_QUERY_VIEW_PLAYLIST, DB_VIEW_PLAYLIST, table_query->str);
+       q = sqlite3_mprintf(DB_QUERY_VIEW_PLAYLIST, DB_VIEW_PLAYLIST, table_query->str);
        g_string_free(table_query, TRUE);
-       ret = _media_svc_sql_query(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
 
-       return ret;
+       return _media_svc_sql_query(q, uid);
 }
 
 static int __create_tag_view(uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
        GSList *iter = NULL;
        column_info_s *col_ptr = NULL;
-       char *sql = NULL;
+       sql_autoptr q = NULL;
        GString *table_query = g_string_new(NULL);
        media_svc_retvm_if(!table_query, MS_MEDIA_ERR_INTERNAL, "g_string_new failed");
 
@@ -203,12 +199,10 @@ static int __create_tag_view(uid_t uid)
                        g_string_append_printf(table_query, ", media.%s", col_ptr->name);
        }
 
-       sql = sqlite3_mprintf(DB_QUERY_VIEW_TAG, DB_VIEW_TAG, table_query->str);
+       q = sqlite3_mprintf(DB_QUERY_VIEW_TAG, DB_VIEW_TAG, table_query->str);
        g_string_free(table_query, TRUE);
-       ret = _media_svc_sql_query(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
 
-       return ret;
+       return _media_svc_sql_query(q, uid);
 }
 
 int _media_svc_make_table_query(const char *table_name, media_svc_table_slist_e list, uid_t uid)
@@ -217,7 +211,7 @@ int _media_svc_make_table_query(const char *table_name, media_svc_table_slist_e
        GSList *iter = NULL;
        table_info_s *tb = NULL;
        column_info_s *col_ptr = NULL;
-       char *sql = NULL;
+       sql_autoptr q = NULL;
        GString *table_query = g_string_new(NULL);
        GString *trigger_query = g_string_new(NULL);
        GString *unique_query = g_string_new(NULL);
@@ -281,12 +275,11 @@ int _media_svc_make_table_query(const char *table_name, media_svc_table_slist_e
 
        /*send queries */
        if (unique_query->len > 0)
-               sql = sqlite3_mprintf(DB_QUERY_TABLE_WITH_UNIQUE, table_name, table_query->str, unique_query->str);
+               q = sqlite3_mprintf(DB_QUERY_TABLE_WITH_UNIQUE, table_name, table_query->str, unique_query->str);
        else
-               sql = sqlite3_mprintf(DB_QUERY_TABLE, table_name, table_query->str);
+               q = sqlite3_mprintf(DB_QUERY_TABLE, table_name, table_query->str);
 
-       ret = _media_svc_sql_query(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
+       ret = _media_svc_sql_query(q, uid);
        if (ret != MS_MEDIA_ERR_NONE)
                goto ERROR;
 
@@ -489,14 +482,13 @@ int _media_svc_sql_query(const char *sql_str, uid_t uid)
 static int __media_svc_query_direct(sqlite3 *handle, const char *query, uid_t uid)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       char *zErrMsg = NULL;
+       sql_autoptr err = NULL;
        int retry_count = 0;
 
 EXEC_RETRY:
-       ret = sqlite3_exec(handle, query, NULL, NULL, &zErrMsg);
+       ret = sqlite3_exec(handle, query, NULL, NULL, &err);
        if (SQLITE_OK != ret) {
-               media_svc_sec_error("Error[%s],Query[%s]", zErrMsg, query);
-               SQLITE3_SAFE_FREE(zErrMsg);
+               media_svc_sec_error("Error[%s],Query[%s]", err, query);
                if (ret == SQLITE_BUSY) {
                        ret = MS_MEDIA_ERR_DB_BUSY_FAIL;
                } else if (ret == SQLITE_CONSTRAINT) {
@@ -535,12 +527,12 @@ int _media_svc_sql_query_direct(const char *sql_str, uid_t uid)
 int _media_svc_check_table_exist(sqlite3 *db_handle, bool *exist)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       const char *sql = "SELECT name FROM sqlite_master WHERE type='table' AND name='media';";
+       sqlite3_stmt *stmt = NULL;
+       const char *q = "SELECT name FROM sqlite_master WHERE type='table' AND name='media';";
 
-       ret = _media_svc_get_result(db_handle, sql, &sql_stmt);
+       ret = _media_svc_get_result(db_handle, q, &stmt);
        media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "_media_svc_get_result failed");
-       if (sqlite3_step(sql_stmt) != SQLITE_ROW) {
+       if (sqlite3_step(stmt) != SQLITE_ROW) {
                media_svc_debug("Need to create table");
                *exist = false;
        } else {
@@ -548,7 +540,7 @@ int _media_svc_check_table_exist(sqlite3 *db_handle, bool *exist)
                *exist = true;
        }
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return MS_MEDIA_ERR_NONE;
 }
@@ -559,7 +551,7 @@ static int __media_svc_check_record(sqlite3_stmt **stmt)
 
        if (sqlite3_step(*stmt) != SQLITE_ROW) {
                media_svc_debug("No record");
-               SQLITE3_FINALIZE(*stmt);
+               sqlite3_finalize(*stmt);
                return MS_MEDIA_ERR_DB_NO_RECORD;
        }
 
@@ -605,19 +597,19 @@ int _media_svc_sql_query_list(GList **query_list, uid_t uid)
        int ret = MS_MEDIA_ERR_NONE;
        int idx = 0;
        int length = g_list_length(*query_list);
-       char *sql = NULL;
+       char *q = NULL;
 
        media_svc_debug("query list length : [%d]", length);
 
        for (idx = 0; idx < length; idx++) {
-               sql = (char *)g_list_nth_data(*query_list, idx);
-               if (STRING_VALID(sql)) {
-                       ret = media_db_request_update_db(sql, uid);
+               q = (char *)g_list_nth_data(*query_list, idx);
+               if (STRING_VALID(q)) {
+                       ret = media_db_request_update_db(q, uid);
                        if (ret != MS_MEDIA_ERR_NONE)
                                media_svc_error("media_db_request_update_db failed : %d", ret);
                }
 
-               SQLITE3_SAFE_FREE(sql);
+               sqlite3_free(q);
        }
 
        _media_svc_sql_query_release(query_list);
@@ -630,8 +622,7 @@ int _media_svc_sql_query_list_direct(GList **query_list, uid_t uid)
        int ret = MS_MEDIA_ERR_NONE;
        int idx = 0;
        int length = g_list_length(*query_list);
-       char *sql = NULL;
-       char *zErrMsg = NULL;
+       char *q = NULL;
        sqlite3 *handle = NULL;
        bool with_transaction = true;
 
@@ -642,29 +633,27 @@ int _media_svc_sql_query_list_direct(GList **query_list, uid_t uid)
        ret = media_db_connect(&handle, uid, true);
        media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "DB connection failed");
 
-       ret = sqlite3_exec(handle, "BEGIN;", NULL, NULL, &zErrMsg);
+       ret = sqlite3_exec(handle, "BEGIN;", NULL, NULL, NULL);
        if (SQLITE_OK != ret) {
-               media_svc_sec_error("Transaction failed[%s]. Try an individual insert.", zErrMsg);
-               SQLITE3_SAFE_FREE(zErrMsg);
+               media_svc_error("transaction failed. try an individual insert.");
                with_transaction = false;
        }
 
        for (idx = 0; idx < length; idx++) {
-               sql = (char *)g_list_nth_data(*query_list, idx);
-               if (STRING_VALID(sql)) {
-                       ret = __media_svc_query_direct(handle, sql, uid);
+               q = (char *)g_list_nth_data(*query_list, idx);
+               if (STRING_VALID(q)) {
+                       ret = __media_svc_query_direct(handle, q, uid);
                        if (ret != MS_MEDIA_ERR_NONE)
-                               media_svc_debug("_media_svc_query_direct failed[%s]", sql);
+                               media_svc_debug("_media_svc_query_direct failed[%s]", q);
 
-                       SQLITE3_SAFE_FREE(sql);
+                       sqlite3_free(q);
                }
        }
 
        if (with_transaction) {
-               ret = sqlite3_exec(handle, "COMMIT;", NULL, NULL, &zErrMsg);
+               ret = sqlite3_exec(handle, "COMMIT;", NULL, NULL, NULL);
                if (SQLITE_OK != ret) {
-                       media_svc_sec_error("Commit failed[%s]", zErrMsg);
-                       SQLITE3_SAFE_FREE(zErrMsg);
+                       media_svc_error("Commit failed");
                        media_db_disconnect(handle);
                        _media_svc_sql_query_release(query_list);
                        return MS_MEDIA_ERR_DB_INTERNAL;
index 6d6513c..31cc5e7 100755 (executable)
 static int __media_svc_get_folder_id(sqlite3 *handle, const char *path, long long int *folder_id)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       char *sql = sqlite3_mprintf("SELECT folder_id FROM %q WHERE folder_path=%Q", DB_TABLE_FOLDER, path);
+       sqlite3_stmt *stmt = NULL;
+       sql_autoptr q = sqlite3_mprintf("SELECT folder_id FROM %q WHERE folder_path=%Q", DB_TABLE_FOLDER, path);
 
-       ret = _media_svc_get_result_with_check_record(handle, sql, &sql_stmt);
-       SQLITE3_SAFE_FREE(sql);
+       ret = _media_svc_get_result_with_check_record(handle, q, &stmt);
        media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to get folder id[%d]", ret);
 
-       *folder_id = sqlite3_column_int64(sql_stmt, 0);
+       *folder_id = sqlite3_column_int64(stmt, 0);
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return ret;
 }
 
 static int __media_svc_append_folder(bool is_direct, const char *storage_id, const char *folder_path, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *folder_name = NULL;
-
-       folder_name = g_path_get_basename(folder_path);
-
-       /* Sometime SQLITE3 returns NO_RECORD, so need to consider conflict case.. */
-       char *sql = sqlite3_mprintf("INSERT OR IGNORE INTO %q(folder_path, folder_name, storage_uuid) VALUES (%Q, %Q, %Q);",
+       g_autofree gchar *folder_name = g_path_get_basename(folder_path);
+       sql_autoptr q = sqlite3_mprintf("INSERT OR IGNORE INTO %q(folder_path, folder_name, storage_uuid) VALUES (%Q, %Q, %Q);",
                                DB_TABLE_FOLDER, folder_path, folder_name, storage_id);
 
        if (is_direct)
-               ret = _media_svc_sql_query_direct(sql, uid);
-       else
-               ret = _media_svc_sql_query(sql, uid);
-
-       SQLITE3_SAFE_FREE(sql);
+               return _media_svc_sql_query_direct(q, uid);
 
-       g_free(folder_name);
-
-       return ret;
+       return _media_svc_sql_query(q, uid);
 }
 
 static int __media_svc_append_parent_folder(sqlite3 *handle, bool is_direct, const char *storage_id, const char *path, uid_t uid)
@@ -100,76 +88,58 @@ static int __media_svc_append_parent_folder(sqlite3 *handle, bool is_direct, con
 
 int _media_svc_get_and_append_folder_id_by_path(sqlite3 *handle, bool is_direct, const char *storage_id, const char *path, long long int *folder_id, uid_t uid)
 {
-       char *dir_path = NULL;
        int ret = MS_MEDIA_ERR_NONE;
-
-       dir_path = g_path_get_dirname(path);
+       g_autofree gchar *dir_path = g_path_get_dirname(path);
 
        ret = __media_svc_get_folder_id(handle, dir_path, folder_id);
        if (ret == MS_MEDIA_ERR_DB_NO_RECORD) {
                ret = __media_svc_append_parent_folder(handle, is_direct, storage_id, dir_path, uid);
-               if (ret != MS_MEDIA_ERR_NONE) {
-                       media_svc_error("__media_svc_append_parent_folder failed");
-                       goto FINALIZE;
-               }
+               media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to append parent folder");
 
-               ret = __media_svc_get_folder_id(handle, dir_path, folder_id);
+               return __media_svc_get_folder_id(handle, dir_path, folder_id);
        }
-FINALIZE:
-       g_free(dir_path);
 
        return ret;
 }
 
 int _media_svc_append_by_folder_path(sqlite3 *handle, const char *storage_id, const char *path, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
+       if (_media_svc_check_folder_by_path(handle, path) == MS_MEDIA_ERR_DB_NO_RECORD)
+               return __media_svc_append_parent_folder(handle, true, storage_id, path, uid);
 
-       ret = _media_svc_check_folder_by_path(handle, path);
-       if (ret == MS_MEDIA_ERR_DB_NO_RECORD)
-               ret = __media_svc_append_parent_folder(handle, true, storage_id, path, uid);
-       else
-               ret = _media_svc_set_folder_validity(true, path, 1, false, uid);
-
-       return ret;
+       return _media_svc_set_folder_validity(true, path, 1, false, uid);
 }
 
 int _media_svc_set_folder_validity(bool is_direct, const char *start_path, int validity, bool is_recursive, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *sql = NULL;
+       sql_autoptr q = NULL;
 
        if (is_recursive) {
-               sql = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE folder_path LIKE '%q/%%' OR folder_path=%Q",
+               q = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE folder_path LIKE '%q/%%' OR folder_path=%Q",
                        DB_TABLE_FOLDER, validity, start_path, start_path);
        } else {
-               sql = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE folder_path=%Q", DB_TABLE_FOLDER, validity, start_path);
+               q = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE folder_path=%Q", DB_TABLE_FOLDER, validity, start_path);
        }
 
        if (is_direct)
-               ret = _media_svc_sql_query_direct(sql, uid);
-       else
-               ret = _media_svc_sql_query(sql, uid);
-
-       SQLITE3_SAFE_FREE(sql);
+               return _media_svc_sql_query_direct(q, uid);
 
-       return ret;
+       return _media_svc_sql_query(q, uid);
 }
 
 int _media_svc_check_folder_by_path(sqlite3 *handle, const char *path)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
+       sqlite3_stmt *stmt = NULL;
+       sql_autoptr q = NULL;
 
        media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
 
-       sql = sqlite3_mprintf("SELECT 1 FROM %q WHERE folder_path=%Q", DB_TABLE_FOLDER, path);
-       ret = _media_svc_get_result_with_check_record(handle, sql, &sql_stmt);
-       SQLITE3_SAFE_FREE(sql);
+       q = sqlite3_mprintf("SELECT 1 FROM %q WHERE folder_path=%Q", DB_TABLE_FOLDER, path);
+       ret = _media_svc_get_result_with_check_record(handle, q, &stmt);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return MS_MEDIA_ERR_NONE;
 }
index 705bbd2..2e13202 100755 (executable)
@@ -35,16 +35,15 @@ static __thread GList *g_media_svc_update_list = NULL;
 int _media_svc_check_data_by_path(sqlite3 *handle, const char *path)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
+       sqlite3_stmt *stmt = NULL;
+       sql_autoptr q = NULL;
 
        media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "Path is NULL");
 
-       sql = sqlite3_mprintf("SELECT 1 FROM %q WHERE media_path=%Q", DB_TABLE_MEDIA, path);
-       ret = _media_svc_get_result_with_check_record(handle, sql, &sql_stmt);
-       SQLITE3_SAFE_FREE(sql);
+       q = sqlite3_mprintf("SELECT 1 FROM %q WHERE media_path=%Q", DB_TABLE_MEDIA, path);
+       ret = _media_svc_get_result_with_check_record(handle, q, &stmt);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return ret;
 }
@@ -52,19 +51,18 @@ int _media_svc_check_data_by_path(sqlite3 *handle, const char *path)
 int _media_svc_get_modified_time(sqlite3 *handle, const char *path, int *modified_time)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
+       sqlite3_stmt *stmt = NULL;
+       sql_autoptr q = NULL;
 
        media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "Path is NULL");
 
-       sql = sqlite3_mprintf("SELECT media_modified_time FROM %q WHERE media_path=%Q", DB_TABLE_MEDIA, path);
-       ret = _media_svc_get_result_with_check_record(handle, sql, &sql_stmt);
-       SQLITE3_SAFE_FREE(sql);
+       q = sqlite3_mprintf("SELECT media_modified_time FROM %q WHERE media_path=%Q", DB_TABLE_MEDIA, path);
+       ret = _media_svc_get_result_with_check_record(handle, q, &stmt);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
-       *modified_time = sqlite3_column_int(sql_stmt, 0);
+       *modified_time = sqlite3_column_int(stmt, 0);
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return MS_MEDIA_ERR_NONE;
 }
@@ -100,34 +98,28 @@ static char *__media_svc_make_insert_query(media_svc_content_info_s *content_inf
 
 int _media_svc_insert_item_stack(media_svc_content_info_s *content_info)
 {
-       char *sql = __media_svc_make_insert_query(content_info);
-       media_svc_retvm_if(!sql, MS_MEDIA_ERR_INVALID_PARAMETER, "make query failed");
+       char *q = __media_svc_make_insert_query(content_info);
+       media_svc_retvm_if(!q, MS_MEDIA_ERR_INVALID_PARAMETER, "make query failed");
 
-       media_svc_sec_debug("Query[%s]", sql);
+       media_svc_sec_debug("Query[%s]", q);
 
-       _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &sql);
+       _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &q);
 
        return MS_MEDIA_ERR_NONE;
 }
 
 int _media_svc_insert_item(media_svc_content_info_s *content_info, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *sql = __media_svc_make_insert_query(content_info);
-       media_svc_retvm_if(!sql, MS_MEDIA_ERR_INVALID_PARAMETER, "make query failed");
-
-       ret = _media_svc_sql_query(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
-       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to insert item");
+       sql_autoptr q = __media_svc_make_insert_query(content_info);
 
-       return MS_MEDIA_ERR_NONE;
+       return _media_svc_sql_query(q, uid);
 }
 
 int _media_svc_update_item_with_data(bool is_direct, media_svc_content_info_s *content_info, uid_t uid)
 {
        int ret = MS_MEDIA_ERR_NONE;
 
-       char *sql = sqlite3_mprintf("UPDATE %q SET media_size=%lld, media_modified_time=%d, media_thumbnail_path=%Q, media_title=%Q, album_id=%d, media_album=%Q, media_artist=%Q, media_album_artist=%Q, media_genre=%Q, media_year=%Q, media_recorded_date=%Q, media_track_num=%Q, media_width=%d, media_height=%d, media_datetaken=%Q, orientation=%d, validity=1 WHERE media_path=%Q;",
+       char *q = sqlite3_mprintf("UPDATE %q SET media_size=%lld, media_modified_time=%d, media_thumbnail_path=%Q, media_title=%Q, album_id=%d, media_album=%Q, media_artist=%Q, media_album_artist=%Q, media_genre=%Q, media_year=%Q, media_recorded_date=%Q, media_track_num=%Q, media_width=%d, media_height=%d, media_datetaken=%Q, orientation=%d, validity=1 WHERE media_path=%Q;",
                                DB_TABLE_MEDIA,
                                content_info->size,
                                content_info->modified_time,
@@ -150,11 +142,11 @@ int _media_svc_update_item_with_data(bool is_direct, media_svc_content_info_s *c
 
        /* Scanner use only batch insert */
        if (is_direct) {
-               media_svc_sec_debug("Query [%s]", sql);
-               _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &sql);
+               media_svc_sec_debug("Query [%s]", q);
+               _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &q);
        } else {
-               ret = _media_svc_sql_query(sql, uid);
-               SQLITE3_SAFE_FREE(sql);
+               ret = _media_svc_sql_query(q, uid);
+               sqlite3_free(q);
        }
 
        return ret;
@@ -162,15 +154,14 @@ int _media_svc_update_item_with_data(bool is_direct, media_svc_content_info_s *c
 int _media_svc_get_thumbnail_path_by_path(sqlite3 *handle, const char *path, char *thumbnail_path)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
+       sqlite3_stmt *stmt = NULL;
+       sql_autoptr q = NULL;
 
        media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
 
-       sql = sqlite3_mprintf("SELECT media_thumbnail_path FROM %q WHERE media_path=%Q", DB_TABLE_MEDIA, path);
+       q = sqlite3_mprintf("SELECT media_thumbnail_path FROM %q WHERE media_path=%Q", DB_TABLE_MEDIA, path);
 
-       ret = _media_svc_get_result_with_check_record(handle, sql, &sql_stmt);
-       SQLITE3_SAFE_FREE(sql);
+       ret = _media_svc_get_result_with_check_record(handle, q, &stmt);
        if (ret != MS_MEDIA_ERR_NONE) {
                if (ret == MS_MEDIA_ERR_DB_NO_RECORD)
                        media_svc_debug("there is no thumbnail.");
@@ -180,45 +171,40 @@ int _media_svc_get_thumbnail_path_by_path(sqlite3 *handle, const char *path, cha
                return ret;
        }
 
-       g_strlcpy(thumbnail_path, (const char *)sqlite3_column_text(sql_stmt, 0), MEDIA_SVC_PATHNAME_SIZE);
+       g_strlcpy(thumbnail_path, (const char *)sqlite3_column_text(stmt, 0), MEDIA_SVC_PATHNAME_SIZE);
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return MS_MEDIA_ERR_NONE;
 }
 
 int _media_svc_delete_item_by_path(const char *path, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *sql = NULL;
+       sql_autoptr q = NULL;
 
        media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
 
-       sql = sqlite3_mprintf("DELETE FROM %q WHERE media_path=%Q;", DB_TABLE_MEDIA, path);
+       q = sqlite3_mprintf("DELETE FROM %q WHERE media_path=%Q;", DB_TABLE_MEDIA, path);
 
-       ret = _media_svc_sql_query(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
-       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to delete item");
-
-       return ret;
+       return _media_svc_sql_query(q, uid);
 }
 
 int _media_svc_update_item_validity(const char *path, int validity, bool stack_query, uid_t uid)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       char *sql = NULL;
+       char *q = NULL;
 
        media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
 
        media_svc_debug("path=[%s], validity=[%d]", path, validity);
 
-       sql = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE media_path=%Q;", DB_TABLE_MEDIA, validity, path);
+       q = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE media_path=%Q;", DB_TABLE_MEDIA, validity, path);
 
        if (!stack_query) {
-               ret = _media_svc_sql_query_direct(sql, uid);
-               SQLITE3_SAFE_FREE(sql);
+               ret = _media_svc_sql_query_direct(q, uid);
+               sqlite3_free(q);
        } else {
-               _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &sql);
+               _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &q);
        }
 
        return ret;
@@ -226,26 +212,18 @@ int _media_svc_update_item_validity(const char *path, int validity, bool stack_q
 
 int _media_svc_update_thumbnail_path(const char *path, const char *thumb_path, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
+       sql_autoptr q = sqlite3_mprintf("UPDATE %q SET media_thumbnail_path=%Q WHERE media_path=%Q;",
+                       DB_TABLE_MEDIA, thumb_path, path);
 
-       char *sql = sqlite3_mprintf("UPDATE %q SET media_thumbnail_path=%Q WHERE media_path=%Q;", DB_TABLE_MEDIA, thumb_path, path);
-
-       ret = _media_svc_sql_query(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
-
-       return ret;
+       return _media_svc_sql_query(q, uid);
 }
 
 int _media_svc_update_item_by_path(const char *src_path, const char *dst_storage_id, const char *dest_path, const char *file_name, int modified_time, long long int folder_id, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *query = sqlite3_mprintf("UPDATE %q SET media_path=%Q, media_display_name=%Q, media_modified_time=%d, folder_id=%lld, storage_uuid=%Q WHERE media_path=%Q;",
+       sql_autoptr q = sqlite3_mprintf("UPDATE %q SET media_path=%Q, media_display_name=%Q, media_modified_time=%d, folder_id=%lld, storage_uuid=%Q WHERE media_path=%Q;",
                                DB_TABLE_MEDIA, dest_path, file_name, modified_time, folder_id, dst_storage_id, src_path);
 
-       ret = _media_svc_sql_query(query, uid);
-       SQLITE3_SAFE_FREE(query);
-
-       return ret;
+       return _media_svc_sql_query(q, uid);
 }
 
 int _media_svc_list_query_do(media_svc_query_type_e query_type, uid_t uid)
@@ -287,21 +265,21 @@ int _media_svc_append_query_list(const char *query, uid_t uid)
        return ret;
 }
 
-int _media_svc_get_media(sqlite3 *handle, const char *sql, GList **path_list)
+int _media_svc_get_media(sqlite3 *handle, const char *query, GList **path_list)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
+       sqlite3_stmt *stmt = NULL;
 
-       media_svc_retvm_if(!sql, MS_MEDIA_ERR_INVALID_PARAMETER, "query is NULL");
+       media_svc_retvm_if(!query, MS_MEDIA_ERR_INVALID_PARAMETER, "query is NULL");
        media_svc_retvm_if(!path_list, MS_MEDIA_ERR_INVALID_PARAMETER, "array is NULL");
 
-       ret = _media_svc_get_result(handle, sql, &sql_stmt);
+       ret = _media_svc_get_result(handle, query, &stmt);
        media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "_media_svc_get_result() failed [%d]", ret);
 
-       while (sqlite3_step(sql_stmt) == SQLITE_ROW)
-               *path_list = g_list_append(*path_list, g_strdup((const char *)sqlite3_column_text(sql_stmt, 0)));
+       while (sqlite3_step(stmt) == SQLITE_ROW)
+               *path_list = g_list_append(*path_list, g_strdup((const char *)sqlite3_column_text(stmt, 0)));
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return ret;
 }
@@ -309,24 +287,23 @@ int _media_svc_get_media(sqlite3 *handle, const char *sql, GList **path_list)
 int _media_svc_get_noti_info(sqlite3 *handle, const char *path, media_svc_noti_item **item)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
+       sqlite3_stmt *stmt = NULL;
+       sql_autoptr q = NULL;
 
        media_svc_retvm_if(item == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "item is NULL");
        media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
 
-       sql = sqlite3_mprintf("SELECT media_id, media_type, media_mime_type FROM %q WHERE media_path=%Q", DB_TABLE_MEDIA, path);
-       ret = _media_svc_get_result_with_check_record(handle, sql, &sql_stmt);
-       SQLITE3_SAFE_FREE(sql);
+       q = sqlite3_mprintf("SELECT media_id, media_type, media_mime_type FROM %q WHERE media_path=%Q", DB_TABLE_MEDIA, path);
+       ret = _media_svc_get_result_with_check_record(handle, q, &stmt);
        media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "_media_svc_get_result_with_check_record() failed [%d]", ret);
 
        *item = g_new0(media_svc_noti_item, 1);
 
-       (*item)->media_uuid = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0));
-       (*item)->media_type = sqlite3_column_int(sql_stmt, 1);
-       (*item)->mime_type = g_strdup((const char *)sqlite3_column_text(sql_stmt, 2));
+       (*item)->media_uuid = g_strdup((const char *)sqlite3_column_text(stmt, 0));
+       (*item)->media_type = sqlite3_column_int(stmt, 1);
+       (*item)->mime_type = g_strdup((const char *)sqlite3_column_text(stmt, 2));
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return MS_MEDIA_ERR_NONE;
 }
index 3b0e965..65d9732 100755 (executable)
 int _media_svc_check_storage(sqlite3 *handle, const char *storage_id, char **storage_path, int *validity)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
+       sqlite3_stmt *stmt = NULL;
+       sql_autoptr q = NULL;
 
        media_svc_retvm_if(!storage_id, MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
        media_svc_retvm_if(!storage_path, MS_MEDIA_ERR_INVALID_PARAMETER, "storage_path is NULL");
        media_svc_retvm_if(!validity, MS_MEDIA_ERR_INVALID_PARAMETER, "validity is NULL");
 
-       *storage_path = NULL;
-       *validity = 0;
-
-       sql = sqlite3_mprintf("SELECT storage_path, validity FROM %q WHERE storage_id=%Q", DB_TABLE_STORAGE, storage_id);
-       ret = _media_svc_get_result_with_check_record(handle, sql, &sql_stmt);
-       SQLITE3_SAFE_FREE(sql);
+       q = sqlite3_mprintf("SELECT storage_path, validity FROM %q WHERE storage_id=%Q", DB_TABLE_STORAGE, storage_id);
+       ret = _media_svc_get_result_with_check_record(handle, q, &stmt);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
-       *storage_path = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0));
-       *validity = sqlite3_column_int(sql_stmt, 1);
+       *storage_path = g_strdup((const char *)sqlite3_column_text(stmt, 0));
+       *validity = sqlite3_column_int(stmt, 1);
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return MS_MEDIA_ERR_NONE;
 }
 
 int _media_svc_append_storage(const char *storage_id, const char *storage_path, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *sql = sqlite3_mprintf("INSERT INTO %q (storage_id, storage_path) values (%Q, %Q);",
-                                               DB_TABLE_STORAGE, storage_id, storage_path);
-
-       ret = _media_svc_sql_query_direct(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
+       sql_autoptr q = sqlite3_mprintf("INSERT INTO %q (storage_id, storage_path) values (%Q, %Q);",
+                               DB_TABLE_STORAGE, storage_id, storage_path);
 
-       return ret;
+       return _media_svc_sql_query_direct(q, uid);
 }
 
 int _media_svc_update_storage_path(sqlite3 *handle, const char *storage_id, const char *path, uid_t uid)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       char *sql = NULL;
+       char *q = NULL;
        g_autofree gchar *old_storage_path = NULL;
        int validity = 0;
 
@@ -78,21 +70,21 @@ int _media_svc_update_storage_path(sqlite3 *handle, const char *storage_id, cons
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
        /*Storage table update*/
-       sql = sqlite3_mprintf("UPDATE %q SET storage_path=%Q WHERE storage_id=%Q", DB_TABLE_STORAGE, path, storage_id);
-       ret = _media_svc_sql_query_direct(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
+       q = sqlite3_mprintf("UPDATE %q SET storage_path=%Q WHERE storage_id=%Q", DB_TABLE_STORAGE, path, storage_id);
+       ret = _media_svc_sql_query_direct(q, uid);
+       sqlite3_free(q);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
        /*Folder table update*/
-       sql = sqlite3_mprintf("UPDATE %q SET folder_path=REPLACE(folder_path, %Q, %Q) WHERE storage_uuid=%Q", DB_TABLE_FOLDER, old_storage_path, path, storage_id);
-       ret = _media_svc_sql_query_direct(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
+       q = sqlite3_mprintf("UPDATE %q SET folder_path=REPLACE(folder_path, %Q, %Q) WHERE storage_uuid=%Q", DB_TABLE_FOLDER, old_storage_path, path, storage_id);
+       ret = _media_svc_sql_query_direct(q, uid);
+       sqlite3_free(q);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
        /*Media table update*/
-       sql = sqlite3_mprintf("UPDATE %q SET media_path=REPLACE(media_path, %Q, %Q) WHERE storage_uuid=%Q", DB_TABLE_MEDIA, old_storage_path, path, storage_id);
-       ret = _media_svc_sql_query_direct(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
+       q = sqlite3_mprintf("UPDATE %q SET media_path=REPLACE(media_path, %Q, %Q) WHERE storage_uuid=%Q", DB_TABLE_MEDIA, old_storage_path, path, storage_id);
+       ret = _media_svc_sql_query_direct(q, uid);
+       sqlite3_free(q);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
        return ret;
@@ -101,16 +93,16 @@ int _media_svc_update_storage_path(sqlite3 *handle, const char *storage_id, cons
 static int __media_svc_delete_thumbnail(sqlite3 *handle)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       const char *sql = "SELECT media_thumbnail_path FROM media WHERE validity=0 AND media_thumbnail_path IS NOT NULL;";
-       sqlite3_stmt *sql_stmt = NULL;
+       const char *q = "SELECT media_thumbnail_path FROM media WHERE validity=0 AND media_thumbnail_path IS NOT NULL;";
+       sqlite3_stmt *stmt = NULL;
 
-       ret = _media_svc_get_result(handle, sql, &sql_stmt);
+       ret = _media_svc_get_result(handle, q, &stmt);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
-       while (sqlite3_step(sql_stmt) == SQLITE_ROW)
-               _media_svc_remove_file((const char *)sqlite3_column_text(sql_stmt, 0));
+       while (sqlite3_step(stmt) == SQLITE_ROW)
+               _media_svc_remove_file((const char *)sqlite3_column_text(stmt, 0));
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        return ret;
 }
@@ -118,42 +110,35 @@ static int __media_svc_delete_thumbnail(sqlite3 *handle)
 int _media_svc_delete_invalid_storage(sqlite3 *handle, uid_t uid)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       char *sql = NULL;
+       sql_autoptr q = NULL;
 
        ret = __media_svc_delete_thumbnail(handle);
        media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Fail to remove thumbnail");
 
-       sql = sqlite3_mprintf("DELETE FROM %q WHERE validity=0;DELETE FROM %q WHERE validity=0;DELETE FROM %q WHERE validity=0;",
+       q = sqlite3_mprintf("DELETE FROM %q WHERE validity=0;DELETE FROM %q WHERE validity=0;DELETE FROM %q WHERE validity=0;",
                        DB_TABLE_MEDIA, DB_TABLE_STORAGE, DB_TABLE_FOLDER);
 
-       ret = _media_svc_sql_query_direct(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
-
-       return ret;
+       return _media_svc_sql_query_direct(q, uid);
 }
 
 int _media_svc_update_storage_validity(const char *storage_id, int validity, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *sql = NULL;
+       sql_autoptr q = NULL;
 
        if (!storage_id)
-               sql = sqlite3_mprintf("UPDATE %q SET validity=%d;UPDATE %q SET validity=%d WHERE storage_uuid IS NOT 'media';UPDATE %q SET validity=%d WHERE storage_uuid IS NOT 'media';", DB_TABLE_STORAGE, validity, DB_TABLE_FOLDER, validity, DB_TABLE_MEDIA, validity);
+               q = sqlite3_mprintf("UPDATE %q SET validity=%d;UPDATE %q SET validity=%d WHERE storage_uuid IS NOT 'media';UPDATE %q SET validity=%d WHERE storage_uuid IS NOT 'media';", DB_TABLE_STORAGE, validity, DB_TABLE_FOLDER, validity, DB_TABLE_MEDIA, validity);
        else
-               sql = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE storage_id=%Q;UPDATE %q SET validity=%d WHERE storage_uuid=%Q;UPDATE %q SET validity=%d WHERE storage_uuid=%Q;", DB_TABLE_STORAGE, validity, storage_id, DB_TABLE_FOLDER, validity, storage_id, DB_TABLE_MEDIA, validity, storage_id);
-
-       ret = _media_svc_sql_query_direct(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
+               q = sqlite3_mprintf("UPDATE %q SET validity=%d WHERE storage_id=%Q;UPDATE %q SET validity=%d WHERE storage_uuid=%Q;UPDATE %q SET validity=%d WHERE storage_uuid=%Q;", DB_TABLE_STORAGE, validity, storage_id, DB_TABLE_FOLDER, validity, storage_id, DB_TABLE_MEDIA, validity, storage_id);
 
-       return ret;
+       return _media_svc_sql_query_direct(q, uid);
 }
 
 int _media_svc_get_storage_uuid(sqlite3 *handle, const char *path, char *storage_id, uid_t uid)
 {
        int ret = MS_MEDIA_ERR_NONE;
-       sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
-       char *internal_path = NULL;
+       sqlite3_stmt *stmt = NULL;
+       sql_autoptr q = NULL;
+       g_autofree gchar *internal_path = NULL;
 
        media_svc_retvm_if(!path, MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
 
@@ -162,27 +147,23 @@ int _media_svc_get_storage_uuid(sqlite3 *handle, const char *path, char *storage
 
        if (STRING_VALID(internal_path) && strncmp(path, internal_path, strlen(internal_path)) == 0) {
                g_strlcpy(storage_id, DB_TABLE_MEDIA, MEDIA_SVC_UUID_SIZE + 1);
-               g_free(internal_path);
                return MS_MEDIA_ERR_NONE;
        }
 
-       g_free(internal_path);
+       q = sqlite3_mprintf("SELECT storage_id FROM %q WHERE validity=1 AND instr(%Q, storage_path)", DB_TABLE_STORAGE, path);
 
-       sql = sqlite3_mprintf("SELECT storage_id FROM %q WHERE validity=1 AND instr(%Q, storage_path)", DB_TABLE_STORAGE, path);
-
-       ret = _media_svc_get_result_with_check_record(handle, sql, &sql_stmt);
-       SQLITE3_SAFE_FREE(sql);
+       ret = _media_svc_get_result_with_check_record(handle, q, &stmt);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
-       if (STRING_VALID((const char *)sqlite3_column_text(sql_stmt, 0)))
-               g_strlcpy(storage_id, (const char *)sqlite3_column_text(sql_stmt, 0), MEDIA_SVC_UUID_SIZE + 1);
+       if (STRING_VALID((const char *)sqlite3_column_text(stmt, 0)))
+               g_strlcpy(storage_id, (const char *)sqlite3_column_text(stmt, 0), MEDIA_SVC_UUID_SIZE + 1);
 
-       SQLITE3_FINALIZE(sql_stmt);
+       sqlite3_finalize(stmt);
 
        if (!STRING_VALID(storage_id)) {
                media_svc_error("Not found valid storage id [%s]", path);
-               ret = MS_MEDIA_ERR_INVALID_PARAMETER;
+               return MS_MEDIA_ERR_INVALID_PARAMETER;
        }
 
-       return ret;
+       return MS_MEDIA_ERR_NONE;
 }
index f3cd14f..a32c1df 100644 (file)
@@ -1055,7 +1055,7 @@ static int __media_svc_create_wordbook_db(const char *path, sqlite3 **handle)
 {
        int ret = SQLITE_OK;
        sqlite3 *db_handle = NULL;
-       char *err = NULL;
+       sql_autoptr err = NULL;
 
        ret = sqlite3_open_v2(path, &db_handle, SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE, NULL);
        media_svc_retvm_if(ret != SQLITE_OK, ret, "sqlite3_open_v2 failed : %d", ret);
@@ -1082,7 +1082,6 @@ static int __media_svc_create_wordbook_db(const char *path, sqlite3 **handle)
 
 ERROR:
        media_svc_error("sqlite3_exec failed : %s", err);
-       SQLITE3_SAFE_FREE(err);
        sqlite3_close_v2(db_handle);
 
        return ret;
@@ -1113,32 +1112,23 @@ static bool __media_svc_get_wordbook_handle(uid_t uid, sqlite3 **handle)
 
 static bool __media_svc_is_exist_in_wordbook(sqlite3 *db_handle, const char *path)
 {
-       int ret = SQLITE_OK;
-       char *err = NULL;
-       char *query = NULL;
-
-       query = sqlite3_mprintf("UPDATE files SET validity=1 WHERE path = %Q", path);
+       sql_autoptr err = NULL;
+       sql_autoptr q = sqlite3_mprintf("UPDATE files SET validity=1 WHERE path = %Q", path);
 
-       ret = sqlite3_exec(db_handle, query, NULL, NULL, &err);
-       SQLITE3_SAFE_FREE(query);
-       if (ret != SQLITE_OK) {
+       if (sqlite3_exec(db_handle, q, NULL, NULL, &err) != SQLITE_OK) {
                media_svc_error("Query failed. [%s]", err);
-               SQLITE3_SAFE_FREE(err);
                return false;
        }
 
-       return sqlite3_changes(db_handle) > 0 ? true : false;
+       return (sqlite3_changes(db_handle) > 0);
 }
 
 static void __media_svc_insert_to_wordbook(sqlite3 *db_handle, const char *path)
 {
        void *handle = NULL;
        void (*svc_update) (sqlite3 *, const char *);
-       char *query = NULL;
-
-       query = sqlite3_mprintf("INSERT INTO files(path) VALUES(%Q);", path);
-       sqlite3_exec(db_handle, query, NULL, NULL, NULL);
-       sqlite3_free(query);
+       sql_autoptr q = sqlite3_mprintf("INSERT INTO files(path) VALUES(%Q);", path);
+       sqlite3_exec(db_handle, q, NULL, NULL, NULL);
 
        handle = dlopen(PATH_PLUGIN_LIB, RTLD_LAZY);
        if (!handle) {
@@ -1198,21 +1188,17 @@ void _media_svc_clean_wordbook(uid_t uid)
 
 bool _media_svc_get_matched_list(const char *keyword, uid_t uid, GList **list)
 {
-       int ret = SQLITE_OK;
        sqlite3 *handle = NULL;
        sqlite3_stmt *stmt = NULL;
-       char *query = NULL;
+       sql_autoptr q = NULL;
 
        media_svc_retvm_if(!list, false, "list is NULL");
        media_svc_retvm_if(!keyword, false, "keyword is NULL");
        media_svc_retvm_if(!__media_svc_get_wordbook_handle(uid, &handle), false, "Failed to get handle");
 
-       query = sqlite3_mprintf("SELECT files.path FROM files JOIN (SELECT file_id, sum(frequency) AS freq_sum FROM words WHERE word LIKE '%q%%' GROUP BY file_id ORDER BY freq_sum DESC) w ON files.id = w.file_id;", keyword);
-       ret = sqlite3_prepare_v2(handle, query, -1, &stmt, NULL);
-       SQLITE3_SAFE_FREE(query);
-
-       if (ret != SQLITE_OK) {
-               media_svc_error("Query failed[%d]", ret);
+       q = sqlite3_mprintf("SELECT files.path FROM files JOIN (SELECT file_id, sum(frequency) AS freq_sum FROM words WHERE word LIKE '%q%%' GROUP BY file_id ORDER BY freq_sum DESC) w ON files.id = w.file_id;", keyword);
+       if (sqlite3_prepare_v2(handle, q, -1, &stmt, NULL) != SQLITE_OK) {
+               media_svc_error("query failed");
                sqlite3_close_v2(handle);
                return false;
        }
index 00c1916..7555644 100755 (executable)
@@ -615,7 +615,7 @@ int media_svc_create_thumbnail(const char *file_path, int media_type, uid_t uid,
 {
        int ret = MS_MEDIA_ERR_NONE;
        char thumb_path[MEDIA_SVC_PATHNAME_SIZE + 1] = { 0, };
-       char *sql = NULL;
+       sql_autoptr q = NULL;
 
        // 1. Check media type
        if (media_type != MEDIA_SVC_MEDIA_TYPE_IMAGE && media_type != MEDIA_SVC_MEDIA_TYPE_VIDEO)
@@ -630,10 +630,9 @@ int media_svc_create_thumbnail(const char *file_path, int media_type, uid_t uid,
        }
 
        // 3. Update creation result to media db
-       sql = sqlite3_mprintf("UPDATE %q SET media_thumbnail_path='%q' WHERE media_path='%q';", DB_TABLE_MEDIA, thumb_path, file_path);
+       q = sqlite3_mprintf("UPDATE %q SET media_thumbnail_path=%Q WHERE media_path=%Q", DB_TABLE_MEDIA, thumb_path, file_path);
 
-       ret = _media_svc_sql_query(sql, uid);
-       SQLITE3_SAFE_FREE(sql);
+       ret = _media_svc_sql_query(q, uid);
        if (ret != MS_MEDIA_ERR_NONE) {
                media_svc_error("Failed to update media db [%d]", ret);
                *thumbnail_path = g_strdup("");