summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libelogind/libelogind.sym7
-rw-r--r--src/libelogind/sd-bus/sd-bus.c38
-rw-r--r--src/systemd/sd-bus.h3
3 files changed, 41 insertions, 7 deletions
diff --git a/src/libelogind/libelogind.sym b/src/libelogind/libelogind.sym
index 8343864bf..6e88f30d7 100644
--- a/src/libelogind/libelogind.sym
+++ b/src/libelogind/libelogind.sym
@@ -561,3 +561,10 @@ global:
sd_bus_get_n_queued_read;
sd_bus_get_n_queued_write;
} LIBSYSTEMD_237;
+
+LIBSYSTEMD_239 {
+global:
+ sd_bus_open_with_description;
+ sd_bus_open_user_with_description;
+ sd_bus_open_system_with_description;
+} LIBSYSTEMD_238;
diff --git a/src/libelogind/sd-bus/sd-bus.c b/src/libelogind/sd-bus/sd-bus.c
index 5df3af5b4..c5013f98c 100644
--- a/src/libelogind/sd-bus/sd-bus.c
+++ b/src/libelogind/sd-bus/sd-bus.c
@@ -1223,7 +1223,7 @@ _public_ int sd_bus_start(sd_bus *bus) {
return bus_send_hello(bus);
}
-_public_ int sd_bus_open(sd_bus **ret) {
+_public_ int sd_bus_open_with_description(sd_bus **ret, const char *description) {
const char *e;
sd_bus *b;
int r;
@@ -1237,21 +1237,21 @@ _public_ int sd_bus_open(sd_bus **ret) {
e = secure_getenv("DBUS_STARTER_BUS_TYPE");
if (e) {
if (streq(e, "system"))
- return sd_bus_open_system(ret);
+ return sd_bus_open_system_with_description(ret, description);
#if 0 /// elogind does not support systemd user instances
else if (STR_IN_SET(e, "session", "user"))
- return sd_bus_open_user(ret);
#endif // 0
+ return sd_bus_open_user_with_description(ret, description);
}
e = secure_getenv("DBUS_STARTER_ADDRESS");
if (!e) {
#if 0 /// elogind does not support systemd user instances
if (cg_pid_get_owner_uid(0, NULL) >= 0)
- return sd_bus_open_user(ret);
+ return sd_bus_open_user_with_description(ret, description);
else
#endif // 0
- return sd_bus_open_system(ret);
+ return sd_bus_open_system_with_description(ret, description);
}
r = sd_bus_new(&b);
@@ -1282,6 +1282,10 @@ fail:
return r;
}
+_public_ int sd_bus_open(sd_bus **ret) {
+ return sd_bus_open_with_description(ret, NULL);
+}
+
int bus_set_address_system(sd_bus *b) {
const char *e;
assert(b);
@@ -1293,7 +1297,7 @@ int bus_set_address_system(sd_bus *b) {
return sd_bus_set_address(b, DEFAULT_SYSTEM_BUS_ADDRESS);
}
-_public_ int sd_bus_open_system(sd_bus **ret) {
+_public_ int sd_bus_open_system_with_description(sd_bus **ret, const char *description) {
sd_bus *b;
int r;
@@ -1303,6 +1307,12 @@ _public_ int sd_bus_open_system(sd_bus **ret) {
if (r < 0)
return r;
+ if (description) {
+ r = sd_bus_set_description(b, description);
+ if (r < 0)
+ goto fail;
+ }
+
r = bus_set_address_system(b);
if (r < 0)
goto fail;
@@ -1328,6 +1338,10 @@ fail:
return r;
}
+_public_ int sd_bus_open_system(sd_bus **ret) {
+ return sd_bus_open_system_with_description(ret, NULL);
+}
+
#if 0 /// elogind can not open/use a user bus
int bus_set_address_user(sd_bus *b) {
const char *e;
@@ -1356,7 +1370,7 @@ int bus_set_address_user(sd_bus *b) {
}
#endif // 0
-_public_ int sd_bus_open_user(sd_bus **ret) {
+_public_ int sd_bus_open_user_with_description(sd_bus **ret, const char *description) {
#if 0 /// elogind does not support user buses
sd_bus *b;
int r;
@@ -1367,6 +1381,12 @@ _public_ int sd_bus_open_user(sd_bus **ret) {
if (r < 0)
return r;
+ if (description) {
+ r = sd_bus_set_description(b, description);
+ if (r < 0)
+ goto fail;
+ }
+
r = bus_set_address_user(b);
if (r < 0)
goto fail;
@@ -1389,6 +1409,10 @@ _public_ int sd_bus_open_user(sd_bus **ret) {
fail:
bus_free(b);
return r;
+}
+
+_public_ int sd_bus_open_user(sd_bus **ret) {
+ return sd_bus_open_user_with_description(ret, NULL);
#else
return sd_bus_open_system(ret);
#endif // 0
diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h
index 23c17d73b..9a6e86278 100644
--- a/src/systemd/sd-bus.h
+++ b/src/systemd/sd-bus.h
@@ -122,8 +122,11 @@ int sd_bus_default_user(sd_bus **ret);
int sd_bus_default_system(sd_bus **ret);
int sd_bus_open(sd_bus **ret);
+int sd_bus_open_with_description(sd_bus **ret, const char *description);
int sd_bus_open_user(sd_bus **ret);
+int sd_bus_open_user_with_description(sd_bus **ret, const char *description);
int sd_bus_open_system(sd_bus **ret);
+int sd_bus_open_system_with_description(sd_bus **ret, const char *description);
int sd_bus_open_system_remote(sd_bus **ret, const char *host);
int sd_bus_open_system_machine(sd_bus **ret, const char *machine);