core: At debug levels up to 9 print only an ascii dump.

* src/debug.c (_gpgme_debug_buffer): Switch between two output
formats.
--

The new format is much more practical than the bunch of hex digits
followed by just 16 ascii chars.  To get the old behaviour use a debug
level of 10.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2019-06-12 12:31:44 +02:00
parent 2a3cdb3e81
commit 3b32f7a97f
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B

View File

@ -403,6 +403,8 @@ _gpgme_debug_buffer (int lvl, const char *const fmt,
if (!buffer) if (!buffer)
return; return;
if (lvl > 9)
{
while (idx < len) while (idx < len)
{ {
char str[51]; char str[51];
@ -417,7 +419,7 @@ _gpgme_debug_buffer (int lvl, const char *const fmt,
val = buffer[idx++]; val = buffer[idx++];
*(strp++) = TOHEX (val >> 4); *(strp++) = TOHEX (val >> 4);
*(strp++) = TOHEX (val % 16); *(strp++) = TOHEX (val % 16);
*(strp2++) = isprint (val) ? val : '.'; *(strp2++) = isprint (val)? val : '.';
} }
else else
{ {
@ -432,4 +434,34 @@ _gpgme_debug_buffer (int lvl, const char *const fmt,
_gpgme_debug (NULL, lvl, -1, NULL, NULL, NULL, fmt, func, str); _gpgme_debug (NULL, lvl, -1, NULL, NULL, NULL, fmt, func, str);
} }
}
else
{
while (idx < len)
{
char str[48+4+1];
char *strp = str;
for (j = 0; j < 48; j++)
{
unsigned char val;
if (idx < len)
{
val = buffer[idx++];
if (val == '\n')
{
*strp++ = '<';
*strp++ = 'L';
*strp++ = 'F';
*strp++ = '>';
break;
}
*strp++ = (val > 31 && val < 127)? val : '.';
}
}
*strp = 0;
_gpgme_debug (NULL, lvl, -1, NULL, NULL, NULL, fmt, func, str);
}
}
} }