diff options
-rw-r--r-- | doc/dbus-run-session.1.xml.in | 7 | ||||
-rw-r--r-- | tools/Makefile.am | 4 | ||||
-rw-r--r-- | tools/dbus-run-session.c | 30 |
3 files changed, 19 insertions, 22 deletions
diff --git a/doc/dbus-run-session.1.xml.in b/doc/dbus-run-session.1.xml.in index 693c5e4e..5181a8b1 100644 --- a/doc/dbus-run-session.1.xml.in +++ b/doc/dbus-run-session.1.xml.in @@ -130,6 +130,13 @@ contain a <emphasis remap='I'>PROGRAM</emphasis> in the environment variable <emphasis remap='B'>DBUS_SESSION_BUS_ADDRESS</emphasis>.</para> + +<para>The variables + <emphasis remap='B'>DBUS_SESSION_BUS_PID</emphasis>, + <emphasis remap='B'>DBUS_SESSION_BUS_WINDOWID</emphasis>, + <emphasis remap='B'>DBUS_STARTER_BUS_TYPE</emphasis> and + <emphasis remap='B'>DBUS_STARTER_ADDRESS</emphasis> + are removed from the environment, if present.</para> </refsect1> <refsect1 id='bugs'><title>BUGS</title> diff --git a/tools/Makefile.am b/tools/Makefile.am index 464a8050..73d95fcf 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -47,6 +47,10 @@ dbus_launch_SOURCES= \ dbus_run_session_SOURCES = \ dbus-run-session.c + +dbus_run_session_LDADD = \ + $(top_builddir)/dbus/libdbus-1.la \ + $(NULL) endif dbus_cleanup_sockets_SOURCES= \ diff --git a/tools/dbus-run-session.c b/tools/dbus-run-session.c index 4f7243f7..105ab3b4 100644 --- a/tools/dbus-run-session.c +++ b/tools/dbus-run-session.c @@ -36,6 +36,8 @@ #include <sys/wait.h> #include <signal.h> +#include "dbus/dbus.h" + #define MAX_ADDR_LEN 512 #define PIPE_READ_END 0 #define PIPE_WRITE_END 1 @@ -100,22 +102,6 @@ oom (void) exit (1); } -static void * -xmalloc (size_t bytes) -{ - void *ret; - - if (bytes == 0) - bytes = 1; - - ret = malloc (bytes); - - if (ret == NULL) - oom (); - - return ret; -} - typedef enum { READ_STATUS_OK, /**< Read succeeded */ @@ -228,7 +214,6 @@ main (int argc, char **argv) int requires_arg = 0; pid_t bus_pid; pid_t app_pid; - char *envvar; while (i < argc) { @@ -397,11 +382,12 @@ main (int argc, char **argv) close (bus_address_pipe[PIPE_READ_END]); - envvar = xmalloc (strlen ("DBUS_SESSION_BUS_ADDRESS=") + - strlen (bus_address) + 1); - strcpy (envvar, "DBUS_SESSION_BUS_ADDRESS="); - strcat (envvar, bus_address); - putenv (envvar); + if (!dbus_setenv ("DBUS_SESSION_BUS_ADDRESS", bus_address) || + !dbus_setenv ("DBUS_SESSION_BUS_PID", NULL) || + !dbus_setenv ("DBUS_SESSION_BUS_WINDOWID", NULL) || + !dbus_setenv ("DBUS_STARTER_ADDRESS", NULL) || + !dbus_setenv ("DBUS_STARTER_BUS_TYPE", NULL)) + oom (); app_pid = fork (); |