root/usr/src/tools/smatch/src/utils.c
// 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;
}