diff --git a/pvattest/src/exchange_format.c b/pvattest/src/exchange_format.c index 25050636..c622e656 100644 --- a/pvattest/src/exchange_format.c +++ b/pvattest/src/exchange_format.c @@ -455,8 +455,8 @@ static void print_entry(const char *name, GBytes *data, const gboolean print_dat fprintf(stream, _("%s (%#lx bytes)"), name, g_bytes_get_size(data)); if (print_data) { fprintf(stream, ":\n"); - printf_hexdump(g_bytes_get_data(data, NULL), g_bytes_get_size(data), 16, " ", - stream); + pvattest_hexdump(g_bytes_get_data(data, NULL), g_bytes_get_size(data), 16, " ", + stream); } fprintf(stream, "\n"); } diff --git a/pvattest/src/log.c b/pvattest/src/log.c index 63e69cc9..0e99c8ed 100644 --- a/pvattest/src/log.c +++ b/pvattest/src/log.c @@ -131,26 +131,35 @@ void pvattest_log_plain_logger(const char *log_domain G_GNUC_UNUSED, GLogLevelFl _log_logger(level, message, log_level, FALSE, ""); } -void hexdump(const void *data, size_t size, size_t len, const char *prefix, GLogLevelFlags log_lvl) +void pvattest_log_bytes(const void *data, size_t size, size_t width, const char *prefix, + gboolean beautify, GLogLevelFlags log_lvl) { const uint8_t *data_b = data; pv_wrapped_g_assert(data); - g_log(PVATTEST_HEXDUMP_LOG_DOMAIN, log_lvl, "%s0x0000 ", prefix); + if (beautify) + g_log(PVATTEST_BYTES_LOG_DOMAIN, log_lvl, "%s0x0000 ", prefix); + else + g_log(PVATTEST_BYTES_LOG_DOMAIN, log_lvl, "%s", prefix); for (size_t i = 0; i < size; i++) { - g_log(PVATTEST_HEXDUMP_LOG_DOMAIN, log_lvl, "%02x", data_b[i]); - if (i % 2 == 1) - g_log(PVATTEST_HEXDUMP_LOG_DOMAIN, log_lvl, " "); + g_log(PVATTEST_BYTES_LOG_DOMAIN, log_lvl, "%02x", data_b[i]); + if (i % 2 == 1 && beautify) + g_log(PVATTEST_BYTES_LOG_DOMAIN, log_lvl, " "); if (i == size - 1) break; - if (i % len == len - 1) - g_log(PVATTEST_HEXDUMP_LOG_DOMAIN, log_lvl, "\n%s0x%04lx ", prefix, i + 1); + if (i % width == width - 1) { + if (beautify) + g_log(PVATTEST_BYTES_LOG_DOMAIN, log_lvl, "\n%s0x%04lx ", prefix, + i + 1); + else + g_log(PVATTEST_BYTES_LOG_DOMAIN, log_lvl, "\n%s", prefix); + } } - g_log(PVATTEST_HEXDUMP_LOG_DOMAIN, log_lvl, "\n"); + g_log(PVATTEST_BYTES_LOG_DOMAIN, log_lvl, "\n"); } -void printf_hexdump(const void *data, size_t size, size_t len, const char *prefix, FILE *stream) +void pvattest_hexdump(const void *data, size_t size, size_t width, const char *prefix, FILE *stream) { const uint8_t *data_b = data; @@ -164,7 +173,7 @@ void printf_hexdump(const void *data, size_t size, size_t len, const char *prefi fprintf(stream, " "); if (i == size - 1) break; - if (i % len == len - 1) + if (i % width == width - 1) fprintf(stream, "\n%s0x%04lx ", prefix, i + 1); } fprintf(stream, "\n"); diff --git a/pvattest/src/log.h b/pvattest/src/log.h index a65aaef7..d1e65f72 100644 --- a/pvattest/src/log.h +++ b/pvattest/src/log.h @@ -23,7 +23,7 @@ #define PVATTEST_LOG_LVL_DEFAULT PVATTEST_LOG_LVL_WARNING #define PVATTEST_LOG_LVL_MAX PVATTEST_LOG_LVL_DEBUG -#define PVATTEST_HEXDUMP_LOG_DOMAIN "pvattest_hdump" +#define PVATTEST_BYTES_LOG_DOMAIN "pvattest_bytes" void pvattest_log_increase_log_lvl(int *log_lvl); void pvattest_log_error(const char *format, ...); @@ -45,22 +45,22 @@ void pvattest_log_default_logger(const char *log_domain, GLogLevelFlags level, c */ void pvattest_log_plain_logger(const char *log_domain, GLogLevelFlags level, const char *message, void *user_data); -#define dhexdump(v, s) \ - { \ - pvattest_log_debug("%s (%li byte):", #v, s); \ - hexdump(v, s, 16L, " ", PVATTEST_LOG_LVL_DEBUG); \ - g_log(PVATTEST_HEXDUMP_LOG_DOMAIN, PVATTEST_LOG_LVL_DEBUG, "\n"); \ - } -#define gbhexdump(v) \ +#define dhexdump(v, s) \ { \ - pvattest_log_debug("%s:(%li byte):", #v, g_bytes_get_size(v)); \ - hexdump(g_bytes_get_data(v, NULL), g_bytes_get_size(v), 16L, " ", \ - PVATTEST_LOG_LVL_DEBUG); \ - g_log(PVATTEST_HEXDUMP_LOG_DOMAIN, PVATTEST_LOG_LVL_DEBUG, "\n"); \ + pvattest_log_debug("%s (%li byte):", #v, s); \ + pvattest_log_bytes(v, s, 16L, " ", TRUE, PVATTEST_LOG_LVL_DEBUG); \ + g_log(PVATTEST_BYTES_LOG_DOMAIN, PVATTEST_LOG_LVL_DEBUG, "\n"); \ } -void hexdump(const void *data, size_t size, size_t len, const char *prefix, GLogLevelFlags log_lvl) - PV_NONNULL(1); -void printf_hexdump(const void *data, size_t size, size_t len, const char *prefix, FILE *stream) +#define gbhexdump(v) \ + { \ + pvattest_log_debug("%s:(%li byte):", #v, g_bytes_get_size(v)); \ + pvattest_log_bytes(g_bytes_get_data(v, NULL), g_bytes_get_size(v), 16L, " ", \ + TRUE, PVATTEST_LOG_LVL_DEBUG); \ + g_log(PVATTEST_BYTES_LOG_DOMAIN, PVATTEST_LOG_LVL_DEBUG, "\n"); \ + } +void pvattest_log_bytes(const void *data, size_t size, size_t width, const char *prefix, + gboolean beautify, GLogLevelFlags log_lvl) PV_NONNULL(1); +void pvattest_hexdump(const void *data, size_t size, size_t width, const char *prefix, FILE *stream) PV_NONNULL(1, 5); void pvattest_log_GError(const char *info, GError *error) PV_NONNULL(1); diff --git a/pvattest/src/pvattest.c b/pvattest/src/pvattest.c index 4820563e..51acf49a 100644 --- a/pvattest/src/pvattest.c +++ b/pvattest/src/pvattest.c @@ -355,7 +355,7 @@ int main(int argc, char *argv[]) * message)to filter messages based on the log level specified by the * user. */ - g_log_set_handler(PVATTEST_HEXDUMP_LOG_DOMAIN, + g_log_set_handler(PVATTEST_BYTES_LOG_DOMAIN, G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION, &pvattest_log_plain_logger, &appl_log_lvl);