diff --git a/src/shared/util.c b/src/shared/util.c
index 5cfce1c..5aee69d 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
#include <stdio.h>
#include <ctype.h>
+#include <stdarg.h>
#include "src/shared/util.h"
+void util_debug(util_debug_func_t function, void *user_data,
+ const char *format, ...)
+{
+ char str[78];
+ va_list ap;
+
+ if (!function || !format)
+ return;
+
+ va_start(ap, format);
+ vsnprintf(str, sizeof(str), format, ap);
+ va_end(ap);
+
+ function(str, user_data);
+}
+
void util_hexdump(const char dir, const unsigned char *buf, size_t len,
util_debug_func_t function, void *user_data)
{
diff --git a/src/shared/util.h b/src/shared/util.h
index cb25f2c..88e8954 100644
--- a/src/shared/util.h
+++ b/src/shared/util.h
typedef void (*util_debug_func_t)(const char *str, void *user_data);
+void util_debug(util_debug_func_t function, void *user_data,
+ const char *format, ...)
+ __attribute__((format(printf, 3, 4)));
+
void util_hexdump(const char dir, const unsigned char *buf, size_t len,
util_debug_func_t function, void *user_data);