blob: 72fff00ff91b4966893777f03cf991ddc54c61c2 [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>
unsigned int hexval(unsigned int c)
{
int retval = 256;
switch (c) {
case '0'...'9':
retval = c - '0';
break;
case 'a'...'f':
retval = c - 'a' + 10;
break;
case 'A'...'F':
retval = c - 'A' + 10;
break;
}
return retval;
}
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;
}