From 07a16c4a403ae93c0ea5500315eac8a68fedb7b2 Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Thu, 3 Apr 2014 23:57:58 +0200 Subject: [PATCH] client: Add support for printing property of array type This allows to print UUIDs in user friendly fasion. Only string type support is needed. [CHG] Device XX:XX:XX:XX:XX:XX UUIDs: 00000002-0000-1000-8000-0002ee000002 00001101-0000-1000-8000-00805f9b34fb 00001103-0000-1000-8000-00805f9b34fb 00001104-0000-1000-8000-00805f9b34fb 00001105-0000-1000-8000-00805f9b34fb instead of: [CHG] Device XX:XX:XX:XX:XX:XX UUIDs has unsupported type --- client/main.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/client/main.c b/client/main.c index 5791e9566..5a9d41a28 100644 --- a/client/main.c +++ b/client/main.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -153,6 +154,8 @@ static void print_iter(const char *label, const char *name, dbus_uint16_t valu16; dbus_int16_t vals16; const char *valstr; + DBusMessageIter subiter; + int type; if (iter == NULL) { rl_printf("%s%s is nil\n", label, name); @@ -184,6 +187,24 @@ static void print_iter(const char *label, const char *name, case DBUS_TYPE_INT16: dbus_message_iter_get_basic(iter, &vals16); rl_printf("%s%s: %d\n", label, name, vals16); + break; + case DBUS_TYPE_ARRAY: + dbus_message_iter_recurse(iter, &subiter); + rl_printf("%s%s:\n", label, name); + + do { + type = dbus_message_iter_get_arg_type(&subiter); + if (type == DBUS_TYPE_INVALID) + break; + + if (type == DBUS_TYPE_STRING) { + dbus_message_iter_get_basic(&subiter, &valstr); + rl_printf("\t%s\n", valstr); + } + + dbus_message_iter_next(&subiter); + } while(true); + break; default: rl_printf("%s%s has unsupported type\n", label, name); -- 2.47.3