return MS_MEDIA_ERR_NONE;\r
}\r
\r
-#define MEDIA_DB_TABLE_STORAGE "storage"\r
-\r
-static int __msc_get_invalid_storage(void *handle, GArray **storage_list)\r
-{\r
- int ret = MS_MEDIA_ERR_NONE;\r
- sqlite3_stmt *sql_stmt = NULL;\r
- char *sql = NULL;\r
- char *storage_uuid = NULL;\r
- int err = -1;\r
-\r
- sql = sqlite3_mprintf("SELECT storage_uuid FROM '%s' WHERE validity=0", MEDIA_DB_TABLE_STORAGE);\r
- if (sql == NULL) {\r
- MS_DBG_ERR("sqlite3_mprintf failed");\r
- return MS_MEDIA_ERR_OUT_OF_MEMORY;\r
- }\r
-\r
- err = sqlite3_prepare_v2(handle, sql, -1, &sql_stmt, NULL);\r
- sqlite3_free((char *)sql);\r
-\r
- if (err != SQLITE_OK) {\r
- MS_DBG_ERR("prepare error %d[%s]", err, sqlite3_errmsg(handle));\r
- return MS_MEDIA_ERR_DB_READ_FAIL;\r
- }\r
-\r
- if (*storage_list == NULL) {\r
- *storage_list = g_array_new(FALSE, FALSE, sizeof(char*));\r
- }\r
-\r
- while (sqlite3_step(sql_stmt) == SQLITE_ROW) {\r
- storage_uuid = strdup((const char *)sqlite3_column_text(sql_stmt, 0));\r
- MS_DBG_WARN("INVALID STORAGE ID : %s", storage_uuid);\r
- g_array_append_val(*storage_list, storage_uuid);\r
- }\r
-\r
- if (sql_stmt) sqlite3_finalize(sql_stmt);\r
-\r
- return ret;\r
-}\r
-\r
-static int __msc_cleanup_invalid_storage_table(void *handle, GArray *storage_list)\r
-{\r
- int ret = MS_MEDIA_ERR_NONE;\r
- int i = 0;\r
- int count = 0;\r
- char *storage_uuid = NULL;\r
- char *sql = NULL;\r
- char *zErrMsg = NULL;\r
-\r
- if (storage_list == NULL || storage_list->len == 0) {\r
- MS_DBG_ERR("There is no invalid storage");\r
- } else {\r
- count = storage_list->len;\r
-\r
- for (i = 0; i < count; i++) {\r
- storage_uuid = g_array_index(storage_list, char*, i);\r
- sql = sqlite3_mprintf("drop table '%s'", storage_uuid);\r
- ret = sqlite3_exec(handle, sql, NULL, NULL, &zErrMsg);\r
- if (SQLITE_OK != ret) {\r
- MS_DBG_ERR("DB UPDATE FAILED [%s]", zErrMsg);\r
- }\r
- sqlite3_free(sql);\r
- }\r
- }\r
-\r
- return ret;\r
-}\r
-\r
-static int __msc_cleanup_invalid_folder(void *handle, GArray *storage_list)\r
-{\r
- int ret = MS_MEDIA_ERR_NONE;\r
- int i = 0;\r
- int count = 0;\r
- char *storage_uuid = NULL;\r
- char *sql = NULL;\r
- char *zErrMsg = NULL;\r
-\r
- if (storage_list == NULL || storage_list->len == 0) {\r
- MS_DBG_ERR("There is no invalid storage");\r
- } else {\r
- count = storage_list->len;\r
-\r
- for (i = 0; i < count; i++) {\r
- storage_uuid = g_array_index(storage_list, char*, i);\r
- sql = sqlite3_mprintf("delete from folder where storage_uuid = '%s'", storage_uuid);\r
- ret = sqlite3_exec(handle, sql, NULL, NULL, &zErrMsg);\r
- if (SQLITE_OK != ret) {\r
- MS_DBG_ERR("DB UPDATE FAILED [%s]", zErrMsg);\r
- }\r
- sqlite3_free(sql);\r
- }\r
- }\r
-\r
- return ret;\r
-}\r
-\r
-static int __msc_cleanup_invalid_storage(void *handle, GArray *storage_list)\r
-{\r
- int ret = MS_MEDIA_ERR_NONE;\r
- int i = 0;\r
- int count = 0;\r
- char *storage_uuid = NULL;\r
- char *sql = NULL;\r
- char *zErrMsg = NULL;\r
-\r
- if (storage_list == NULL || storage_list->len == 0) {\r
- MS_DBG_ERR("There is no invalid storage");\r
- } else {\r
- count = storage_list->len;\r
-\r
- for (i = 0; i < count; i++) {\r
- storage_uuid = g_array_index(storage_list, char*, i);\r
- sql = sqlite3_mprintf("delete from storage where storage_uuid = '%s'", storage_uuid);\r
- ret = sqlite3_exec(handle, sql, NULL, NULL, &zErrMsg);\r
- if (SQLITE_OK != ret) {\r
- MS_DBG_ERR("DB UPDATE FAILED [%s]", zErrMsg);\r
- }\r
- sqlite3_free(sql);\r
- }\r
- }\r
-\r
- return ret;\r
-}\r
-\r
-static int __msc_cleanup_start(void *handle)\r
-{\r
- int ret = MS_MEDIA_ERR_NONE;\r
- char *zErrMsg = NULL;\r
- char *sql = NULL;\r
-\r
- sql = sqlite3_mprintf("%s", "BEGIN IMMEDIATE;");\r
-\r
- ret = sqlite3_exec(handle, sql, NULL, NULL, &zErrMsg);\r
- if (SQLITE_OK != ret) {\r
- MS_DBG_ERR("DB UPDATE FAILED [%s]", zErrMsg);\r
- }\r
-\r
- sqlite3_free(sql);\r
-\r
- return ret;\r
-}\r
-\r
-static int __msc_cleanup_end(void *handle)\r
-{\r
- int ret = MS_MEDIA_ERR_NONE;\r
- char *zErrMsg = NULL;\r
- char *sql = NULL;\r
-\r
- sql = sqlite3_mprintf("%s", "COMMIT;");\r
-\r
- ret = sqlite3_exec(handle, sql, NULL, NULL, &zErrMsg);\r
- if (SQLITE_OK != ret) {\r
- MS_DBG_ERR("DB UPDATE FAILED [%s]", zErrMsg);\r
- }\r
-\r
- sqlite3_free(sql);\r
-\r
- return ret;\r
-}\r
-\r
int msc_cleanup_invalid_values(uid_t uid)\r
{\r
- int i = 0;\r
- int count = 0;\r
- void *handle = NULL;\r
- GArray *storage_list = NULL;\r
- double db_size = 0.0;\r
- char *storage_uuid = NULL;\r
+ int ret = MS_MEDIA_ERR_NONE;\r
+ void **handle = NULL;\r
\r
MS_DBG_ERR("START CLEANUP MEDIA DB");\r
\r
- media_db_connect(&handle, uid, TRUE);\r
- \r
- __msc_get_invalid_storage(handle, &storage_list);\r
-\r
- if (storage_list != NULL && storage_list->len != 0) {\r
- __msc_cleanup_start(handle);\r
- __msc_cleanup_invalid_storage_table(handle, storage_list);\r
- __msc_cleanup_invalid_folder(handle, storage_list);\r
- __msc_cleanup_invalid_storage(handle, storage_list);\r
- __msc_cleanup_end(handle);\r
-\r
- count = storage_list->len;\r
-\r
- } else {\r
- MS_DBG_ERR("There is no invalid storage");\r
+ ms_connect_db(&handle, uid);\r
+ ret = ms_cleanup_db(handle, uid);\r
+ if (ret != MS_MEDIA_ERR_NONE) {\r
+ MS_DBG_ERR("'Cleanup failed [%d]", ret);\r
+ return ret;\r
}\r
\r
- media_db_disconnect(handle);\r
-\r
- ms_check_size_mediadb(uid, &db_size);\r
- MS_DBG_ERR("END CLEANUP MEDIA DB[%lf]", db_size);\r
-\r
- for (i = 0; i < count; i++) {\r
- storage_uuid = g_array_index(storage_list, char*, 0);\r
- MS_SAFE_FREE(storage_uuid);\r
- g_array_remove_index(storage_list, 0);\r
- }\r
+ if (handle)\r
+ ms_disconnect_db(&handle);\r
\r
- g_array_free(storage_list, FALSE);\r
+ MS_DBG_ERR("END CLEANUP MEDIA DB");\r
\r
- return MS_MEDIA_ERR_NONE;\r
+ return ret;\r
}\r
\r