diff --git a/man/rules/meson.build b/man/rules/meson.build
index 0df4a889a7..97f4fbc006 100644
--- a/man/rules/meson.build
+++ b/man/rules/meson.build
@@ -343,7 +343,7 @@ manpages = [
'sd_bus_request_name_async'],
''],
['sd_bus_send', '3', [], ''],
- ['sd_bus_set_address', '3', ['sd_bus_get_address'], ''],
+ ['sd_bus_set_address', '3', ['sd_bus_get_address', 'sd_bus_set_exec'], ''],
['sd_bus_set_close_on_exit', '3', ['sd_bus_get_close_on_exit'], ''],
['sd_bus_set_connected_signal', '3', ['sd_bus_get_connected_signal'], ''],
['sd_bus_set_description',
diff --git a/man/sd_bus_set_address.xml b/man/sd_bus_set_address.xml
index b022741ff4..8404da53f1 100644
--- a/man/sd_bus_set_address.xml
+++ b/man/sd_bus_set_address.xml
@@ -19,6 +19,7 @@
sd_bus_set_addresssd_bus_get_address
+ sd_bus_set_execSet or query the address of the bus connection
@@ -30,15 +31,21 @@
int sd_bus_set_addresssd_bus *bus
- const char* address
+ const char *addressint sd_bus_get_addresssd_bus *bus
- const char** address
+ const char **address
+
+ int sd_bus_set_exec
+ sd_bus *bus
+ const char *path
+ char *const *argv
+
@@ -68,13 +75,13 @@
the rest is optional. family may be either or
.
-
+
An executable to spawn specified as
unixexec:guid=guid,path=path,argv1=argument,argv2=argument,....
The path= key must be present, while guid= is optional.
-
+
A machine (container) to connect to specified as
x-machine-unix:guid=guid,machine=machine,pid=pid.
@@ -104,6 +111,11 @@
automatically by
sd_bus_open3 and
similar calls, based on environment variables or built-in defaults.
+
+ sd_bus_set_exec is a shorthand function for setting a
+ unixexec address that spawns the given executable with the given arguments.
+ If argv is NULL, the given executable is spawned
+ without any extra arguments.
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
index 78e18e3b94..366f36645a 100644
--- a/src/libsystemd/sd-bus/sd-bus.c
+++ b/src/libsystemd/sd-bus/sd-bus.c
@@ -284,7 +284,7 @@ _public_ int sd_bus_set_fd(sd_bus *bus, int input_fd, int output_fd) {
return 0;
}
-_public_ int sd_bus_set_exec(sd_bus *bus, const char *path, char *const argv[]) {
+_public_ int sd_bus_set_exec(sd_bus *bus, const char *path, char *const *argv) {
_cleanup_strv_free_ char **a = NULL;
int r;
diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h
index cd307dbd56..6f72e4b3b2 100644
--- a/src/systemd/sd-bus.h
+++ b/src/systemd/sd-bus.h
@@ -143,7 +143,7 @@ int sd_bus_new(sd_bus **ret);
int sd_bus_set_address(sd_bus *bus, const char *address);
int sd_bus_set_fd(sd_bus *bus, int input_fd, int output_fd);
-int sd_bus_set_exec(sd_bus *bus, const char *path, char *const argv[]);
+int sd_bus_set_exec(sd_bus *bus, const char *path, char *const *argv);
int sd_bus_get_address(sd_bus *bus, const char **address);
int sd_bus_set_bus_client(sd_bus *bus, int b);
int sd_bus_is_bus_client(sd_bus *bus);