summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRadoslaw Pajak <r.pajak@samsung.com>2013-12-12 15:42:15 +0100
committerLubomir Rintel <lkundrak@v3.sk>2015-02-11 11:55:29 +0100
commit1363fd023ac6b8105038c7264c419ccd3c660450 (patch)
treea11998a182d02860be7607e22a1ad2fe0b13fe64
parentf025089a52be023afdd49a45058492d56e199cc0 (diff)
[daemon] Sending unique names added in reply to ListNames method
Change-Id: I48a5062af9bd5f848c846aaa140902d9fafce324 Signed-off-by: Radoslaw Pajak <r.pajak@samsung.com>
-rw-r--r--bus/kdbus-d.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/bus/kdbus-d.c b/bus/kdbus-d.c
index 4e286a61..eca2f168 100644
--- a/bus/kdbus-d.c
+++ b/bus/kdbus-d.c
@@ -559,7 +559,7 @@ dbus_bool_t kdbus_list_services (DBusConnection* connection, char ***listp, int
if(!_dbus_transport_get_socket_fd(transport, &fd))
return FALSE;
- cmd.flags = KDBUS_NAME_LIST_NAMES; //TODO add handling | KDBUS_NAME_LIST_UNIQUE;
+ cmd.flags = KDBUS_NAME_LIST_NAMES | KDBUS_NAME_LIST_UNIQUE;
again:
if(ioctl(fd, KDBUS_CMD_NAME_LIST, &cmd))
@@ -578,7 +578,6 @@ again:
for (name = name_list->names; (uint8_t *)(name) < (uint8_t *)(name_list) + name_list->size; name = KDBUS_PART_NEXT(name))
list_len++;
- _dbus_verbose ("Name list size: %llu\n", name_list->size);
_dbus_verbose ("List len: %d\n", list_len);
list = malloc(sizeof(char*) * (list_len + 1));
@@ -587,9 +586,19 @@ again:
for (name = name_list->names; (uint8_t *)(name) < (uint8_t *)(name_list) + name_list->size; name = KDBUS_PART_NEXT(name))
{
- list[i] = strdup(name->name);
- if(list[i] == NULL)
- goto out;
+ if(*name->name)
+ {
+ list[i] = strdup(name->name);
+ if(list[i] == NULL)
+ goto out;
+ }
+ else
+ {
+ list[i] = malloc(snprintf(list[i], 0, ":1.%llu0", (unsigned long long)name->id));
+ if(list[i] == NULL)
+ goto out;
+ sprintf(list[i], ":1.%llu", (unsigned long long int)name->id);
+ }
_dbus_verbose ("Name %d: %s\n", i, list[i]);
++i;
}