mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2025-12-28 05:00:09 +01:00
Print byte arrays as nicely-formatted hex.
This commit is contained in:
parent
3171383ce9
commit
1a33efb54b
1 changed files with 58 additions and 1 deletions
|
|
@ -39,12 +39,63 @@ type_to_name (int message_type)
|
|||
}
|
||||
}
|
||||
|
||||
#define INDENT 3
|
||||
|
||||
static void
|
||||
indent (int depth)
|
||||
{
|
||||
while (depth-- > 0)
|
||||
printf (" ");
|
||||
printf (" "); /* INDENT spaces. */
|
||||
}
|
||||
|
||||
static void
|
||||
print_ay (DBusMessageIter *iter, int depth)
|
||||
{
|
||||
int current_type;
|
||||
int n = 0;
|
||||
int columns;
|
||||
|
||||
printf ("array of bytes [\n");
|
||||
|
||||
indent (depth + 1);
|
||||
|
||||
/* Each byte takes 3 cells (two hexits, and a space), except the last one. */
|
||||
columns = (80 - ((depth + 1) * INDENT)) / 3;
|
||||
|
||||
if (columns < 8)
|
||||
columns = 8;
|
||||
|
||||
current_type = dbus_message_iter_get_arg_type (iter);
|
||||
|
||||
while (current_type != DBUS_TYPE_INVALID)
|
||||
{
|
||||
unsigned char val;
|
||||
dbus_message_iter_get_basic (iter, &val);
|
||||
printf ("%02x", val);
|
||||
|
||||
n++;
|
||||
|
||||
dbus_message_iter_next (iter);
|
||||
current_type = dbus_message_iter_get_arg_type (iter);
|
||||
|
||||
if (current_type != DBUS_TYPE_INVALID)
|
||||
{
|
||||
if (n == columns)
|
||||
{
|
||||
printf ("\n");
|
||||
indent (depth + 1);
|
||||
n = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf (" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf ("\n");
|
||||
indent (depth);
|
||||
printf ("]\n");
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -188,6 +239,12 @@ print_iter (DBusMessageIter *iter, dbus_bool_t literal, int depth)
|
|||
|
||||
current_type = dbus_message_iter_get_arg_type (&subiter);
|
||||
|
||||
if (current_type == DBUS_TYPE_BYTE)
|
||||
{
|
||||
print_ay (&subiter, depth);
|
||||
break;
|
||||
}
|
||||
|
||||
printf("array [\n");
|
||||
while (current_type != DBUS_TYPE_INVALID)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue