blob: 094df3f9bf1c26753cdca2b627e34afb94e568a0 [file] [log] [blame]
// SPDX-License-Identifier: MIT
// Copyright (C) 2018 Luc Van Oostenryck
#include "utils.h"
#include "allocate.h"
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
void *xmemdup(const void *src, size_t len)
{
return memcpy(__alloc_bytes(len), src, len);
}
char *xstrdup(const char *src)
{
return xmemdup(src, strlen(src) + 1);
}
char *xvasprintf(const char *fmt, va_list ap)
{
va_list ap2;
char *str;
int n;
va_copy(ap2, ap);
n = vsnprintf(NULL, 0, fmt, ap2) + 1;
va_end(ap2);
str = __alloc_bytes(n);
vsnprintf(str, n, fmt, ap);
return str;
}
char *xasprintf(const char *fmt, ...)
{
va_list ap;
char *str;
va_start(ap, fmt);
str = xvasprintf(fmt, ap);
va_end(ap);
return str;
}