Diff between 171049e873e5393fd336f9f50dd6d2870e302fc0 and 82e12919af202953f9bddec24e49101b3e15c6c0

Changed Files

File Additions Deletions Status
tools/bluetooth-player.c +19 -0 modified

Full Patch

diff --git a/tools/bluetooth-player.c b/tools/bluetooth-player.c
index 096fa44..d691d67 100644
--- a/tools/bluetooth-player.c
+++ b/tools/bluetooth-player.c
@@ -365,6 +365,7 @@ static void print_iter(const char *label, const char *name,
 	dbus_uint16_t valu16;
 	dbus_int16_t vals16;
 	const char *valstr;
+	DBusMessageIter subiter;
 
 	if (iter == NULL) {
 		rl_printf("%s%s is nil\n", label, name);
@@ -397,6 +398,24 @@ static void print_iter(const char *label, const char *name,
 		dbus_message_iter_get_basic(iter, &vals16);
 		rl_printf("%s%s: %d\n", label, name, vals16);
 		break;
+	case DBUS_TYPE_VARIANT:
+		dbus_message_iter_recurse(iter, &subiter);
+		print_iter(label, name, &subiter);
+		break;
+	case DBUS_TYPE_ARRAY:
+		dbus_message_iter_recurse(iter, &subiter);
+		while (dbus_message_iter_get_arg_type(&subiter) !=
+							DBUS_TYPE_INVALID) {
+			print_iter(label, name, &subiter);
+			dbus_message_iter_next(&subiter);
+		}
+		break;
+	case DBUS_TYPE_DICT_ENTRY:
+		dbus_message_iter_recurse(iter, &subiter);
+		dbus_message_iter_get_basic(&subiter, &valstr);
+		dbus_message_iter_next(&subiter);
+		print_iter(label, valstr, &subiter);
+		break;
 	default:
 		rl_printf("%s%s has unsupported type\n", label, name);
 		break;