File Manager / src / utils /
common-utils.c
/*
* Copyright 2014 - 2015 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#include "utils/common-utils.h"
#include "utils/app-types.h"
#include "utils/logger.h"
char *common_util_strconcat(const char *string1, ...)
{
RETVM_IF(!string1, NULL, "First parameter is NULL");
char *curr_string = NULL;
char *res_string = NULL;
Eina_Strbuf *buf = eina_strbuf_new();
RETVM_IF(!buf, NULL, "Failed to allocate memory for string buffer");
if (eina_strbuf_append(buf, string1) == EINA_FALSE) {
ERR("Failed to append data to string buffer");
eina_strbuf_free(buf);
return NULL;
}
va_list args;
va_start(args, string1);
curr_string = va_arg(args, char*);
while (curr_string) {
if (eina_strbuf_append(buf, curr_string) == EINA_FALSE) {
ERR("Failed to append data to string buffer");
eina_strbuf_free(buf);
return NULL;
}
curr_string = va_arg(args, char*);
}
va_end(args);
res_string = eina_strbuf_string_steal(buf);
eina_strbuf_free(buf);
return res_string;
}
bool common_util_is_string_empty(const char *string)
{
RETVM_IF(!string, true, "String is NULL");
return !strcmp(string, "");
}
int common_util_copy_selected_file_list(Eina_List *source_list, Eina_List **dest_list)
{
RETVM_IF(!source_list, RESULT_TYPE_INVALID_ARG, "Source list is empty");
RETVM_IF(!dest_list, RESULT_TYPE_INVALID_ARG, "Destination list pointer is NULL");
Eina_List *list = NULL;
node_info *data = NULL;
EINA_LIST_FOREACH(source_list, list, data) {
if (data && data->is_selected) {
node_info *pNode = calloc(1, sizeof(node_info));
if (pNode) {
pNode->name = strdup(data->name);
pNode->parent_path = strdup(data->parent_path);
pNode->type = data->type;
pNode->is_selected = data->is_selected;
} else {
ERR("Failed to allocate memory");
return RESULT_TYPE_FAIL_ALLOCATE_MEMORY;
}
*dest_list = eina_list_append(*dest_list, pNode);
}
}
return RESULT_TYPE_OK;
}
void common_util_clear_file_list(Eina_List **file_list)
{
RETM_IF(!file_list, "File list pointer is NULL");
if (*file_list) {
node_info *pNode = NULL;
EINA_LIST_FREE(*file_list, pNode) {
free(pNode->name);
free(pNode->parent_path);
free(pNode);
}
*file_list = NULL;
}
}
void common_util_clear_storage_list(Eina_List **storage_list)
{
RETM_IF(!storage_list, "File list pointer is NULL");
if (*storage_list) {
storage_info *pNode = NULL;
EINA_LIST_FREE(*storage_list, pNode) {
free(pNode->root_path);
free(pNode->root_name);
free(pNode);
}
*storage_list = NULL;
}
}
const char *common_util_get_filename(const char *path)
{
char *result = NULL;
if (!path) {
return NULL;
}
if ((result = strrchr(path, '/'))) {
result++;
} else {
result = (char *)path;
}
return result;
}