/* * 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; }