diff options
Diffstat (limited to 'hcid/dbus-hci.c')
| -rw-r--r-- | hcid/dbus-hci.c | 27 | 
1 files changed, 26 insertions, 1 deletions
| diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index ec22bbce..c0af3124 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -1658,6 +1658,31 @@ static char *extract_eir_name(uint8_t *data, uint8_t *type)  	return NULL;  } +static void append_dict_valist(DBusMessageIter *iter, +					const char *first_key, +					va_list var_args) +{ +	DBusMessageIter dict; +	const char *key; +	int type; +	void *val; + +	dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, +			DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING +			DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING +			DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); + +	key = first_key; +	while (key) { +		type = va_arg(var_args, int); +		val = va_arg(var_args, void *); +		dbus_message_iter_append_dict_entry(&dict, key, type, val); +		key = va_arg(var_args, char *); +	} + +	dbus_message_iter_close_container(iter, &dict); +} +  static void emit_device_found(const char *path, const char *address,  				const char *first_key, ...)  { @@ -1676,7 +1701,7 @@ static void emit_device_found(const char *path, const char *address,  	dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &address);  	va_start(var_args, first_key); -	dbus_message_iter_append_dict_valist(&iter, first_key, var_args); +	append_dict_valist(&iter, first_key, var_args);  	va_end(var_args);  	dbus_connection_send(connection, signal, NULL); | 
