From 32d57ff271e5bf68d6acb76af97c35898f7659b4 Mon Sep 17 00:00:00 2001 From: fduncanh Date: Sun, 12 Dec 2021 03:31:26 -0500 Subject: [PATCH] add two new functions to utils.c for debug text processing --- lib/utils.c | 34 +++++++++++++++++++++++++++++++++- lib/utils.h | 4 +++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/lib/utils.c b/lib/utils.c index 7cdda94..0ba0723 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -178,4 +178,36 @@ char *utils_parse_hex(const char *str, int str_len, int *data_len) { *data_len = (str_len / 2); return data; -} \ No newline at end of file +} + +char *utils_data_to_string(const unsigned char *data, int datalen, int chars_per_line) { + int len = 3*datalen + ((datalen-1)/chars_per_line ) + 1; + char *str = (char *) calloc(len + 1, sizeof(char)); + assert(str); + char *p = str; + for (int i = 0; i < datalen; i++) { + if (i > 0 && i % chars_per_line == 0) { + sprintf(p,"\n"); + p++; + } + sprintf(p,"%2.2x ", (unsigned int) data[i]); + p += 3; + } + sprintf(p,"\n"); + p++; + assert(p == &(str[len])); + return str; +} + +char *utils_data_to_text(const char *data, int datalen) { + char *ptr = (char *) calloc(datalen + 1, sizeof(char)); + assert(ptr); + strncpy(ptr, data, datalen); + char *p = ptr; + while (p) { + p = strchr(p, '\r'); /* replace occurences of '\r' by ' ' */ + if (p) *p = ' '; + } + return ptr; +} + diff --git a/lib/utils.h b/lib/utils.h index 58ded9e..c9b62e9 100644 --- a/lib/utils.h +++ b/lib/utils.h @@ -20,4 +20,6 @@ int utils_read_file(char **dst, const char *pemstr); int utils_hwaddr_raop(char *str, int strlen, const char *hwaddr, int hwaddrlen); int utils_hwaddr_airplay(char *str, int strlen, const char *hwaddr, int hwaddrlen); char *utils_parse_hex(const char *str, int str_len, int *data_len); -#endif \ No newline at end of file +char *utils_data_to_string(const unsigned char *data, int datalen, int chars_per_line); +char *utils_data_to_text(const char *data, int datalen); +#endif