From: Lennart Poettering Date: Mon, 9 Apr 2018 17:44:21 +0000 (+0200) Subject: machined: move bus_reply_pair_array() into generic utilities X-Git-Tag: v239~208^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=19017acb9f3e5e7edad18f59acb872bfb8dda949;p=thirdparty%2Fsystemd.git machined: move bus_reply_pair_array() into generic utilities This way, we can reuse it in portabled. --- diff --git a/src/machine/machine-dbus.h b/src/machine/machine-dbus.h index 50cdda45f07..6b9cdef8c86 100644 --- a/src/machine/machine-dbus.h +++ b/src/machine/machine-dbus.h @@ -31,5 +31,3 @@ int bus_machine_method_get_uid_shift(sd_bus_message *message, void *userdata, sd int machine_send_signal(Machine *m, bool new_machine); int machine_send_create_reply(Machine *m, sd_bus_error *error); - -int bus_reply_pair_array(sd_bus_message *m, char **l); diff --git a/src/machine/machined-dbus.c b/src/machine/machined-dbus.c index cb16ce9d19d..cb46718696d 100644 --- a/src/machine/machined-dbus.c +++ b/src/machine/machined-dbus.c @@ -1588,30 +1588,3 @@ int manager_add_machine(Manager *m, const char *name, Machine **_machine) { return 0; } - -int bus_reply_pair_array(sd_bus_message *m, char **l) { - _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; - char **k, **v; - int r; - - r = sd_bus_message_new_method_return(m, &reply); - if (r < 0) - return r; - - r = sd_bus_message_open_container(reply, 'a', "{ss}"); - if (r < 0) - return r; - - STRV_FOREACH_PAIR(k, v, l) { - r = sd_bus_message_append(reply, "{ss}", *k, *v); - if (r < 0) - return r; - } - - r = sd_bus_message_close_container(reply); - if (r < 0) - return r; - - return sd_bus_send(NULL, reply, NULL); - -} diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index ed30edfb60f..998134ec8c3 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -1847,3 +1847,34 @@ int bus_request_name_async_may_reload_dbus(sd_bus *bus, sd_bus_slot **ret_slot, return sd_bus_request_name_async(bus, ret_slot, name, flags, request_name_handler_may_reload_dbus, data); } + +int bus_reply_pair_array(sd_bus_message *m, char **l) { + _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL; + char **k, **v; + int r; + + assert(m); + + /* Reply to the specified message with a message containing a dictionary put together from the specified + * strv */ + + r = sd_bus_message_new_method_return(m, &reply); + if (r < 0) + return r; + + r = sd_bus_message_open_container(reply, 'a', "{ss}"); + if (r < 0) + return r; + + STRV_FOREACH_PAIR(k, v, l) { + r = sd_bus_message_append(reply, "{ss}", *k, *v); + if (r < 0) + return r; + } + + r = sd_bus_message_close_container(reply); + if (r < 0) + return r; + + return sd_bus_send(NULL, reply, NULL); +} diff --git a/src/shared/bus-util.h b/src/shared/bus-util.h index 16aeca74ddb..ee9f1ff0970 100644 --- a/src/shared/bus-util.h +++ b/src/shared/bus-util.h @@ -184,3 +184,5 @@ static inline int bus_open_system_watch_bind(sd_bus **ret) { } int bus_request_name_async_may_reload_dbus(sd_bus *bus, sd_bus_slot **ret_slot, const char *name, uint64_t flags, void *userdata); + +int bus_reply_pair_array(sd_bus_message *m, char **l);