make hexdump return a 'char *' rather than printing by itself
diff --git a/src/debug.c b/src/debug.c
index c071df0..735fce3 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -127,12 +127,22 @@
fflush(outfd);
}
-void hexdump(unsigned char *buf, int len)
+static char hexd_buff[4096];
+
+char *hexdump(unsigned char *buf, int len)
{
int i;
+ char *cur = hexd_buff;
+
+ hexd_buff[0] = 0;
for (i = 0; i < len; i++) {
- fprintf(stdout, "%02x ", buf[i]);
+ int len_remain = sizeof(hexd_buff) - (cur - hexd_buff);
+ int rc = snprintf(cur, len_remain, "%02x ", buf[i]);
+ if (rc <= 0)
+ break;
+ cur += rc;
}
- fprintf(stdout, "\n");
+ hexd_buff[sizeof(hexd_buff)-1] = 0;
+ return hexd_buff;
}