static int __mc_db_get_int_value(sqlite3 *handle, const char *server_name, const char *column, int *value)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid server_name");
mc_retvm_if(!column, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "Invalid column");
mc_retvm_if(!value, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid value");
- sql_str = sqlite3_mprintf("SELECT %q FROM %q WHERE name=%Q", column, MC_DB_TABLE_SERVER_INFO, server_name);
+ q = sqlite3_mprintf("SELECT %q FROM %q WHERE name=%Q", column, MC_DB_TABLE_SERVER_INFO, server_name);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "__mc_db_get_record failed [%d]", ret);
+ ret = __mc_db_get_record(handle, q, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
*value = sqlite3_column_int(stmt, 0);
sqlite3_finalize(stmt);
int _mc_db_get_latest_server_info(sqlite3 *handle, char **latest_server_name, mc_server_state_e *state)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
*latest_server_name = NULL;
- sql_str = sqlite3_mprintf("SELECT name, server_state FROM %q WHERE name IN (SELECT name FROM %q)", MC_DB_TABLE_SERVER_INFO, MC_DB_TABLE_LATEST_SERVER);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ q = sqlite3_mprintf("SELECT name, server_state FROM %q WHERE name IN (SELECT name FROM %q)", MC_DB_TABLE_SERVER_INFO, MC_DB_TABLE_LATEST_SERVER);
+ ret = __mc_db_get_record(handle, q, &stmt);
if (ret == MEDIA_CONTROLLER_ERROR_NONE) {
*latest_server_name = g_strdup((const char *)sqlite3_column_text(stmt, 0));
*state = sqlite3_column_int(stmt, 1);
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
media_controller_playback_s *_playback = NULL;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid server_name");
mc_retvm_if(!playback, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid playback");
- sql_str = sqlite3_mprintf("SELECT playback_state, playback_position, playlist_name, playlist_index, playback_content_type, age_rating FROM %q WHERE name=%Q",
+ q = sqlite3_mprintf("SELECT playback_state, playback_position, playlist_name, playlist_index, playback_content_type, age_rating FROM %q WHERE name=%Q",
MC_DB_TABLE_SERVER_INFO, server_name);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "__mc_db_get_record failed [%d]", ret);
+ ret = __mc_db_get_record(handle, q, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
_playback = g_new0(media_controller_playback_s, 1);
int _mc_db_get_metadata_info(sqlite3 *handle, const char *server_name, mc_metadata_h *metadata)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid server_name");
mc_retvm_if(!metadata, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid metadata");
- sql_str = sqlite3_mprintf("SELECT %s FROM %q WHERE name=%Q", META_LIST, MC_DB_TABLE_LATEST_META, server_name);
+ q = sqlite3_mprintf("SELECT %s FROM %q WHERE name=%Q", META_LIST, MC_DB_TABLE_LATEST_META, server_name);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ ret = __mc_db_get_record(handle, q, &stmt);
mc_retvm_if(ret == TIZEN_ERROR_NO_DATA, MEDIA_CONTROLLER_ERROR_NONE, "no metadata info");
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
int _mc_db_get_icon_uri(sqlite3 *handle, const char *server_name, char **uri)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid server_name");
mc_retvm_if(!uri, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid uri");
- sql_str = sqlite3_mprintf("SELECT icon_uri FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
-
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "__mc_db_get_record failed [%d]", ret);
+ q = sqlite3_mprintf("SELECT icon_uri FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
+ ret = __mc_db_get_record(handle, q, &stmt);
+ mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
*uri = g_strdup((const char *)sqlite3_column_text(stmt, 0));
sqlite3_finalize(stmt);
static int __mc_db_get_ability(sqlite3 *handle, const char *server_name, unsigned long long *decided, unsigned long long *supported)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid server_name");
mc_retvm_if(!decided, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid decided");
mc_retvm_if(!supported, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid supported");
- sql_str = sqlite3_mprintf("SELECT ability_decided, ability_supported FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
+ q = sqlite3_mprintf("SELECT ability_decided, ability_supported FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ ret = __mc_db_get_record(handle, q, &stmt);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "__mc_db_get_record failed [%d]", ret);
*decided = (unsigned long long)sqlite3_column_int64(stmt, 0);
int _mc_db_get_playlist_count(sqlite3 *handle, const char *server_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
int count = 0;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, 0, "Invalid server_name");
- sql_str = sqlite3_mprintf("SELECT COUNT(DISTINCT playlist_name) FROM %q WHERE server_name = %Q", MC_DB_TABLE_PLAYLIST, server_name);
+ q = sqlite3_mprintf("SELECT COUNT(DISTINCT playlist_name) FROM %q WHERE server_name = %Q", MC_DB_TABLE_PLAYLIST, server_name);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ ret = __mc_db_get_record(handle, q, &stmt);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, 0, "__mc_db_get_record failed [%d]", ret);
count = sqlite3_column_int(stmt, 0);
int _mc_db_get_foreach_playlist(sqlite3 *handle, const char *server_name, mc_playlist_cb callback, void *user_data)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
GList *playlists = NULL;
GList *node = NULL;
mc_retvm_if(!server_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid server_name");
mc_retvm_if(!callback, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid callback");
- sql_str = sqlite3_mprintf("SELECT playlist_name FROM %q WHERE server_name=%Q GROUP BY playlist_name", MC_DB_TABLE_PLAYLIST, server_name);
- mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
+ q = sqlite3_mprintf("SELECT playlist_name FROM %q WHERE server_name=%Q GROUP BY playlist_name", MC_DB_TABLE_PLAYLIST, server_name);
+ mc_retvm_if(!q, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
- ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &stmt, NULL);
- sqlite3_free(sql_str);
+ ret = sqlite3_prepare_v2(handle, q, strlen(q), &stmt, NULL);
mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(handle));
while (sqlite3_step(stmt) == SQLITE_ROW) {
gboolean _mc_db_is_playlist_exist(sqlite3 *handle, const char *server_name, const char *playlist_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!handle, FALSE, "Invalid handle");
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);
+ q = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE server_name=%Q AND playlist_name=%Q", MC_DB_TABLE_PLAYLIST, server_name, playlist_name);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ ret = __mc_db_get_record(handle, q, &stmt);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
ret = sqlite3_column_int(stmt, 0);
int _mc_db_get_playlist_item_count(sqlite3 *handle, const char *server_name, char *playlist_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
int count = 0;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, 0, "Invalid server_name");
mc_retvm_if(!playlist_name, 0, "Invalid playlist_name");
- sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE server_name=%Q AND playlist_name=%Q AND item_index IS NOT NULL", MC_DB_TABLE_PLAYLIST, server_name, playlist_name);
+ q = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE server_name=%Q AND playlist_name=%Q AND item_index IS NOT NULL", MC_DB_TABLE_PLAYLIST, server_name, playlist_name);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ ret = __mc_db_get_record(handle, q, &stmt);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, 0, "__mc_db_get_record failed [%d]", ret);
count = sqlite3_column_int(stmt, 0);
int _mc_db_get_playlist_item(sqlite3 *handle, const char *server_name, char *playlist_name, mc_playlist_item_cb callback, void *user_data)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_playlist_item_s *item = NULL;
GList *item_list = NULL;
mc_retvm_if(!playlist_name, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid playlist_name");
mc_retvm_if(!callback, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid callback");
- sql_str = sqlite3_mprintf("SELECT item_index, %s FROM %q WHERE server_name=%Q AND playlist_name=%Q AND item_index IS NOT NULL ORDER BY ROWID", META_LIST, 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");
+ q = sqlite3_mprintf("SELECT item_index, %s FROM %q WHERE server_name=%Q AND playlist_name=%Q AND item_index IS NOT NULL ORDER BY ROWID", META_LIST, MC_DB_TABLE_PLAYLIST, server_name, playlist_name);
+ mc_retvm_if(!q, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
- ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &stmt, NULL);
- sqlite3_free(sql_str);
+ ret = sqlite3_prepare_v2(handle, q, strlen(q), &stmt, NULL);
mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(handle));
while (sqlite3_step(stmt) == SQLITE_ROW) {
gboolean _mc_db_is_exist_server(sqlite3 *handle, const char *server_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, FALSE, "Invalid server_name");
mc_secure_debug("server_name [%s]", server_name);
- sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name='%q'", MC_DB_TABLE_SERVER_INFO, server_name);
+ q = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ ret = __mc_db_get_record(handle, q, &stmt);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
ret = sqlite3_column_int(stmt, 0);
gboolean _mc_db_is_activated_client(sqlite3 *handle, const char *client_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!client_name, FALSE, "Invalid client_name");
mc_secure_debug("client name [%s]", client_name);
- sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name='%q' AND type=%d", MC_DB_TABLE_APP_LIST, client_name, MC_PRIV_TYPE_CLIENT);
+ q = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name=%Q AND type=%d", MC_DB_TABLE_APP_LIST, client_name, MC_PRIV_TYPE_CLIENT);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ ret = __mc_db_get_record(handle, q, &stmt);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
ret = sqlite3_column_int(stmt, 0);
gboolean _mc_db_is_activated_server(sqlite3 *handle, const char *server_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, FALSE, "Invalid server_name");
mc_secure_debug("server name [%s]", server_name);
- sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name='%q' AND type=%d", MC_DB_TABLE_APP_LIST, server_name, MC_PRIV_TYPE_SERVER);
+ q = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name=%Q AND type=%d", MC_DB_TABLE_APP_LIST, server_name, MC_PRIV_TYPE_SERVER);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ ret = __mc_db_get_record(handle, q, &stmt);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
ret = sqlite3_column_int(stmt, 0);
gboolean _mc_db_is_latest_server(sqlite3 *handle, const char *server_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
mc_retvm_if(!server_name, FALSE, "server_name is NULL");
mc_secure_debug("server name [%s]", server_name);
- sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name=%Q", MC_DB_TABLE_LATEST_SERVER, server_name);
+ q = sqlite3_mprintf("SELECT COUNT(*) FROM %q WHERE name=%Q", MC_DB_TABLE_LATEST_SERVER, server_name);
- ret = __mc_db_get_record(handle, sql_str, &stmt);
- sqlite3_free(sql_str);
+ ret = __mc_db_get_record(handle, q, &stmt);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, FALSE, "__mc_db_get_record failed [%d]", ret);
ret = sqlite3_column_int(stmt, 0);
int _mc_db_foreach_server_list(sqlite3 *handle, mc_activated_server_cb callback, void *user_data)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
int idx = 0;
GList *list = NULL;
mc_retvm_if(!handle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid handle");
- sql_str = sqlite3_mprintf("SELECT name FROM %q WHERE type=%d", MC_DB_TABLE_APP_LIST, MC_PRIV_TYPE_SERVER);
- mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
- ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &stmt, NULL);
- sqlite3_free(sql_str);
+ q = sqlite3_mprintf("SELECT name FROM %q WHERE type=%d", MC_DB_TABLE_APP_LIST, MC_PRIV_TYPE_SERVER);
+ mc_retvm_if(!q, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
+ ret = sqlite3_prepare_v2(handle, q, strlen(q), &stmt, NULL);
mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(handle));
ret = sqlite3_step(stmt);
int _mc_db_foreach_client_list(sqlite3 *handle, mc_activated_client_cb callback, void *user_data)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
int idx = 0;
GList *list = NULL;
mc_retvm_if(!handle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid handle");
- sql_str = sqlite3_mprintf("SELECT name FROM %q WHERE type=%d", MC_DB_TABLE_APP_LIST, MC_PRIV_TYPE_CLIENT);
- mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
- ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &stmt, NULL);
- sqlite3_free(sql_str);
+ q = sqlite3_mprintf("SELECT name FROM %q WHERE type=%d", MC_DB_TABLE_APP_LIST, MC_PRIV_TYPE_CLIENT);
+ mc_retvm_if(!q, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
+ ret = sqlite3_prepare_v2(handle, q, strlen(q), &stmt, NULL);
mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "prepare error [%s]", sqlite3_errmsg(handle));
ret = sqlite3_step(stmt);
static int __mc_db_disable_journal_mode(sqlite3 *handle)
{
int ret = SQLITE_OK;
- char *sql = NULL;
mc_retvm_if(!handle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid handle");
- sql = sqlite3_mprintf("%s", "PRAGMA journal_mode = OFF");
- mc_retvm_if(!MC_STRING_VALID(sql), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null");
-
- ret = sqlite3_exec(handle, sql, NULL, NULL, NULL);
- sqlite3_free(sql);
- mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL Error[%s] when change the journal mode", sqlite3_errmsg(handle));
+ ret = sqlite3_exec(handle, "PRAGMA journal_mode = OFF", NULL, NULL, NULL);
+ mc_retvm_if(SQLITE_OK != ret, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "query failed[%s]", sqlite3_errmsg(handle));
return MEDIA_CONTROLLER_ERROR_NONE;
}
static gboolean __mc_db_is_latest(sqlite3 *handle, const char *server_name)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
sqlite3_stmt *stmt = NULL;
gboolean is_latest = FALSE;
mc_retvm_if(handle == NULL, FALSE, "Handle is NULL");
mc_retvm_if(server_name == NULL, FALSE, "server_name is NULL");
- sql_str = sqlite3_mprintf("SELECT 1 FROM %q WHERE name=%Q", MC_DB_TABLE_LATEST_SERVER, server_name);
- mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null");
+ q = sqlite3_mprintf("SELECT 1 FROM %q WHERE name=%Q", MC_DB_TABLE_LATEST_SERVER, server_name);
+ mc_retvm_if(!q, FALSE, "allocation failed");
- ret = sqlite3_prepare_v2(handle, sql_str, strlen(sql_str), &stmt, NULL);
- sqlite3_free(sql_str);
+ ret = sqlite3_prepare_v2(handle, q, strlen(q), &stmt, NULL);
mc_retvm_if(SQLITE_OK != ret, FALSE, "prepare error [%s]", sqlite3_errmsg(handle));
if (sqlite3_step(stmt) == SQLITE_ROW)
static int __mc_update_latest_server_info_to_db(sqlite3 *handle, mc_server_state_e server_state, mc_playback_states_e playback_state)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
unsigned long long ability_decided = 0, ability_supported = 0;
mc_retvm_if(!handle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid handle");
/* Update DB */
if (server_state == MC_SERVER_STATE_DEACTIVATE) {
__mc_db_set_default_ability(&ability_decided, &ability_supported);
- sql_str = sqlite3_mprintf("UPDATE %q SET server_state=%d, playback_state=%d, \
+ q = sqlite3_mprintf("UPDATE %q SET server_state=%d, playback_state=%d, \
display_mode=%d, display_rotation=%d, ability_decided=%llu, ability_supported=%llu \
WHERE name IN (SELECT name FROM %q)",
MC_DB_TABLE_SERVER_INFO, server_state, playback_state,
MC_DISPLAY_MODE_FULL_SCREEN, MC_DISPLAY_ROTATION_NONE, ability_decided, ability_supported,
MC_DB_TABLE_LATEST_SERVER);
} else {
- sql_str = sqlite3_mprintf("UPDATE %q SET server_state=%d, playback_state=%d WHERE name IN (SELECT name FROM %q)",
+ q = sqlite3_mprintf("UPDATE %q SET server_state=%d, playback_state=%d WHERE name IN (SELECT name FROM %q)",
MC_DB_TABLE_SERVER_INFO, server_state, playback_state, MC_DB_TABLE_LATEST_SERVER);
}
- ret = mc_db_util_update_db(handle, sql_str);
- sqlite3_free(sql_str);
+ ret = mc_db_util_update_db(handle, q);
mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to mc_db_util_update_db [%d]", ret);
return __mc_update_latest_server_state_to_vconf(server_state, playback_state);
static int __mc_db_activate_server(sqlite3 *db_handle, const char *app_id)
{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
mc_debug_fenter();
mc_retvm_if(!app_id, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid app_id");
- if (__mc_db_is_latest(db_handle, app_id)) {
- ret = __mc_update_latest_server_info_to_db(db_handle, MC_SERVER_STATE_ACTIVATE, MC_PLAYBACK_STATE_STOPPED);
- } else {
- sql_str = sqlite3_mprintf("INSERT OR REPLACE INTO %q(name) VALUES (%Q)", MC_DB_TABLE_SERVER_INFO, app_id);
- ret = mc_db_util_update_db(db_handle, sql_str);
- sqlite3_free(sql_str);
- }
+ if (__mc_db_is_latest(db_handle, app_id))
+ return __mc_update_latest_server_info_to_db(db_handle, MC_SERVER_STATE_ACTIVATE, MC_PLAYBACK_STATE_STOPPED);
- mc_debug_fleave();
+ q = sqlite3_mprintf("INSERT OR REPLACE INTO %q(name) VALUES (%Q)", MC_DB_TABLE_SERVER_INFO, app_id);
- return ret;
+ return mc_db_util_update_db(db_handle, q);
}
static int __mc_db_insert_to_list(sqlite3 *db_handle, const char *app_id, mc_priv_type_e priv_type)
{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
mc_debug_fenter();
-
mc_retvm_if(!app_id, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid app_id");
mc_secure_debug("app_id: %s, priv_type: %d", app_id, priv_type);
- sql_str = sqlite3_mprintf("INSERT OR IGNORE INTO %q VALUES ('%q', %d)", MC_DB_TABLE_APP_LIST, app_id, priv_type);
- mc_retvm_if(sql_str == NULL, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "sql_str is NULL");
+ q = sqlite3_mprintf("INSERT OR IGNORE INTO %q VALUES ('%q', %d)", MC_DB_TABLE_APP_LIST, app_id, priv_type);
+ mc_retvm_if(!q, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "allocation failed");
- ret = mc_db_util_update_db(db_handle, sql_str);
- if (ret != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_update_db error : %d", ret);
-
- sqlite3_free(sql_str);
-
- mc_debug_fleave();
-
- return ret;
+ return mc_db_util_update_db(db_handle, q);
}
static int __mc_db_delete_from_list(sqlite3 *db_handle, const char *app_id, mc_priv_type_e priv_type)
{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
mc_debug_fenter();
-
mc_retvm_if(!app_id, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid app_id");
mc_secure_debug("app_id: %s, priv_type: %d", app_id, priv_type);
- sql_str = sqlite3_mprintf("DELETE FROM %q WHERE name=%Q AND type=%d", MC_DB_TABLE_APP_LIST, app_id, priv_type);
- mc_retvm_if(sql_str == NULL, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "sql_str is NULL");
-
- ret = mc_db_util_update_db(db_handle, sql_str);
- if (ret != MEDIA_CONTROLLER_ERROR_NONE)
- mc_error("mc_db_util_update_db error : %d", ret);
-
- sqlite3_free(sql_str);
-
- mc_debug_fleave();
+ q = sqlite3_mprintf("DELETE FROM %q WHERE name=%Q AND type=%d", MC_DB_TABLE_APP_LIST, app_id, priv_type);
+ mc_retvm_if(!q, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "allocation failed");
- return ret;
+ return mc_db_util_update_db(db_handle, q);
}
char *mc_db_get_db_path(uid_t uid)
int mc_db_util_check_integrity(sqlite3 *handle)
{
- int ret = 0;
+ int ret = SQLITE_OK;
sqlite3_stmt *stmt = NULL;
- const char integrity_check_query[] = "PRAGMA integrity_check";
mc_retvm_if(!handle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid handle");
- ret = sqlite3_prepare_v2(handle, integrity_check_query, strlen(integrity_check_query), &stmt, NULL);
+ ret = sqlite3_prepare_v2(handle, "PRAGMA integrity_check", -1, &stmt, NULL);
if (ret != SQLITE_OK) {
mc_error("prepare error, ret = %d, error = %s", ret, sqlite3_errmsg(handle));
return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
}
- ret = sqlite3_step(stmt);
- if (ret != SQLITE_ROW) {
+ if (sqlite3_step(stmt) != SQLITE_ROW) {
mc_error("integrity_check failed in step");
sqlite3_finalize(stmt);
return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
}
- char* check_result = (char*) sqlite3_column_text(stmt, 0);
- if (check_result == NULL || strncmp(check_result, "ok", strlen(check_result))) {
- mc_error("integrity_check failed - result(%s)\n", check_result);
+ if (sqlite3_stricmp("ok", (const char *)sqlite3_column_text(stmt, 0)) != 0) {
+ mc_error("consistency error detected");
sqlite3_finalize(stmt);
return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
}
int mc_db_util_update_db(sqlite3 *handle, const char *sql_str)
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *err_msg = NULL;
int retry_count = 0;
mc_retvm_if(!handle, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Invalid handle");
mc_secure_debug("Update query [%s]", sql_str);
while (1) {
- ret = sqlite3_exec(handle, sql_str, NULL, NULL, &err_msg);
-
+ ret = sqlite3_exec(handle, sql_str, NULL, NULL, NULL);
if (ret == SQLITE_OK)
break;
- mc_error("failed to update db[%d, %s]", ret, err_msg);
- sqlite3_free(err_msg);
+ mc_error("failed to update db[%d, %s]", ret, sqlite3_errmsg(handle));
- if (ret == SQLITE_LOCKED &&
- retry_count++ < RETRY_CNT) {
+ if (ret == SQLITE_LOCKED && retry_count++ < RETRY_CNT) {
mc_warning("Locked retry[%d]", retry_count);
usleep(SLEEP_TIME);
continue;
int mc_db_util_delete_app_list(sqlite3 *handle)
{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
-
- sql_str = sqlite3_mprintf("DELETE FROM %q", MC_DB_TABLE_APP_LIST);
- ret = mc_db_util_update_db(handle, sql_str);
- sqlite3_free(sql_str);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Delete app_list failed [%d]", ret);
-
- return ret;
+ return mc_db_util_update_db(handle, "DELETE FROM app_list;");
}
int mc_db_util_get_user_version(sqlite3 *handle, int *version)
int mc_db_util_set_user_version(sqlite3 *handle)
{
- int ret = MEDIA_CONTROLLER_ERROR_NONE;
- char *sql_str = NULL;
-
- sql_str = sqlite3_mprintf("PRAGMA user_version=%d", MC_DB_LATEST_VERSION);
- ret = mc_db_util_update_db(handle, sql_str);
- sqlite3_free(sql_str);
- mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "Update user_version failed [%d]", ret);
+ sql_autoptr q = sqlite3_mprintf("PRAGMA user_version=%d", MC_DB_LATEST_VERSION);
- return ret;
+ return mc_db_util_update_db(handle, q);
}
/* g_strdup_printf replaces NULL to "(null)"*/
{
int ret = MEDIA_CONTROLLER_ERROR_NONE;
gchar **params = NULL;
- char *sql_str = NULL;
+ sql_autoptr q = NULL;
mc_retvm_if(!data, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data");
mc_retvm_if(data_size <= 0 , MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid data_size");
params = g_strsplit(data, MC_STRING_DELIMITER, 0);
mc_retvm_if(!params, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "fail to parsing query");
- ret = __parse_db_request(params, &sql_str);
+ ret = __parse_db_request(params, &q);
if (ret == MEDIA_CONTROLLER_ERROR_NONE) {
- ret = __update_db_request(uid, params, sql_str);
- sqlite3_free(sql_str);
+ ret = __update_db_request(uid, params, q);
}
g_strfreev(params);