summaryrefslogtreecommitdiffstats
path: root/src/sbus
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2014-12-16 15:25:38 +0100
committerJakub Hrozek <jhrozek@redhat.com>2015-01-23 21:45:46 +0100
commitca6dd8e7ac91c7f8e3b4d55206d4f39791ab7149 (patch)
treec298cebafb9554c1359550bac842f7a5c4036409 /src/sbus
parent3a8f6b575f4019f21c9425a26f1b346c08a197ae (diff)
downloadsssd-ca6dd8e7ac91c7f8e3b4d55206d4f39791ab7149.tar.gz
sssd-ca6dd8e7ac91c7f8e3b4d55206d4f39791ab7149.tar.xz
sssd-ca6dd8e7ac91c7f8e3b4d55206d4f39791ab7149.zip
sbus: add sbus_opath_get_object_name()
This function assumes that the last component of the object path is an object name. It will return the part unescaped. Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/sbus')
-rw-r--r--src/sbus/sssd_dbus.h5
-rw-r--r--src/sbus/sssd_dbus_interface.c20
2 files changed, 25 insertions, 0 deletions
diff --git a/src/sbus/sssd_dbus.h b/src/sbus/sssd_dbus.h
index 355d617fe..0f7562e6b 100644
--- a/src/sbus/sssd_dbus.h
+++ b/src/sbus/sssd_dbus.h
@@ -193,6 +193,11 @@ const char *
sbus_opath_strip_prefix(const char *object_path,
const char *prefix);
+char *
+sbus_opath_get_object_name(TALLOC_CTX *mem_ctx,
+ const char *object_path,
+ const char *base_path);
+
bool sbus_conn_disconnecting(struct sbus_connection *conn);
/* max_retries < 0: retry forever
diff --git a/src/sbus/sssd_dbus_interface.c b/src/sbus/sssd_dbus_interface.c
index 09e160227..d4ddce0ac 100644
--- a/src/sbus/sssd_dbus_interface.c
+++ b/src/sbus/sssd_dbus_interface.c
@@ -365,6 +365,26 @@ sbus_opath_strip_prefix(const char *object_path,
return NULL;
}
+char *
+sbus_opath_get_object_name(TALLOC_CTX *mem_ctx,
+ const char *object_path,
+ const char *base_path)
+{
+ const char *name;
+
+ name = sbus_opath_strip_prefix(object_path, base_path);
+ if (name == NULL || name[0] == '\0') {
+ return NULL;
+ }
+
+ /* if base_path did not end with / */
+ if (name[0] == '/') {
+ name = name + 1;
+ }
+
+ return sbus_opath_unescape_part(mem_ctx, name);
+}
+
static void
sbus_opath_hash_delete_cb(hash_entry_t *item,
hash_destroy_enum deltype,