summaryrefslogtreecommitdiffstats
path: root/bus/activation.c
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@codefactory.se>2003-02-17 09:59:23 +0000
committerAnders Carlsson <andersca@codefactory.se>2003-02-17 09:59:23 +0000
commit3c8db267892bbce5c82d5060cef993dd54dc6ed4 (patch)
tree9560edcebc5bf79b4550611a67505b7677543418 /bus/activation.c
parent8faf99b118daf0040a58981cdf24a344ff2578ca (diff)
2003-02-17 Anders Carlsson <andersca@codefactory.se>
* bus/activation.c: (bus_activation_init), (child_setup), (bus_activation_activate_service): * bus/activation.h: * bus/main.c: (main): Set DBUS_ADDRESS environment variable. * dbus/dbus-errors.c: (dbus_set_error): Don't use va_copy since that's a C99 feature. * dbus/dbus-sysdeps.c: (_dbus_setenv), (do_exec), (_dbus_spawn_async): * dbus/dbus-sysdeps.h: Add child_setup_func to _dbus_spawn_async. * doc/dbus-specification.sgml: Update specification. * test/spawn-test.c: (setup_func), (main): Fix test.
Diffstat (limited to 'bus/activation.c')
-rw-r--r--bus/activation.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/bus/activation.c b/bus/activation.c
index b4acd0f3..b5cec44a 100644
--- a/bus/activation.c
+++ b/bus/activation.c
@@ -34,6 +34,7 @@
#define DBUS_SERVICE_EXEC "Exec"
static DBusHashTable *activation_entries = NULL;
+static char *server_address = NULL;
typedef struct
{
@@ -174,10 +175,14 @@ load_directory (const char *directory)
void
-bus_activation_init (const char **directories)
+bus_activation_init (const char *address,
+ const char **directories)
{
int i;
+ /* FIXME: We should split up the server addresses. */
+ BUS_HANDLE_OOM (server_address = _dbus_strdup (address));
+
BUS_HANDLE_OOM (activation_entries = _dbus_hash_table_new (DBUS_HASH_STRING, NULL,
(DBusFreeFunction)bus_activation_entry_free));
@@ -191,6 +196,13 @@ bus_activation_init (const char **directories)
}
}
+static void
+child_setup (void *data)
+{
+ /* FIXME: Check return value in case of OOM */
+ _dbus_setenv ("DBUS_ADDRESS", server_address);
+}
+
dbus_bool_t
bus_activation_activate_service (const char *service_name,
DBusError *error)
@@ -212,7 +224,9 @@ bus_activation_activate_service (const char *service_name,
argv[0] = entry->exec;
argv[1] = NULL;
- if (!_dbus_spawn_async (argv, error))
+ if (!_dbus_spawn_async (argv,
+ child_setup, NULL,
+ error))
return FALSE;
return TRUE;