From: Lennart Poettering Date: Tue, 4 Nov 2014 15:57:38 +0000 (+0100) Subject: sd-bus: also allow setting descriptions on bus slots X-Git-Tag: v218~567 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=9cbfc66c621c42aa6e58e9e0da0adfb01efa7537 sd-bus: also allow setting descriptions on bus slots --- diff --git a/src/libsystemd/libsystemd.sym.m4 b/src/libsystemd/libsystemd.sym.m4 index 04581c50c..635caf696 100644 --- a/src/libsystemd/libsystemd.sym.m4 +++ b/src/libsystemd/libsystemd.sym.m4 @@ -223,6 +223,8 @@ global: sd_bus_slot_get_bus; sd_bus_slot_get_userdata; sd_bus_slot_set_userdata; + sd_bus_slot_get_description; + sd_bus_slot_set_description; sd_bus_slot_get_current_message; sd_bus_message_new_signal; sd_bus_message_new_method_call; diff --git a/src/libsystemd/sd-bus/bus-internal.h b/src/libsystemd/sd-bus/bus-internal.h index b1310a864..07381485e 100644 --- a/src/libsystemd/sd-bus/bus-internal.h +++ b/src/libsystemd/sd-bus/bus-internal.h @@ -142,6 +142,7 @@ struct sd_bus_slot { void *userdata; BusSlotType type:5; bool floating:1; + char *description; LIST_FIELDS(sd_bus_slot, slots); diff --git a/src/libsystemd/sd-bus/bus-slot.c b/src/libsystemd/sd-bus/bus-slot.c index 568a6ed60..8060e9882 100644 --- a/src/libsystemd/sd-bus/bus-slot.c +++ b/src/libsystemd/sd-bus/bus-slot.c @@ -208,6 +208,7 @@ _public_ sd_bus_slot* sd_bus_slot_unref(sd_bus_slot *slot) { } bus_slot_disconnect(slot); + free(slot->description); free(slot); return NULL; @@ -265,3 +266,18 @@ _public_ void* sd_bus_slot_get_current_userdata(sd_bus_slot *slot) { return slot->bus->current_userdata; } + +_public_ int sd_bus_slot_set_description(sd_bus_slot *slot, const char *description) { + assert_return(slot, -EINVAL); + + return free_and_strdup(&slot->description, description); +} + +_public_ int sd_bus_slot_get_description(sd_bus_slot *slot, char **description) { + assert_return(slot, -EINVAL); + assert_return(description, -EINVAL); + assert_return(slot->description, -ENXIO); + + *description = slot->description; + return 0; +} diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index e6c95590f..40c3a4a0c 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -175,6 +175,9 @@ sd_bus* sd_bus_slot_get_bus(sd_bus_slot *slot); void *sd_bus_slot_get_userdata(sd_bus_slot *slot); void *sd_bus_slot_set_userdata(sd_bus_slot *slot, void *userdata); +int sd_bus_slot_set_description(sd_bus_slot *slot, const char *description); +int sd_bus_slot_get_description(sd_bus_slot *slot, char **description); + sd_bus_message* sd_bus_slot_get_current_message(sd_bus_slot *slot); sd_bus_message_handler_t sd_bus_slot_get_current_handler(sd_bus_slot *bus); void *sd_bus_slot_get_current_userdata(sd_bus_slot *slot);