2018-03-01 04:22:01

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 0/9] Commonalize functions appending to dbus message

To improve maintainability, this patch set introduces common functions
for appending to dbus message.

Changes since v1:
- Rebase on top of upstream branch (where its HEAD is 6523d168)

ERAMOTO Masaya (9):
gdbus: Introduce functions appending to dbus message
obexd: Use g_dbus_dict_append_entry()
obexd: Remove unused source/header files for dbus
client: Use g_dbus_dict_append_*()
mesh: Use g_dbus_dict_append_{entry,array}()
tools/obexctl: Use g_dbus_dict_append_entry()
tools/bluetooth-player: Use g_dbus_dict_append_entry()
unit/test-gdbus-client: Use g_dbus_dict_append_entry()
dbus-common: Remove unused functions due to use of g_dbus_dict_append_*()

Makefile.obexd | 1 -
client/advertising.c | 58 ++------------------
client/main.c | 100 +++-------------------------------
gdbus/client.c | 135 +++++++++++++++++++++++++++++++++-------------
gdbus/gdbus.h | 9 ++++
mesh/main.c | 100 +++-------------------------------
obexd/client/dbus.c | 94 --------------------------------
obexd/client/dbus.h | 48 -----------------
obexd/client/ftp.c | 7 ++-
obexd/client/map.c | 6 +--
obexd/client/session.c | 1 -
obexd/client/transfer.c | 1 -
obexd/plugins/bluetooth.c | 40 ++------------
src/dbus-common.c | 85 +----------------------------
src/dbus-common.h | 6 ---
src/device.c | 3 +-
tools/bluetooth-player.c | 38 ++-----------
tools/obexctl.c | 36 +------------
unit/test-gdbus-client.c | 38 ++-----------
19 files changed, 146 insertions(+), 660 deletions(-)
delete mode 100644 obexd/client/dbus.c
delete mode 100644 obexd/client/dbus.h

--
2.14.1



2018-03-01 10:27:26

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH BlueZ v2 0/9] Commonalize functions appending to dbus message

Hi Eramoto,

On Thu, Mar 1, 2018 at 6:22 AM, ERAMOTO Masaya
<[email protected]> wrote:
> To improve maintainability, this patch set introduces common functions
> for appending to dbus message.
>
> Changes since v1:
> - Rebase on top of upstream branch (where its HEAD is 6523d168)
>
> ERAMOTO Masaya (9):
> gdbus: Introduce functions appending to dbus message
> obexd: Use g_dbus_dict_append_entry()
> obexd: Remove unused source/header files for dbus
> client: Use g_dbus_dict_append_*()
> mesh: Use g_dbus_dict_append_{entry,array}()
> tools/obexctl: Use g_dbus_dict_append_entry()
> tools/bluetooth-player: Use g_dbus_dict_append_entry()
> unit/test-gdbus-client: Use g_dbus_dict_append_entry()
> dbus-common: Remove unused functions due to use of g_dbus_dict_append_*()
>
> Makefile.obexd | 1 -
> client/advertising.c | 58 ++------------------
> client/main.c | 100 +++-------------------------------
> gdbus/client.c | 135 +++++++++++++++++++++++++++++++++-------------
> gdbus/gdbus.h | 9 ++++
> mesh/main.c | 100 +++-------------------------------
> obexd/client/dbus.c | 94 --------------------------------
> obexd/client/dbus.h | 48 -----------------
> obexd/client/ftp.c | 7 ++-
> obexd/client/map.c | 6 +--
> obexd/client/session.c | 1 -
> obexd/client/transfer.c | 1 -
> obexd/plugins/bluetooth.c | 40 ++------------
> src/dbus-common.c | 85 +----------------------------
> src/dbus-common.h | 6 ---
> src/device.c | 3 +-
> tools/bluetooth-player.c | 38 ++-----------
> tools/obexctl.c | 36 +------------
> unit/test-gdbus-client.c | 38 ++-----------
> 19 files changed, 146 insertions(+), 660 deletions(-)
> delete mode 100644 obexd/client/dbus.c
> delete mode 100644 obexd/client/dbus.h
>
> --
> 2.14.1

Applied, thanks.

--
Luiz Augusto von Dentz

2018-03-01 04:27:42

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 9/9] dbus-common: Remove unused functions due to use of g_dbus_dict_append_*()

---
src/dbus-common.c | 85 ++-----------------------------------------------------
src/dbus-common.h | 6 ----
src/device.c | 3 +-
3 files changed, 4 insertions(+), 90 deletions(-)

diff --git a/src/dbus-common.c b/src/dbus-common.c
index adb0a7a4e..6e2097a2d 100644
--- a/src/dbus-common.c
+++ b/src/dbus-common.c
@@ -41,97 +41,16 @@

static DBusConnection *connection = NULL;

-static void append_variant(DBusMessageIter *iter, int type, void *val)
-{
- DBusMessageIter value;
- char sig[2] = { type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &value);
-
- dbus_message_iter_append_basic(&value, type, val);
-
- dbus_message_iter_close_container(iter, &value);
-}
-
-static void append_array_variant(DBusMessageIter *iter, int type, void *val,
- int n_elements)
-{
- DBusMessageIter variant, array;
- char type_sig[2] = { type, '\0' };
- char array_sig[3] = { DBUS_TYPE_ARRAY, type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
- array_sig, &variant);
-
- dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY,
- type_sig, &array);
-
- if (dbus_type_is_fixed(type) == TRUE) {
- dbus_message_iter_append_fixed_array(&array, type, val,
- n_elements);
- } else if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) {
- const char ***str_array = val;
- int i;
-
- for (i = 0; i < n_elements; i++)
- dbus_message_iter_append_basic(&array, type,
- &((*str_array)[i]));
- }
-
- dbus_message_iter_close_container(&variant, &array);
-
- dbus_message_iter_close_container(iter, &variant);
-}
-
-void dict_append_basic(DBusMessageIter *dict, int key_type, const void *key,
- int type, void *val)
-{
- DBusMessageIter entry;
-
- if (type == DBUS_TYPE_STRING) {
- const char *str = *((const char **) val);
- if (str == NULL)
- return;
- }
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, key_type, key);
-
- append_variant(&entry, type, val);
-
- dbus_message_iter_close_container(dict, &entry);
-
-}
-
void dict_append_entry(DBusMessageIter *dict,
const char *key, int type, void *val)
{
- dict_append_basic(dict, DBUS_TYPE_STRING, &key, type, val);
-}
-
-void dict_append_basic_array(DBusMessageIter *dict, int key_type,
- const void *key, int type, void *val,
- int n_elements)
-{
- DBusMessageIter entry;
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, key_type, key);
-
- append_array_variant(&entry, type, val, n_elements);
-
- dbus_message_iter_close_container(dict, &entry);
+ g_dbus_dict_append_entry(dict, key, type, val);
}

void dict_append_array(DBusMessageIter *dict, const char *key, int type,
void *val, int n_elements)
{
- dict_append_basic_array(dict, DBUS_TYPE_STRING, &key, type, val,
- n_elements);
+ g_dbus_dict_append_array(dict, key, type, val, n_elements);
}

void set_dbus_connection(DBusConnection *conn)
diff --git a/src/dbus-common.h b/src/dbus-common.h
index 2e7d51e84..fbf4acd28 100644
--- a/src/dbus-common.h
+++ b/src/dbus-common.h
@@ -21,14 +21,8 @@
*
*/

-void dict_append_basic(DBusMessageIter *dict, int key_type, const void *key,
- int type, void *val);
void dict_append_entry(DBusMessageIter *dict,
const char *key, int type, void *val);
-
-void dict_append_basic_array(DBusMessageIter *dict, int key_type,
- const void *key, int type, void *val,
- int n_elements);
void dict_append_array(DBusMessageIter *dict, const char *key, int type,
void *val, int n_elements);

diff --git a/src/device.c b/src/device.c
index 1b84040dd..8eb99e4bd 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1199,7 +1199,8 @@ static void append_manufacturer_data(void *data, void *user_data)
struct bt_ad_manufacturer_data *md = data;
DBusMessageIter *dict = user_data;

- dict_append_basic_array(dict, DBUS_TYPE_UINT16, &md->manufacturer_id,
+ g_dbus_dict_append_basic_array(dict,
+ DBUS_TYPE_UINT16, &md->manufacturer_id,
DBUS_TYPE_BYTE, &md->data, md->len);
}

--
2.14.1


2018-03-01 04:27:38

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 8/9] unit/test-gdbus-client: Use g_dbus_dict_append_entry()

---
unit/test-gdbus-client.c | 38 +++-----------------------------------
1 file changed, 3 insertions(+), 35 deletions(-)

diff --git a/unit/test-gdbus-client.c b/unit/test-gdbus-client.c
index dd17c00f7..a2c88f309 100644
--- a/unit/test-gdbus-client.c
+++ b/unit/test-gdbus-client.c
@@ -178,39 +178,6 @@ static void client_connect_disconnect(const void *data)
context);
}

-static void append_variant(DBusMessageIter *iter, int type, void *val)
-{
- DBusMessageIter value;
- char sig[2] = { type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &value);
-
- dbus_message_iter_append_basic(&value, type, val);
-
- dbus_message_iter_close_container(iter, &value);
-}
-
-static void dict_append_entry(DBusMessageIter *dict, const char *key, int type,
- void *val)
-{
- DBusMessageIter entry;
-
- if (type == DBUS_TYPE_STRING) {
- const char *str = *((const char **) val);
- if (str == NULL)
- return;
- }
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
-
- append_variant(&entry, type, val);
-
- dbus_message_iter_close_container(dict, &entry);
-}
-
static gboolean get_dict(const GDBusPropertyTable *property,
DBusMessageIter *iter, void *data)
{
@@ -223,8 +190,9 @@ static gboolean get_dict(const GDBusPropertyTable *property,
DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);

- dict_append_entry(&dict, "String", DBUS_TYPE_STRING, &string);
- dict_append_entry(&dict, "Boolean", DBUS_TYPE_BOOLEAN, &boolean);
+ g_dbus_dict_append_entry(&dict, "String", DBUS_TYPE_STRING, &string);
+ g_dbus_dict_append_entry(&dict, "Boolean",
+ DBUS_TYPE_BOOLEAN, &boolean);

dbus_message_iter_close_container(iter, &dict);

--
2.14.1


2018-03-01 04:27:33

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 7/9] tools/bluetooth-player: Use g_dbus_dict_append_entry()

---
tools/bluetooth-player.c | 38 +++-----------------------------------
1 file changed, 3 insertions(+), 35 deletions(-)

diff --git a/tools/bluetooth-player.c b/tools/bluetooth-player.c
index a170aef24..4eb3153e9 100644
--- a/tools/bluetooth-player.c
+++ b/tools/bluetooth-player.c
@@ -734,39 +734,6 @@ static void cmd_change_folder(int argc, char *argv[])
bt_shell_printf("Attempting to change folder\n");
}

-static void append_variant(DBusMessageIter *iter, int type, void *val)
-{
- DBusMessageIter value;
- char sig[2] = { type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &value);
-
- dbus_message_iter_append_basic(&value, type, val);
-
- dbus_message_iter_close_container(iter, &value);
-}
-
-static void dict_append_entry(DBusMessageIter *dict,
- const char *key, int type, void *val)
-{
- DBusMessageIter entry;
-
- if (type == DBUS_TYPE_STRING) {
- const char *str = *((const char **) val);
- if (str == NULL)
- return;
- }
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
-
- append_variant(&entry, type, val);
-
- dbus_message_iter_close_container(dict, &entry);
-}
-
struct list_items_args {
int start;
int end;
@@ -787,12 +754,13 @@ static void list_items_setup(DBusMessageIter *iter, void *user_data)
if (args->start < 0)
goto done;

- dict_append_entry(&dict, "Start", DBUS_TYPE_UINT32, &args->start);
+ g_dbus_dict_append_entry(&dict, "Start",
+ DBUS_TYPE_UINT32, &args->start);

if (args->end < 0)
goto done;

- dict_append_entry(&dict, "End", DBUS_TYPE_UINT32, &args->end);
+ g_dbus_dict_append_entry(&dict, "End", DBUS_TYPE_UINT32, &args->end);

done:
dbus_message_iter_close_container(iter, &dict);
--
2.14.1


2018-03-01 04:27:29

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 6/9] tools/obexctl: Use g_dbus_dict_append_entry()

---
tools/obexctl.c | 36 ++----------------------------------
1 file changed, 2 insertions(+), 34 deletions(-)

diff --git a/tools/obexctl.c b/tools/obexctl.c
index c62ae8711..9af2a925e 100644
--- a/tools/obexctl.c
+++ b/tools/obexctl.c
@@ -123,39 +123,6 @@ static void connect_reply(DBusMessage *message, void *user_data)
return bt_shell_noninteractive_quit(EXIT_SUCCESS);
}

-static void append_variant(DBusMessageIter *iter, int type, void *val)
-{
- DBusMessageIter value;
- char sig[2] = { type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &value);
-
- dbus_message_iter_append_basic(&value, type, val);
-
- dbus_message_iter_close_container(iter, &value);
-}
-
-static void dict_append_entry(DBusMessageIter *dict, const char *key,
- int type, void *val)
-{
- DBusMessageIter entry;
-
- if (type == DBUS_TYPE_STRING) {
- const char *str = *((const char **) val);
- if (str == NULL)
- return;
- }
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
-
- append_variant(&entry, type, val);
-
- dbus_message_iter_close_container(dict, &entry);
-}
-
struct connect_args {
char *dev;
char *target;
@@ -187,7 +154,8 @@ static void connect_setup(DBusMessageIter *iter, void *user_data)
if (args->target == NULL)
goto done;

- dict_append_entry(&dict, "Target", DBUS_TYPE_STRING, &args->target);
+ g_dbus_dict_append_entry(&dict, "Target",
+ DBUS_TYPE_STRING, &args->target);

done:
dbus_message_iter_close_container(iter, &dict);
--
2.14.1


2018-03-01 04:27:26

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 5/9] mesh: Use g_dbus_dict_append_{entry,array}()

---
mesh/main.c | 100 +++++-------------------------------------------------------
1 file changed, 8 insertions(+), 92 deletions(-)

diff --git a/mesh/main.c b/mesh/main.c
index 3a35fab8a..d96de75db 100644
--- a/mesh/main.c
+++ b/mesh/main.c
@@ -1412,93 +1412,6 @@ static void cmd_power(int argc, char *argv[])
return bt_shell_noninteractive_quit(EXIT_FAILURE);
}

-static void append_variant(DBusMessageIter *iter, int type, void *val)
-{
- DBusMessageIter value;
- char sig[2] = { type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &value);
-
- dbus_message_iter_append_basic(&value, type, val);
-
- dbus_message_iter_close_container(iter, &value);
-}
-
-static void append_array_variant(DBusMessageIter *iter, int type, void *val,
- int n_elements)
-{
- DBusMessageIter variant, array;
- char type_sig[2] = { type, '\0' };
- char array_sig[3] = { DBUS_TYPE_ARRAY, type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
- array_sig, &variant);
-
- dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY,
- type_sig, &array);
-
- if (dbus_type_is_fixed(type) == TRUE) {
- dbus_message_iter_append_fixed_array(&array, type, val,
- n_elements);
- } else if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) {
- const char ***str_array = val;
- int i;
-
- for (i = 0; i < n_elements; i++)
- dbus_message_iter_append_basic(&array, type,
- &((*str_array)[i]));
- }
-
- dbus_message_iter_close_container(&variant, &array);
-
- dbus_message_iter_close_container(iter, &variant);
-}
-
-static void dict_append_entry(DBusMessageIter *dict, const char *key,
- int type, void *val)
-{
- DBusMessageIter entry;
-
- if (type == DBUS_TYPE_STRING) {
- const char *str = *((const char **) val);
-
- if (str == NULL)
- return;
- }
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
-
- append_variant(&entry, type, val);
-
- dbus_message_iter_close_container(dict, &entry);
-}
-
-static void dict_append_basic_array(DBusMessageIter *dict, int key_type,
- const void *key, int type, void *val,
- int n_elements)
-{
- DBusMessageIter entry;
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, key_type, key);
-
- append_array_variant(&entry, type, val, n_elements);
-
- dbus_message_iter_close_container(dict, &entry);
-}
-
-static void dict_append_array(DBusMessageIter *dict, const char *key, int type,
- void *val, int n_elements)
-{
- dict_append_basic_array(dict, DBUS_TYPE_STRING, &key, type, val,
- n_elements);
-}
-
#define DISTANCE_VAL_INVALID 0x7FFF

struct set_discovery_filter_args {
@@ -1521,21 +1434,24 @@ static void set_discovery_filter_setup(DBusMessageIter *iter, void *user_data)
DBUS_TYPE_VARIANT_AS_STRING
DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);

- dict_append_array(&dict, "UUIDs", DBUS_TYPE_STRING, &args->uuids,
+ g_dbus_dict_append_array(&dict, "UUIDs", DBUS_TYPE_STRING,
+ &args->uuids,
args->uuids_len);

if (args->pathloss != DISTANCE_VAL_INVALID)
- dict_append_entry(&dict, "Pathloss", DBUS_TYPE_UINT16,
+ g_dbus_dict_append_entry(&dict, "Pathloss", DBUS_TYPE_UINT16,
&args->pathloss);

if (args->rssi != DISTANCE_VAL_INVALID)
- dict_append_entry(&dict, "RSSI", DBUS_TYPE_INT16, &args->rssi);
+ g_dbus_dict_append_entry(&dict, "RSSI", DBUS_TYPE_INT16,
+ &args->rssi);

if (args->transport != NULL)
- dict_append_entry(&dict, "Transport", DBUS_TYPE_STRING,
+ g_dbus_dict_append_entry(&dict, "Transport", DBUS_TYPE_STRING,
&args->transport);
if (args->duplicate)
- dict_append_entry(&dict, "DuplicateData", DBUS_TYPE_BOOLEAN,
+ g_dbus_dict_append_entry(&dict, "DuplicateData",
+ DBUS_TYPE_BOOLEAN,
&args->duplicate);

dbus_message_iter_close_container(iter, &dict);
--
2.14.1


2018-03-01 04:27:21

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 4/9] client: Use g_dbus_dict_append_*()

---
client/advertising.c | 58 ++----------------------------
client/main.c | 100 +++++----------------------------------------------
2 files changed, 11 insertions(+), 147 deletions(-)

diff --git a/client/advertising.c b/client/advertising.c
index a0e6906e3..b2965ceb6 100644
--- a/client/advertising.c
+++ b/client/advertising.c
@@ -237,59 +237,6 @@ static gboolean get_uuids(const GDBusPropertyTable *property,
return TRUE;
}

-static void append_array_variant(DBusMessageIter *iter, int type, void *val,
- int n_elements)
-{
- DBusMessageIter variant, array;
- char type_sig[2] = { type, '\0' };
- char array_sig[3] = { DBUS_TYPE_ARRAY, type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
- array_sig, &variant);
-
- dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY,
- type_sig, &array);
-
- if (dbus_type_is_fixed(type) == TRUE) {
- dbus_message_iter_append_fixed_array(&array, type, val,
- n_elements);
- } else if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) {
- const char ***str_array = val;
- int i;
-
- for (i = 0; i < n_elements; i++)
- dbus_message_iter_append_basic(&array, type,
- &((*str_array)[i]));
- }
-
- dbus_message_iter_close_container(&variant, &array);
-
- dbus_message_iter_close_container(iter, &variant);
-}
-
-static void dict_append_basic_array(DBusMessageIter *dict, int key_type,
- const void *key, int type, void *val,
- int n_elements)
-{
- DBusMessageIter entry;
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, key_type, key);
-
- append_array_variant(&entry, type, val, n_elements);
-
- dbus_message_iter_close_container(dict, &entry);
-}
-
-static void dict_append_array(DBusMessageIter *dict, const char *key, int type,
- void *val, int n_elements)
-{
- dict_append_basic_array(dict, DBUS_TYPE_STRING, &key, type, val,
- n_elements);
-}
-
static gboolean service_data_exists(const GDBusPropertyTable *property,
void *data)
{
@@ -305,7 +252,7 @@ static gboolean get_service_data(const GDBusPropertyTable *property,

dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, "{sv}", &dict);

- dict_append_array(&dict, ad.service.uuid, DBUS_TYPE_BYTE, &val,
+ g_dbus_dict_append_array(&dict, ad.service.uuid, DBUS_TYPE_BYTE, &val,
data->len);

dbus_message_iter_close_container(iter, &dict);
@@ -328,7 +275,8 @@ static gboolean get_manufacturer_data(const GDBusPropertyTable *property,

dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY, "{qv}", &dict);

- dict_append_basic_array(&dict, DBUS_TYPE_UINT16, &ad.manufacturer.id,
+ g_dbus_dict_append_basic_array(&dict, DBUS_TYPE_UINT16,
+ &ad.manufacturer.id,
DBUS_TYPE_BYTE, &val, data->len);

dbus_message_iter_close_container(iter, &dict);
diff --git a/client/main.c b/client/main.c
index f186a3124..a83010b48 100644
--- a/client/main.c
+++ b/client/main.c
@@ -1111,93 +1111,6 @@ static void start_discovery_reply(DBusMessage *message, void *user_data)
/* Leave the discovery running even on noninteractive mode */
}

-static void append_variant(DBusMessageIter *iter, int type, void *val)
-{
- DBusMessageIter value;
- char sig[2] = { type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &value);
-
- dbus_message_iter_append_basic(&value, type, val);
-
- dbus_message_iter_close_container(iter, &value);
-}
-
-static void append_array_variant(DBusMessageIter *iter, int type, void *val,
- int n_elements)
-{
- DBusMessageIter variant, array;
- char type_sig[2] = { type, '\0' };
- char array_sig[3] = { DBUS_TYPE_ARRAY, type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
- array_sig, &variant);
-
- dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY,
- type_sig, &array);
-
- if (dbus_type_is_fixed(type) == TRUE) {
- dbus_message_iter_append_fixed_array(&array, type, val,
- n_elements);
- } else if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) {
- const char ***str_array = val;
- int i;
-
- for (i = 0; i < n_elements; i++)
- dbus_message_iter_append_basic(&array, type,
- &((*str_array)[i]));
- }
-
- dbus_message_iter_close_container(&variant, &array);
-
- dbus_message_iter_close_container(iter, &variant);
-}
-
-static void dict_append_entry(DBusMessageIter *dict, const char *key,
- int type, void *val)
-{
- DBusMessageIter entry;
-
- if (type == DBUS_TYPE_STRING) {
- const char *str = *((const char **) val);
-
- if (str == NULL)
- return;
- }
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
-
- append_variant(&entry, type, val);
-
- dbus_message_iter_close_container(dict, &entry);
-}
-
-static void dict_append_basic_array(DBusMessageIter *dict, int key_type,
- const void *key, int type, void *val,
- int n_elements)
-{
- DBusMessageIter entry;
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, key_type, key);
-
- append_array_variant(&entry, type, val, n_elements);
-
- dbus_message_iter_close_container(dict, &entry);
-}
-
-static void dict_append_array(DBusMessageIter *dict, const char *key, int type,
- void *val, int n_elements)
-{
- dict_append_basic_array(dict, DBUS_TYPE_STRING, &key, type, val,
- n_elements);
-}
-
#define DISTANCE_VAL_INVALID 0x7FFF

static struct set_discovery_filter_args {
@@ -1225,22 +1138,25 @@ static void set_discovery_filter_setup(DBusMessageIter *iter, void *user_data)
DBUS_TYPE_VARIANT_AS_STRING
DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);

- dict_append_array(&dict, "UUIDs", DBUS_TYPE_STRING, &args->uuids,
+ g_dbus_dict_append_array(&dict, "UUIDs", DBUS_TYPE_STRING,
+ &args->uuids,
args->uuids_len);

if (args->pathloss != DISTANCE_VAL_INVALID)
- dict_append_entry(&dict, "Pathloss", DBUS_TYPE_UINT16,
+ g_dbus_dict_append_entry(&dict, "Pathloss", DBUS_TYPE_UINT16,
&args->pathloss);

if (args->rssi != DISTANCE_VAL_INVALID)
- dict_append_entry(&dict, "RSSI", DBUS_TYPE_INT16, &args->rssi);
+ g_dbus_dict_append_entry(&dict, "RSSI", DBUS_TYPE_INT16,
+ &args->rssi);

if (args->transport != NULL)
- dict_append_entry(&dict, "Transport", DBUS_TYPE_STRING,
+ g_dbus_dict_append_entry(&dict, "Transport", DBUS_TYPE_STRING,
&args->transport);

if (args->duplicate)
- dict_append_entry(&dict, "DuplicateData", DBUS_TYPE_BOOLEAN,
+ g_dbus_dict_append_entry(&dict, "DuplicateData",
+ DBUS_TYPE_BOOLEAN,
&args->duplicate);

dbus_message_iter_close_container(iter, &dict);
--
2.14.1


2018-03-01 04:27:16

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 3/9] obexd: Remove unused source/header files for dbus

Due to using g_dbus_emit_property_changed() and g_dbus_get_properties(),
obex_dbus_signal_property_changed() is unused since commit 96063756
("obex-client: Rename org.bluez.obex.Transfer to Transfer1"), and
OBC_PROPERTIES_ARRAY_SIGNATURE macro is unused since commit 3eadc034
("obex-client: Make use of g_dbus_get_properties to get transfer properties").
---
Makefile.obexd | 1 -
obexd/client/dbus.c | 94 -------------------------------------------------
obexd/client/dbus.h | 48 -------------------------
obexd/client/ftp.c | 1 -
obexd/client/map.c | 1 -
obexd/client/session.c | 1 -
obexd/client/transfer.c | 1 -
7 files changed, 147 deletions(-)
delete mode 100644 obexd/client/dbus.c
delete mode 100644 obexd/client/dbus.h

diff --git a/Makefile.obexd b/Makefile.obexd
index 2e33cbc72..5959f2292 100644
--- a/Makefile.obexd
+++ b/Makefile.obexd
@@ -76,7 +76,6 @@ obexd_src_obexd_SOURCES = $(btio_sources) $(gobex_sources) \
obexd/client/map-event.h obexd/client/map-event.c \
obexd/client/transfer.h obexd/client/transfer.c \
obexd/client/transport.h obexd/client/transport.c \
- obexd/client/dbus.h obexd/client/dbus.c \
obexd/client/driver.h obexd/client/driver.c \
obexd/src/map_ap.h
obexd_src_obexd_LDADD = lib/libbluetooth-internal.la \
diff --git a/obexd/client/dbus.c b/obexd/client/dbus.c
deleted file mode 100644
index bfe5c4974..000000000
--- a/obexd/client/dbus.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *
- * OBEX Client
- *
- * Copyright (C) 2008-2011 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-
-#include "gdbus/gdbus.h"
-
-#include "obexd/src/log.h"
-#include "dbus.h"
-
-static void append_variant(DBusMessageIter *iter,
- int type, void *value)
-{
- char sig[2];
- DBusMessageIter valueiter;
-
- sig[0] = type;
- sig[1] = 0;
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
- sig, &valueiter);
-
- dbus_message_iter_append_basic(&valueiter, type, value);
-
- dbus_message_iter_close_container(iter, &valueiter);
-}
-
-void obex_dbus_dict_append(DBusMessageIter *dict,
- const char *key, int type, void *value)
-{
- DBusMessageIter keyiter;
-
- if (type == DBUS_TYPE_STRING) {
- const char *str = *((const char **) value);
- if (str == NULL)
- return;
- }
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &keyiter);
-
- dbus_message_iter_append_basic(&keyiter, DBUS_TYPE_STRING, &key);
-
- append_variant(&keyiter, type, value);
-
- dbus_message_iter_close_container(dict, &keyiter);
-}
-
-int obex_dbus_signal_property_changed(DBusConnection *conn,
- const char *path,
- const char *interface,
- const char *name,
- int type, void *value)
-{
- DBusMessage *signal;
- DBusMessageIter iter;
-
- signal = dbus_message_new_signal(path, interface, "PropertyChanged");
- if (signal == NULL) {
- error("Unable to allocate new %s.PropertyChanged signal",
- interface);
- return -1;
- }
-
- dbus_message_iter_init_append(signal, &iter);
-
- dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &name);
-
- append_variant(&iter, type, value);
-
- return g_dbus_send_message(conn, signal);
-}
diff --git a/obexd/client/dbus.h b/obexd/client/dbus.h
deleted file mode 100644
index 6136bf58e..000000000
--- a/obexd/client/dbus.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *
- * OBEX Client
- *
- * Copyright (C) 2008-2011 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __OBEX_DBUS_H
-#define __OBEX_DBUS_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <dbus/dbus.h>
-
-/* Essentially a{sv} */
-#define OBC_PROPERTIES_ARRAY_SIGNATURE DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING \
- DBUS_TYPE_STRING_AS_STRING \
- DBUS_TYPE_VARIANT_AS_STRING \
- DBUS_DICT_ENTRY_END_CHAR_AS_STRING
-
-void obex_dbus_dict_append(DBusMessageIter *dict, const char *key, int type,
- void *value);
-
-int obex_dbus_signal_property_changed(DBusConnection *conn, const char *path,
- const char *interface, const char *name,
- int type, void *value);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __OBEX_DBUS_H */
diff --git a/obexd/client/ftp.c b/obexd/client/ftp.c
index f4923b304..d799821b1 100644
--- a/obexd/client/ftp.c
+++ b/obexd/client/ftp.c
@@ -31,7 +31,6 @@
#include "gdbus/gdbus.h"

#include "obexd/src/log.h"
-#include "dbus.h"
#include "transfer.h"
#include "session.h"
#include "driver.h"
diff --git a/obexd/client/map.c b/obexd/client/map.c
index d1c897677..3e581c8ee 100644
--- a/obexd/client/map.c
+++ b/obexd/client/map.c
@@ -40,7 +40,6 @@

#include "obexd/src/log.h"
#include "obexd/src/map_ap.h"
-#include "dbus.h"
#include "map-event.h"

#include "map.h"
diff --git a/obexd/client/session.c b/obexd/client/session.c
index 5f981bf54..4eda255d1 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
@@ -40,7 +40,6 @@
#include "gobex/gobex.h"

#include "obexd/src/log.h"
-#include "dbus.h"
#include "transfer.h"
#include "session.h"
#include "driver.h"
diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c
index 092e72fe2..b53dffa21 100644
--- a/obexd/client/transfer.c
+++ b/obexd/client/transfer.c
@@ -41,7 +41,6 @@
#include "gobex/gobex.h"

#include "obexd/src/log.h"
-#include "dbus.h"
#include "transfer.h"

#define TRANSFER_INTERFACE "org.bluez.obex.Transfer1"
--
2.14.1


2018-03-01 04:27:10

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 2/9] obexd: Use g_dbus_dict_append_entry()

---
obexd/client/ftp.c | 6 +++---
obexd/client/map.c | 5 +++--
obexd/plugins/bluetooth.c | 40 +++-------------------------------------
3 files changed, 9 insertions(+), 42 deletions(-)

diff --git a/obexd/client/ftp.c b/obexd/client/ftp.c
index 3628657d3..f4923b304 100644
--- a/obexd/client/ftp.c
+++ b/obexd/client/ftp.c
@@ -115,7 +115,7 @@ static void xml_element(GMarkupParseContext *ctxt,
DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);

- obex_dbus_dict_append(&dict, "Type", DBUS_TYPE_STRING, &element);
+ g_dbus_dict_append_entry(&dict, "Type", DBUS_TYPE_STRING, &element);

/* FIXME: User, Group, Other permission must be reviewed */

@@ -125,10 +125,10 @@ static void xml_element(GMarkupParseContext *ctxt,
if (g_str_equal("Size", key) == TRUE) {
guint64 size;
size = g_ascii_strtoll(values[i], NULL, 10);
- obex_dbus_dict_append(&dict, key, DBUS_TYPE_UINT64,
+ g_dbus_dict_append_entry(&dict, key, DBUS_TYPE_UINT64,
&size);
} else
- obex_dbus_dict_append(&dict, key, DBUS_TYPE_STRING,
+ g_dbus_dict_append_entry(&dict, key, DBUS_TYPE_STRING,
&values[i]);
}

diff --git a/obexd/client/map.c b/obexd/client/map.c
index 4c6d67629..d1c897677 100644
--- a/obexd/client/map.c
+++ b/obexd/client/map.c
@@ -231,8 +231,9 @@ static void folder_element(GMarkupParseContext *ctxt, const char *element,

for (i = 0, key = names[i]; key; key = names[++i]) {
if (strcasecmp("name", key) == 0)
- obex_dbus_dict_append(&dict, "Name", DBUS_TYPE_STRING,
- &values[i]);
+ g_dbus_dict_append_entry(&dict, "Name",
+ DBUS_TYPE_STRING,
+ &values[i]);
}

dbus_message_iter_close_container(iter, &dict);
diff --git a/obexd/plugins/bluetooth.c b/obexd/plugins/bluetooth.c
index d6028d114..ba1e0a99a 100644
--- a/obexd/plugins/bluetooth.c
+++ b/obexd/plugins/bluetooth.c
@@ -231,40 +231,6 @@ static void profile_free(void *data)
g_free(profile);
}

-static void append_variant(DBusMessageIter *iter, int type, void *val)
-{
- DBusMessageIter value;
- char sig[2] = { type, '\0' };
-
- dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &value);
-
- dbus_message_iter_append_basic(&value, type, val);
-
- dbus_message_iter_close_container(iter, &value);
-}
-
-
-static void dict_append_entry(DBusMessageIter *dict,
- const char *key, int type, void *val)
-{
- DBusMessageIter entry;
-
- if (type == DBUS_TYPE_STRING) {
- const char *str = *((const char **) val);
- if (str == NULL)
- return;
- }
-
- dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
- NULL, &entry);
-
- dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key);
-
- append_variant(&entry, type, val);
-
- dbus_message_iter_close_container(dict, &entry);
-}
-
static int register_profile(struct bluetooth_profile *profile)
{
DBusMessage *msg;
@@ -303,7 +269,7 @@ static int register_profile(struct bluetooth_profile *profile)
DBUS_TYPE_VARIANT_AS_STRING
DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
&opt);
- dict_append_entry(&opt, "AutoConnect", DBUS_TYPE_BOOLEAN,
+ g_dbus_dict_append_entry(&opt, "AutoConnect", DBUS_TYPE_BOOLEAN,
&auto_connect);
if (profile->driver->record) {
if (profile->driver->port != 0)
@@ -315,8 +281,8 @@ static int register_profile(struct bluetooth_profile *profile)
xml = g_markup_printf_escaped(profile->driver->record,
profile->driver->channel,
profile->driver->name);
- dict_append_entry(&opt, "ServiceRecord", DBUS_TYPE_STRING,
- &xml);
+ g_dbus_dict_append_entry(&opt, "ServiceRecord",
+ DBUS_TYPE_STRING, &xml);
g_free(xml);
}
dbus_message_iter_close_container(&iter, &opt);
--
2.14.1


2018-03-01 04:27:00

by ERAMOTO Masaya

[permalink] [raw]
Subject: [PATCH BlueZ v2 1/9] gdbus: Introduce functions appending to dbus message

---
gdbus/client.c | 135 +++++++++++++++++++++++++++++++++++++++++----------------
gdbus/gdbus.h | 9 ++++
2 files changed, 106 insertions(+), 38 deletions(-)

diff --git a/gdbus/client.c b/gdbus/client.c
index eaab7d50b..dd5d2eb51 100644
--- a/gdbus/client.c
+++ b/gdbus/client.c
@@ -127,6 +127,99 @@ static gboolean modify_match(DBusConnection *conn, const char *member,
return TRUE;
}

+static void append_variant(DBusMessageIter *iter, int type, const void *val)
+{
+ DBusMessageIter value;
+ char sig[2] = { type, '\0' };
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT, sig, &value);
+
+ dbus_message_iter_append_basic(&value, type, val);
+
+ dbus_message_iter_close_container(iter, &value);
+}
+
+static void append_array_variant(DBusMessageIter *iter, int type, void *val,
+ int n_elements)
+{
+ DBusMessageIter variant, array;
+ char type_sig[2] = { type, '\0' };
+ char array_sig[3] = { DBUS_TYPE_ARRAY, type, '\0' };
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
+ array_sig, &variant);
+
+ dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY,
+ type_sig, &array);
+
+ if (dbus_type_is_fixed(type) == TRUE) {
+ dbus_message_iter_append_fixed_array(&array, type, val,
+ n_elements);
+ } else if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) {
+ const char ***str_array = val;
+ int i;
+
+ for (i = 0; i < n_elements; i++)
+ dbus_message_iter_append_basic(&array, type,
+ &((*str_array)[i]));
+ }
+
+ dbus_message_iter_close_container(&variant, &array);
+
+ dbus_message_iter_close_container(iter, &variant);
+}
+
+static void dict_append_basic(DBusMessageIter *dict, int key_type,
+ const void *key, int type, void *val)
+{
+ DBusMessageIter entry;
+
+ if (type == DBUS_TYPE_STRING) {
+ const char *str = *((const char **) val);
+ if (str == NULL)
+ return;
+ }
+
+ dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
+ NULL, &entry);
+
+ dbus_message_iter_append_basic(&entry, key_type, key);
+
+ append_variant(&entry, type, val);
+
+ dbus_message_iter_close_container(dict, &entry);
+}
+
+void g_dbus_dict_append_entry(DBusMessageIter *dict,
+ const char *key, int type, void *val)
+{
+ dict_append_basic(dict, DBUS_TYPE_STRING, &key, type, val);
+}
+
+void g_dbus_dict_append_basic_array(DBusMessageIter *dict, int key_type,
+ const void *key, int type, void *val,
+ int n_elements)
+{
+ DBusMessageIter entry;
+
+ dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY,
+ NULL, &entry);
+
+ dbus_message_iter_append_basic(&entry, key_type, key);
+
+ append_array_variant(&entry, type, val, n_elements);
+
+ dbus_message_iter_close_container(dict, &entry);
+}
+
+void g_dbus_dict_append_array(DBusMessageIter *dict,
+ const char *key, int type, void *val,
+ int n_elements)
+{
+ g_dbus_dict_append_basic_array(dict, DBUS_TYPE_STRING, &key, type, val,
+ n_elements);
+}
+
static void iter_append_iter(DBusMessageIter *base, DBusMessageIter *iter)
{
int type;
@@ -754,9 +847,8 @@ gboolean g_dbus_proxy_set_property_basic(GDBusProxy *proxy,
struct set_property_data *data;
GDBusClient *client;
DBusMessage *msg;
- DBusMessageIter iter, variant;
+ DBusMessageIter iter;
DBusPendingCall *call;
- char type_as_str[2];

if (proxy == NULL || name == NULL || value == NULL)
return FALSE;
@@ -783,18 +875,12 @@ gboolean g_dbus_proxy_set_property_basic(GDBusProxy *proxy,
return FALSE;
}

- type_as_str[0] = (char) type;
- type_as_str[1] = '\0';
-
dbus_message_iter_init_append(msg, &iter);
dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING,
&proxy->interface);
dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &name);

- dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT,
- type_as_str, &variant);
- dbus_message_iter_append_basic(&variant, type, value);
- dbus_message_iter_close_container(&iter, &variant);
+ append_variant(&iter, type, value);

if (g_dbus_send_message_with_reply(client->dbus_conn, msg,
&call, -1) == FALSE) {
@@ -819,10 +905,8 @@ gboolean g_dbus_proxy_set_property_array(GDBusProxy *proxy,
struct set_property_data *data;
GDBusClient *client;
DBusMessage *msg;
- DBusMessageIter iter, variant, array;
+ DBusMessageIter iter;
DBusPendingCall *call;
- char array_sig[3];
- char type_sig[2];

if (!proxy || !name || !value)
return FALSE;
@@ -851,37 +935,12 @@ gboolean g_dbus_proxy_set_property_array(GDBusProxy *proxy,
return FALSE;
}

- array_sig[0] = DBUS_TYPE_ARRAY;
- array_sig[1] = (char) type;
- array_sig[2] = '\0';
-
- type_sig[0] = (char) type;
- type_sig[1] = '\0';
-
dbus_message_iter_init_append(msg, &iter);
dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING,
&proxy->interface);
dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &name);

- dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT,
- array_sig, &variant);
-
- dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY,
- type_sig, &array);
-
- if (dbus_type_is_fixed(type))
- dbus_message_iter_append_fixed_array(&array, type, &value,
- size);
- else if (type == DBUS_TYPE_STRING || type == DBUS_TYPE_OBJECT_PATH) {
- const char **str = (const char **) value;
- size_t i;
-
- for (i = 0; i < size; i++)
- dbus_message_iter_append_basic(&array, type, &str[i]);
- }
-
- dbus_message_iter_close_container(&variant, &array);
- dbus_message_iter_close_container(&iter, &variant);
+ append_array_variant(&iter, type, &value, size);

if (g_dbus_send_message_with_reply(client->dbus_conn, msg,
&call, -1) == FALSE) {
diff --git a/gdbus/gdbus.h b/gdbus/gdbus.h
index 4880c84e7..1a601c591 100644
--- a/gdbus/gdbus.h
+++ b/gdbus/gdbus.h
@@ -357,6 +357,15 @@ gboolean g_dbus_proxy_set_property_array(GDBusProxy *proxy,
size_t size, GDBusResultFunction function,
void *user_data, GDBusDestroyFunction destroy);

+void g_dbus_dict_append_entry(DBusMessageIter *dict,
+ const char *key, int type, void *val);
+void g_dbus_dict_append_basic_array(DBusMessageIter *dict, int key_type,
+ const void *key, int type, void *val,
+ int n_elements);
+void g_dbus_dict_append_array(DBusMessageIter *dict,
+ const char *key, int type, void *val,
+ int n_elements);
+
typedef void (* GDBusSetupFunction) (DBusMessageIter *iter, void *user_data);
typedef void (* GDBusReturnFunction) (DBusMessage *message, void *user_data);

--
2.14.1