summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViolet Halo <hal0@tuta.io>2018-06-15 01:18:07 -0700
committerLennart Poettering <lennart@poettering.net>2018-06-29 11:45:40 +0200
commit11ce0db2e23630fb2f23f6dfd6d937f2b5bd0df2 (patch)
treeed65bd7596c7c853cecea04c7a62f4904da1dd9e
parent545cdb90f376c68777fda58d1e718b355d2280fd (diff)
downloadsystemd-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.sym4
-rw-r--r--src/libsystemd/sd-bus/bus-message.c8
-rw-r--r--src/systemd/sd-bus.h1
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! */