From 3c8db267892bbce5c82d5060cef993dd54dc6ed4 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Mon, 17 Feb 2003 09:59:23 +0000 Subject: 2003-02-17 Anders Carlsson * 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. --- bus/activation.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'bus/activation.c') 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; -- cgit