#define LOG_TAG "CAPI_CONTENT_MEDIA_CONTENT"
-#define SAFE_STRLCPY(dst, src, n) ((g_strlcpy(dst, src, n) < n) ? TRUE : FALSE)
+#define SAFE_STRLCPY(dst, src, n) g_strlcpy(dst, src, n);
#define SAFE_STRLCAT(dst, src, n) g_strlcat(dst, src, n);
#define SAFE_FREE(src) {if (src) {free(src); src = NULL; } }
#define STRING_VALID(str) ((str != NULL && strlen(str) > 0) ? TRUE : FALSE)
int _media_util_check_ignore_file(const char *path, bool *ignore);
int _media_util_check_ignore_dir(const char *dir_path, bool *ignore);
int _media_content_check_dir(const char *path);
-int _media_content_replace_path_in_condition(const char *condition, char *replace_condition, bool replace);
+char * _media_content_replace_path_in_condition(const char *condition);
int _media_content_replace_path(const char *path, char *replace_path);
#define LOG_TAG "CAPI_CONTENT_MEDIA_CONTENT"
-#define SAFE_STRLCPY(dst, src, n) ((g_strlcpy(dst, src, n) < n) ? TRUE : FALSE)
+#define SAFE_STRLCPY(dst, src, n) g_strlcpy(dst, src, n);
#define SAFE_STRLCAT(dst, src, n) g_strlcat(dst, src, n);
#define SAFE_FREE(src) {if (src) {free(src); src = NULL; } }
#define STRING_VALID(str) ((str != NULL && strlen(str) > 0) ? TRUE : FALSE)
int _media_util_check_ignore_file(const char *path, bool *ignore);
int _media_util_check_ignore_dir(const char *dir_path, bool *ignore);
int _media_content_check_dir(const char *path);
-int _media_content_replace_path_in_condition(const char *condition, char *replace_condition, bool replace);
+char * _media_content_replace_path_in_condition(const char *condition);
int _media_content_replace_path(const char *path, char *replace_path);
#ifdef _USE_SENIOR_MODE
{
int ret = MEDIA_CONTENT_ERROR_NONE;
sqlite3_stmt *stmt = NULL;
- char select_query[MAX_QUERY_SIZE] = {0, };
+ char *select_query = NULL;
char *condition_query = NULL;
char *option_query = NULL;
filter_s *_filter = (filter_s *)filter;
- memset(select_query, 0x00, sizeof(select_query));
-
switch (group_type) {
case MEDIA_GROUP_ALBUM:
if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
- snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT, _filter->storage_id);
+ select_query = g_strdup_printf(SELECT_ALBUM_COUNT, _filter->storage_id);
else
- snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT, DB_VIEW_MEDIA);
+ select_query = g_strdup_printf(SELECT_ALBUM_COUNT, DB_VIEW_MEDIA);
break;
case MEDIA_GROUP_FOLDER:
if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
- snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id);
+ select_query = g_strdup_printf(SELECT_FOLDER_COUNT_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id);
else
- snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT, DB_VIEW_MEDIA);
+ select_query = g_strdup_printf(SELECT_FOLDER_COUNT, DB_VIEW_MEDIA);
break;
case MEDIA_GROUP_PLAYLIST:
- if (!SAFE_STRLCPY(select_query, SELECT_PLAYLIST_COUNT, sizeof(select_query))) {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
+ select_query = g_strdup(SELECT_PLAYLIST_COUNT);
break;
case MEDIA_GROUP_TAG:
- if (!SAFE_STRLCPY(select_query, SELECT_TAG_COUNT, sizeof(select_query))) {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
+ select_query = g_strdup(SELECT_TAG_COUNT);
break;
case MEDIA_GROUP_BOOKMARK:
if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
- snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT, _filter->storage_id);
+ select_query = g_strdup_printf(SELECT_BOOKMARK_COUNT, _filter->storage_id);
else
- snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT, DB_VIEW_MEDIA);
+ select_query = g_strdup_printf(SELECT_BOOKMARK_COUNT, DB_VIEW_MEDIA);
break;
case MEDIA_GROUP_STORAGE:
- if (!SAFE_STRLCPY(select_query, SELECT_STORAGE_COUNT, sizeof(select_query))) {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
+ select_query = g_strdup(SELECT_STORAGE_COUNT);
break;
case MEDIA_GROUP_FACE:
if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
- snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT, _filter->storage_id);
+ select_query = g_strdup_printf(SELECT_FACE_COUNT, _filter->storage_id);
else
- snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT, DB_VIEW_MEDIA);
+ select_query = g_strdup_printf(SELECT_FACE_COUNT, DB_VIEW_MEDIA);
break;
default:
}
ret = __media_db_make_query(filter, &condition_query, &option_query);
- media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+ if (ret != MEDIA_CONTENT_ERROR_NONE) {
+ g_free(select_query);
+ return ret;
+ }
ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
- SAFE_FREE(condition_query);
- SAFE_FREE(option_query);
+ g_free(select_query);
+ g_free(condition_query);
+ g_free(option_query);
media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
if (sqlite3_step(stmt) == SQLITE_ROW)
media_content_retvm_if(filter == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid filter");
- filter_s *_filter = (filter_s*)calloc(1, sizeof(filter_s));
+ filter_s *_filter = (filter_s *)calloc(1, sizeof(filter_s));
media_content_retvm_if(_filter == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
_filter->storage_id = NULL;
int media_filter_destroy(filter_h filter)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if (_filter) {
SAFE_FREE(_filter->storage_id);
int media_filter_set_offset(filter_h filter, int offset, int count)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if (_filter != NULL) {
_filter->offset = offset;
int media_filter_set_condition(filter_h filter, const char *condition, media_content_collation_e collate_type)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if ((_filter != NULL) && STRING_VALID(condition)
&& ((collate_type >= MEDIA_CONTENT_COLLATE_DEFAULT) && (collate_type <= MEDIA_CONTENT_COLLATE_LOCALIZED))) {
if (STRING_VALID(_filter->condition))
SAFE_FREE(_filter->condition);
- char new_condition[MAX_QUERY_SIZE] = {0, };
- memset(new_condition, 0, sizeof(new_condition));
- ret = _media_content_replace_path_in_condition(condition, new_condition, TRUE);
- media_content_retvm_if(!STRING_VALID(new_condition), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
-
- _filter->condition = strdup(new_condition);
- media_content_retvm_if(_filter->condition == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+ _filter->condition = _media_content_replace_path_in_condition(condition);
+ media_content_retvm_if(_filter->condition == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "Fail to _media_content_replace_path_in_condition");
media_content_sec_debug("Condition string : %s", _filter->condition);
int media_filter_set_order(filter_h filter, media_content_order_e order_type, const char *order_keyword, media_content_collation_e collate_type)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if ((_filter != NULL) && STRING_VALID(order_keyword)
&& ((order_type == MEDIA_CONTENT_ORDER_ASC) || (order_type == MEDIA_CONTENT_ORDER_DESC))
{
int ret = MEDIA_CONTENT_ERROR_NONE;
media_content_warn("DEPRECATION WARNING: media_filter_set_storage() is deprecated and will be removed from next release. Use media_filter_set_condition() with MEDIA_PATH keyword instead.");
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if ((_filter != NULL) && STRING_VALID(storage_id)) {
if (STRING_VALID(_filter->storage_id))
int media_filter_get_offset(filter_h filter, int *offset, int *count)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if (_filter) {
*offset = _filter->offset;
int media_filter_get_condition(filter_h filter, char **condition, media_content_collation_e *collate_type)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if (_filter) {
if (STRING_VALID(_filter->condition) && _filter->is_full_condition == false) {
- char new_condition[MAX_QUERY_SIZE] = {0, };
- memset(new_condition, 0, sizeof(new_condition));
- ret = _media_content_replace_path_in_condition(_filter->condition, new_condition, FALSE);
- media_content_retvm_if(!STRING_VALID(new_condition), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
-
- *condition = strdup(new_condition);
+ *condition = strdup(_filter->condition);
media_content_retvm_if(*condition == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
} else {
*condition = NULL;
int media_filter_get_order(filter_h filter, media_content_order_e* order_type, char **order_keyword, media_content_collation_e *collate_type)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if (_filter) {
if (STRING_VALID(_filter->order_keyword) && _filter->is_full_order == false) {
{
int ret = MEDIA_CONTENT_ERROR_NONE;
media_content_warn("DEPRECATION WARNING: media_filter_get_storage() is deprecated and will be removed from next release.");
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if (_filter) {
if (STRING_VALID(_filter->storage_id)) {
int media_filter_set_condition_v2(filter_h filter, const char *condition)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if ((_filter != NULL) && STRING_VALID(condition)) {
_filter->is_full_condition = true;
if (STRING_VALID(_filter->condition))
SAFE_FREE(_filter->condition);
- char new_condition[MAX_QUERY_SIZE] = {0, };
- memset(new_condition, 0, sizeof(new_condition));
- ret = _media_content_replace_path_in_condition(condition, new_condition, TRUE);
- media_content_retvm_if(!STRING_VALID(new_condition), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
-
- _filter->condition = strdup(new_condition);
- media_content_retvm_if(_filter->condition == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+ _filter->condition = _media_content_replace_path_in_condition(condition);
+ media_content_retvm_if(_filter->condition == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "Fail to _media_content_replace_path_in_condition");
media_content_sec_debug("Condition string : %s", _filter->condition);
} else {
int media_filter_get_condition_v2(filter_h filter, char **condition)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if (_filter) {
if (STRING_VALID(_filter->condition) && _filter->is_full_condition == true) {
- char new_condition[MAX_QUERY_SIZE] = {0, };
- memset(new_condition, 0, sizeof(new_condition));
- ret = _media_content_replace_path_in_condition(_filter->condition, new_condition, FALSE);
- media_content_retvm_if(!STRING_VALID(new_condition), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
-
- *condition = strdup(new_condition);
+ *condition = strdup(_filter->condition);
media_content_retvm_if(*condition == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
} else {
*condition = NULL;
int media_filter_set_order_v2(filter_h filter, const char *order)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if ((_filter != NULL) && STRING_VALID(order)) {
_filter->is_full_order = true;
int media_filter_get_order_v2(filter_h filter, char **order)
{
int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_s *_filter = (filter_s*)filter;
+ filter_s *_filter = (filter_s *)filter;
if (_filter) {
if (STRING_VALID(_filter->order_keyword) && _filter->is_full_order == true) {
char search_path[MAX_PATH_LEN] = {0, };
memset(search_path, 0, sizeof(search_path));
- if (!SAFE_STRLCPY(search_path, dir_path, sizeof(search_path))) {
- media_content_error("MEDIA_CONTENT_ERROR_INVALID_OPERATION(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_OPERATION);
- return MEDIA_CONTENT_ERROR_INVALID_OPERATION;
- }
+ SAFE_STRLCPY(search_path, dir_path, sizeof(search_path));
while (STRING_VALID(search_path)) {
if ((*ignore = __is_scan_ignore_exist(search_path)))
}
-int _media_content_replace_path_in_condition(const char *condition, char *replace_condition, bool replace)
+char * _media_content_replace_path_in_condition(const char *condition)
{
- int ret = MEDIA_CONTENT_ERROR_NONE;
-
#ifdef _USE_TVPD_MODE
- snprintf(replace_condition, MAX_QUERY_SIZE, "%s", condition);
+ return g_strdup(condition);
#else
- char old_condition[MAX_QUERY_SIZE] = {0, };
- char new_condition[MAX_QUERY_SIZE] = {0, };
- char *find = NULL;
- unsigned int str_len = 0;
-
- char *find_str = NULL;
- char *to_replace_str = NULL;
-
- if (replace == TRUE) { //change User session path to System session path
- find_str = g_strdup(MEDIA_ROOT_PATH_INTERNAL_OLD);
- if (!STRING_VALID(find_str)) {
- media_content_error("strdup failed");
- ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION;
- goto ERROR;
- }
-
- to_replace_str = g_strdup(MEDIA_ROOT_PATH_INTERNAL);
- if (!STRING_VALID(to_replace_str)) {
- media_content_error("Get TZ_USER_CONTENT failed");
- ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION;
- goto ERROR;
- }
- } else {
- find_str = g_strdup(MEDIA_ROOT_PATH_INTERNAL);
- if (!STRING_VALID(find_str)) {
- media_content_error("Get TZ_USER_CONTENT failed");
- ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION;
- goto ERROR;
- }
+ char **split_list = NULL;
+ char *result = NULL;
- to_replace_str = g_strdup(MEDIA_ROOT_PATH_INTERNAL_OLD);
- if (!STRING_VALID(to_replace_str)) {
- media_content_error("strdup failed");
- ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION;
- goto ERROR;
- }
- }
-
- memset(old_condition, 0, sizeof(old_condition));
- memset(new_condition, 0, sizeof(new_condition));
+ if (!STRING_VALID(MEDIA_ROOT_PATH_INTERNAL_OLD) || !STRING_VALID(MEDIA_ROOT_PATH_INTERNAL))
+ return NULL;
media_content_sec_debug("Old condition[%s]", condition);
- if (!SAFE_STRLCPY(new_condition, condition, sizeof(new_condition))) {
- media_content_error("MEDIA_CONTENT_ERROR_INVALID_OPERATION(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_OPERATION);
- ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION;
- goto ERROR;
- }
-
- if (g_strcmp0(find_str, to_replace_str))
- find = strstr(new_condition, find_str);
+ split_list = g_strsplit(condition, MEDIA_ROOT_PATH_INTERNAL_OLD, -1);
+ if (!split_list)
+ return NULL;
- while (find != NULL) {
- str_len = find - new_condition;
+ result = g_strjoinv(MEDIA_ROOT_PATH_INTERNAL, split_list);
+ g_strfreev(split_list);
- memset(old_condition, 0, sizeof(old_condition));
- if (!SAFE_STRLCPY(old_condition, new_condition, sizeof(old_condition))) {
- media_content_error("MEDIA_CONTENT_ERROR_INVALID_OPERATION(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_OPERATION);
- ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION;
- goto ERROR;
- }
- memset(new_condition, 0, sizeof(new_condition));
-
- snprintf(new_condition, str_len + 1, "%s", old_condition);
-
- SAFE_STRLCAT(new_condition, to_replace_str, sizeof(new_condition));
- SAFE_STRLCAT(new_condition, old_condition + str_len + strlen(find_str), sizeof(new_condition));
-
- find = strstr(new_condition, find_str);
- }
-
- if (!SAFE_STRLCPY(replace_condition, new_condition, MAX_QUERY_SIZE)) {
- media_content_error("MEDIA_CONTENT_ERROR_INVALID_OPERATION(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_OPERATION);
- ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION;
- goto ERROR;
- }
-
- media_content_sec_debug("repl cond[%s]", replace_condition);
-
- if (!STRING_VALID(replace_condition)) {
- media_content_error("replace failed");
- ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION;
- goto ERROR;
- }
-
-ERROR:
- SAFE_FREE(find_str);
- SAFE_FREE(to_replace_str);
+ return result;
#endif
-
- return ret;
}
int _media_content_replace_path(const char *path, char *replace_path)