diff options
author | Violet Halo <hal0@tuta.io> | 2018-06-15 01:18:07 -0700 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-06-29 11:45:40 +0200 |
commit | 11ce0db2e23630fb2f23f6dfd6d937f2b5bd0df2 (patch) | |
tree | ed65bd7596c7c853cecea04c7a62f4904da1dd9e | |
parent | 545cdb90f376c68777fda58d1e718b355d2280fd (diff) | |
download | systemd-11ce0db2e23630fb2f23f6dfd6d937f2b5bd0df2.tar.gz |
sd-bus: publicize sd_bus_message_readv()
The D-Bus library supplies a va_list variant of
`sd_bus_message_append()` called `sd_bus_message_appendv()`,
but failed to provide a va_list variant of its opposite,
`sd_bus_message_read()`. This commit publicizes a previously static
function as `sd_bus_message_readv()`.
-rw-r--r-- | src/libsystemd/libsystemd.sym | 4 | ||||
-rw-r--r-- | src/libsystemd/sd-bus/bus-message.c | 8 | ||||
-rw-r--r-- | src/systemd/sd-bus.h | 1 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/libsystemd/libsystemd.sym b/src/libsystemd/libsystemd.sym index 1eec17db50..969a86a0e9 100644 --- a/src/libsystemd/libsystemd.sym +++ b/src/libsystemd/libsystemd.sym @@ -570,3 +570,7 @@ global: sd_event_source_set_destroy_callback; sd_event_source_get_destroy_callback; } LIBSYSTEMD_238; + +LIBSYSTEMD_240 { + sd_bus_message_readv; +} LIBSYSTEMD_239; diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index 6331a5e099..c402f18860 100644 --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c @@ -4315,7 +4315,7 @@ _public_ int sd_bus_message_rewind(sd_bus_message *m, int complete) { return !isempty(c->signature); } -static int message_read_ap( +_public_ int sd_bus_message_readv( sd_bus_message *m, const char *types, va_list ap) { @@ -4326,7 +4326,9 @@ static int message_read_ap( unsigned n_loop = 0; int r; - assert(m); + assert_return(m, -EINVAL); + assert_return(m->sealed, -EPERM); + assert_return(types, -EINVAL); if (isempty(types)) return 0; @@ -4522,7 +4524,7 @@ _public_ int sd_bus_message_read(sd_bus_message *m, const char *types, ...) { assert_return(types, -EINVAL); va_start(ap, types); - r = message_read_ap(m, types, ap); + r = sd_bus_message_readv(m, types, ap); va_end(ap); return r; diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index 3ede01ad43..ce12b7ffc7 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -305,6 +305,7 @@ int sd_bus_message_close_container(sd_bus_message *m); int sd_bus_message_copy(sd_bus_message *m, sd_bus_message *source, int all); int sd_bus_message_read(sd_bus_message *m, const char *types, ...); +int sd_bus_message_readv(sd_bus_message *m, const char *types, va_list ap); int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p); int sd_bus_message_read_array(sd_bus_message *m, char type, const void **ptr, size_t *size); int sd_bus_message_read_strv(sd_bus_message *m, char ***l); /* free the result! */ |