diff options
Diffstat (limited to 'src/libsystemd/sd-bus/bus-objects.c')
-rw-r--r-- | src/libsystemd/sd-bus/bus-objects.c | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c index 9609834fa9..d0538104ae 100644 --- a/src/libsystemd/sd-bus/bus-objects.c +++ b/src/libsystemd/sd-bus/bus-objects.c @@ -1,6 +1,4 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ -/*** -***/ #include "alloc-util.h" #include "bus-internal.h" @@ -11,6 +9,7 @@ #include "bus-slot.h" #include "bus-type.h" #include "bus-util.h" +#include "missing_capability.h" #include "set.h" #include "string-util.h" #include "strv.h" @@ -166,7 +165,7 @@ static int add_subtree_to_set( sd_bus *bus, const char *prefix, struct node *n, - unsigned int flags, + unsigned flags, Set *s, sd_bus_error *error) { @@ -215,7 +214,7 @@ static int get_child_nodes( sd_bus *bus, const char *prefix, struct node *n, - unsigned int flags, + unsigned flags, Set **_s, sd_bus_error *error) { @@ -1584,9 +1583,7 @@ _public_ int sd_bus_add_fallback( return bus_add_object(bus, slot, true, prefix, callback, userdata); } -static void vtable_member_hash_func(const void *a, struct siphash *state) { - const struct vtable_member *m = a; - +static void vtable_member_hash_func(const struct vtable_member *m, struct siphash *state) { assert(m); string_hash_func(m->path, state); @@ -1594,8 +1591,7 @@ static void vtable_member_hash_func(const void *a, struct siphash *state) { string_hash_func(m->member, state); } -static int vtable_member_compare_func(const void *a, const void *b) { - const struct vtable_member *x = a, *y = b; +static int vtable_member_compare_func(const struct vtable_member *x, const struct vtable_member *y) { int r; assert(x); @@ -1612,10 +1608,7 @@ static int vtable_member_compare_func(const void *a, const void *b) { return strcmp(x->member, y->member); } -static const struct hash_ops vtable_member_hash_ops = { - .hash = vtable_member_hash_func, - .compare = vtable_member_compare_func -}; +DEFINE_PRIVATE_HASH_OPS(vtable_member_hash_ops, struct vtable_member, vtable_member_hash_func, vtable_member_compare_func); static int add_object_vtable_internal( sd_bus *bus, @@ -2090,7 +2083,6 @@ _public_ int sd_bus_emit_properties_changed_strv( const char *interface, char **names) { - BUS_DONT_DESTROY(bus); bool found_interface = false; char *prefix; int r; @@ -2111,6 +2103,8 @@ _public_ int sd_bus_emit_properties_changed_strv( if (names && names[0] == NULL) return 0; + BUS_DONT_DESTROY(bus); + do { bus->nodes_modified = false; @@ -2310,8 +2304,6 @@ static int object_added_append_all(sd_bus *bus, sd_bus_message *m, const char *p } _public_ int sd_bus_emit_object_added(sd_bus *bus, const char *path) { - BUS_DONT_DESTROY(bus); - _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL; struct node *object_manager; int r; @@ -2341,6 +2333,8 @@ _public_ int sd_bus_emit_object_added(sd_bus *bus, const char *path) { if (r == 0) return -ESRCH; + BUS_DONT_DESTROY(bus); + do { bus->nodes_modified = false; m = sd_bus_message_unref(m); @@ -2481,8 +2475,6 @@ static int object_removed_append_all(sd_bus *bus, sd_bus_message *m, const char } _public_ int sd_bus_emit_object_removed(sd_bus *bus, const char *path) { - BUS_DONT_DESTROY(bus); - _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL; struct node *object_manager; int r; @@ -2512,6 +2504,8 @@ _public_ int sd_bus_emit_object_removed(sd_bus *bus, const char *path) { if (r == 0) return -ESRCH; + BUS_DONT_DESTROY(bus); + do { bus->nodes_modified = false; m = sd_bus_message_unref(m); @@ -2645,8 +2639,6 @@ static int interfaces_added_append_one( } _public_ int sd_bus_emit_interfaces_added_strv(sd_bus *bus, const char *path, char **interfaces) { - BUS_DONT_DESTROY(bus); - _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL; struct node *object_manager; char **i; @@ -2669,6 +2661,8 @@ _public_ int sd_bus_emit_interfaces_added_strv(sd_bus *bus, const char *path, ch if (r == 0) return -ESRCH; + BUS_DONT_DESTROY(bus); + do { bus->nodes_modified = false; m = sd_bus_message_unref(m); |