summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2006-11-13 07:58:40 +0000
committerMarcel Holtmann <marcel@holtmann.org>2006-11-13 07:58:40 +0000
commit40e3342c520a00d47d68f7791cb70cb49d698630 (patch)
tree79f9e44095c66e64c767a5a145065d712bf162d6 /common
parentb1a10a46b1cdeb034823b83c993836b0dce3ed06 (diff)
Add D-Bus name setup to common function
Diffstat (limited to 'common')
-rw-r--r--common/dbus.c25
-rw-r--r--common/dbus.h2
2 files changed, 21 insertions, 6 deletions
diff --git a/common/dbus.c b/common/dbus.c
index 5ef1725e..c8ed07e4 100644
--- a/common/dbus.c
+++ b/common/dbus.c
@@ -483,19 +483,18 @@ static void dispatch_status_cb(DBusConnection *conn,
g_timeout_add(DISPATCH_TIMEOUT, message_dispatch_cb, data);
}
-DBusConnection *init_dbus(void (*disconnect_cb)(void *), void *user_data)
+DBusConnection *init_dbus(const char *name, void (*disconnect_cb)(void *), void *user_data)
{
+ struct disconnect_data *dc_data;
DBusConnection *conn;
DBusError err;
- struct disconnect_data *dc_data;
dbus_error_init(&err);
conn = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
if (dbus_error_is_set(&err)) {
- error("Can't open system message bus connection: %s",
- err.message);
+ error("Can't connect to system message bus: %s", err.message);
dbus_error_free(&err);
return NULL;
}
@@ -507,7 +506,23 @@ DBusConnection *init_dbus(void (*disconnect_cb)(void *), void *user_data)
timeout_toggled, conn, NULL);
dbus_connection_set_dispatch_status_function(conn, dispatch_status_cb,
- conn, NULL);
+ conn, NULL);
+
+ if (name) {
+ dbus_error_init(&err);
+
+ if (dbus_bus_request_name(conn, name, 0, &err) !=
+ DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER ) {
+ error("Could not become the primary owner of %s.", name);
+ return NULL;
+ }
+
+ if (dbus_error_is_set(&err)) {
+ error("Can't get bus name %s: %s", name, err.message);
+ dbus_error_free(&err);
+ return NULL;
+ }
+ }
if (!disconnect_cb)
return conn;
diff --git a/common/dbus.h b/common/dbus.h
index 59afd6e6..39d3cd88 100644
--- a/common/dbus.h
+++ b/common/dbus.h
@@ -26,7 +26,7 @@
#include <dbus/dbus.h>
-DBusConnection *init_dbus(void (*disconnect_cb)(void *), void *user_data);
+DBusConnection *init_dbus(const char *name, void (*disconnect_cb)(void *), void *user_data);
typedef void (*name_cb_t)(const char *name, void *user_data);