typedef int (*UPDATE_FOLDER_TIME)(sqlite3 *, const char *, const char *, uid_t);
typedef int (*GET_STORAGE_ID)(sqlite3 *, const char *, char *, uid_t uid);
typedef int (*SET_STORAGE_SCAN_STATUS)(sqlite3 *, const char *, int, uid_t);
-typedef int (*GET_STORAGE_LIST)(sqlite3 *, char ***, char ***, int *);
typedef int (*INSERT_FOLDER)(sqlite3 *, const char *, const char *, int, uid_t);
typedef int (*SET_FOLDER_VALIDITY)(sqlite3 *, const char *, const char *, int, bool, uid_t);
typedef int (*INSERT_FOLDER_BEGIN)(int);
eUPDATE_FOLDER_TIME,
eGET_STORAGE_ID,
eSET_STORAGE_SCAN_STATUS,
- eGET_STORAGE_LIST,
eINSERT_FOLDER,
eSET_FOLDER_VALIDITY,
eINSERT_FOLDER_BEGIN,
"update_folder_time",
"get_storage_id",
"set_storage_scan_status",
- "get_storage_list",
"insert_folder",
"set_folder_validity",
"insert_folder_begin",
int ms_get_storage_list(sqlite3 *handle, GArray **storage_array)
{
- int lib_index;
int ret = MS_MEDIA_ERR_NONE;
+ sqlite3_stmt *sql_stmt = NULL;
- char **storage_list = NULL;
- char **storage_id_list = NULL;
- int count = 0;
- int i = 0;
-
- ms_stg_info_s* stg_info = NULL;
+ char *sql = sqlite3_mprintf("SELECT storage_path, storage_uuid FROM storage WHERE validity = 1");
- for (lib_index = 0; lib_index < lib_num; lib_index++) {
- ret = ((GET_STORAGE_LIST)func_array[lib_index][eGET_STORAGE_LIST])(handle, &storage_list, &storage_id_list, &count); /*dlopen*/
- MS_DBG_RETVM_IF(ret != MS_MEDIA_ERR_NONE, ret, "Error : %s", g_array_index(so_array, char*, lib_index));
+ ret = media_db_get_result(handle, sql, &sql_stmt);
+ if (ret != MS_MEDIA_ERR_NONE) {
+ MS_DBG_ERR("prepare error [%s]", sqlite3_errmsg(handle));
+ return ret;
}
*storage_array = g_array_new(FALSE, FALSE, sizeof(ms_stg_info_s*));
- if (count != 0) {
- for (i = 0; i < count; i++) {
- stg_info = malloc(sizeof(ms_stg_info_s));
- if (stg_info == NULL) {
- MS_DBG_ERR("Allcation failed");
- continue;
- }
- stg_info->stg_path = g_strdup(storage_list[i]);
- stg_info->storage_id = g_strdup(storage_id_list[i]);
- g_array_append_val(*storage_array, stg_info);
- MS_SAFE_FREE(storage_list[i]);
- MS_SAFE_FREE(storage_id_list[i]);
- MS_DBG("%d get path : %s, %s", i, stg_info->stg_path, stg_info->storage_id);
+ while (sqlite3_step(sql_stmt) == SQLITE_ROW) {
+ ms_stg_info_s* stg_info = malloc(sizeof(ms_stg_info_s));
+ if (stg_info == NULL) {
+ MS_DBG_ERR("Allcation failed");
+ continue;
}
+ stg_info->stg_path = g_strdup((char *)sqlite3_column_text(sql_stmt, 0));
+ stg_info->storage_id = g_strdup((char *)sqlite3_column_text(sql_stmt, 1));
+ MS_DBG("Get path[%s] id[%s]", stg_info->stg_path, stg_info->storage_id);
+ g_array_append_val(*storage_array, stg_info);
}
- MS_SAFE_FREE(storage_list);
- MS_SAFE_FREE(storage_id_list);
+ MS_SQLITE3_FINALIZE(sql_stmt);
return ret;
}