On Sun, 20.10.13 23:59, Tom Gundersen ([email protected]) wrote:
Hmm, we could probably allow this in
sd_bus_message_enter_container() directly, so that this extra work
becomes unnecessary. So far I tried to push people to always specify
what they expect as safety check, but I figure in this case this is
pointless. So I guess we could allow that if the user passes in a 0 type
and/or a NULL contents value we skip that part of the check.
Patch welcome. ;-)
I also added this to the TODO list for now though.
> ---
> src/machine/machinectl.c | 21 ++++++++++++++++-----
> 1 file changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c
> index ba0ceb7..5731247 100644
> --- a/src/machine/machinectl.c
> +++ b/src/machine/machinectl.c
> @@ -334,6 +334,21 @@ static int print_property(const char *name,
> sd_bus_message *reply) {
> return 0;
> }
>
> +static int sd_bus_message_enter_unknown_container(sd_bus_message *message,
> char type) {
> + const char *contents;
> + int r;
> +
> + r = sd_bus_message_peek_type(reply, NULL, &contents);
> + if (r < 0)
> + return r;
> +
> + r = sd_bus_message_enter_contanire(reply, type, contents);
> + if (r < 0)
> + return r;
> +
> + return 0;
> +}
> +
> static int show_one(const char *verb, sd_bus *bus, const char *path, bool
> show_properties, bool *new_line) {
> _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
> _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
> @@ -378,11 +393,7 @@ static int show_one(const char *verb, sd_bus *bus, const
> char *path, bool show_p
> if (r < 0)
> goto fail;
>
> - r = sd_bus_message_peek_type(reply, NULL, &contents);
> - if (r < 0)
> - goto fail;
> -
> - r = sd_bus_message_enter_container(reply,
> SD_BUS_TYPE_VARIANT, contents);
> + r = sd_bus_message_enter_unknown_container(reply,
> SD_BUS_TYPE_VARIANT);
> if (r < 0)
> goto fail;
>
Lennart
--
Lennart Poettering, Red Hat
_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel