mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-18 00:18:22 +00:00
Move stirng_list_clone to libretro-common
This commit is contained in:
parent
aea55f9c2d
commit
77e7bc7a1c
@ -155,6 +155,8 @@ void string_list_join_concat(char *buffer, size_t size,
|
||||
void string_list_set(struct string_list *list, unsigned idx,
|
||||
const char *str);
|
||||
|
||||
struct string_list *string_list_clone(const struct string_list *src);
|
||||
|
||||
RETRO_END_DECLS
|
||||
|
||||
#endif
|
||||
|
@ -315,3 +315,49 @@ bool string_list_find_elem_prefix(const struct string_list *list,
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
struct string_list *string_list_clone(
|
||||
const struct string_list *src)
|
||||
{
|
||||
unsigned i;
|
||||
struct string_list_elem *elems = NULL;
|
||||
struct string_list *dest = (struct string_list*)
|
||||
calloc(1, sizeof(struct string_list));
|
||||
|
||||
if (!dest)
|
||||
return NULL;
|
||||
|
||||
dest->size = src->size;
|
||||
dest->cap = src->cap;
|
||||
if (dest->cap < dest->size)
|
||||
dest->cap = dest->size;
|
||||
|
||||
elems = (struct string_list_elem*)
|
||||
calloc(dest->cap, sizeof(struct string_list_elem));
|
||||
|
||||
if (!elems)
|
||||
{
|
||||
free(dest);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dest->elems = elems;
|
||||
|
||||
for (i = 0; i < src->size; i++)
|
||||
{
|
||||
const char *_src = src->elems[i].data;
|
||||
size_t len = _src ? strlen(_src) : 0;
|
||||
|
||||
dest->elems[i].data = NULL;
|
||||
dest->elems[i].attr = src->elems[i].attr;
|
||||
|
||||
if (len != 0)
|
||||
{
|
||||
char *result = (char*)malloc(len + 1);
|
||||
strcpy(result, _src);
|
||||
dest->elems[i].data = result;
|
||||
}
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
@ -45,42 +45,6 @@ static struct retro_game_info* clone_retro_game_info(const
|
||||
return dest;
|
||||
}
|
||||
|
||||
static struct string_list *string_list_clone(
|
||||
const struct string_list *src)
|
||||
{
|
||||
unsigned i;
|
||||
struct string_list_elem *elems = NULL;
|
||||
struct string_list *dest = (struct string_list*)
|
||||
calloc(1, sizeof(struct string_list));
|
||||
|
||||
if (!dest)
|
||||
return NULL;
|
||||
|
||||
dest->size = src->size;
|
||||
dest->cap = src->cap;
|
||||
if (dest->cap < dest->size)
|
||||
dest->cap = dest->size;
|
||||
|
||||
elems = (struct string_list_elem*)
|
||||
calloc(dest->cap, sizeof(struct string_list_elem));
|
||||
|
||||
if (!elems)
|
||||
{
|
||||
free(dest);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dest->elems = elems;
|
||||
|
||||
for (i = 0; i < src->size; i++)
|
||||
{
|
||||
dest->elems[i].data = strcpy_alloc(src->elems[i].data);
|
||||
dest->elems[i].attr = src->elems[i].attr;
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* for cloning the Special field, however, attempting
|
||||
* to use this feature crashes retroarch */
|
||||
|
Loading…
x
Reference in New Issue
Block a user