Introduced colored loggin.
FossilOrigin-Name: 55fc8222563fd1a327c866a216bf590a28190fed0d9509ac35667b349637619b
This commit is contained in:
@ -68,3 +68,95 @@ void cw_dbg_packet(struct conn *conn, uint8_t * packet, int len)
|
||||
}
|
||||
|
||||
|
||||
void cw_log_dbg_dmp_(int level, const char *file, int line,
|
||||
const uint8_t * data, int len, const char *format, ...)
|
||||
{
|
||||
|
||||
if (!(level & cw_dbg_opt_level))
|
||||
return;
|
||||
|
||||
|
||||
int maxtlen = 2048;
|
||||
int i;
|
||||
int rowlen = CW_LOG_DUMP_ROW_LEN;
|
||||
int rows = len / rowlen;
|
||||
int tlen = 0;
|
||||
|
||||
int md;
|
||||
if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP)
|
||||
md = 2;
|
||||
else
|
||||
md = 1;
|
||||
|
||||
|
||||
|
||||
char *dst = malloc(md * (len * 3 + (rows * 2) + 8 + maxtlen));
|
||||
if (!dst)
|
||||
return;
|
||||
|
||||
if (format != NULL) {
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
tlen = vsnprintf(dst, maxtlen, format, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (len % CW_LOG_DUMP_ROW_LEN)
|
||||
rows++;
|
||||
|
||||
|
||||
|
||||
char *pdst = dst + tlen;
|
||||
sprintf(pdst, "\n\t");
|
||||
pdst += 2;
|
||||
|
||||
char asc_buffer[128];
|
||||
char *ascdst = asc_buffer;
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
sprintf(pdst, "%02X ", data[i] & 0xff);
|
||||
|
||||
if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) {
|
||||
int c = data[i] & 0xff;
|
||||
if (c < 0x20 || c > 0x80)
|
||||
c = '.';
|
||||
*ascdst = c;
|
||||
ascdst++;
|
||||
}
|
||||
|
||||
pdst += 3;
|
||||
if ((i + 1) % rowlen == 0) {
|
||||
int l;
|
||||
if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) {
|
||||
*ascdst = 0;
|
||||
l = sprintf(pdst, " | %s\n\t", asc_buffer);
|
||||
ascdst = asc_buffer;
|
||||
|
||||
} else {
|
||||
l = sprintf(pdst, "\n\t");
|
||||
}
|
||||
pdst += l;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (cw_dbg_opt_detail & DBG_DETAIL_ASC_DMP) {
|
||||
*ascdst = 0;
|
||||
if (strlen(asc_buffer))
|
||||
pdst += sprintf(pdst, " | %s", asc_buffer);
|
||||
|
||||
}
|
||||
|
||||
if (cw_dbg_opt_detail & DBG_DETAIL_LINE_NUMBERS)
|
||||
cw_log(LOG_DEBUG, "%s:%d: %s", file, line, dst);
|
||||
else
|
||||
cw_log(LOG_DEBUG, dst);
|
||||
|
||||
free(dst);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user