RetroArch/runahead/mem_util.c

50 lines
794 B
C
Raw Normal View History

2018-03-29 15:49:39 +02:00
#include <stdlib.h>
2018-03-28 14:22:07 -05:00
#include "mem_util.h"
char *strcpy_alloc(const char *src)
2018-03-28 14:22:07 -05:00
{
char *result = NULL;
size_t len = src ? strlen(src) : 0;
2018-03-28 14:22:07 -05:00
if (len == 0)
return NULL;
2018-03-28 14:22:07 -05:00
result = (char*)malloc(len + 1);
strcpy(result, src);
2018-03-28 14:22:07 -05:00
return result;
}
char *strcpy_alloc_force(const char *src)
2018-03-28 14:22:07 -05:00
{
char *result = strcpy_alloc(src);
if (!result)
return (char*)calloc(1, 1);
2018-03-28 14:22:07 -05:00
return result;
}
void strcat_alloc(char **dst, const char *s)
2018-03-28 14:22:07 -05:00
{
size_t len1;
char *src = *dst;
2018-03-28 14:22:07 -05:00
if (!src)
2018-03-28 14:22:07 -05:00
{
src = strcpy_alloc_force(s);
*dst = src;
2018-03-28 14:22:07 -05:00
return;
}
if (!s)
return;
len1 = strlen(src);
src = (char*)realloc(src, len1 + strlen(s) + 1);
if (!src)
2018-03-28 14:22:07 -05:00
return;
*dst = src;
strcpy(src + len1, s);
2018-03-28 14:22:07 -05:00
}