mirror of
https://github.com/clearlinux/kvmtool.git
synced 2026-06-16 02:15:47 +00:00
0b322d9635
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
102 lines
1.7 KiB
C
102 lines
1.7 KiB
C
/*
|
|
* Taken from perf which in turn take it from GIT
|
|
*/
|
|
|
|
#include "kvm/util.h"
|
|
|
|
static void report(const char *prefix, const char *err, va_list params)
|
|
{
|
|
char msg[1024];
|
|
vsnprintf(msg, sizeof(msg), err, params);
|
|
fprintf(stderr, " %s%s\n", prefix, msg);
|
|
}
|
|
|
|
static NORETURN void die_builtin(const char *err, va_list params)
|
|
{
|
|
report(" Fatal: ", err, params);
|
|
exit(128);
|
|
}
|
|
|
|
static void error_builtin(const char *err, va_list params)
|
|
{
|
|
report(" Error: ", err, params);
|
|
}
|
|
|
|
static void warn_builtin(const char *warn, va_list params)
|
|
{
|
|
report(" Warning: ", warn, params);
|
|
}
|
|
|
|
static void info_builtin(const char *info, va_list params)
|
|
{
|
|
report(" Info: ", info, params);
|
|
}
|
|
|
|
void die(const char *err, ...)
|
|
{
|
|
va_list params;
|
|
|
|
va_start(params, err);
|
|
die_builtin(err, params);
|
|
va_end(params);
|
|
}
|
|
|
|
int error(const char *err, ...)
|
|
{
|
|
va_list params;
|
|
|
|
va_start(params, err);
|
|
error_builtin(err, params);
|
|
va_end(params);
|
|
return -1;
|
|
}
|
|
|
|
void warning(const char *warn, ...)
|
|
{
|
|
va_list params;
|
|
|
|
va_start(params, warn);
|
|
warn_builtin(warn, params);
|
|
va_end(params);
|
|
}
|
|
|
|
void info(const char *info, ...)
|
|
{
|
|
va_list params;
|
|
|
|
va_start(params, info);
|
|
info_builtin(info, params);
|
|
va_end(params);
|
|
}
|
|
|
|
void die_perror(const char *s)
|
|
{
|
|
perror(s);
|
|
exit(1);
|
|
}
|
|
|
|
/**
|
|
* strlcat - Append a length-limited, %NUL-terminated string to another
|
|
* @dest: The string to be appended to
|
|
* @src: The string to append to it
|
|
* @count: The size of the destination buffer.
|
|
*/
|
|
size_t strlcat(char *dest, const char *src, size_t count)
|
|
{
|
|
size_t dsize = strlen(dest);
|
|
size_t len = strlen(src);
|
|
size_t res = dsize + len;
|
|
|
|
DIE_IF(dsize >= count);
|
|
|
|
dest += dsize;
|
|
count -= dsize;
|
|
if (len >= count)
|
|
len = count - 1;
|
|
|
|
memcpy(dest, src, len);
|
|
dest[len] = 0;
|
|
|
|
return res;
|
|
}
|