1 /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. 4 */ 5 6 #include "cras_dbus_util.h" 7 8 dbus_bool_t append_key_value(DBusMessageIter *iter, const char *key, 9 int type, const char *type_string, 10 void *value) 11 { 12 DBusMessageIter entry, variant; 13 14 if (!dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY, NULL, 15 &entry)) 16 return FALSE; 17 if (!dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key)) 18 return FALSE; 19 if (!dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, 20 type_string, &variant)) 21 return FALSE; 22 if (!dbus_message_iter_append_basic(&variant, type, value)) 23 return FALSE; 24 if (!dbus_message_iter_close_container(&entry, &variant)) 25 return FALSE; 26 if (!dbus_message_iter_close_container(iter, &entry)) 27 return FALSE; 28 29 return TRUE; 30 } 31