#include "bus-internal.h"
#include "bus-message.h"
-const char *sd_bus_get_unique_name(sd_bus *bus) {
+int sd_bus_get_unique_name(sd_bus *bus, const char **unique) {
+ int r;
+
if (!bus)
- return NULL;
+ return -EINVAL;
+ if (!unique)
+ return -EINVAL;
- return bus->unique_name;
+ r = bus_ensure_running(bus);
+ if (r < 0)
+ return r;
+
+ *unique = bus->unique_name;
+ return 0;
}
int sd_bus_request_name(sd_bus *bus, const char *name, int flags) {
bool member_name_is_valid(const char *p);
#define error_name_is_valid interface_name_is_valid
+
+int bus_ensure_running(sd_bus *bus);
#include "bus-message.h"
#include "bus-type.h"
-static int ensure_running(sd_bus *bus);
static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec);
static void bus_free(sd_bus *b) {
return -EINVAL;
if (type == SD_BUS_TYPE_UNIX_FD) {
- r = ensure_running(bus);
+ r = bus_ensure_running(bus);
if (r < 0)
return r;
if (!peer)
return -EINVAL;
- r = ensure_running(bus);
+ r = bus_ensure_running(bus);
if (r < 0)
return r;
return 1;
}
-static int ensure_running(sd_bus *bus) {
+int bus_ensure_running(sd_bus *bus) {
int r;
assert(bus);
if (bus_error_is_dirty(error))
return -EINVAL;
- r = ensure_running(bus);
+ r = bus_ensure_running(bus);
if (r < 0)
return r;
if (bus->fd < 0)
return -ENOTCONN;
- r = ensure_running(bus);
+ r = bus_ensure_running(bus);
if (r < 0)
return r;
/* Bus management */
-const char *sd_bus_get_unique_name(sd_bus *bus);
+int sd_bus_get_unique_name(sd_bus *bus, const char **unique);
int sd_bus_request_name(sd_bus *bus, const char *name, int flags);
int sd_bus_release_name(sd_bus *bus, const char *name);
int sd_bus_list_names(sd_bus *bus, char ***l);
sd_bus *bus = NULL;
sd_id128_t id;
int r;
+ const char *unique;
assert(_bus);
goto fail;
}
+ r = sd_bus_get_unique_name(bus, &unique);
+ if (r < 0) {
+ log_error("Failed to get unique name: %s", strerror(-r));
+ goto fail;
+ }
+
log_info("Peer ID is " SD_ID128_FORMAT_STR ".", SD_ID128_FORMAT_VAL(id));
+ log_info("Unique ID: %s", unique);
log_info("Can send file handles: %i", sd_bus_can_send(bus, 'h'));
- log_info("Unique ID: %s", strna(sd_bus_get_unique_name(bus)));
r = sd_bus_request_name(bus, "org.freedesktop.systemd.test", 0);
if (r < 0) {