summaryrefslogtreecommitdiff
path: root/gsupplicant/dbus.c
diff options
context:
space:
mode:
authorMohamed Abbas <mohamed.abbas@intel.com>2011-09-13 09:55:15 +0300
committerSamuel Ortiz <sameo@linux.intel.com>2011-09-13 10:53:52 +0200
commitf251712760f3741a00458b652c5571c5ba39a700 (patch)
tree0956b5d9df525dbb39de9b2d42f83fc0b2f5d117 /gsupplicant/dbus.c
parentff76ad35726a05cd5bf66ab09c2681f3bee8912d (diff)
downloadconnman-f251712760f3741a00458b652c5571c5ba39a700.tar.gz
connman-f251712760f3741a00458b652c5571c5ba39a700.tar.bz2
connman-f251712760f3741a00458b652c5571c5ba39a700.zip
gsupplicant: Add support to append char ** entries to dbus dict
Diffstat (limited to 'gsupplicant/dbus.c')
-rw-r--r--gsupplicant/dbus.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/gsupplicant/dbus.c b/gsupplicant/dbus.c
index e0142650..7d427be1 100644
--- a/gsupplicant/dbus.c
+++ b/gsupplicant/dbus.c
@@ -520,3 +520,37 @@ void supplicant_dbus_property_append_fixed_array(DBusMessageIter *iter,
dbus_message_iter_close_container(iter, &value);
}
+
+void supplicant_dbus_property_append_array(DBusMessageIter *iter,
+ const char *key, int type,
+ supplicant_dbus_array_function function,
+ void *user_data)
+{
+ DBusMessageIter value, array;
+ const char *variant_sig, *array_sig;
+
+ switch (type) {
+ case DBUS_TYPE_STRING:
+ variant_sig = DBUS_TYPE_ARRAY_AS_STRING
+ DBUS_TYPE_ARRAY_AS_STRING
+ DBUS_TYPE_BYTE_AS_STRING;
+ array_sig = DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_BYTE_AS_STRING;
+ break;
+ default:
+ return;
+ }
+
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &key);
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
+ variant_sig, &value);
+
+ dbus_message_iter_open_container(&value, DBUS_TYPE_ARRAY,
+ array_sig, &array);
+ if (function)
+ function(&array, user_data);
+
+ dbus_message_iter_close_container(&value, &array);
+
+ dbus_message_iter_close_container(iter, &value);
+}