From f7b9865e512e8b579d3b8597d25eb78f77767ce3 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 3 Oct 2008 11:48:44 +0200 Subject: [PATCH] obexd: Decode parameters of SendFiles method --- obexd/client/main.c | 50 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/obexd/client/main.c b/obexd/client/main.c index fb61d06ba..ea3611509 100644 --- a/obexd/client/main.c +++ b/obexd/client/main.c @@ -41,13 +41,53 @@ static DBusMessage *send_files(DBusConnection *connection, DBusMessage *message, void *user_data) { - DBusMessage *reply; + DBusMessageIter iter, array; + const char *agent; - reply = dbus_message_new_method_return(message); - if (!reply) - return NULL; + dbus_message_iter_init(message, &iter); - return reply; + dbus_message_iter_recurse(&iter, &array); + + while (dbus_message_iter_get_arg_type(&array) == DBUS_TYPE_DICT_ENTRY) { + DBusMessageIter entry, value; + const char *key, *val; + + dbus_message_iter_recurse(&array, &entry); + dbus_message_iter_get_basic(&entry, &key); + + dbus_message_iter_next(&entry); + + dbus_message_iter_recurse(&entry, &value); + + switch (dbus_message_iter_get_arg_type(&value)) { + case DBUS_TYPE_STRING: + dbus_message_iter_get_basic(&value, &val); + printf("%s %s\n", key, val); + break; + } + + dbus_message_iter_next(&array); + } + + dbus_message_iter_next(&iter); + + dbus_message_iter_recurse(&iter, &array); + + while (dbus_message_iter_get_arg_type(&array) == DBUS_TYPE_STRING) { + const char *file; + + dbus_message_iter_get_basic(&array, &file); + printf(" Filename %s\n", file); + + dbus_message_iter_next(&array); + } + + dbus_message_iter_next(&iter); + + dbus_message_iter_get_basic(&iter, &agent); + printf(" Agent %s\n", agent); + + return dbus_message_new_method_return(message); } static GDBusMethodTable client_methods[] = { -- 2.47.3