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 
append_key_value(DBusMessageIter * iter,const char * key,int type,const char * type_string,void * value)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