From bc99f31fc6fe2ae01db0392fa263490f1d5b7c32 Mon Sep 17 00:00:00 2001 From: Minje Ahn Date: Mon, 3 Jun 2019 15:16:17 +0900 Subject: [PATCH] Code cleanup Change-Id: I449546ad793f8ae9f2add7353f5f2acf399092e3 Signed-off-by: Minje Ahn --- include/media_controller_private.h | 17 +++ src/media_controller_db.c | 266 ++++++++++--------------------------- svc/media_controller_db_util.c | 28 +--- 3 files changed, 96 insertions(+), 215 deletions(-) diff --git a/include/media_controller_private.h b/include/media_controller_private.h index 1ce451b..7eb0222 100644 --- a/include/media_controller_private.h +++ b/include/media_controller_private.h @@ -123,6 +123,23 @@ extern "C" { #define MC_DB_TABLE_PLAYLIST "server_playlist" #define MC_DB_TABLE_CLIENT_LIST "client_list" +/* QUERY SET */ +#define SELECT_KEY_FROM_SERVER "SELECT %q FROM %Q" +#define SELECT_NAME_FROM_LATEST "SELECT server_name FROM %Q" +#define SELECT_COUNT_FROM_LATEST "SELECT COUNT(*) FROM %Q WHERE server_name=%Q" +#define SELECT_PLAY_INFO_FROM_SERVER "SELECT playback_state, playback_position, playlist_name, playlist_index, playback_content_type, age_rating FROM %Q" +#define SELECT_FROM_SERVER "SELECT * FROM %Q" + +#define SELECT_COUNT_FROM_PLAYLIST "SELECT COUNT(DISTINCT playlist_name) FROM %q WHERE server_name = %Q" +#define SELECT_NAME_FROM_PLAYLIST "SELECT playlist_name FROM %q WHERE server_name=%Q GROUP BY playlist_name" +#define SELECT_COUNT_FROM_PLAYLIST_WITH_NAME "SELECT COUNT(*) FROM %q WHERE server_name=%Q AND playlist_name=%Q" +#define SELECT_ITEM_COUNT_FROM_PLAYLIST "SELECT COUNT(*) FROM %q WHERE server_name=%Q AND playlist_name=%Q AND item_index IS NOT NULL" +#define SELECT_ITEM_FROM_PLAYLIST "SELECT * FROM %q WHERE server_name=%Q AND playlist_name=%Q AND item_index IS NOT NULL" +#define SELECT_COUNT_FROM_MASTER "SELECT COUNT(*) FROM SQLITE_MASTER WHERE type='table' AND name=%Q" + +#define SELECT_COUNT_FROM_CLIENT "SELECT COUNT(*) FROM '%q' WHERE client_name='%q'" +#define SELECT_COUNT_FROM_SERVER "SELECT COUNT(*) FROM '%q' WHERE server_name='%q'" +#define SELECT_NAME_FROM_SERVER "SELECT server_name FROM %Q" #define SQLITE3_SAFE_FREE(sql_string) {if (sql_string) { sqlite3_free(sql_string); sql_string = NULL; } } #define SQLITE3_FINALIZE(x) {if (x != NULL) sqlite3_finalize(x); } diff --git a/src/media_controller_db.c b/src/media_controller_db.c index 1382738..e304652 100644 --- a/src/media_controller_db.c +++ b/src/media_controller_db.c @@ -64,31 +64,24 @@ static int __mc_db_get_int_value_of_key(void *handle, const char *server_name, c mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); mc_retvm_if(key == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "key is NULL"); + mc_retvm_if(value == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "value is NULL"); - sql_str = sqlite3_mprintf("SELECT %s FROM '%q';", key, server_name); + sql_str = sqlite3_mprintf(SELECT_KEY_FROM_SERVER, key, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) { + if (sqlite3_step(stmt) == SQLITE_ROW) { + *value = sqlite3_column_int(stmt, 0); + } else { mc_error("end of row [%s]", sqlite3_errmsg(db_handle)); SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; } - while (SQLITE_ROW == ret) { - *value = sqlite3_column_int(stmt, 0); - ret = sqlite3_step(stmt); - } SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_NONE; } @@ -105,30 +98,22 @@ static int __mc_db_get_ulonglong_value_of_key(void *handle, const char *server_n mc_retvm_if(key == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "key is NULL"); mc_retvm_if(value == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "value is NULL"); - sql_str = sqlite3_mprintf("SELECT %s FROM '%q';", key, server_name); + sql_str = sqlite3_mprintf(SELECT_KEY_FROM_SERVER, key, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) { + if (sqlite3_step(stmt) == SQLITE_ROW) { + *value = (unsigned long long)sqlite3_column_int64(stmt, 0); + } else { mc_error("end of row [%s]", sqlite3_errmsg(db_handle)); SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; } - while (SQLITE_ROW == ret) { - *value = (unsigned long long)sqlite3_column_int64(stmt, 0); - ret = sqlite3_step(stmt); - } SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_NONE; } @@ -143,31 +128,24 @@ static int __mc_db_get_text_value_of_key(void *handle, const char *server_name, mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); mc_retvm_if(key == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "key is NULL"); + mc_retvm_if(value == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "value is NULL"); - sql_str = sqlite3_mprintf("SELECT %s FROM '%q';", key, server_name); + sql_str = sqlite3_mprintf(SELECT_KEY_FROM_SERVER, key, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) { + if (sqlite3_step(stmt) == SQLITE_ROW) { + *value = g_strdup((const char *)sqlite3_column_text(stmt, 0)); + } else { mc_error("end of row [%s]", sqlite3_errmsg(db_handle)); SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; } - while (SQLITE_ROW == ret) { - *value = g_strdup((const char *)sqlite3_column_text(stmt, 0)); - ret = sqlite3_step(stmt); - } SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_NONE; } @@ -185,11 +163,10 @@ static int __mc_db_get_count(void *handle, const char *sql_str) ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); mc_retvm_if(SQLITE_OK != ret, 0, "prepare error [%s]", sqlite3_errmsg(db_handle)); - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) - mc_error("end of row [%s]", sqlite3_errmsg(db_handle)); - else + if (sqlite3_step(stmt) == SQLITE_ROW) count = sqlite3_column_int(stmt, 0); + else + mc_error("end of row [%s]", sqlite3_errmsg(db_handle)); SQLITE3_FINALIZE(stmt); @@ -333,41 +310,24 @@ int mc_db_get_latest_server_name(void *handle, char **latest_server_name) char *sql_str = NULL; sqlite3_stmt *stmt = NULL; sqlite3 *db_handle = (sqlite3 *)handle; - char *server_name = NULL; mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); *latest_server_name = NULL; - sql_str = sqlite3_mprintf("SELECT server_name FROM '%q';", MC_DB_TABLE_LATEST_SERVER); + sql_str = sqlite3_mprintf(SELECT_NAME_FROM_LATEST, MC_DB_TABLE_LATEST_SERVER); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) { + if (sqlite3_step(stmt) == SQLITE_ROW) + *latest_server_name = g_strdup((const char *)sqlite3_column_text(stmt, 0)); + else mc_error("[No-Error] No latest server [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_NONE; /*There is no latest server yet. */ - } - - while (SQLITE_ROW == ret) { - MC_SAFE_FREE(server_name); - server_name = strdup((char *)sqlite3_column_text(stmt, 0)); - ret = sqlite3_step(stmt); - } - - if (server_name) - *latest_server_name = server_name; SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_NONE; } @@ -375,12 +335,6 @@ int mc_db_get_latest_server_name(void *handle, char **latest_server_name) int mc_db_get_playback_info(void *handle, const char *server_name, mc_playback_h *playback) { int ret = MEDIA_CONTROLLER_ERROR_NONE; - mc_playback_states_e playback_state = MC_PLAYBACK_STATE_PLAYING; - unsigned long long position = 0; - char *playlist_name = NULL; - char *index = NULL; - mc_content_type_e content_type = MC_CONTENT_TYPE_UNDECIDED; - mc_content_age_rating_e age_rating = MC_CONTENT_RATING_ALL; media_controller_playback_s *_playback = NULL; char *sql_str = NULL; sqlite3_stmt *stmt = NULL; @@ -390,50 +344,32 @@ int mc_db_get_playback_info(void *handle, const char *server_name, mc_playback_h mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); mc_retvm_if(playback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "playback is NULL"); - sql_str = sqlite3_mprintf("SELECT playback_state, playback_position, playlist_name, playlist_index, playback_content_type, age_rating FROM '%q';", server_name); + sql_str = sqlite3_mprintf(SELECT_PLAY_INFO_FROM_SERVER, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) { + if (sqlite3_step(stmt) == SQLITE_ROW) { + _playback = (media_controller_playback_s *)calloc(1, sizeof(media_controller_playback_s)); + mc_retvm_if(!_playback, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY"); + + _playback->state = sqlite3_column_int(stmt, 0); + _playback->position = (unsigned long long)sqlite3_column_int64(stmt, 1); + _playback->playlist_name = g_strdup((const char *)sqlite3_column_text(stmt, 2)); + _playback->index = g_strdup((const char *)sqlite3_column_text(stmt, 3)); + _playback->content_type = sqlite3_column_int(stmt, 4); + _playback->age_rating = sqlite3_column_int(stmt, 5); + + *playback = (mc_playback_h)_playback; + } else { mc_error("end of row [%s]", sqlite3_errmsg(db_handle)); SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; } - playback_state = sqlite3_column_int(stmt, 0); - position = (unsigned long long)sqlite3_column_int64(stmt, 1); - playlist_name = g_strdup((const char *)sqlite3_column_text(stmt, 2)); - index = g_strdup((const char *)sqlite3_column_text(stmt, 3)); - content_type = sqlite3_column_int(stmt, 4); - age_rating = sqlite3_column_int(stmt, 5); - SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); - - _playback = (media_controller_playback_s *)calloc(1, sizeof(media_controller_playback_s)); - if (_playback == NULL) { - mc_error("OUT_OF_MEMORY"); - MC_SAFE_FREE(playlist_name); - MC_SAFE_FREE(index); - return MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY; - } - - _playback->state = playback_state; - _playback->position = position; - _playback->playlist_name = playlist_name; - _playback->index = index; - _playback->content_type = content_type; - _playback->age_rating = age_rating; - - *playback = (mc_playback_h)_playback; return MEDIA_CONTROLLER_ERROR_NONE; } @@ -478,77 +414,43 @@ int mc_db_get_metadata_info(void *handle, const char *server_name, mc_metadata_h mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); mc_retvm_if(metadata == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "metadata is NULL"); - sql_str = sqlite3_mprintf("SELECT * FROM '%q';", server_name); + sql_str = sqlite3_mprintf(SELECT_FROM_SERVER, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) { + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); + + if (sqlite3_step(stmt) == SQLITE_ROW) { + ret = __mc_db_get_metadata(stmt, MC_SERVER_FIELD_TITLE, metadata); + } else { mc_error("end of row [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_NONE; + ret = MEDIA_CONTROLLER_ERROR_NONE; } - ret = __mc_db_get_metadata(stmt, MC_SERVER_FIELD_TITLE, metadata); - SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return ret; } int mc_db_get_server_state(void *handle, const char *server_name, mc_server_state_e *state) { - int ret = MEDIA_CONTROLLER_ERROR_NONE; - - mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); - mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); - - ret = __mc_db_get_int_value_of_key(handle, server_name, "server_state", (int *)state); - - return ret; + return __mc_db_get_int_value_of_key(handle, server_name, "server_state", (int *)state); } int mc_db_get_shuffle_mode(void *handle, const char *server_name, mc_shuffle_mode_e *mode) { - int ret = MEDIA_CONTROLLER_ERROR_NONE; - - mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); - mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); - - ret = __mc_db_get_int_value_of_key(handle, server_name, "shuffle_mode", (int *)mode); - - return ret; + return __mc_db_get_int_value_of_key(handle, server_name, "shuffle_mode", (int *)mode); } int mc_db_get_repeat_mode(void *handle, const char *server_name, mc_repeat_mode_e *mode) { - int ret = MEDIA_CONTROLLER_ERROR_NONE; - - mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); - mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); - - ret = __mc_db_get_int_value_of_key(handle, server_name, "repeat_mode", (int *)mode); - - return ret; + return __mc_db_get_int_value_of_key(handle, server_name, "repeat_mode", (int *)mode); } int mc_db_get_icon_uri(void *handle, const char *server_name, char **uri) { - int ret = MEDIA_CONTROLLER_ERROR_NONE; - - mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); - mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); - - ret = __mc_db_get_text_value_of_key(handle, server_name, "icon_uri", uri); - - return ret; + return __mc_db_get_text_value_of_key(handle, server_name, "icon_uri", uri); } static int __mc_db_get_ability(void *handle, const char *server_name, unsigned long long *decided, unsigned long long *supported) @@ -630,7 +532,7 @@ int _mc_db_get_playlist_count(void *handle, const char *server_name) mc_retvm_if(handle == NULL, 0, "invalid handle"); mc_retvm_if(server_name == NULL, 0, "invalid server_name"); - sql_str = sqlite3_mprintf("SELECT COUNT(DISTINCT playlist_name) from %s WHERE server_name = %Q", MC_DB_TABLE_PLAYLIST, server_name); + sql_str = sqlite3_mprintf(SELECT_COUNT_FROM_PLAYLIST, MC_DB_TABLE_PLAYLIST, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), 0, "SQL string is null"); count = __mc_db_get_count(handle, sql_str); @@ -650,18 +552,14 @@ int mc_db_get_foreach_playlist(void *handle, const char *server_name, mc_playlis mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid server_name"); mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid callback"); - sql_str = sqlite3_mprintf("SELECT playlist_name from %s WHERE server_name = %Q GROUP BY playlist_name", MC_DB_TABLE_PLAYLIST, server_name); + sql_str = sqlite3_mprintf(SELECT_NAME_FROM_PLAYLIST, MC_DB_TABLE_PLAYLIST, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); SQLITE3_SAFE_FREE(sql_str); mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) - mc_secure_debug("[%s] has no playlist", server_name); - - while (SQLITE_ROW == ret) { + while (sqlite3_step(stmt) == SQLITE_ROW) { mc_playlist_s *_playlist = (mc_playlist_s *)calloc(1, sizeof(mc_playlist_s)); if (_playlist == NULL) { mc_error("OUT_OF_MEMORY"); @@ -678,8 +576,6 @@ int mc_db_get_foreach_playlist(void *handle, const char *server_name, mc_playlis } mc_playlist_destroy((mc_playlist_h)_playlist); - - ret = sqlite3_step(stmt); } SQLITE3_FINALIZE(stmt); @@ -696,7 +592,7 @@ gboolean _mc_db_is_playlist_exist(void *handle, const char *server_name, const c mc_retvm_if(!server_name, FALSE, "Invalid server_name"); mc_retvm_if(!playlist_name, FALSE, "Invalid playlist_name"); - sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM '%q' WHERE server_name = %Q AND playlist_name = %Q", MC_DB_TABLE_PLAYLIST, server_name, playlist_name); + sql_str = sqlite3_mprintf(SELECT_COUNT_FROM_PLAYLIST_WITH_NAME, MC_DB_TABLE_PLAYLIST, server_name, playlist_name); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); count = __mc_db_get_count(handle, sql_str); @@ -751,7 +647,7 @@ int _mc_db_get_playlist_item_count(void *handle, const char *server_name, char * mc_retvm_if(server_name == NULL, 0, "invalid server_name"); mc_retvm_if(playlist_name == NULL, 0, "invalid playlist_name"); - sql_str = sqlite3_mprintf("SELECT COUNT(*) from %s WHERE server_name = %Q and playlist_name = %Q and item_index IS NOT NULL", MC_DB_TABLE_PLAYLIST, server_name, playlist_name); + sql_str = sqlite3_mprintf(SELECT_ITEM_COUNT_FROM_PLAYLIST, MC_DB_TABLE_PLAYLIST, server_name, playlist_name); mc_retvm_if(!MC_STRING_VALID(sql_str), 0, "SQL string is null"); count = __mc_db_get_count(handle, sql_str); @@ -774,18 +670,14 @@ int mc_db_get_playlist_item(void *handle, const char *server_name, char *playlis mc_retvm_if(playlist_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid playlist_name"); mc_retvm_if(callback == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid callback"); - sql_str = sqlite3_mprintf("SELECT * from %s WHERE server_name = %Q and playlist_name = %Q and item_index IS NOT NULL ORDER BY rowid", MC_DB_TABLE_PLAYLIST, server_name, playlist_name); + sql_str = sqlite3_mprintf(SELECT_ITEM_FROM_PLAYLIST, MC_DB_TABLE_PLAYLIST, server_name, playlist_name); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); SQLITE3_SAFE_FREE(sql_str); mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) - mc_secure_debug("[%s : %s] has no playlist item", server_name, playlist_name); - - while (SQLITE_ROW == ret) { + while (sqlite3_step(stmt) == SQLITE_ROW) { ret = __mc_db_get_metadata(stmt, 3, &_metadata); //0 : server_name, 1 : playlist_name, 2 : item_index, from 3 : metadata such as title, artist if (ret != MEDIA_CONTROLLER_ERROR_NONE) { mc_error("fail to __mc_db_get_metadata"); @@ -803,8 +695,6 @@ int mc_db_get_playlist_item(void *handle, const char *server_name, char *playlis MC_SAFE_FREE(index); mc_metadata_destroy(_metadata); - - ret = sqlite3_step(stmt); } SQLITE3_FINALIZE(stmt); @@ -822,7 +712,7 @@ gboolean mc_db_is_server_table_exist(void *handle, const char *server_name) mc_debug("server name [%s]", server_name); - sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM SQLITE_MASTER WHERE type='table' and name='%q'", server_name); + sql_str = sqlite3_mprintf(SELECT_COUNT_FROM_MASTER, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null"); count = __mc_db_get_count(handle, sql_str); @@ -850,7 +740,7 @@ gboolean _mc_db_is_activated_client(void *handle, const char *client_name) mc_secure_debug("client name [%s]", client_name); - sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM '%q' WHERE client_name='%q'", MC_DB_TABLE_CLIENT_LIST, client_name); + sql_str = sqlite3_mprintf(SELECT_COUNT_FROM_CLIENT, MC_DB_TABLE_CLIENT_LIST, client_name); mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null"); count = __mc_db_get_count(handle, sql_str); @@ -876,7 +766,7 @@ gboolean _mc_db_is_activated_server(void *handle, const char *server_name) mc_secure_debug("server name [%s]", server_name); - sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM '%q' WHERE server_name='%q'", MC_DB_TABLE_SERVER_LIST, server_name); + sql_str = sqlite3_mprintf(SELECT_COUNT_FROM_SERVER, MC_DB_TABLE_SERVER_LIST, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null"); count = __mc_db_get_count(handle, sql_str); @@ -902,7 +792,7 @@ gboolean _mc_db_is_latest_server(void *handle, const char *server_name) mc_secure_debug("server name [%s]", server_name); - sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM '%q' WHERE server_name='%q'", MC_DB_TABLE_LATEST_SERVER, server_name); + sql_str = sqlite3_mprintf(SELECT_COUNT_FROM_LATEST, MC_DB_TABLE_LATEST_SERVER, server_name); mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null"); count = __mc_db_get_count(handle, sql_str); @@ -927,20 +817,16 @@ int mc_db_foreach_server_list(void *handle, mc_activated_server_cb callback, voi mc_retvm_if(db_handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); - sql_str = sqlite3_mprintf("SELECT server_name FROM '%q';", MC_DB_TABLE_SERVER_LIST); + sql_str = sqlite3_mprintf(SELECT_NAME_FROM_SERVER, MC_DB_TABLE_SERVER_LIST); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); ret = sqlite3_step(stmt); if (SQLITE_ROW != ret) { mc_error("[No-Error] There is no server list [%s]", sqlite3_errmsg(db_handle)); SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_NONE; } @@ -968,7 +854,6 @@ int mc_db_foreach_server_list(void *handle, mc_activated_server_cb callback, voi mc_info("[ * Activated Server List - End * ]"); SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_NONE; } @@ -986,17 +871,13 @@ int mc_db_foreach_client_list(void *handle, mc_activated_client_cb callback, voi sql_str = sqlite3_mprintf("SELECT client_name FROM '%q';", MC_DB_TABLE_CLIENT_LIST); mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); ret = sqlite3_step(stmt); if (SQLITE_ROW != ret) { mc_error("[No-Error] There is no client list [%s]", sqlite3_errmsg(db_handle)); SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_NONE; } @@ -1023,7 +904,6 @@ int mc_db_foreach_client_list(void *handle, mc_activated_client_cb callback, voi mc_info("[ * Activated Client List - End * ]"); SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_NONE; } diff --git a/svc/media_controller_db_util.c b/svc/media_controller_db_util.c index 3017318..e91146f 100644 --- a/svc/media_controller_db_util.c +++ b/svc/media_controller_db_util.c @@ -131,11 +131,8 @@ static int __mc_foreach_table_list(void *handle, GList **list) mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; - } + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(db_handle)); ret = sqlite3_step(stmt); while (SQLITE_ROW == ret) { @@ -153,7 +150,6 @@ static int __mc_foreach_table_list(void *handle, GList **list) } SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return MEDIA_CONTROLLER_ERROR_NONE; } @@ -258,29 +254,17 @@ static char * __mc_db_get_latest_server_name(void *handle) mc_retvm_if(!MC_STRING_VALID(sql_str), NULL, "SQL string is null"); ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); - if (SQLITE_OK != ret) { - mc_error("prepare error [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_SAFE_FREE(sql_str); - return NULL; - } - - ret = sqlite3_step(stmt); - if (SQLITE_ROW != ret) { - mc_error("[No-Error] No latest server [%s]", sqlite3_errmsg(db_handle)); - SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); - return NULL; /*There is no latest server yet. */ - } + SQLITE3_SAFE_FREE(sql_str); + mc_retvm_if(SQLITE_OK != ret, NULL, "prepare error [%s]", sqlite3_errmsg(db_handle)); - if (MC_STRING_VALID((char *)sqlite3_column_text(stmt, 0))) { + if (sqlite3_step(stmt) == SQLITE_ROW) { server_name = g_strdup((char *)sqlite3_column_text(stmt, 0)); mc_secure_debug("latest_server_name : [%s]", server_name); } else { - mc_error("Fail to get latest_server_name"); + mc_error("[No-Error] No latest server [%s]", sqlite3_errmsg(db_handle)); } SQLITE3_FINALIZE(stmt); - SQLITE3_SAFE_FREE(sql_str); return server_name; } -- 2.7.4