summaryrefslogtreecommitdiff
path: root/gdbus
diff options
context:
space:
mode:
authorERAMOTO Masaya <eramoto.masaya@jp.fujitsu.com>2017-12-28 14:44:15 +0900
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2018-01-02 14:15:49 -0200
commit529790b6a5d599b961469a7c800b164a2e5d3388 (patch)
tree1aa45c6b8bb314ae6f62ce53cbf35d018b519e97 /gdbus
parent6be85ab3bf67a54b8ce71ab0c3ffeb3707f66ded (diff)
downloadbluez-529790b6a5d599b961469a7c800b164a2e5d3388.tar.gz
gdbus: Introduce g_dbus_proxy_path_lookup()
g_dbus_proxy_path_lookup() returns the path of the proxy that matches the passed path. It also returns the index of the proxy coming next to the matched proxy in the passed list.
Diffstat (limited to 'gdbus')
-rw-r--r--gdbus/client.c21
-rw-r--r--gdbus/gdbus.h1
2 files changed, 22 insertions, 0 deletions
diff --git a/gdbus/client.c b/gdbus/client.c
index f9095574d..9364be7ae 100644
--- a/gdbus/client.c
+++ b/gdbus/client.c
@@ -26,6 +26,7 @@
#endif
#include <stdio.h>
+#include <string.h>
#include <glib.h>
#include <dbus/dbus.h>
@@ -376,6 +377,26 @@ GDBusProxy *g_dbus_proxy_lookup(GList *list, int *index, const char *path,
return NULL;
}
+char *g_dbus_proxy_path_lookup(GList *list, int *index, const char *path)
+{
+ int len = strlen(path);
+ GList *l;
+
+ for (l = g_list_nth(list, index ? *index : 0); l; l = g_list_next(l)) {
+ GDBusProxy *proxy = l->data;
+
+ const char *proxy_path = g_dbus_proxy_get_path(proxy);
+
+ if (index)
+ (*index)++;
+
+ if (!strncasecmp(proxy_path, path, len))
+ return strdup(proxy_path);
+ }
+
+ return NULL;
+}
+
static gboolean properties_changed(DBusConnection *conn, DBusMessage *msg,
void *user_data)
{
diff --git a/gdbus/gdbus.h b/gdbus/gdbus.h
index 85cb9682e..4880c84e7 100644
--- a/gdbus/gdbus.h
+++ b/gdbus/gdbus.h
@@ -341,6 +341,7 @@ gboolean g_dbus_proxy_get_property(GDBusProxy *proxy, const char *name,
GDBusProxy *g_dbus_proxy_lookup(GList *list, int *index, const char *path,
const char *interface);
+char *g_dbus_proxy_path_lookup(GList *list, int *index, const char *path);
gboolean g_dbus_proxy_refresh_property(GDBusProxy *proxy, const char *name);