chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bus: properly detect and handle if a callback is installed/removed from within a...
[elogind.git]
/
src
/
libsystemd-bus
/
bus-control.c
diff --git
a/src/libsystemd-bus/bus-control.c
b/src/libsystemd-bus/bus-control.c
index 9d242dc41384a117d255c4ef80c401aee33726c2..dd404442cf1c95658fa57b8e8776030c92f79842 100644
(file)
--- a/
src/libsystemd-bus/bus-control.c
+++ b/
src/libsystemd-bus/bus-control.c
@@
-27,12
+27,22
@@
#include "sd-bus.h"
#include "bus-internal.h"
#include "bus-message.h"
#include "sd-bus.h"
#include "bus-internal.h"
#include "bus-message.h"
+#include "bus-control.h"
+
+int sd_bus_get_unique_name(sd_bus *bus, const char **unique) {
+ int r;
-const char *sd_bus_get_unique_name(sd_bus *bus) {
if (!bus)
if (!bus)
- return NULL;
+ return -EINVAL;
+ if (!unique)
+ return -EINVAL;
+
+ r = bus_ensure_running(bus);
+ if (r < 0)
+ return r;
- return bus->unique_name;
+ *unique = bus->unique_name;
+ return 0;
}
int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
}
int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
@@
-283,14
+293,12
@@
int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) {
return 0;
}
return 0;
}
-int
sd_bus_add_match
(sd_bus *bus, const char *match) {
+int
bus_add_match_internal
(sd_bus *bus, const char *match) {
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
int r;
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
int r;
- if (!bus)
- return -EINVAL;
- if (!match)
- return -EINVAL;
+ assert(bus);
+ assert(match);
r = sd_bus_message_new_method_call(
bus,
r = sd_bus_message_new_method_call(
bus,
@@
-309,14
+317,12
@@
int sd_bus_add_match(sd_bus *bus, const char *match) {
return sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
}
return sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply);
}
-int
sd_bus_remove_match
(sd_bus *bus, const char *match) {
+int
bus_remove_match_internal
(sd_bus *bus, const char *match) {
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
int r;
_cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL;
int r;
- if (!bus)
- return -EINVAL;
- if (!match)
- return -EINVAL;
+ assert(bus);
+ assert(match);
r = sd_bus_message_new_method_call(
bus,
r = sd_bus_message_new_method_call(
bus,